00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #include <eyedb/eyedb.h>
00018
00019 #ifndef _eyedb_syscls_
00020 #define _eyedb_syscls_
00021
00022 namespace eyedb {
00023
00024 class AttributeComponent;
00025 class AttributeComponentSet;
00026 class ClassComponent;
00027 class AgregatClassComponent;
00028 class ClassVariable;
00029 class Index;
00030 class HashIndex;
00031 class BTreeIndex;
00032 class CollAttrImpl;
00033 class ArgType;
00034 class Signature;
00035 class Executable;
00036 class AgregatClassExecutable;
00037 class Method;
00038 class FEMethod;
00039 class FEMethod_C;
00040 class BEMethod;
00041 class BEMethod_C;
00042 class BEMethod_OQL;
00043 class Trigger;
00044 class UniqueConstraint;
00045 class NotNullConstraint;
00046 class CardinalityDescription;
00047 class CardinalityConstraint;
00048 class CardinalityConstraint_Test;
00049 class ProtectionUser;
00050 class Protection;
00051 class UnreadableObject;
00052 class ClassConversion;
00053
00054
00055 class syscls {
00056
00057 public:
00058 syscls(int &argc, char *argv[]) {
00059 eyedb::init(argc, argv);
00060 init();
00061 }
00062
00063 ~syscls() {
00064 release();
00065 eyedb::release();
00066 }
00067
00068 static void init();
00069 static void release();
00070 static eyedb::Status updateSchema(eyedb::Database *db);
00071 static eyedb::Status updateSchema(eyedb::Schema *m);
00072 };
00073
00074 class sysclsDatabase : public eyedb::Database {
00075
00076 public:
00077 sysclsDatabase(const char *dbname, const char *_dbmdb_str = 0) : eyedb::Database(dbname, _dbmdb_str) {}
00078 sysclsDatabase(eyedb::Connection *conn, const char *dbname, const char *_dbmdb_str, eyedb::Database::OpenFlag, const char *user = 0, const char *passwd = 0);
00079 sysclsDatabase(eyedb::Connection *conn, const char *dbname, eyedb::Database::OpenFlag, const char *user = 0, const char *passwd = 0);
00080 sysclsDatabase(const char *dbname, int _dbid, const char *_dbmdb_str = 0) : eyedb::Database(dbname, _dbid, _dbmdb_str) {}
00081 sysclsDatabase(int _dbid, const char *_dbmdb_str = 0) : eyedb::Database(_dbid, _dbmdb_str) {}
00082 eyedb::Status open(eyedb::Connection *, eyedb::Database::OpenFlag, const char *user = 0, const char *passwd = 0);
00083 eyedb::Status open(eyedb::Connection *, eyedb::Database::OpenFlag, const eyedb::OpenHints *hints, const char *user = 0, const char *passwd = 0);
00084 static void setConsApp(eyedb::Database *);
00085 static eyedb::Status checkSchema(eyedb::Schema *);
00086 static eyedb::Bool getDynamicGetErrorPolicy();
00087 static eyedb::Bool getDynamicSetErrorPolicy();
00088 static void setDynamicGetErrorPolicy(eyedb::Bool policy);
00089 static void setDynamicSetErrorPolicy(eyedb::Bool policy);
00090 };
00091
00092 enum IndexType {
00093 HashIndexType = 32,
00094 BTreeIndexType = 64
00095 };
00096
00097 enum ExecutableLang {
00098 C_LANG = 1,
00099 OQL_LANG = 2,
00100 SYSTEM_EXEC = 256
00101 };
00102
00103 enum ArgType_Type {
00104 ANY_TYPE = 0,
00105 VOID_TYPE = 1,
00106 INT16_TYPE = 2,
00107 INT32_TYPE = 3,
00108 INT64_TYPE = 4,
00109 STRING_TYPE = 5,
00110 CHAR_TYPE = 6,
00111 FLOAT_TYPE = 7,
00112 OID_TYPE = 8,
00113 OBJ_TYPE = 9,
00114 RAW_TYPE = 10,
00115 BYTE_TYPE = 11,
00116 ARRAY_TYPE = 256,
00117 IN_ARG_TYPE = 4096,
00118 OUT_ARG_TYPE = 8192,
00119 INOUT_ARG_TYPE = 12288
00120 };
00121
00122 enum ExecutableLocalisation {
00123 BACKEND = 1,
00124 FRONTEND = 2,
00125 STATIC_EXEC = 256
00126 };
00127
00128 enum ExecutableType {
00129 METHOD_C_TYPE = 2,
00130 METHOD_OQL_TYPE = 18,
00131 TRIGGER_C_TYPE = 8,
00132 TRIGGER_OQL_TYPE = 24
00133 };
00134
00135 enum TriggerType {
00136 TriggerCREATE_BEFORE = 17,
00137 TriggerCREATE_AFTER = 18,
00138 TriggerUPDATE_BEFORE = 33,
00139 TriggerUPDATE_AFTER = 34,
00140 TriggerLOAD_BEFORE = 65,
00141 TriggerLOAD_AFTER = 66,
00142 TriggerREMOVE_BEFORE = 129,
00143 TriggerREMOVE_AFTER = 130
00144 };
00145
00146 enum ProtectionMode {
00147 ProtRead = 256,
00148 ProtRW = 257
00149 };
00150
00151 enum ClassUpdateType {
00152 ADD_ATTR = 0,
00153 RMV_ATTR = 1,
00154 CNV_ATTR = 2,
00155 MIG_ATTR = 3,
00156 RMV_CLASS = 4
00157 };
00158
00159 enum AttributeConvertType {
00160 INT16_TO_INT16 = 0,
00161 INT16_TO_INT32 = 1,
00162 INT16_TO_INT64 = 2,
00163 INT16_TO_FLOAT = 3,
00164 INT16_TO_BYTE = 4,
00165 INT16_TO_CHAR = 5,
00166 INT16_TO_ENUM = 6,
00167 INT32_TO_INT32 = 7,
00168 INT32_TO_INT16 = 8,
00169 INT32_TO_INT64 = 9,
00170 INT32_TO_FLOAT = 10,
00171 INT32_TO_BYTE = 11,
00172 INT32_TO_CHAR = 12,
00173 INT32_TO_ENUM = 13,
00174 INT64_TO_INT64 = 14,
00175 INT64_TO_INT16 = 15,
00176 INT64_TO_INT32 = 16,
00177 INT64_TO_FLOAT = 17,
00178 INT64_TO_BYTE = 18,
00179 INT64_TO_CHAR = 19,
00180 INT64_TO_ENUM = 20,
00181 FLOAT_TO_FLOAT = 21,
00182 FLOAT_TO_INT16 = 22,
00183 FLOAT_TO_INT32 = 23,
00184 FLOAT_TO_INT64 = 24,
00185 FLOAT_TO_BYTE = 25,
00186 FLOAT_TO_CHAR = 26,
00187 FLOAT_TO_ENUM = 27,
00188 CHAR_TO_CHAR = 28,
00189 CHAR_TO_INT16 = 29,
00190 CHAR_TO_INT32 = 30,
00191 CHAR_TO_INT64 = 31,
00192 CHAR_TO_FLOAT = 32,
00193 CHAR_TO_BYTE = 33,
00194 CHAR_TO_ENUM = 34,
00195 BYTE_TO_BYTE = 35,
00196 BYTE_TO_INT16 = 36,
00197 BYTE_TO_INT32 = 37,
00198 BYTE_TO_INT64 = 38,
00199 BYTE_TO_FLOAT = 39,
00200 BYTE_TO_CHAR = 40,
00201 BYTE_TO_ENUM = 41,
00202 ENUM_TO_ENUM = 42,
00203 ENUM_TO_INT16 = 43,
00204 ENUM_TO_INT32 = 44,
00205 ENUM_TO_INT64 = 45,
00206 ENUM_TO_FLOAT = 46,
00207 ENUM_TO_CHAR = 47,
00208 ENUM_TO_BYTE = 48,
00209 CHAR_TO_STRING = 49,
00210 STRING_TO_CHAR = 50,
00211 INT16_TO_STRING = 51,
00212 STRING_TO_INT16 = 52,
00213 INT32_TO_STRING = 53,
00214 STRING_TO_INT32 = 54,
00215 INT64_TO_STRING = 55,
00216 STRING_TO_INT64 = 56,
00217 FLOAT_TO_STRING = 57,
00218 STRING_TO_FLOAT = 58,
00219 BYTE_TO_STRING = 59,
00220 STRING_TO_BYTE = 60,
00221 SET_TO_BAG = 61,
00222 SET_TO_ARRAY = 62,
00223 SET_TO_LIST = 63,
00224 BAG_TO_SET = 64,
00225 BAG_TO_ARRAY = 65,
00226 BAG_TO_LIST = 66,
00227 ARRAY_TO_BAG = 67,
00228 ARRAY_TO_SET = 68,
00229 ARRAY_TO_LIST = 69,
00230 LIST_TO_BAG = 70,
00231 LIST_TO_ARRAY = 71,
00232 LIST_TO_SET = 72,
00233 CLASS_TO_CLASS = 73,
00234 USER_CNV = 74,
00235 NIL_CNV = 75
00236 };
00237
00238 class AttributeComponent : public eyedb::Struct {
00239
00240 public:
00241 AttributeComponent(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00242 AttributeComponent(const AttributeComponent& x);
00243
00244 virtual eyedb::Object *clone() const {return new AttributeComponent(*this);};
00245
00246 AttributeComponent& operator=(const AttributeComponent& x);
00247
00248 virtual AttributeComponent *asAttributeComponent() {return this;}
00249 virtual const AttributeComponent *asAttributeComponent() const {return this;}
00250 virtual Index *asIndex() {return (Index *)0;}
00251 virtual const Index *asIndex() const {return (const Index *)0;}
00252 virtual HashIndex *asHashIndex() {return (HashIndex *)0;}
00253 virtual const HashIndex *asHashIndex() const {return (const HashIndex *)0;}
00254 virtual BTreeIndex *asBTreeIndex() {return (BTreeIndex *)0;}
00255 virtual const BTreeIndex *asBTreeIndex() const {return (const BTreeIndex *)0;}
00256 virtual CollAttrImpl *asCollAttrImpl() {return (CollAttrImpl *)0;}
00257 virtual const CollAttrImpl *asCollAttrImpl() const {return (const CollAttrImpl *)0;}
00258 virtual UniqueConstraint *asUniqueConstraint() {return (UniqueConstraint *)0;}
00259 virtual const UniqueConstraint *asUniqueConstraint() const {return (const UniqueConstraint *)0;}
00260 virtual NotNullConstraint *asNotNullConstraint() {return (NotNullConstraint *)0;}
00261 virtual const NotNullConstraint *asNotNullConstraint() const {return (const NotNullConstraint *)0;}
00262 virtual CardinalityConstraint_Test *asCardinalityConstraint_Test() {return (CardinalityConstraint_Test *)0;}
00263 virtual const CardinalityConstraint_Test *asCardinalityConstraint_Test() const {return (const CardinalityConstraint_Test *)0;}
00264
00265 eyedb::Status setName(const std::string &);
00266 eyedb::Status setName(unsigned int a0, char );
00267 std::string getName(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00268 char getName(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00269
00270 eyedb::Status setAttrpath(const std::string &);
00271 eyedb::Status setAttrpath(unsigned int a0, char );
00272 std::string getAttrpath(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00273 char getAttrpath(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00274
00275 eyedb::Status setClassOwner(eyedb::Class*);
00276 eyedb::Class*getClassOwner(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00277 const eyedb::Class*getClassOwner(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00278 eyedb::Oid getClassOwnerOid(eyedb::Status * = 0) const;
00279 eyedb::Status setClassOwnerOid(const eyedb::Oid &);
00280
00281 eyedb::Status setPropagate(eyedb::Bool , eyedb::Bool _check_value = eyedb::True);
00282 eyedb::Bool getPropagate(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00283 virtual ~AttributeComponent() {garbageRealize();}
00284
00285
00286 virtual Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00287 Status checkUnique(const char *, const char *);
00288 Status find(Database *db, const Class *cls,
00289 AttributeComponent *&);
00290 virtual AttributeComponent *xclone(Database *, const Class *);
00291 std::string makeAttrpath(const Class *cls);
00292 void userInitialize();
00293 void userCopy(const Object &);
00294 void userGarbage();
00295 virtual int getInd() const;
00296
00297
00298 protected:
00299 AttributeComponent(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00300 AttributeComponent(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00301 AttributeComponent(const AttributeComponent *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00302
00303 private:
00304 void initialize(eyedb::Database *_db);
00305
00306 public:
00307 AttributeComponent(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00308 AttributeComponent(const AttributeComponent *, eyedb::Bool = eyedb::False);
00309 AttributeComponent(const eyedb::Class *, eyedb::Data);
00310 };
00311
00312 class AttributeComponentSet : public eyedb::Struct {
00313
00314 public:
00315 AttributeComponentSet(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00316 AttributeComponentSet(const AttributeComponentSet& x);
00317
00318 virtual eyedb::Object *clone() const {return new AttributeComponentSet(*this);};
00319
00320 AttributeComponentSet& operator=(const AttributeComponentSet& x);
00321
00322 virtual AttributeComponentSet *asAttributeComponentSet() {return this;}
00323 virtual const AttributeComponentSet *asAttributeComponentSet() const {return this;}
00324
00325 eyedb::Status setAttrname(const std::string &);
00326 eyedb::Status setAttrname(unsigned int a0, char );
00327 std::string getAttrname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00328 char getAttrname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00329
00330 eyedb::Status setCompsColl(eyedb::CollSet*);
00331 eyedb::CollSet*getCompsColl(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00332 unsigned int getCompsCount(eyedb::Bool *isnull = 0, eyedb::Status *rs = 0) const {const eyedb::Collection* _coll = getCompsColl(isnull, rs); return (!!_coll ? _coll->getCount() : 0);}
00333 const eyedb::CollSet*getCompsColl(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00334 eyedb::Status addToCompsColl(AttributeComponent*, eyedb::Bool noDup = eyedb::False, const eyedb::IndexImpl * = 0);
00335 eyedb::Status rmvFromCompsColl(AttributeComponent*, eyedb::Bool checkFirst = eyedb::False);
00336 eyedb::Status addToCompsColl(const eyedb::Oid &, const eyedb::IndexImpl * = 0);
00337 eyedb::Status rmvFromCompsColl(const eyedb::Oid &);
00338
00339 eyedb::Status setClassOwner(eyedb::Class*);
00340 eyedb::Class*getClassOwner(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00341 const eyedb::Class*getClassOwner(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00342 eyedb::Oid getClassOwnerOid(eyedb::Status * = 0) const;
00343 eyedb::Status setClassOwnerOid(const eyedb::Oid &);
00344 virtual ~AttributeComponentSet() {garbageRealize();}
00345
00346
00347 void userInitialize();
00348 void userCopy(const Object &);
00349 void userGarbage();
00350
00351 Status find(const char *, Index *&);
00352 Status find(const char *, NotNullConstraint *&);
00353 Status find(const char *, UniqueConstraint *&);
00354 Status find(const char *, CollAttrImpl *&);
00355 Status find(const char *, CardinalityConstraint_Test *&);
00356 Status getAttrComponents(const Class *, LinkedList &);
00357 Status hasIndex(bool &has_index, std::string &idx_str);
00358
00359 private:
00360 struct Cache {
00361 unsigned int comp_count;
00362 unsigned int comp_alloc;
00363 struct Comp {
00364 char *attrpath;
00365 AttributeComponent *comp;
00366 Comp();
00367 ~Comp();
00368 } *comps;
00369 Cache();
00370 void add(AttributeComponent *);
00371 void getComponents(const char *, int, LinkedList &);
00372 AttributeComponent *find(const char *attrpath);
00373 ~Cache();
00374 };
00375
00376 Status makeCache();
00377 void invalidateCache();
00378
00379 Cache *index_cache, *notnull_cache, *unique_cache, *card_cache, *collimpl_cache;
00380 friend class Attribute;
00381
00382
00383 protected:
00384 AttributeComponentSet(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00385 AttributeComponentSet(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00386 AttributeComponentSet(const AttributeComponentSet *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00387
00388 private:
00389 void initialize(eyedb::Database *_db);
00390
00391 public:
00392 AttributeComponentSet(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00393 AttributeComponentSet(const AttributeComponentSet *, eyedb::Bool = eyedb::False);
00394 AttributeComponentSet(const eyedb::Class *, eyedb::Data);
00395 };
00396
00397 class ClassComponent : public eyedb::Struct {
00398
00399 public:
00400 ClassComponent(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00401 ClassComponent(const ClassComponent& x);
00402
00403 virtual eyedb::Object *clone() const {return new ClassComponent(*this);};
00404
00405 ClassComponent& operator=(const ClassComponent& x);
00406
00407 virtual ClassComponent *asClassComponent() {return this;}
00408 virtual const ClassComponent *asClassComponent() const {return this;}
00409 virtual AgregatClassComponent *asAgregatClassComponent() {return (AgregatClassComponent *)0;}
00410 virtual const AgregatClassComponent *asAgregatClassComponent() const {return (const AgregatClassComponent *)0;}
00411 virtual ClassVariable *asClassVariable() {return (ClassVariable *)0;}
00412 virtual const ClassVariable *asClassVariable() const {return (const ClassVariable *)0;}
00413 virtual AgregatClassExecutable *asAgregatClassExecutable() {return (AgregatClassExecutable *)0;}
00414 virtual const AgregatClassExecutable *asAgregatClassExecutable() const {return (const AgregatClassExecutable *)0;}
00415 virtual Method *asMethod() {return (Method *)0;}
00416 virtual const Method *asMethod() const {return (const Method *)0;}
00417 virtual FEMethod *asFEMethod() {return (FEMethod *)0;}
00418 virtual const FEMethod *asFEMethod() const {return (const FEMethod *)0;}
00419 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
00420 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
00421 virtual BEMethod *asBEMethod() {return (BEMethod *)0;}
00422 virtual const BEMethod *asBEMethod() const {return (const BEMethod *)0;}
00423 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
00424 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
00425 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
00426 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
00427 virtual Trigger *asTrigger() {return (Trigger *)0;}
00428 virtual const Trigger *asTrigger() const {return (const Trigger *)0;}
00429 virtual CardinalityConstraint *asCardinalityConstraint() {return (CardinalityConstraint *)0;}
00430 virtual const CardinalityConstraint *asCardinalityConstraint() const {return (const CardinalityConstraint *)0;}
00431
00432 eyedb::Status setClassOwner(eyedb::Class*);
00433 eyedb::Class*getClassOwner(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00434 const eyedb::Class*getClassOwner(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00435 eyedb::Oid getClassOwnerOid(eyedb::Status * = 0) const;
00436 eyedb::Status setClassOwnerOid(const eyedb::Oid &);
00437
00438 eyedb::Status setName(const std::string &);
00439 eyedb::Status setName(unsigned int a0, char );
00440 std::string getName(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00441 char getName(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00442 virtual ~ClassComponent() {garbageRealize();}
00443
00444
00445 virtual Status check(Class *) const;
00446 virtual Bool isInherit() const;
00447 virtual Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00448 virtual int getInd() const;
00449 virtual Status make(Class *);
00450 virtual Status realize(const RecMode* = NoRecurs);
00451 virtual Status remove(const RecMode* = NoRecurs);
00452 virtual Status realize_for_update();
00453 virtual Status remove_for_update();
00454
00455
00456 protected:
00457 ClassComponent(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00458 ClassComponent(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00459 ClassComponent(const ClassComponent *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00460
00461 private:
00462 void initialize(eyedb::Database *_db);
00463
00464 public:
00465 ClassComponent(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00466 ClassComponent(const ClassComponent *, eyedb::Bool = eyedb::False);
00467 ClassComponent(const eyedb::Class *, eyedb::Data);
00468 };
00469
00470 class AgregatClassComponent : public ClassComponent {
00471
00472 public:
00473 AgregatClassComponent(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00474 AgregatClassComponent(const AgregatClassComponent& x);
00475
00476 virtual eyedb::Object *clone() const {return new AgregatClassComponent(*this);};
00477
00478 AgregatClassComponent& operator=(const AgregatClassComponent& x);
00479
00480 virtual AgregatClassComponent *asAgregatClassComponent() {return this;}
00481 virtual const AgregatClassComponent *asAgregatClassComponent() const {return this;}
00482 virtual AgregatClassExecutable *asAgregatClassExecutable() {return (AgregatClassExecutable *)0;}
00483 virtual const AgregatClassExecutable *asAgregatClassExecutable() const {return (const AgregatClassExecutable *)0;}
00484 virtual Method *asMethod() {return (Method *)0;}
00485 virtual const Method *asMethod() const {return (const Method *)0;}
00486 virtual FEMethod *asFEMethod() {return (FEMethod *)0;}
00487 virtual const FEMethod *asFEMethod() const {return (const FEMethod *)0;}
00488 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
00489 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
00490 virtual BEMethod *asBEMethod() {return (BEMethod *)0;}
00491 virtual const BEMethod *asBEMethod() const {return (const BEMethod *)0;}
00492 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
00493 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
00494 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
00495 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
00496 virtual Trigger *asTrigger() {return (Trigger *)0;}
00497 virtual const Trigger *asTrigger() const {return (const Trigger *)0;}
00498 virtual CardinalityConstraint *asCardinalityConstraint() {return (CardinalityConstraint *)0;}
00499 virtual const CardinalityConstraint *asCardinalityConstraint() const {return (const CardinalityConstraint *)0;}
00500 virtual ~AgregatClassComponent() {garbageRealize();}
00501
00502 protected:
00503 AgregatClassComponent(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : ClassComponent(_db, _dataspace, 1) {}
00504 AgregatClassComponent(const eyedb::Struct *x, eyedb::Bool share, int) : ClassComponent(x, share, 1) {}
00505 AgregatClassComponent(const AgregatClassComponent *x, eyedb::Bool share, int) : ClassComponent(x, share, 1) {}
00506
00507 private:
00508 void initialize(eyedb::Database *_db);
00509
00510 public:
00511 AgregatClassComponent(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00512 AgregatClassComponent(const AgregatClassComponent *, eyedb::Bool = eyedb::False);
00513 AgregatClassComponent(const eyedb::Class *, eyedb::Data);
00514 };
00515
00516 class ClassVariable : public ClassComponent {
00517
00518 public:
00519 ClassVariable(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00520 ClassVariable(const ClassVariable& x);
00521
00522 virtual eyedb::Object *clone() const {return new ClassVariable(*this);};
00523
00524 ClassVariable& operator=(const ClassVariable& x);
00525
00526 virtual ClassVariable *asClassVariable() {return this;}
00527 virtual const ClassVariable *asClassVariable() const {return this;}
00528
00529 eyedb::Status setVname(const std::string &);
00530 eyedb::Status setVname(unsigned int a0, char );
00531 std::string getVname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00532 char getVname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00533
00534 eyedb::Status setVal(eyedb::Object*);
00535 eyedb::Object*getVal(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00536 const eyedb::Object*getVal(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00537 eyedb::Oid getValOid(eyedb::Status * = 0) const;
00538 eyedb::Status setValOid(const eyedb::Oid &);
00539 virtual ~ClassVariable() {garbageRealize();}
00540
00541
00542 Status check(Class *) const;
00543 Bool isInherit() const;
00544 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00545 int getInd() const;
00546 Status m_trace(FILE *, int, unsigned int, const RecMode *);
00547
00548
00549 protected:
00550 ClassVariable(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : ClassComponent(_db, _dataspace, 1) {}
00551 ClassVariable(const eyedb::Struct *x, eyedb::Bool share, int) : ClassComponent(x, share, 1) {}
00552 ClassVariable(const ClassVariable *x, eyedb::Bool share, int) : ClassComponent(x, share, 1) {}
00553
00554 private:
00555 void initialize(eyedb::Database *_db);
00556
00557 public:
00558 ClassVariable(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00559 ClassVariable(const ClassVariable *, eyedb::Bool = eyedb::False);
00560 ClassVariable(const eyedb::Class *, eyedb::Data);
00561 };
00562
00563 class Index : public AttributeComponent {
00564
00565 public:
00566 Index(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00567 Index(const Index& x);
00568
00569 virtual eyedb::Object *clone() const {return new Index(*this);};
00570
00571 Index& operator=(const Index& x);
00572
00573 virtual Index *asIndex() {return this;}
00574 virtual const Index *asIndex() const {return this;}
00575 virtual HashIndex *asHashIndex() {return (HashIndex *)0;}
00576 virtual const HashIndex *asHashIndex() const {return (const HashIndex *)0;}
00577 virtual BTreeIndex *asBTreeIndex() {return (BTreeIndex *)0;}
00578 virtual const BTreeIndex *asBTreeIndex() const {return (const BTreeIndex *)0;}
00579
00580 eyedb::Status setIdxOid(eyedb::Oid );
00581 eyedb::Oid getIdxOid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00582
00583 eyedb::Status setDspid(eyedblib::int16 );
00584 eyedblib::int16 getDspid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00585
00586 eyedb::Status setIsString(eyedb::Bool , eyedb::Bool _check_value = eyedb::True);
00587 eyedb::Bool getIsString(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00588
00589 eyedb::Status setImplHints(unsigned int a0, eyedblib::int32 );
00590 eyedb::Status setImplHintsCount(unsigned int a0);
00591 eyedblib::int32 getImplHints(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00592 unsigned int getImplHintsCount(eyedb::Status * = 0) const;
00593 virtual ~Index() {garbageRealize();}
00594
00595
00596 Index(Database *, const char *, const char *);
00597 virtual Status realize(const RecMode* = NoRecurs);
00598 virtual Status remove(const RecMode* = NoRecurs);
00599 virtual Status s_trace(FILE *, Bool, unsigned int flags = 0) const;
00600 Idx *idx;
00601 Status makeDataspace(Database *db, const Dataspace *&) const;
00602
00603 void userInitialize();
00604 void userCopy(const Object &);
00605 void userGarbage();
00606 Status move(const Dataspace *) const;
00607 short get_dspid() const;
00608 Bool compareHints(Index *idx);
00609 int getInd() const;
00610
00611
00612 Status getCount(unsigned int &count);
00613 Status getStats(std::string &, Bool dspImpl = True,
00614 Bool full = False, const char *indent = "");
00615 Status getStats(IndexStats *&stats);
00616 Status simulate(const IndexImpl &, std::string &,
00617 Bool dspImpl = True, Bool full = False,
00618 const char *indent = "");
00619 Status simulate(const IndexImpl &, IndexStats *&stats);
00620
00621 Status reimplement(const IndexImpl &, Index *&);
00622 virtual Status setImplementation(const IndexImpl *) {return Success;}
00623 virtual Status getImplementation(IndexImpl *&, Bool remote = False) const {return 0;}
00624 Status getDefaultDataspace(const Dataspace *&) const;
00625 Status setDefaultDataspace(const Dataspace *);
00626 Status getObjectLocations(ObjectLocationArray &);
00627 virtual Status report(eyedbsm::DbHandle *sedbh, const Oid &idxoid);
00628
00629
00630 protected:
00631 Index(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
00632 Index(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
00633 Index(const Index *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
00634
00635 private:
00636 void initialize(eyedb::Database *_db);
00637
00638 public:
00639 Index(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00640 Index(const Index *, eyedb::Bool = eyedb::False);
00641 Index(const eyedb::Class *, eyedb::Data);
00642 };
00643
00644 class HashIndex : public Index {
00645
00646 public:
00647 HashIndex(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00648 HashIndex(const HashIndex& x);
00649
00650 virtual eyedb::Object *clone() const {return new HashIndex(*this);};
00651
00652 HashIndex& operator=(const HashIndex& x);
00653
00654 virtual HashIndex *asHashIndex() {return this;}
00655 virtual const HashIndex *asHashIndex() const {return this;}
00656
00657 eyedb::Status setHashMethod(BEMethod_C*);
00658 BEMethod_C*getHashMethod(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00659 const BEMethod_C*getHashMethod(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00660 eyedb::Oid getHashMethodOid(eyedb::Status * = 0) const;
00661 eyedb::Status setHashMethodOid(const eyedb::Oid &);
00662
00663 eyedb::Status setKeyCount(eyedblib::int32 );
00664 eyedblib::int32 getKeyCount(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00665 virtual ~HashIndex() {garbageRealize();}
00666
00667
00668 HashIndex(Database *, Class *, const char *attrpath,
00669 Bool propagate, Bool is_string,
00670 const Dataspace * = 0, int key_count = 0,
00671 BEMethod_C * = 0,
00672 const int *impl_hints = 0, int impl_hints_cnt = 0);
00673 HashIndex(Database *, Class *, const char *attrpath,
00674 Bool propagate, Bool is_string,
00675 const IndexImpl *idximpl);
00676 static Status make(Database *, Class *, const char *attrpath,
00677 Bool propagate, Bool is_string,
00678 const char *hints, HashIndex *&);
00679 Status setImplementation(const IndexImpl *);
00680 Status getImplementation(IndexImpl *&, Bool remote = False) const;
00681 virtual AttributeComponent *xclone(Database *, const Class *);
00682 Status check(Class *) const;
00683 Status make(Class *);
00684 Status realize(const RecMode* = NoRecurs);
00685 Status remove(const RecMode* = NoRecurs);
00686 Status s_trace(FILE *, Bool, unsigned int flags = 0) const;
00687 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00688 Bool compareHashMethod(HashIndex *idx);
00689 const char *genName() const;
00690 virtual Status report(eyedbsm::DbHandle *sedbh, const Oid &idxoid);
00691
00692
00693 protected:
00694 HashIndex(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : Index(_db, _dataspace, 1) {}
00695 HashIndex(const eyedb::Struct *x, eyedb::Bool share, int) : Index(x, share, 1) {}
00696 HashIndex(const HashIndex *x, eyedb::Bool share, int) : Index(x, share, 1) {}
00697
00698 private:
00699 void initialize(eyedb::Database *_db);
00700
00701 public:
00702 HashIndex(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00703 HashIndex(const HashIndex *, eyedb::Bool = eyedb::False);
00704 HashIndex(const eyedb::Class *, eyedb::Data);
00705 };
00706
00707 class BTreeIndex : public Index {
00708
00709 public:
00710 BTreeIndex(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00711 BTreeIndex(const BTreeIndex& x);
00712
00713 virtual eyedb::Object *clone() const {return new BTreeIndex(*this);};
00714
00715 BTreeIndex& operator=(const BTreeIndex& x);
00716
00717 virtual BTreeIndex *asBTreeIndex() {return this;}
00718 virtual const BTreeIndex *asBTreeIndex() const {return this;}
00719
00720 eyedb::Status setDegree(eyedblib::int32 );
00721 eyedblib::int32 getDegree(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00722 virtual ~BTreeIndex() {garbageRealize();}
00723
00724
00725 BTreeIndex(Database *, Class *,
00726 const char *attrpath, Bool propagate, Bool is_string,
00727 const Dataspace * = 0, int degree = 0,
00728 const int *impl_hints = 0, int impl_hints_cnt = 0);
00729 BTreeIndex(Database *, Class *, const char *pathattr,
00730 Bool propagate, Bool is_string,
00731 const IndexImpl *idximpl);
00732 static Status make(Database *, Class *, const char *attrpath,
00733 Bool propagate, Bool is_string,
00734 const char *hints, BTreeIndex *&);
00735 Status setImplementation(const IndexImpl *);
00736 Status getImplementation(IndexImpl *&, Bool remote = False) const;
00737 virtual AttributeComponent *xclone(Database *, const Class *);
00738 Status check(Class *) const;
00739 Status realize(const RecMode* = NoRecurs);
00740 Status remove(const RecMode* = NoRecurs);
00741 Status s_trace(FILE *, Bool, unsigned int flags = 0) const;
00742 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00743 const char *genName() const;
00744 virtual Status report(eyedbsm::DbHandle *sedbh, const Oid &idxoid);
00745
00746
00747 protected:
00748 BTreeIndex(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : Index(_db, _dataspace, 1) {}
00749 BTreeIndex(const eyedb::Struct *x, eyedb::Bool share, int) : Index(x, share, 1) {}
00750 BTreeIndex(const BTreeIndex *x, eyedb::Bool share, int) : Index(x, share, 1) {}
00751
00752 private:
00753 void initialize(eyedb::Database *_db);
00754
00755 public:
00756 BTreeIndex(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00757 BTreeIndex(const BTreeIndex *, eyedb::Bool = eyedb::False);
00758 BTreeIndex(const eyedb::Class *, eyedb::Data);
00759 };
00760
00761 class CollAttrImpl : public AttributeComponent {
00762
00763 public:
00764 CollAttrImpl(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00765 CollAttrImpl(const CollAttrImpl& x);
00766
00767 virtual eyedb::Object *clone() const {return new CollAttrImpl(*this);};
00768
00769 CollAttrImpl& operator=(const CollAttrImpl& x);
00770
00771 virtual CollAttrImpl *asCollAttrImpl() {return this;}
00772 virtual const CollAttrImpl *asCollAttrImpl() const {return this;}
00773
00774 eyedb::Status setIdxtype(eyedblib::int32 );
00775 eyedblib::int32 getIdxtype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00776
00777 eyedb::Status setDspid(eyedblib::int16 );
00778 eyedblib::int16 getDspid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00779
00780 eyedb::Status setKeyCountOrDegree(eyedblib::int32 );
00781 eyedblib::int32 getKeyCountOrDegree(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00782
00783 eyedb::Status setHashMethod(BEMethod_C*);
00784 BEMethod_C*getHashMethod(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00785 const BEMethod_C*getHashMethod(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00786 eyedb::Oid getHashMethodOid(eyedb::Status * = 0) const;
00787 eyedb::Status setHashMethodOid(const eyedb::Oid &);
00788
00789 eyedb::Status setImplHints(unsigned int a0, eyedblib::int32 );
00790 eyedb::Status setImplHintsCount(unsigned int a0);
00791 eyedblib::int32 getImplHints(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00792 unsigned int getImplHintsCount(eyedb::Status * = 0) const;
00793 virtual ~CollAttrImpl() {garbageRealize();}
00794
00795
00796 CollAttrImpl(Database *, Class *, const char *attrpath,
00797 Bool propagate, const Dataspace * = 0,
00798 IndexImpl::Type = IndexImpl::Hash,
00799 int key_count_or_degree = 0,
00800 BEMethod_C * = 0,
00801 const int *impl_hints = 0, int impl_hints_cnt = 0);
00802 CollAttrImpl(Database *, Class *, const char *attrpath,
00803 Bool propagate, const IndexImpl *idximpl);
00804
00805 Status makeDataspace(Database *db, const Dataspace *&) const;
00806 static Status make(Database *, Class *, const char *attrpath,
00807 Bool propagate,
00808 IndexImpl::Type, const char *hints,
00809 CollAttrImpl *&);
00810 Status getImplementation(Database *, const IndexImpl *&);
00811 virtual AttributeComponent *xclone(Database *, const Class *);
00812 Status realize(const RecMode* = NoRecurs);
00813 Status remove(const RecMode* = NoRecurs);
00814 Status s_trace(FILE *, Bool, unsigned int flags = 0) const;
00815 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00816 const char *genName() const;
00817 int getInd() const;
00818
00819 void userInitialize();
00820 void userCopy(const Object &);
00821 void userGarbage();
00822
00823 const Dataspace *dsp;
00824 IndexImpl *idximpl;
00825
00826
00827 protected:
00828 CollAttrImpl(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
00829 CollAttrImpl(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
00830 CollAttrImpl(const CollAttrImpl *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
00831
00832 private:
00833 void initialize(eyedb::Database *_db);
00834
00835 public:
00836 CollAttrImpl(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00837 CollAttrImpl(const CollAttrImpl *, eyedb::Bool = eyedb::False);
00838 CollAttrImpl(const eyedb::Class *, eyedb::Data);
00839 };
00840
00841 class ArgType : public eyedb::Struct {
00842
00843 public:
00844 ArgType(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00845 ArgType(const ArgType& x);
00846
00847 virtual eyedb::Object *clone() const {return new ArgType(*this);};
00848
00849 ArgType& operator=(const ArgType& x);
00850
00851 virtual ArgType *asArgType() {return this;}
00852 virtual const ArgType *asArgType() const {return this;}
00853
00854 eyedb::Status setType(ArgType_Type , eyedb::Bool _check_value = eyedb::True);
00855 ArgType_Type getType(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00856
00857 eyedb::Status setClname(const std::string &);
00858 eyedb::Status setClname(unsigned int a0, char );
00859 std::string getClname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00860 char getClname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00861 virtual ~ArgType() {garbageRealize();}
00862
00863
00864 Bool operator==(const ArgType &) const;
00865
00866 Bool operator!=(const ArgType &) const;
00867 static ArgType *make(Schema *m, const char *s);
00868 static int getBasicType(const char *s);
00869 void declare(FILE *, Schema *, const char *name);
00870 void init(FILE *, Schema *, const char *prefix, const char *name,
00871 const char *indent);
00872 void ret(FILE *, Schema *, const char *prefix, const char *name);
00873 const char *getCType(Schema *) const;
00874 void getCPrefix(FILE *fd, Schema *, const char *prefix,
00875 const char *name, Bool fullcast) const;
00876
00877
00878 protected:
00879 ArgType(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00880 ArgType(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00881 ArgType(const ArgType *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00882
00883 private:
00884 void initialize(eyedb::Database *_db);
00885
00886 public:
00887 ArgType(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00888 ArgType(const ArgType *, eyedb::Bool = eyedb::False);
00889 ArgType(const eyedb::Class *, eyedb::Data);
00890 };
00891
00892 class Signature : public eyedb::Struct {
00893
00894 public:
00895 Signature(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00896 Signature(const Signature& x);
00897
00898 virtual eyedb::Object *clone() const {return new Signature(*this);};
00899
00900 Signature& operator=(const Signature& x);
00901
00902 virtual Signature *asSignature() {return this;}
00903 virtual const Signature *asSignature() const {return this;}
00904
00905 eyedb::Status setRettype(ArgType*);
00906 ArgType*getRettype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00907 const ArgType*getRettype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00908
00909 eyedb::Status setNargs(eyedblib::int32 );
00910 eyedblib::int32 getNargs(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00911
00912 eyedb::Status setTypes(unsigned int a0, ArgType*);
00913 eyedb::Status setTypesCount(unsigned int a0);
00914 ArgType*getTypes(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00915 const ArgType*getTypes(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00916 unsigned int getTypesCount(eyedb::Status * = 0) const;
00917 virtual ~Signature() {garbageRealize();}
00918
00919
00920 Bool operator ==(const Signature &) const;
00921 Bool operator !=(const Signature &) const;
00922 const char *getArg(int i);
00923 static const char *getPrefix(const char *prefix, int i);
00924 static Bool isVoid(const ArgType *type);
00925 void listArgs(FILE *, Schema *);
00926 void declArgs(FILE *, Schema *);
00927 void initArgs(FILE *, Schema *, const char *prefix, const char *preret,
00928 const char *indent);
00929 void setArgs(FILE *, Schema *, int type, const char *prefix,
00930 const char *preret, const char *indent);
00931 void retArgs(FILE *, Schema *, const char *prefix, const char *preret,
00932 const char *indent);
00933
00934
00935 protected:
00936 Signature(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00937 Signature(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00938 Signature(const Signature *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00939
00940 private:
00941 void initialize(eyedb::Database *_db);
00942
00943 public:
00944 Signature(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00945 Signature(const Signature *, eyedb::Bool = eyedb::False);
00946 Signature(const eyedb::Class *, eyedb::Data);
00947 };
00948
00949 class Executable : public eyedb::Struct {
00950
00951 public:
00952 Executable(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00953 Executable(const Executable& x);
00954
00955 virtual eyedb::Object *clone() const {return new Executable(*this);};
00956
00957 Executable& operator=(const Executable& x);
00958
00959 virtual Executable *asExecutable() {return this;}
00960 virtual const Executable *asExecutable() const {return this;}
00961
00962 eyedb::Status setExname(const std::string &);
00963 eyedb::Status setExname(unsigned int a0, char );
00964 std::string getExname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00965 char getExname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00966
00967 eyedb::Status setLang(ExecutableLang , eyedb::Bool _check_value = eyedb::True);
00968 ExecutableLang getLang(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00969
00970 eyedb::Status setLoc(ExecutableLocalisation , eyedb::Bool _check_value = eyedb::True);
00971 ExecutableLocalisation getLoc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00972
00973 eyedb::Status setSign(Signature*);
00974 Signature*getSign(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00975 const Signature*getSign(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00976
00977 eyedb::Status setIntname(const std::string &);
00978 eyedb::Status setIntname(unsigned int a0, char );
00979 std::string getIntname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00980 char getIntname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00981
00982 eyedb::Status setExtrefBody(const std::string &);
00983 eyedb::Status setExtrefBody(unsigned int a0, char );
00984 std::string getExtrefBody(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00985 char getExtrefBody(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00986 virtual ~Executable() {garbageRealize();}
00987
00988
00989 void initExec(const char *exname,
00990 ExecutableLang lang,
00991 Bool isSystem,
00992 ExecutableLocalisation loc,
00993 Signature *sign, Class * = 0);
00994 static const char *makeInternalName(const char *exname,
00995 const Signature *sign,
00996 Bool isClassMethod,
00997 const char *clname = 0);
00998 const char *_getPrototype(const Class *, Bool scope) const;
00999 static const char *makeExtRef(const char *extref);
01000 static const char *getSOTag();
01001 static const char *getSOFile(const char *extref);
01002 static void *_dlopen(const char *extref);
01003 int isStaticExec() const;
01004 void *dl;
01005 void userInitialize();
01006 void userCopy(const Object &);
01007 virtual Status execCheck();
01008 Status checkRealize(const char *, const char *, void **);
01009 static Status checkRealize(const char *extref, const char *intname,
01010 void **pdl, void **pcsym);
01011
01012
01013 protected:
01014 Executable(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01015 Executable(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01016 Executable(const Executable *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01017
01018 private:
01019 void initialize(eyedb::Database *_db);
01020
01021 public:
01022 Executable(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01023 Executable(const Executable *, eyedb::Bool = eyedb::False);
01024 Executable(const eyedb::Class *, eyedb::Data);
01025 };
01026
01027 class AgregatClassExecutable : public AgregatClassComponent {
01028
01029 public:
01030 AgregatClassExecutable(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01031 AgregatClassExecutable(const AgregatClassExecutable& x);
01032
01033 virtual eyedb::Object *clone() const {return new AgregatClassExecutable(*this);};
01034
01035 AgregatClassExecutable& operator=(const AgregatClassExecutable& x);
01036
01037 virtual AgregatClassExecutable *asAgregatClassExecutable() {return this;}
01038 virtual const AgregatClassExecutable *asAgregatClassExecutable() const {return this;}
01039 virtual Method *asMethod() {return (Method *)0;}
01040 virtual const Method *asMethod() const {return (const Method *)0;}
01041 virtual FEMethod *asFEMethod() {return (FEMethod *)0;}
01042 virtual const FEMethod *asFEMethod() const {return (const FEMethod *)0;}
01043 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
01044 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
01045 virtual BEMethod *asBEMethod() {return (BEMethod *)0;}
01046 virtual const BEMethod *asBEMethod() const {return (const BEMethod *)0;}
01047 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
01048 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
01049 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
01050 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
01051 virtual Trigger *asTrigger() {return (Trigger *)0;}
01052 virtual const Trigger *asTrigger() const {return (const Trigger *)0;}
01053
01054 eyedb::Status setEx(Executable*);
01055 Executable*getEx(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01056 const Executable*getEx(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01057 virtual ~AgregatClassExecutable() {garbageRealize();}
01058
01059 protected:
01060 AgregatClassExecutable(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassComponent(_db, _dataspace, 1) {}
01061 AgregatClassExecutable(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01062 AgregatClassExecutable(const AgregatClassExecutable *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01063
01064 private:
01065 void initialize(eyedb::Database *_db);
01066
01067 public:
01068 AgregatClassExecutable(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01069 AgregatClassExecutable(const AgregatClassExecutable *, eyedb::Bool = eyedb::False);
01070 AgregatClassExecutable(const eyedb::Class *, eyedb::Data);
01071 };
01072
01073 class Method : public AgregatClassExecutable {
01074
01075 public:
01076 Method(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01077 Method(const Method& x);
01078
01079 virtual eyedb::Object *clone() const {return new Method(*this);};
01080
01081 Method& operator=(const Method& x);
01082
01083 virtual Method *asMethod() {return this;}
01084 virtual const Method *asMethod() const {return this;}
01085 virtual FEMethod *asFEMethod() {return (FEMethod *)0;}
01086 virtual const FEMethod *asFEMethod() const {return (const FEMethod *)0;}
01087 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
01088 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
01089 virtual BEMethod *asBEMethod() {return (BEMethod *)0;}
01090 virtual const BEMethod *asBEMethod() const {return (const BEMethod *)0;}
01091 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
01092 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
01093 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
01094 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
01095 virtual ~Method() {garbageRealize();}
01096
01097
01098 virtual Status applyTo(Database *, Object *, ArgArray &,
01099 Argument &retarg, Bool checkArgs);
01100 Status realize(const RecMode* = NoRecurs);
01101 Status remove(const RecMode* = NoRecurs);
01102
01103 static Status get(Database *, Class *, const char *name,
01104 const Signature *, Bool isClassMethod,
01105 Method * &);
01106
01107 static Status getSignature(Database *, Class *,
01108 const char *sign_str, Signature *&,
01109 char *&fname);
01110
01111 static Status get(Database *, Class *,
01112 const char *sign_str, Bool isClassMethod,
01113 Method * &);
01114
01115 const char *getPrototype(Bool scope = True) const;
01116
01117 Status check(Class *) const;
01118 Bool isInherit() const;
01119 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01120 int getInd() const;
01121 virtual Status execCheck();
01122
01123
01124 protected:
01125 Method(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassExecutable(_db, _dataspace, 1) {}
01126 Method(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01127 Method(const Method *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01128
01129 private:
01130 void initialize(eyedb::Database *_db);
01131
01132 public:
01133 Method(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01134 Method(const Method *, eyedb::Bool = eyedb::False);
01135 Method(const eyedb::Class *, eyedb::Data);
01136 };
01137
01138 class FEMethod : public Method {
01139
01140 public:
01141 FEMethod(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01142 FEMethod(const FEMethod& x);
01143
01144 virtual eyedb::Object *clone() const {return new FEMethod(*this);};
01145
01146 FEMethod& operator=(const FEMethod& x);
01147
01148 virtual FEMethod *asFEMethod() {return this;}
01149 virtual const FEMethod *asFEMethod() const {return this;}
01150 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
01151 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
01152 virtual ~FEMethod() {garbageRealize();}
01153
01154 protected:
01155 FEMethod(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : Method(_db, _dataspace, 1) {}
01156 FEMethod(const eyedb::Struct *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01157 FEMethod(const FEMethod *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01158
01159 private:
01160 void initialize(eyedb::Database *_db);
01161
01162 public:
01163 FEMethod(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01164 FEMethod(const FEMethod *, eyedb::Bool = eyedb::False);
01165 FEMethod(const eyedb::Class *, eyedb::Data);
01166 };
01167
01168 class FEMethod_C : public FEMethod {
01169
01170 public:
01171 FEMethod_C(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01172 FEMethod_C(const FEMethod_C& x);
01173
01174 virtual eyedb::Object *clone() const {return new FEMethod_C(*this);};
01175
01176 FEMethod_C& operator=(const FEMethod_C& x);
01177
01178 virtual FEMethod_C *asFEMethod_C() {return this;}
01179 virtual const FEMethod_C *asFEMethod_C() const {return this;}
01180 virtual ~FEMethod_C() {garbageRealize();}
01181
01182
01183 Status (*csym)(Database *, FEMethod_C *, Object *,
01184 ArgArray &array, Argument &retarg);
01185 FEMethod_C(Database *, Class *, const char *name,
01186 Signature *, Bool isClassMethod,
01187 Bool isSystem, const char *extref);
01188 Status execCheck();
01189 Status applyTo(Database *, Object *, ArgArray &, Argument &retarg, Bool checkArgs);
01190 void userInitialize();
01191 void userCopy(const Object &);
01192
01193
01194 protected:
01195 FEMethod_C(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : FEMethod(_db, _dataspace, 1) {}
01196 FEMethod_C(const eyedb::Struct *x, eyedb::Bool share, int) : FEMethod(x, share, 1) {}
01197 FEMethod_C(const FEMethod_C *x, eyedb::Bool share, int) : FEMethod(x, share, 1) {}
01198
01199 private:
01200 void initialize(eyedb::Database *_db);
01201
01202 public:
01203 FEMethod_C(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01204 FEMethod_C(const FEMethod_C *, eyedb::Bool = eyedb::False);
01205 FEMethod_C(const eyedb::Class *, eyedb::Data);
01206 };
01207
01208 class BEMethod : public Method {
01209
01210 public:
01211 BEMethod(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01212 BEMethod(const BEMethod& x);
01213
01214 virtual eyedb::Object *clone() const {return new BEMethod(*this);};
01215
01216 BEMethod& operator=(const BEMethod& x);
01217
01218 virtual BEMethod *asBEMethod() {return this;}
01219 virtual const BEMethod *asBEMethod() const {return this;}
01220 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
01221 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
01222 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
01223 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
01224 virtual ~BEMethod() {garbageRealize();}
01225
01226 protected:
01227 BEMethod(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : Method(_db, _dataspace, 1) {}
01228 BEMethod(const eyedb::Struct *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01229 BEMethod(const BEMethod *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01230
01231 private:
01232 void initialize(eyedb::Database *_db);
01233
01234 public:
01235 BEMethod(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01236 BEMethod(const BEMethod *, eyedb::Bool = eyedb::False);
01237 BEMethod(const eyedb::Class *, eyedb::Data);
01238 };
01239
01240 class BEMethod_C : public BEMethod {
01241
01242 public:
01243 BEMethod_C(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01244 BEMethod_C(const BEMethod_C& x);
01245
01246 virtual eyedb::Object *clone() const {return new BEMethod_C(*this);};
01247
01248 BEMethod_C& operator=(const BEMethod_C& x);
01249
01250 virtual BEMethod_C *asBEMethod_C() {return this;}
01251 virtual const BEMethod_C *asBEMethod_C() const {return this;}
01252 virtual ~BEMethod_C() {garbageRealize();}
01253
01254
01255 Status (*csym)(Database *, BEMethod *, Object *,
01256 ArgArray &array, Argument &retarg);
01257 BEMethod_C(Database *, Class *, const char *name,
01258 Signature *, Bool isClassMethod,
01259 Bool isSystem, const char *extref);
01260 Status execCheck();
01261 Status applyTo(Database *, Object *, ArgArray &, Argument &retarg, Bool checkArgs);
01262
01263
01264 protected:
01265 BEMethod_C(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : BEMethod(_db, _dataspace, 1) {}
01266 BEMethod_C(const eyedb::Struct *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01267 BEMethod_C(const BEMethod_C *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01268
01269 private:
01270 void initialize(eyedb::Database *_db);
01271
01272 public:
01273 BEMethod_C(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01274 BEMethod_C(const BEMethod_C *, eyedb::Bool = eyedb::False);
01275 BEMethod_C(const eyedb::Class *, eyedb::Data);
01276 };
01277
01278 class BEMethod_OQL : public BEMethod {
01279
01280 public:
01281 BEMethod_OQL(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01282 BEMethod_OQL(const BEMethod_OQL& x);
01283
01284 virtual eyedb::Object *clone() const {return new BEMethod_OQL(*this);};
01285
01286 BEMethod_OQL& operator=(const BEMethod_OQL& x);
01287
01288 virtual BEMethod_OQL *asBEMethod_OQL() {return this;}
01289 virtual const BEMethod_OQL *asBEMethod_OQL() const {return this;}
01290 virtual ~BEMethod_OQL() {garbageRealize();}
01291
01292
01293 BEMethod_OQL(Database *, Class *, const char *name,
01294 Signature *, Bool isClassMethod,
01295 Bool isSystem, const char *body);
01296
01297 Status execCheck();
01298 Status setBody(const char *);
01299 Status applyTo(Database *, Object *, ArgArray &,
01300 Argument &retarg, Bool checkArgs);
01301
01302 static std::string makeExtrefBody(const Class *cls, const char *oql,
01303 const char *fname,
01304 char *typnames[],
01305 char *varnames[],
01306 unsigned int param_cnt,
01307 std::string &oqlConstruct);
01308 Status runtimeInit();
01309
01310 Bool isRTInitialized;
01311 char **varnames;
01312 int param_cnt;
01313 char *funcname;
01314 char *body;
01315 char *fullBody;
01316 char *tmpbuf;
01317 void *entry;
01318
01319 void userInitialize();
01320 void userGarbage();
01321 void userCopy(const Object &);
01322
01323
01324 protected:
01325 BEMethod_OQL(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : BEMethod(_db, _dataspace, 1) {}
01326 BEMethod_OQL(const eyedb::Struct *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01327 BEMethod_OQL(const BEMethod_OQL *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01328
01329 private:
01330 void initialize(eyedb::Database *_db);
01331
01332 public:
01333 BEMethod_OQL(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01334 BEMethod_OQL(const BEMethod_OQL *, eyedb::Bool = eyedb::False);
01335 BEMethod_OQL(const eyedb::Class *, eyedb::Data);
01336 };
01337
01338 class Trigger : public AgregatClassExecutable {
01339
01340 public:
01341 Trigger(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01342 Trigger(const Trigger& x);
01343
01344 virtual eyedb::Object *clone() const {return new Trigger(*this);};
01345
01346 Trigger& operator=(const Trigger& x);
01347
01348 virtual Trigger *asTrigger() {return this;}
01349 virtual const Trigger *asTrigger() const {return this;}
01350
01351 eyedb::Status setType(TriggerType , eyedb::Bool _check_value = eyedb::True);
01352 TriggerType getType(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01353
01354 eyedb::Status setLight(eyedblib::int32 );
01355 eyedblib::int32 getLight(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01356
01357 eyedb::Status setSuffix(const std::string &);
01358 eyedb::Status setSuffix(unsigned int a0, char );
01359 std::string getSuffix(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01360 char getSuffix(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01361 virtual ~Trigger() {garbageRealize();}
01362
01363
01364 Trigger(Database *, Class *, TriggerType,
01365 ExecutableLang, Bool isSystem, const char *suffix,
01366 Bool light, const char *extref);
01367 Status (*csym)(TriggerType, Database *, const Oid &,
01368 Object *);
01369 Status apply(const Oid &, Object *);
01370 Status realize(const RecMode* = NoRecurs);
01371 Status remove(const RecMode* = NoRecurs);
01372 const char *getPrototype(Bool scope = True) const;
01373 const char *getCSym() const;
01374 static const char *getStrTriggerType(TriggerType);
01375 Bool isInherit() const;
01376 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01377 int getInd() const;
01378
01379 static std::string makeExtrefBody(const Class *cls, const char *oql,
01380 const char *fname,
01381 std::string &oqlConstruct);
01382 Status runtimeInit();
01383
01384 Bool isRTInitialized;
01385 char *funcname;
01386 char *body;
01387 char *fullBody;
01388 char *tmpbuf;
01389 void *entry;
01390
01391 void userInitialize();
01392 void userGarbage();
01393 void userCopy(const Object &);
01394
01395
01396 protected:
01397 Trigger(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassExecutable(_db, _dataspace, 1) {}
01398 Trigger(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01399 Trigger(const Trigger *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01400
01401 private:
01402 void initialize(eyedb::Database *_db);
01403
01404 public:
01405 Trigger(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01406 Trigger(const Trigger *, eyedb::Bool = eyedb::False);
01407 Trigger(const eyedb::Class *, eyedb::Data);
01408 };
01409
01410 class UniqueConstraint : public AttributeComponent {
01411
01412 public:
01413 UniqueConstraint(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01414 UniqueConstraint(const UniqueConstraint& x);
01415
01416 virtual eyedb::Object *clone() const {return new UniqueConstraint(*this);};
01417
01418 UniqueConstraint& operator=(const UniqueConstraint& x);
01419
01420 virtual UniqueConstraint *asUniqueConstraint() {return this;}
01421 virtual const UniqueConstraint *asUniqueConstraint() const {return this;}
01422 virtual ~UniqueConstraint() {garbageRealize();}
01423
01424
01425 UniqueConstraint(Database *, Class *, const char *attrpath,
01426 Bool propagate);
01427 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01428 Status realize(const RecMode* = NoRecurs);
01429 Status remove(const RecMode* = NoRecurs);
01430 virtual AttributeComponent *xclone(Database *, const Class *);
01431 const char *genName() const;
01432 int getInd() const;
01433
01434
01435 protected:
01436 UniqueConstraint(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
01437 UniqueConstraint(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01438 UniqueConstraint(const UniqueConstraint *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01439
01440 private:
01441 void initialize(eyedb::Database *_db);
01442
01443 public:
01444 UniqueConstraint(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01445 UniqueConstraint(const UniqueConstraint *, eyedb::Bool = eyedb::False);
01446 UniqueConstraint(const eyedb::Class *, eyedb::Data);
01447 };
01448
01449 class NotNullConstraint : public AttributeComponent {
01450
01451 public:
01452 NotNullConstraint(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01453 NotNullConstraint(const NotNullConstraint& x);
01454
01455 virtual eyedb::Object *clone() const {return new NotNullConstraint(*this);};
01456
01457 NotNullConstraint& operator=(const NotNullConstraint& x);
01458
01459 virtual NotNullConstraint *asNotNullConstraint() {return this;}
01460 virtual const NotNullConstraint *asNotNullConstraint() const {return this;}
01461 virtual ~NotNullConstraint() {garbageRealize();}
01462
01463
01464 NotNullConstraint(Database *, Class *, const char *attrpath,
01465 Bool propagate);
01466 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01467 Status realize(const RecMode* = NoRecurs);
01468 Status remove(const RecMode* = NoRecurs);
01469 virtual AttributeComponent *xclone(Database *, const Class *);
01470 const char *genName() const;
01471 int getInd() const;
01472
01473
01474 protected:
01475 NotNullConstraint(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
01476 NotNullConstraint(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01477 NotNullConstraint(const NotNullConstraint *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01478
01479 private:
01480 void initialize(eyedb::Database *_db);
01481
01482 public:
01483 NotNullConstraint(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01484 NotNullConstraint(const NotNullConstraint *, eyedb::Bool = eyedb::False);
01485 NotNullConstraint(const eyedb::Class *, eyedb::Data);
01486 };
01487
01488 class CardinalityDescription : public eyedb::Struct {
01489
01490 public:
01491 CardinalityDescription(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01492 CardinalityDescription(const CardinalityDescription& x);
01493
01494 virtual eyedb::Object *clone() const {return new CardinalityDescription(*this);};
01495
01496 CardinalityDescription& operator=(const CardinalityDescription& x);
01497
01498 virtual CardinalityDescription *asCardinalityDescription() {return this;}
01499 virtual const CardinalityDescription *asCardinalityDescription() const {return this;}
01500
01501 eyedb::Status setBottom(eyedblib::int32 );
01502 eyedblib::int32 getBottom(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01503
01504 eyedb::Status setBottomExcl(eyedblib::int32 );
01505 eyedblib::int32 getBottomExcl(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01506
01507 eyedb::Status setTop(eyedblib::int32 );
01508 eyedblib::int32 getTop(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01509
01510 eyedb::Status setTopExcl(eyedblib::int32 );
01511 eyedblib::int32 getTopExcl(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01512 virtual ~CardinalityDescription() {garbageRealize();}
01513
01514
01515 const char *getString(Bool = True) const;
01516 Bool compare(CardinalityDescription *);
01517
01518
01519 protected:
01520 CardinalityDescription(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01521 CardinalityDescription(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01522 CardinalityDescription(const CardinalityDescription *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01523
01524 private:
01525 void initialize(eyedb::Database *_db);
01526
01527 public:
01528 CardinalityDescription(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01529 CardinalityDescription(const CardinalityDescription *, eyedb::Bool = eyedb::False);
01530 CardinalityDescription(const eyedb::Class *, eyedb::Data);
01531 };
01532
01533 class CardinalityConstraint : public AgregatClassComponent {
01534
01535 public:
01536 CardinalityConstraint(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01537 CardinalityConstraint(const CardinalityConstraint& x);
01538
01539 virtual eyedb::Object *clone() const {return new CardinalityConstraint(*this);};
01540
01541 CardinalityConstraint& operator=(const CardinalityConstraint& x);
01542
01543 virtual CardinalityConstraint *asCardinalityConstraint() {return this;}
01544 virtual const CardinalityConstraint *asCardinalityConstraint() const {return this;}
01545
01546 eyedb::Status setAttrname(const std::string &);
01547 eyedb::Status setAttrname(unsigned int a0, char );
01548 std::string getAttrname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01549 char getAttrname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01550
01551 eyedb::Status setCardDesc(CardinalityDescription*);
01552 CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01553 const CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01554 virtual ~CardinalityConstraint() {garbageRealize();}
01555
01556
01557 CardinalityConstraint(Database *, Class *,
01558 const char *attrname, int, int, int, int);
01559 Status check(Class *) const;
01560 const char *genName() const;
01561 Bool isInherit() const;
01562 Status make(Class *);
01563 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01564 int getInd() const;
01565 static int maxint;
01566
01567
01568 protected:
01569 CardinalityConstraint(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassComponent(_db, _dataspace, 1) {}
01570 CardinalityConstraint(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01571 CardinalityConstraint(const CardinalityConstraint *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01572
01573 private:
01574 void initialize(eyedb::Database *_db);
01575
01576 public:
01577 CardinalityConstraint(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01578 CardinalityConstraint(const CardinalityConstraint *, eyedb::Bool = eyedb::False);
01579 CardinalityConstraint(const eyedb::Class *, eyedb::Data);
01580 };
01581
01582 class CardinalityConstraint_Test : public AttributeComponent {
01583
01584 public:
01585 CardinalityConstraint_Test(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01586 CardinalityConstraint_Test(const CardinalityConstraint_Test& x);
01587
01588 virtual eyedb::Object *clone() const {return new CardinalityConstraint_Test(*this);};
01589
01590 CardinalityConstraint_Test& operator=(const CardinalityConstraint_Test& x);
01591
01592 virtual CardinalityConstraint_Test *asCardinalityConstraint_Test() {return this;}
01593 virtual const CardinalityConstraint_Test *asCardinalityConstraint_Test() const {return this;}
01594
01595 eyedb::Status setCardDesc(CardinalityDescription*);
01596 CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01597 const CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01598 virtual ~CardinalityConstraint_Test() {garbageRealize();}
01599
01600
01601 CardinalityConstraint_Test(Database *, Class *,
01602 const char *attrpath,
01603 int, int, int, int);
01604 Status realize(const RecMode* = NoRecurs);
01605 Status remove(const RecMode* = NoRecurs);
01606 const char *genName() const;
01607 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01608 static int maxint;
01609 int getInd() const;
01610
01611
01612 protected:
01613 CardinalityConstraint_Test(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
01614 CardinalityConstraint_Test(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01615 CardinalityConstraint_Test(const CardinalityConstraint_Test *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01616
01617 private:
01618 void initialize(eyedb::Database *_db);
01619
01620 public:
01621 CardinalityConstraint_Test(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01622 CardinalityConstraint_Test(const CardinalityConstraint_Test *, eyedb::Bool = eyedb::False);
01623 CardinalityConstraint_Test(const eyedb::Class *, eyedb::Data);
01624 };
01625
01626 class ProtectionUser : public eyedb::Struct {
01627
01628 public:
01629 ProtectionUser(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01630 ProtectionUser(const ProtectionUser& x);
01631
01632 virtual eyedb::Object *clone() const {return new ProtectionUser(*this);};
01633
01634 ProtectionUser& operator=(const ProtectionUser& x);
01635
01636 virtual ProtectionUser *asProtectionUser() {return this;}
01637 virtual const ProtectionUser *asProtectionUser() const {return this;}
01638
01639 eyedb::Status setUser(eyedb::Object*);
01640 eyedb::Object*getUser(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01641 const eyedb::Object*getUser(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01642 eyedb::Oid getUserOid(eyedb::Status * = 0) const;
01643 eyedb::Status setUserOid(const eyedb::Oid &);
01644
01645 eyedb::Status setMode(ProtectionMode , eyedb::Bool _check_value = eyedb::True);
01646 ProtectionMode getMode(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01647 virtual ~ProtectionUser() {garbageRealize();}
01648
01649 protected:
01650 ProtectionUser(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01651 ProtectionUser(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01652 ProtectionUser(const ProtectionUser *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01653
01654 private:
01655 void initialize(eyedb::Database *_db);
01656
01657 public:
01658 ProtectionUser(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01659 ProtectionUser(const ProtectionUser *, eyedb::Bool = eyedb::False);
01660 ProtectionUser(const eyedb::Class *, eyedb::Data);
01661 };
01662
01663 class Protection : public eyedb::Struct {
01664
01665 public:
01666 Protection(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01667 Protection(const Protection& x);
01668
01669 virtual eyedb::Object *clone() const {return new Protection(*this);};
01670
01671 Protection& operator=(const Protection& x);
01672
01673 virtual Protection *asProtection() {return this;}
01674 virtual const Protection *asProtection() const {return this;}
01675
01676 eyedb::Status setName(const std::string &);
01677 eyedb::Status setName(unsigned int a0, char );
01678 std::string getName(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01679 char getName(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01680
01681 eyedb::Status setPusers(unsigned int a0, ProtectionUser*);
01682 eyedb::Status setPusersCount(unsigned int a0);
01683 ProtectionUser*getPusers(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01684 const ProtectionUser*getPusers(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01685 unsigned int getPusersCount(eyedb::Status * = 0) const;
01686
01687 eyedb::Status setPoid(eyedb::Oid );
01688 eyedb::Oid getPoid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01689 virtual ~Protection() {garbageRealize();}
01690
01691
01692 Status realize(const RecMode* = NoRecurs);
01693 Status remove(const RecMode* = NoRecurs);
01694
01695
01696 protected:
01697 Protection(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01698 Protection(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01699 Protection(const Protection *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01700
01701 private:
01702 void initialize(eyedb::Database *_db);
01703
01704 public:
01705 Protection(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01706 Protection(const Protection *, eyedb::Bool = eyedb::False);
01707 Protection(const eyedb::Class *, eyedb::Data);
01708 };
01709
01710 class UnreadableObject : public eyedb::Struct {
01711
01712 public:
01713 UnreadableObject(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01714 UnreadableObject(const UnreadableObject& x);
01715
01716 virtual eyedb::Object *clone() const {return new UnreadableObject(*this);};
01717
01718 UnreadableObject& operator=(const UnreadableObject& x);
01719
01720 virtual UnreadableObject *asUnreadableObject() {return this;}
01721 virtual const UnreadableObject *asUnreadableObject() const {return this;}
01722 virtual ~UnreadableObject() {garbageRealize();}
01723
01724
01725 Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
01726 static Bool isUnreadableObject(const Object *);
01727 static Bool isUnreadableObject(const Class *);
01728
01729
01730 protected:
01731 UnreadableObject(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01732 UnreadableObject(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01733 UnreadableObject(const UnreadableObject *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01734
01735 private:
01736 void initialize(eyedb::Database *_db);
01737
01738 public:
01739 UnreadableObject(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01740 UnreadableObject(const UnreadableObject *, eyedb::Bool = eyedb::False);
01741 UnreadableObject(const eyedb::Class *, eyedb::Data);
01742 };
01743
01744 class ClassConversion : public eyedb::Struct {
01745
01746 public:
01747 ClassConversion(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01748 ClassConversion(const ClassConversion& x);
01749
01750 virtual eyedb::Object *clone() const {return new ClassConversion(*this);};
01751
01752 ClassConversion& operator=(const ClassConversion& x);
01753
01754 virtual ClassConversion *asClassConversion() {return this;}
01755 virtual const ClassConversion *asClassConversion() const {return this;}
01756
01757 eyedb::Status setUpdtype(ClassUpdateType , eyedb::Bool _check_value = eyedb::True);
01758 ClassUpdateType getUpdtype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01759
01760 eyedb::Status setCnvtype(AttributeConvertType , eyedb::Bool _check_value = eyedb::True);
01761 AttributeConvertType getCnvtype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01762
01763 eyedb::Status setClsname(const std::string &);
01764 eyedb::Status setClsname(unsigned int a0, char );
01765 std::string getClsname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01766 char getClsname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01767
01768 eyedb::Status setAttrname(const std::string &);
01769 eyedb::Status setAttrname(unsigned int a0, char );
01770 std::string getAttrname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01771 char getAttrname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01772
01773 eyedb::Status setAttrnum(eyedblib::int32 );
01774 eyedblib::int32 getAttrnum(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01775
01776 eyedb::Status setOidO(eyedb::Oid );
01777 eyedb::Oid getOidO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01778
01779 eyedb::Status setOidN(eyedb::Oid );
01780 eyedb::Oid getOidN(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01781
01782 eyedb::Status setRoidO(eyedb::Oid );
01783 eyedb::Oid getRoidO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01784
01785 eyedb::Status setSync(eyedblib::int32 );
01786 eyedblib::int32 getSync(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01787
01788 eyedb::Status setWithCheck(eyedblib::int32 );
01789 eyedblib::int32 getWithCheck(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01790
01791 eyedb::Status setSrcDim(eyedblib::int32 );
01792 eyedblib::int32 getSrcDim(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01793
01794 eyedb::Status setDestDim(eyedblib::int32 );
01795 eyedblib::int32 getDestDim(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01796
01797 eyedb::Status setOffsetO(eyedblib::int32 );
01798 eyedblib::int32 getOffsetO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01799
01800 eyedb::Status setOffsetN(eyedblib::int32 );
01801 eyedblib::int32 getOffsetN(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01802
01803 eyedb::Status setSizeO(eyedblib::int32 );
01804 eyedblib::int32 getSizeO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01805
01806 eyedb::Status setSizeN(eyedblib::int32 );
01807 eyedblib::int32 getSizeN(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01808
01809 eyedb::Status setCnvMth(BEMethod_C*);
01810 BEMethod_C*getCnvMth(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01811 const BEMethod_C*getCnvMth(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01812 eyedb::Oid getCnvMthOid(eyedb::Status * = 0) const;
01813 eyedb::Status setCnvMthOid(const eyedb::Oid &);
01814 virtual ~ClassConversion() {garbageRealize();}
01815
01816
01817 struct Context {
01818 const Class *cls;
01819 ObjectArray obj_arr;
01820 Context *next;
01821 Context();
01822 ~Context();
01823 };
01824
01825 const Class *cls_;
01826 const Attribute *attr_;
01827 static Status getClass_(Database *, const Oid &ocloid,
01828 const Class *&,
01829 ClassConversion::Context *&,
01830 Bool class_to_class = False);
01831 static Status convert(Database *, const ClassConversion::Context *,
01832 Data in_idr, Size in_size);
01833 Status convert(Database *db, Data in_idr, Size &in_size);
01834 static Size computeSize(ClassConversion::Context *conv_ctx,
01835 Size start_size);
01836 void computeSize(Size &cur_size);
01837
01838 static void init();
01839 static void _release();
01840
01841 void userInitialize();
01842 void userCopy(const Object &);
01843 void userGarbage();
01844
01845
01846 protected:
01847 ClassConversion(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01848 ClassConversion(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01849 ClassConversion(const ClassConversion *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01850
01851 private:
01852 void initialize(eyedb::Database *_db);
01853
01854 public:
01855 ClassConversion(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01856 ClassConversion(const ClassConversion *, eyedb::Bool = eyedb::False);
01857 ClassConversion(const eyedb::Class *, eyedb::Data);
01858 };
01859
01860
01861 extern eyedb::Object *sysclsMakeObject(eyedb::Object *, eyedb::Bool=eyedb::True);
01862 extern eyedb::Bool syscls_set_oid_check(eyedb::Bool);
01863 extern eyedb::Bool syscls_get_oid_check();
01864
01865 extern eyedb::EnumClass *IndexType_Class;
01866 extern eyedb::EnumClass *ExecutableLang_Class;
01867 extern eyedb::EnumClass *ArgType_Type_Class;
01868 extern eyedb::EnumClass *ExecutableLocalisation_Class;
01869 extern eyedb::EnumClass *ExecutableType_Class;
01870 extern eyedb::EnumClass *TriggerType_Class;
01871 extern eyedb::EnumClass *ProtectionMode_Class;
01872 extern eyedb::EnumClass *ClassUpdateType_Class;
01873 extern eyedb::EnumClass *AttributeConvertType_Class;
01874 extern eyedb::StructClass *AttributeComponent_Class;
01875 extern eyedb::StructClass *AttributeComponentSet_Class;
01876 extern eyedb::StructClass *ClassComponent_Class;
01877 extern eyedb::StructClass *AgregatClassComponent_Class;
01878 extern eyedb::StructClass *ClassVariable_Class;
01879 extern eyedb::StructClass *Index_Class;
01880 extern eyedb::StructClass *HashIndex_Class;
01881 extern eyedb::StructClass *BTreeIndex_Class;
01882 extern eyedb::StructClass *CollAttrImpl_Class;
01883 extern eyedb::StructClass *ArgType_Class;
01884 extern eyedb::StructClass *Signature_Class;
01885 extern eyedb::StructClass *Executable_Class;
01886 extern eyedb::StructClass *AgregatClassExecutable_Class;
01887 extern eyedb::StructClass *Method_Class;
01888 extern eyedb::StructClass *FEMethod_Class;
01889 extern eyedb::StructClass *FEMethod_C_Class;
01890 extern eyedb::StructClass *BEMethod_Class;
01891 extern eyedb::StructClass *BEMethod_C_Class;
01892 extern eyedb::StructClass *BEMethod_OQL_Class;
01893 extern eyedb::StructClass *Trigger_Class;
01894 extern eyedb::StructClass *UniqueConstraint_Class;
01895 extern eyedb::StructClass *NotNullConstraint_Class;
01896 extern eyedb::StructClass *CardinalityDescription_Class;
01897 extern eyedb::StructClass *CardinalityConstraint_Class;
01898 extern eyedb::StructClass *CardinalityConstraint_Test_Class;
01899 extern eyedb::StructClass *ProtectionUser_Class;
01900 extern eyedb::StructClass *Protection_Class;
01901 extern eyedb::StructClass *UnreadableObject_Class;
01902 extern eyedb::StructClass *ClassConversion_Class;
01903
01904
01905 }
01906
01907 #endif