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::CollImpl * = 0);
00335 eyedb::Status rmvFromCompsColl(AttributeComponent*, eyedb::Bool checkFirst = eyedb::False);
00336 eyedb::Status addToCompsColl(const eyedb::Oid &, const eyedb::CollImpl * = 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 setImplType(eyedblib::int32 );
00775 eyedblib::int32 getImplType(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
00797 CollAttrImpl(Database *, Class *, const char *attrpath,
00798 Bool propagate, const Dataspace * = 0,
00799 CollImpl::Type impl_type = CollImpl::HashIndex,
00800 int key_count_or_degree = 0,
00801 BEMethod_C * = 0,
00802 const int *impl_hints = 0, int impl_hints_cnt = 0);
00803 CollAttrImpl(Database *, Class *, const char *attrpath,
00804 Bool propagate, const IndexImpl *idximpl);
00805
00806 Status makeDataspace(Database *db, const Dataspace *&) const;
00807 static Status make(Database *, Class *, const char *attrpath,
00808 Bool propagate,
00809 CollImpl::Type impl_type, const char *hints,
00810 CollAttrImpl *&);
00811 Status getImplementation(Database *, const CollImpl *&);
00812 virtual AttributeComponent *xclone(Database *, const Class *);
00813 Status realize(const RecMode* = NoRecurs);
00814 Status remove(const RecMode* = NoRecurs);
00815 Status s_trace(FILE *, Bool, unsigned int flags = 0) const;
00816 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
00817 const char *genName() const;
00818 int getInd() const;
00819
00820 void userInitialize();
00821 void userCopy(const Object &);
00822 void userGarbage();
00823
00824 const Dataspace *dsp;
00825 CollImpl *collimpl;
00826
00827
00828 protected:
00829 CollAttrImpl(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
00830 CollAttrImpl(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
00831 CollAttrImpl(const CollAttrImpl *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
00832
00833 private:
00834 void initialize(eyedb::Database *_db);
00835
00836 public:
00837 CollAttrImpl(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00838 CollAttrImpl(const CollAttrImpl *, eyedb::Bool = eyedb::False);
00839 CollAttrImpl(const eyedb::Class *, eyedb::Data);
00840 };
00841
00842 class ArgType : public eyedb::Struct {
00843
00844 public:
00845 ArgType(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00846 ArgType(const ArgType& x);
00847
00848 virtual eyedb::Object *clone() const {return new ArgType(*this);};
00849
00850 ArgType& operator=(const ArgType& x);
00851
00852 virtual ArgType *asArgType() {return this;}
00853 virtual const ArgType *asArgType() const {return this;}
00854
00855 eyedb::Status setType(ArgType_Type , eyedb::Bool _check_value = eyedb::True);
00856 ArgType_Type getType(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00857
00858 eyedb::Status setClname(const std::string &);
00859 eyedb::Status setClname(unsigned int a0, char );
00860 std::string getClname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00861 char getClname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00862 virtual ~ArgType() {garbageRealize();}
00863
00864
00865 Bool operator==(const ArgType &) const;
00866
00867 Bool operator!=(const ArgType &) const;
00868 static ArgType *make(Schema *m, const char *s);
00869 static int getBasicType(const char *s);
00870 void declare(FILE *, Schema *, const char *name);
00871 void init(FILE *, Schema *, const char *prefix, const char *name,
00872 const char *indent);
00873 void ret(FILE *, Schema *, const char *prefix, const char *name);
00874 const char *getCType(Schema *) const;
00875 void getCPrefix(FILE *fd, Schema *, const char *prefix,
00876 const char *name, Bool fullcast) const;
00877
00878
00879 protected:
00880 ArgType(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00881 ArgType(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00882 ArgType(const ArgType *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00883
00884 private:
00885 void initialize(eyedb::Database *_db);
00886
00887 public:
00888 ArgType(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00889 ArgType(const ArgType *, eyedb::Bool = eyedb::False);
00890 ArgType(const eyedb::Class *, eyedb::Data);
00891 };
00892
00893 class Signature : public eyedb::Struct {
00894
00895 public:
00896 Signature(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00897 Signature(const Signature& x);
00898
00899 virtual eyedb::Object *clone() const {return new Signature(*this);};
00900
00901 Signature& operator=(const Signature& x);
00902
00903 virtual Signature *asSignature() {return this;}
00904 virtual const Signature *asSignature() const {return this;}
00905
00906 eyedb::Status setRettype(ArgType*);
00907 ArgType*getRettype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00908 const ArgType*getRettype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00909
00910 eyedb::Status setNargs(eyedblib::int32 );
00911 eyedblib::int32 getNargs(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00912
00913 eyedb::Status setTypes(unsigned int a0, ArgType*);
00914 eyedb::Status setTypesCount(unsigned int a0);
00915 ArgType*getTypes(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00916 const ArgType*getTypes(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00917 unsigned int getTypesCount(eyedb::Status * = 0) const;
00918 virtual ~Signature() {garbageRealize();}
00919
00920
00921 Bool operator ==(const Signature &) const;
00922 Bool operator !=(const Signature &) const;
00923 const char *getArg(int i);
00924 static const char *getPrefix(const char *prefix, int i);
00925 static Bool isVoid(const ArgType *type);
00926 void listArgs(FILE *, Schema *);
00927 void declArgs(FILE *, Schema *);
00928 void initArgs(FILE *, Schema *, const char *prefix, const char *preret,
00929 const char *indent);
00930 void setArgs(FILE *, Schema *, int type, const char *prefix,
00931 const char *preret, const char *indent);
00932 void retArgs(FILE *, Schema *, const char *prefix, const char *preret,
00933 const char *indent);
00934
00935
00936 protected:
00937 Signature(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00938 Signature(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00939 Signature(const Signature *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00940
00941 private:
00942 void initialize(eyedb::Database *_db);
00943
00944 public:
00945 Signature(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00946 Signature(const Signature *, eyedb::Bool = eyedb::False);
00947 Signature(const eyedb::Class *, eyedb::Data);
00948 };
00949
00950 class Executable : public eyedb::Struct {
00951
00952 public:
00953 Executable(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00954 Executable(const Executable& x);
00955
00956 virtual eyedb::Object *clone() const {return new Executable(*this);};
00957
00958 Executable& operator=(const Executable& x);
00959
00960 virtual Executable *asExecutable() {return this;}
00961 virtual const Executable *asExecutable() const {return this;}
00962
00963 eyedb::Status setExname(const std::string &);
00964 eyedb::Status setExname(unsigned int a0, char );
00965 std::string getExname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00966 char getExname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00967
00968 eyedb::Status setLang(ExecutableLang , eyedb::Bool _check_value = eyedb::True);
00969 ExecutableLang getLang(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00970
00971 eyedb::Status setLoc(ExecutableLocalisation , eyedb::Bool _check_value = eyedb::True);
00972 ExecutableLocalisation getLoc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00973
00974 eyedb::Status setSign(Signature*);
00975 Signature*getSign(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00976 const Signature*getSign(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00977
00978 eyedb::Status setIntname(const std::string &);
00979 eyedb::Status setIntname(unsigned int a0, char );
00980 std::string getIntname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00981 char getIntname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00982
00983 eyedb::Status setExtrefBody(const std::string &);
00984 eyedb::Status setExtrefBody(unsigned int a0, char );
00985 std::string getExtrefBody(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00986 char getExtrefBody(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00987 virtual ~Executable() {garbageRealize();}
00988
00989
00990 void initExec(const char *exname,
00991 ExecutableLang lang,
00992 Bool isSystem,
00993 ExecutableLocalisation loc,
00994 Signature *sign, Class * = 0);
00995 static const char *makeInternalName(const char *exname,
00996 const Signature *sign,
00997 Bool isClassMethod,
00998 const char *clname = 0);
00999 const char *_getPrototype(const Class *, Bool scope) const;
01000 static const char *makeExtRef(const char *extref);
01001 static const char *getSOTag();
01002 static const char *getSOFile(const char *extref);
01003 static void *_dlopen(const char *extref);
01004 int isStaticExec() const;
01005 void *dl;
01006 void userInitialize();
01007 void userCopy(const Object &);
01008 virtual Status execCheck();
01009 Status checkRealize(const char *, const char *, void **);
01010 static Status checkRealize(const char *extref, const char *intname,
01011 void **pdl, void **pcsym);
01012
01013
01014 protected:
01015 Executable(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01016 Executable(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01017 Executable(const Executable *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01018
01019 private:
01020 void initialize(eyedb::Database *_db);
01021
01022 public:
01023 Executable(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01024 Executable(const Executable *, eyedb::Bool = eyedb::False);
01025 Executable(const eyedb::Class *, eyedb::Data);
01026 };
01027
01028 class AgregatClassExecutable : public AgregatClassComponent {
01029
01030 public:
01031 AgregatClassExecutable(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01032 AgregatClassExecutable(const AgregatClassExecutable& x);
01033
01034 virtual eyedb::Object *clone() const {return new AgregatClassExecutable(*this);};
01035
01036 AgregatClassExecutable& operator=(const AgregatClassExecutable& x);
01037
01038 virtual AgregatClassExecutable *asAgregatClassExecutable() {return this;}
01039 virtual const AgregatClassExecutable *asAgregatClassExecutable() const {return this;}
01040 virtual Method *asMethod() {return (Method *)0;}
01041 virtual const Method *asMethod() const {return (const Method *)0;}
01042 virtual FEMethod *asFEMethod() {return (FEMethod *)0;}
01043 virtual const FEMethod *asFEMethod() const {return (const FEMethod *)0;}
01044 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
01045 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
01046 virtual BEMethod *asBEMethod() {return (BEMethod *)0;}
01047 virtual const BEMethod *asBEMethod() const {return (const BEMethod *)0;}
01048 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
01049 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
01050 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
01051 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
01052 virtual Trigger *asTrigger() {return (Trigger *)0;}
01053 virtual const Trigger *asTrigger() const {return (const Trigger *)0;}
01054
01055 eyedb::Status setEx(Executable*);
01056 Executable*getEx(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01057 const Executable*getEx(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01058 virtual ~AgregatClassExecutable() {garbageRealize();}
01059
01060 protected:
01061 AgregatClassExecutable(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassComponent(_db, _dataspace, 1) {}
01062 AgregatClassExecutable(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01063 AgregatClassExecutable(const AgregatClassExecutable *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01064
01065 private:
01066 void initialize(eyedb::Database *_db);
01067
01068 public:
01069 AgregatClassExecutable(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01070 AgregatClassExecutable(const AgregatClassExecutable *, eyedb::Bool = eyedb::False);
01071 AgregatClassExecutable(const eyedb::Class *, eyedb::Data);
01072 };
01073
01074 class Method : public AgregatClassExecutable {
01075
01076 public:
01077 Method(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01078 Method(const Method& x);
01079
01080 virtual eyedb::Object *clone() const {return new Method(*this);};
01081
01082 Method& operator=(const Method& x);
01083
01084 virtual Method *asMethod() {return this;}
01085 virtual const Method *asMethod() const {return this;}
01086 virtual FEMethod *asFEMethod() {return (FEMethod *)0;}
01087 virtual const FEMethod *asFEMethod() const {return (const FEMethod *)0;}
01088 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
01089 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
01090 virtual BEMethod *asBEMethod() {return (BEMethod *)0;}
01091 virtual const BEMethod *asBEMethod() const {return (const BEMethod *)0;}
01092 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
01093 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
01094 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
01095 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
01096 virtual ~Method() {garbageRealize();}
01097
01098
01099 virtual Status applyTo(Database *, Object *, ArgArray &,
01100 Argument &retarg, Bool checkArgs);
01101 Status realize(const RecMode* = NoRecurs);
01102 Status remove(const RecMode* = NoRecurs);
01103
01104 static Status get(Database *, Class *, const char *name,
01105 const Signature *, Bool isClassMethod,
01106 Method * &);
01107
01108 static Status getSignature(Database *, Class *,
01109 const char *sign_str, Signature *&,
01110 char *&fname);
01111
01112 static Status get(Database *, Class *,
01113 const char *sign_str, Bool isClassMethod,
01114 Method * &);
01115
01116 const char *getPrototype(Bool scope = True) const;
01117
01118 Status check(Class *) const;
01119 Bool isInherit() const;
01120 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01121 int getInd() const;
01122 virtual Status execCheck();
01123
01124
01125 protected:
01126 Method(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassExecutable(_db, _dataspace, 1) {}
01127 Method(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01128 Method(const Method *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01129
01130 private:
01131 void initialize(eyedb::Database *_db);
01132
01133 public:
01134 Method(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01135 Method(const Method *, eyedb::Bool = eyedb::False);
01136 Method(const eyedb::Class *, eyedb::Data);
01137 };
01138
01139 class FEMethod : public Method {
01140
01141 public:
01142 FEMethod(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01143 FEMethod(const FEMethod& x);
01144
01145 virtual eyedb::Object *clone() const {return new FEMethod(*this);};
01146
01147 FEMethod& operator=(const FEMethod& x);
01148
01149 virtual FEMethod *asFEMethod() {return this;}
01150 virtual const FEMethod *asFEMethod() const {return this;}
01151 virtual FEMethod_C *asFEMethod_C() {return (FEMethod_C *)0;}
01152 virtual const FEMethod_C *asFEMethod_C() const {return (const FEMethod_C *)0;}
01153 virtual ~FEMethod() {garbageRealize();}
01154
01155 protected:
01156 FEMethod(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : Method(_db, _dataspace, 1) {}
01157 FEMethod(const eyedb::Struct *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01158 FEMethod(const FEMethod *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01159
01160 private:
01161 void initialize(eyedb::Database *_db);
01162
01163 public:
01164 FEMethod(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01165 FEMethod(const FEMethod *, eyedb::Bool = eyedb::False);
01166 FEMethod(const eyedb::Class *, eyedb::Data);
01167 };
01168
01169 class FEMethod_C : public FEMethod {
01170
01171 public:
01172 FEMethod_C(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01173 FEMethod_C(const FEMethod_C& x);
01174
01175 virtual eyedb::Object *clone() const {return new FEMethod_C(*this);};
01176
01177 FEMethod_C& operator=(const FEMethod_C& x);
01178
01179 virtual FEMethod_C *asFEMethod_C() {return this;}
01180 virtual const FEMethod_C *asFEMethod_C() const {return this;}
01181 virtual ~FEMethod_C() {garbageRealize();}
01182
01183
01184 Status (*csym)(Database *, FEMethod_C *, Object *,
01185 ArgArray &array, Argument &retarg);
01186 FEMethod_C(Database *, Class *, const char *name,
01187 Signature *, Bool isClassMethod,
01188 Bool isSystem, const char *extref);
01189 Status execCheck();
01190 Status applyTo(Database *, Object *, ArgArray &, Argument &retarg, Bool checkArgs);
01191 void userInitialize();
01192 void userCopy(const Object &);
01193
01194
01195 protected:
01196 FEMethod_C(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : FEMethod(_db, _dataspace, 1) {}
01197 FEMethod_C(const eyedb::Struct *x, eyedb::Bool share, int) : FEMethod(x, share, 1) {}
01198 FEMethod_C(const FEMethod_C *x, eyedb::Bool share, int) : FEMethod(x, share, 1) {}
01199
01200 private:
01201 void initialize(eyedb::Database *_db);
01202
01203 public:
01204 FEMethod_C(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01205 FEMethod_C(const FEMethod_C *, eyedb::Bool = eyedb::False);
01206 FEMethod_C(const eyedb::Class *, eyedb::Data);
01207 };
01208
01209 class BEMethod : public Method {
01210
01211 public:
01212 BEMethod(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01213 BEMethod(const BEMethod& x);
01214
01215 virtual eyedb::Object *clone() const {return new BEMethod(*this);};
01216
01217 BEMethod& operator=(const BEMethod& x);
01218
01219 virtual BEMethod *asBEMethod() {return this;}
01220 virtual const BEMethod *asBEMethod() const {return this;}
01221 virtual BEMethod_C *asBEMethod_C() {return (BEMethod_C *)0;}
01222 virtual const BEMethod_C *asBEMethod_C() const {return (const BEMethod_C *)0;}
01223 virtual BEMethod_OQL *asBEMethod_OQL() {return (BEMethod_OQL *)0;}
01224 virtual const BEMethod_OQL *asBEMethod_OQL() const {return (const BEMethod_OQL *)0;}
01225 virtual ~BEMethod() {garbageRealize();}
01226
01227 protected:
01228 BEMethod(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : Method(_db, _dataspace, 1) {}
01229 BEMethod(const eyedb::Struct *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01230 BEMethod(const BEMethod *x, eyedb::Bool share, int) : Method(x, share, 1) {}
01231
01232 private:
01233 void initialize(eyedb::Database *_db);
01234
01235 public:
01236 BEMethod(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01237 BEMethod(const BEMethod *, eyedb::Bool = eyedb::False);
01238 BEMethod(const eyedb::Class *, eyedb::Data);
01239 };
01240
01241 class BEMethod_C : public BEMethod {
01242
01243 public:
01244 BEMethod_C(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01245 BEMethod_C(const BEMethod_C& x);
01246
01247 virtual eyedb::Object *clone() const {return new BEMethod_C(*this);};
01248
01249 BEMethod_C& operator=(const BEMethod_C& x);
01250
01251 virtual BEMethod_C *asBEMethod_C() {return this;}
01252 virtual const BEMethod_C *asBEMethod_C() const {return this;}
01253 virtual ~BEMethod_C() {garbageRealize();}
01254
01255
01256 Status (*csym)(Database *, BEMethod *, Object *,
01257 ArgArray &array, Argument &retarg);
01258 BEMethod_C(Database *, Class *, const char *name,
01259 Signature *, Bool isClassMethod,
01260 Bool isSystem, const char *extref);
01261 Status execCheck();
01262 Status applyTo(Database *, Object *, ArgArray &, Argument &retarg, Bool checkArgs);
01263
01264
01265 protected:
01266 BEMethod_C(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : BEMethod(_db, _dataspace, 1) {}
01267 BEMethod_C(const eyedb::Struct *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01268 BEMethod_C(const BEMethod_C *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01269
01270 private:
01271 void initialize(eyedb::Database *_db);
01272
01273 public:
01274 BEMethod_C(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01275 BEMethod_C(const BEMethod_C *, eyedb::Bool = eyedb::False);
01276 BEMethod_C(const eyedb::Class *, eyedb::Data);
01277 };
01278
01279 class BEMethod_OQL : public BEMethod {
01280
01281 public:
01282 BEMethod_OQL(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01283 BEMethod_OQL(const BEMethod_OQL& x);
01284
01285 virtual eyedb::Object *clone() const {return new BEMethod_OQL(*this);};
01286
01287 BEMethod_OQL& operator=(const BEMethod_OQL& x);
01288
01289 virtual BEMethod_OQL *asBEMethod_OQL() {return this;}
01290 virtual const BEMethod_OQL *asBEMethod_OQL() const {return this;}
01291 virtual ~BEMethod_OQL() {garbageRealize();}
01292
01293
01294 BEMethod_OQL(Database *, Class *, const char *name,
01295 Signature *, Bool isClassMethod,
01296 Bool isSystem, const char *body);
01297
01298 Status execCheck();
01299 Status setBody(const char *);
01300 Status applyTo(Database *, Object *, ArgArray &,
01301 Argument &retarg, Bool checkArgs);
01302
01303 static std::string makeExtrefBody(const Class *cls, const char *oql,
01304 const char *fname,
01305 char *typnames[],
01306 char *varnames[],
01307 unsigned int param_cnt,
01308 std::string &oqlConstruct);
01309 Status runtimeInit();
01310
01311 Bool isRTInitialized;
01312 char **varnames;
01313 int param_cnt;
01314 char *funcname;
01315 char *body;
01316 char *fullBody;
01317 char *tmpbuf;
01318 void *entry;
01319
01320 void userInitialize();
01321 void userGarbage();
01322 void userCopy(const Object &);
01323
01324
01325 protected:
01326 BEMethod_OQL(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : BEMethod(_db, _dataspace, 1) {}
01327 BEMethod_OQL(const eyedb::Struct *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01328 BEMethod_OQL(const BEMethod_OQL *x, eyedb::Bool share, int) : BEMethod(x, share, 1) {}
01329
01330 private:
01331 void initialize(eyedb::Database *_db);
01332
01333 public:
01334 BEMethod_OQL(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01335 BEMethod_OQL(const BEMethod_OQL *, eyedb::Bool = eyedb::False);
01336 BEMethod_OQL(const eyedb::Class *, eyedb::Data);
01337 };
01338
01339 class Trigger : public AgregatClassExecutable {
01340
01341 public:
01342 Trigger(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01343 Trigger(const Trigger& x);
01344
01345 virtual eyedb::Object *clone() const {return new Trigger(*this);};
01346
01347 Trigger& operator=(const Trigger& x);
01348
01349 virtual Trigger *asTrigger() {return this;}
01350 virtual const Trigger *asTrigger() const {return this;}
01351
01352 eyedb::Status setType(TriggerType , eyedb::Bool _check_value = eyedb::True);
01353 TriggerType getType(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01354
01355 eyedb::Status setLight(eyedblib::int32 );
01356 eyedblib::int32 getLight(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01357
01358 eyedb::Status setSuffix(const std::string &);
01359 eyedb::Status setSuffix(unsigned int a0, char );
01360 std::string getSuffix(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01361 char getSuffix(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01362 virtual ~Trigger() {garbageRealize();}
01363
01364
01365 Trigger(Database *, Class *, TriggerType,
01366 ExecutableLang, Bool isSystem, const char *suffix,
01367 Bool light, const char *extref);
01368 Status (*csym)(TriggerType, Database *, const Oid &,
01369 Object *);
01370 Status apply(const Oid &, Object *);
01371 Status realize(const RecMode* = NoRecurs);
01372 Status remove(const RecMode* = NoRecurs);
01373 const char *getPrototype(Bool scope = True) const;
01374 const char *getCSym() const;
01375 static const char *getStrTriggerType(TriggerType);
01376 Bool isInherit() const;
01377 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01378 int getInd() const;
01379
01380 static std::string makeExtrefBody(const Class *cls, const char *oql,
01381 const char *fname,
01382 std::string &oqlConstruct);
01383 Status runtimeInit();
01384
01385 Bool isRTInitialized;
01386 char *funcname;
01387 char *body;
01388 char *fullBody;
01389 char *tmpbuf;
01390 void *entry;
01391
01392 void userInitialize();
01393 void userGarbage();
01394 void userCopy(const Object &);
01395
01396
01397 protected:
01398 Trigger(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassExecutable(_db, _dataspace, 1) {}
01399 Trigger(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01400 Trigger(const Trigger *x, eyedb::Bool share, int) : AgregatClassExecutable(x, share, 1) {}
01401
01402 private:
01403 void initialize(eyedb::Database *_db);
01404
01405 public:
01406 Trigger(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01407 Trigger(const Trigger *, eyedb::Bool = eyedb::False);
01408 Trigger(const eyedb::Class *, eyedb::Data);
01409 };
01410
01411 class UniqueConstraint : public AttributeComponent {
01412
01413 public:
01414 UniqueConstraint(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01415 UniqueConstraint(const UniqueConstraint& x);
01416
01417 virtual eyedb::Object *clone() const {return new UniqueConstraint(*this);};
01418
01419 UniqueConstraint& operator=(const UniqueConstraint& x);
01420
01421 virtual UniqueConstraint *asUniqueConstraint() {return this;}
01422 virtual const UniqueConstraint *asUniqueConstraint() const {return this;}
01423 virtual ~UniqueConstraint() {garbageRealize();}
01424
01425
01426 UniqueConstraint(Database *, Class *, const char *attrpath,
01427 Bool propagate);
01428 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01429 Status realize(const RecMode* = NoRecurs);
01430 Status remove(const RecMode* = NoRecurs);
01431 virtual AttributeComponent *xclone(Database *, const Class *);
01432 const char *genName() const;
01433 int getInd() const;
01434
01435
01436 protected:
01437 UniqueConstraint(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
01438 UniqueConstraint(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01439 UniqueConstraint(const UniqueConstraint *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01440
01441 private:
01442 void initialize(eyedb::Database *_db);
01443
01444 public:
01445 UniqueConstraint(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01446 UniqueConstraint(const UniqueConstraint *, eyedb::Bool = eyedb::False);
01447 UniqueConstraint(const eyedb::Class *, eyedb::Data);
01448 };
01449
01450 class NotNullConstraint : public AttributeComponent {
01451
01452 public:
01453 NotNullConstraint(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01454 NotNullConstraint(const NotNullConstraint& x);
01455
01456 virtual eyedb::Object *clone() const {return new NotNullConstraint(*this);};
01457
01458 NotNullConstraint& operator=(const NotNullConstraint& x);
01459
01460 virtual NotNullConstraint *asNotNullConstraint() {return this;}
01461 virtual const NotNullConstraint *asNotNullConstraint() const {return this;}
01462 virtual ~NotNullConstraint() {garbageRealize();}
01463
01464
01465 NotNullConstraint(Database *, Class *, const char *attrpath,
01466 Bool propagate);
01467 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01468 Status realize(const RecMode* = NoRecurs);
01469 Status remove(const RecMode* = NoRecurs);
01470 virtual AttributeComponent *xclone(Database *, const Class *);
01471 const char *genName() const;
01472 int getInd() const;
01473
01474
01475 protected:
01476 NotNullConstraint(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
01477 NotNullConstraint(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01478 NotNullConstraint(const NotNullConstraint *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01479
01480 private:
01481 void initialize(eyedb::Database *_db);
01482
01483 public:
01484 NotNullConstraint(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01485 NotNullConstraint(const NotNullConstraint *, eyedb::Bool = eyedb::False);
01486 NotNullConstraint(const eyedb::Class *, eyedb::Data);
01487 };
01488
01489 class CardinalityDescription : public eyedb::Struct {
01490
01491 public:
01492 CardinalityDescription(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01493 CardinalityDescription(const CardinalityDescription& x);
01494
01495 virtual eyedb::Object *clone() const {return new CardinalityDescription(*this);};
01496
01497 CardinalityDescription& operator=(const CardinalityDescription& x);
01498
01499 virtual CardinalityDescription *asCardinalityDescription() {return this;}
01500 virtual const CardinalityDescription *asCardinalityDescription() const {return this;}
01501
01502 eyedb::Status setBottom(eyedblib::int32 );
01503 eyedblib::int32 getBottom(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01504
01505 eyedb::Status setBottomExcl(eyedblib::int32 );
01506 eyedblib::int32 getBottomExcl(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01507
01508 eyedb::Status setTop(eyedblib::int32 );
01509 eyedblib::int32 getTop(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01510
01511 eyedb::Status setTopExcl(eyedblib::int32 );
01512 eyedblib::int32 getTopExcl(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01513 virtual ~CardinalityDescription() {garbageRealize();}
01514
01515
01516 const char *getString(Bool = True) const;
01517 Bool compare(CardinalityDescription *);
01518
01519
01520 protected:
01521 CardinalityDescription(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01522 CardinalityDescription(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01523 CardinalityDescription(const CardinalityDescription *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01524
01525 private:
01526 void initialize(eyedb::Database *_db);
01527
01528 public:
01529 CardinalityDescription(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01530 CardinalityDescription(const CardinalityDescription *, eyedb::Bool = eyedb::False);
01531 CardinalityDescription(const eyedb::Class *, eyedb::Data);
01532 };
01533
01534 class CardinalityConstraint : public AgregatClassComponent {
01535
01536 public:
01537 CardinalityConstraint(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01538 CardinalityConstraint(const CardinalityConstraint& x);
01539
01540 virtual eyedb::Object *clone() const {return new CardinalityConstraint(*this);};
01541
01542 CardinalityConstraint& operator=(const CardinalityConstraint& x);
01543
01544 virtual CardinalityConstraint *asCardinalityConstraint() {return this;}
01545 virtual const CardinalityConstraint *asCardinalityConstraint() const {return this;}
01546
01547 eyedb::Status setAttrname(const std::string &);
01548 eyedb::Status setAttrname(unsigned int a0, char );
01549 std::string getAttrname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01550 char getAttrname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01551
01552 eyedb::Status setCardDesc(CardinalityDescription*);
01553 CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01554 const CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01555 virtual ~CardinalityConstraint() {garbageRealize();}
01556
01557
01558 CardinalityConstraint(Database *, Class *,
01559 const char *attrname, int, int, int, int);
01560 Status check(Class *) const;
01561 const char *genName() const;
01562 Bool isInherit() const;
01563 Status make(Class *);
01564 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01565 int getInd() const;
01566 static int maxint;
01567
01568
01569 protected:
01570 CardinalityConstraint(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AgregatClassComponent(_db, _dataspace, 1) {}
01571 CardinalityConstraint(const eyedb::Struct *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01572 CardinalityConstraint(const CardinalityConstraint *x, eyedb::Bool share, int) : AgregatClassComponent(x, share, 1) {}
01573
01574 private:
01575 void initialize(eyedb::Database *_db);
01576
01577 public:
01578 CardinalityConstraint(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01579 CardinalityConstraint(const CardinalityConstraint *, eyedb::Bool = eyedb::False);
01580 CardinalityConstraint(const eyedb::Class *, eyedb::Data);
01581 };
01582
01583 class CardinalityConstraint_Test : public AttributeComponent {
01584
01585 public:
01586 CardinalityConstraint_Test(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01587 CardinalityConstraint_Test(const CardinalityConstraint_Test& x);
01588
01589 virtual eyedb::Object *clone() const {return new CardinalityConstraint_Test(*this);};
01590
01591 CardinalityConstraint_Test& operator=(const CardinalityConstraint_Test& x);
01592
01593 virtual CardinalityConstraint_Test *asCardinalityConstraint_Test() {return this;}
01594 virtual const CardinalityConstraint_Test *asCardinalityConstraint_Test() const {return this;}
01595
01596 eyedb::Status setCardDesc(CardinalityDescription*);
01597 CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01598 const CardinalityDescription*getCardDesc(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01599 virtual ~CardinalityConstraint_Test() {garbageRealize();}
01600
01601
01602 CardinalityConstraint_Test(Database *, Class *,
01603 const char *attrpath,
01604 int, int, int, int);
01605 Status realize(const RecMode* = NoRecurs);
01606 Status remove(const RecMode* = NoRecurs);
01607 const char *genName() const;
01608 Status m_trace(FILE *, int, unsigned int, const RecMode *) const;
01609 static int maxint;
01610 int getInd() const;
01611
01612
01613 protected:
01614 CardinalityConstraint_Test(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : AttributeComponent(_db, _dataspace, 1) {}
01615 CardinalityConstraint_Test(const eyedb::Struct *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01616 CardinalityConstraint_Test(const CardinalityConstraint_Test *x, eyedb::Bool share, int) : AttributeComponent(x, share, 1) {}
01617
01618 private:
01619 void initialize(eyedb::Database *_db);
01620
01621 public:
01622 CardinalityConstraint_Test(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01623 CardinalityConstraint_Test(const CardinalityConstraint_Test *, eyedb::Bool = eyedb::False);
01624 CardinalityConstraint_Test(const eyedb::Class *, eyedb::Data);
01625 };
01626
01627 class ProtectionUser : public eyedb::Struct {
01628
01629 public:
01630 ProtectionUser(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01631 ProtectionUser(const ProtectionUser& x);
01632
01633 virtual eyedb::Object *clone() const {return new ProtectionUser(*this);};
01634
01635 ProtectionUser& operator=(const ProtectionUser& x);
01636
01637 virtual ProtectionUser *asProtectionUser() {return this;}
01638 virtual const ProtectionUser *asProtectionUser() const {return this;}
01639
01640 eyedb::Status setUser(eyedb::Object*);
01641 eyedb::Object*getUser(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01642 const eyedb::Object*getUser(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01643 eyedb::Oid getUserOid(eyedb::Status * = 0) const;
01644 eyedb::Status setUserOid(const eyedb::Oid &);
01645
01646 eyedb::Status setMode(ProtectionMode , eyedb::Bool _check_value = eyedb::True);
01647 ProtectionMode getMode(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01648 virtual ~ProtectionUser() {garbageRealize();}
01649
01650 protected:
01651 ProtectionUser(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01652 ProtectionUser(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01653 ProtectionUser(const ProtectionUser *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01654
01655 private:
01656 void initialize(eyedb::Database *_db);
01657
01658 public:
01659 ProtectionUser(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01660 ProtectionUser(const ProtectionUser *, eyedb::Bool = eyedb::False);
01661 ProtectionUser(const eyedb::Class *, eyedb::Data);
01662 };
01663
01664 class Protection : public eyedb::Struct {
01665
01666 public:
01667 Protection(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01668 Protection(const Protection& x);
01669
01670 virtual eyedb::Object *clone() const {return new Protection(*this);};
01671
01672 Protection& operator=(const Protection& x);
01673
01674 virtual Protection *asProtection() {return this;}
01675 virtual const Protection *asProtection() const {return this;}
01676
01677 eyedb::Status setName(const std::string &);
01678 eyedb::Status setName(unsigned int a0, char );
01679 std::string getName(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01680 char getName(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01681
01682 eyedb::Status setPusers(unsigned int a0, ProtectionUser*);
01683 eyedb::Status setPusersCount(unsigned int a0);
01684 ProtectionUser*getPusers(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01685 const ProtectionUser*getPusers(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01686 unsigned int getPusersCount(eyedb::Status * = 0) const;
01687
01688 eyedb::Status setPoid(eyedb::Oid );
01689 eyedb::Oid getPoid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01690 virtual ~Protection() {garbageRealize();}
01691
01692
01693 Status realize(const RecMode* = NoRecurs);
01694 Status remove(const RecMode* = NoRecurs);
01695
01696
01697 protected:
01698 Protection(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01699 Protection(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01700 Protection(const Protection *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01701
01702 private:
01703 void initialize(eyedb::Database *_db);
01704
01705 public:
01706 Protection(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01707 Protection(const Protection *, eyedb::Bool = eyedb::False);
01708 Protection(const eyedb::Class *, eyedb::Data);
01709 };
01710
01711 class UnreadableObject : public eyedb::Struct {
01712
01713 public:
01714 UnreadableObject(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01715 UnreadableObject(const UnreadableObject& x);
01716
01717 virtual eyedb::Object *clone() const {return new UnreadableObject(*this);};
01718
01719 UnreadableObject& operator=(const UnreadableObject& x);
01720
01721 virtual UnreadableObject *asUnreadableObject() {return this;}
01722 virtual const UnreadableObject *asUnreadableObject() const {return this;}
01723 virtual ~UnreadableObject() {garbageRealize();}
01724
01725
01726 Status trace_realize(FILE*, int, unsigned int, const RecMode *) const;
01727 static Bool isUnreadableObject(const Object *);
01728 static Bool isUnreadableObject(const Class *);
01729
01730
01731 protected:
01732 UnreadableObject(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01733 UnreadableObject(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01734 UnreadableObject(const UnreadableObject *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01735
01736 private:
01737 void initialize(eyedb::Database *_db);
01738
01739 public:
01740 UnreadableObject(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01741 UnreadableObject(const UnreadableObject *, eyedb::Bool = eyedb::False);
01742 UnreadableObject(const eyedb::Class *, eyedb::Data);
01743 };
01744
01745 class ClassConversion : public eyedb::Struct {
01746
01747 public:
01748 ClassConversion(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
01749 ClassConversion(const ClassConversion& x);
01750
01751 virtual eyedb::Object *clone() const {return new ClassConversion(*this);};
01752
01753 ClassConversion& operator=(const ClassConversion& x);
01754
01755 virtual ClassConversion *asClassConversion() {return this;}
01756 virtual const ClassConversion *asClassConversion() const {return this;}
01757
01758 eyedb::Status setUpdtype(ClassUpdateType , eyedb::Bool _check_value = eyedb::True);
01759 ClassUpdateType getUpdtype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01760
01761 eyedb::Status setCnvtype(AttributeConvertType , eyedb::Bool _check_value = eyedb::True);
01762 AttributeConvertType getCnvtype(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01763
01764 eyedb::Status setClsname(const std::string &);
01765 eyedb::Status setClsname(unsigned int a0, char );
01766 std::string getClsname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01767 char getClsname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01768
01769 eyedb::Status setAttrname(const std::string &);
01770 eyedb::Status setAttrname(unsigned int a0, char );
01771 std::string getAttrname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01772 char getAttrname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01773
01774 eyedb::Status setAttrnum(eyedblib::int32 );
01775 eyedblib::int32 getAttrnum(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01776
01777 eyedb::Status setOidO(eyedb::Oid );
01778 eyedb::Oid getOidO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01779
01780 eyedb::Status setOidN(eyedb::Oid );
01781 eyedb::Oid getOidN(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01782
01783 eyedb::Status setRoidO(eyedb::Oid );
01784 eyedb::Oid getRoidO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01785
01786 eyedb::Status setSync(eyedblib::int32 );
01787 eyedblib::int32 getSync(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01788
01789 eyedb::Status setWithCheck(eyedblib::int32 );
01790 eyedblib::int32 getWithCheck(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01791
01792 eyedb::Status setSrcDim(eyedblib::int32 );
01793 eyedblib::int32 getSrcDim(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01794
01795 eyedb::Status setDestDim(eyedblib::int32 );
01796 eyedblib::int32 getDestDim(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01797
01798 eyedb::Status setOffsetO(eyedblib::int32 );
01799 eyedblib::int32 getOffsetO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01800
01801 eyedb::Status setOffsetN(eyedblib::int32 );
01802 eyedblib::int32 getOffsetN(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01803
01804 eyedb::Status setSizeO(eyedblib::int32 );
01805 eyedblib::int32 getSizeO(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01806
01807 eyedb::Status setSizeN(eyedblib::int32 );
01808 eyedblib::int32 getSizeN(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01809
01810 eyedb::Status setCnvMth(BEMethod_C*);
01811 BEMethod_C*getCnvMth(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
01812 const BEMethod_C*getCnvMth(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
01813 eyedb::Oid getCnvMthOid(eyedb::Status * = 0) const;
01814 eyedb::Status setCnvMthOid(const eyedb::Oid &);
01815 virtual ~ClassConversion() {garbageRealize();}
01816
01817
01818 struct Context {
01819 const Class *cls;
01820 ObjectArray obj_arr;
01821 Context *next;
01822 Context();
01823 ~Context();
01824 };
01825
01826 const Class *cls_;
01827 const Attribute *attr_;
01828 static Status getClass_(Database *, const Oid &ocloid,
01829 const Class *&,
01830 ClassConversion::Context *&,
01831 Bool class_to_class = False);
01832 static Status convert(Database *, const ClassConversion::Context *,
01833 Data in_idr, Size in_size);
01834 Status convert(Database *db, Data in_idr, Size &in_size);
01835 static Size computeSize(ClassConversion::Context *conv_ctx,
01836 Size start_size);
01837 void computeSize(Size &cur_size);
01838
01839 static void init();
01840 static void _release();
01841
01842 void userInitialize();
01843 void userCopy(const Object &);
01844 void userGarbage();
01845
01846
01847 protected:
01848 ClassConversion(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
01849 ClassConversion(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01850 ClassConversion(const ClassConversion *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
01851
01852 private:
01853 void initialize(eyedb::Database *_db);
01854
01855 public:
01856 ClassConversion(const eyedb::Struct *, eyedb::Bool = eyedb::False);
01857 ClassConversion(const ClassConversion *, eyedb::Bool = eyedb::False);
01858 ClassConversion(const eyedb::Class *, eyedb::Data);
01859 };
01860
01861
01862 extern eyedb::Object *sysclsMakeObject(eyedb::Object *, eyedb::Bool=eyedb::True);
01863 extern eyedb::Bool syscls_set_oid_check(eyedb::Bool);
01864 extern eyedb::Bool syscls_get_oid_check();
01865
01866 extern eyedb::EnumClass *IndexType_Class;
01867 extern eyedb::EnumClass *ExecutableLang_Class;
01868 extern eyedb::EnumClass *ArgType_Type_Class;
01869 extern eyedb::EnumClass *ExecutableLocalisation_Class;
01870 extern eyedb::EnumClass *ExecutableType_Class;
01871 extern eyedb::EnumClass *TriggerType_Class;
01872 extern eyedb::EnumClass *ProtectionMode_Class;
01873 extern eyedb::EnumClass *ClassUpdateType_Class;
01874 extern eyedb::EnumClass *AttributeConvertType_Class;
01875 extern eyedb::StructClass *AttributeComponent_Class;
01876 extern eyedb::StructClass *AttributeComponentSet_Class;
01877 extern eyedb::StructClass *ClassComponent_Class;
01878 extern eyedb::StructClass *AgregatClassComponent_Class;
01879 extern eyedb::StructClass *ClassVariable_Class;
01880 extern eyedb::StructClass *Index_Class;
01881 extern eyedb::StructClass *HashIndex_Class;
01882 extern eyedb::StructClass *BTreeIndex_Class;
01883 extern eyedb::StructClass *CollAttrImpl_Class;
01884 extern eyedb::StructClass *ArgType_Class;
01885 extern eyedb::StructClass *Signature_Class;
01886 extern eyedb::StructClass *Executable_Class;
01887 extern eyedb::StructClass *AgregatClassExecutable_Class;
01888 extern eyedb::StructClass *Method_Class;
01889 extern eyedb::StructClass *FEMethod_Class;
01890 extern eyedb::StructClass *FEMethod_C_Class;
01891 extern eyedb::StructClass *BEMethod_Class;
01892 extern eyedb::StructClass *BEMethod_C_Class;
01893 extern eyedb::StructClass *BEMethod_OQL_Class;
01894 extern eyedb::StructClass *Trigger_Class;
01895 extern eyedb::StructClass *UniqueConstraint_Class;
01896 extern eyedb::StructClass *NotNullConstraint_Class;
01897 extern eyedb::StructClass *CardinalityDescription_Class;
01898 extern eyedb::StructClass *CardinalityConstraint_Class;
01899 extern eyedb::StructClass *CardinalityConstraint_Test_Class;
01900 extern eyedb::StructClass *ProtectionUser_Class;
01901 extern eyedb::StructClass *Protection_Class;
01902 extern eyedb::StructClass *UnreadableObject_Class;
01903 extern eyedb::StructClass *ClassConversion_Class;
01904
01905
01906 }
01907
01908 #endif