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_DBM_
00020 #define _eyedb_DBM_
00021
00022 namespace eyedb {
00023
00024 class UserEntry;
00025 class DBUserAccess;
00026 class SysUserAccess;
00027 class DBEntry;
00028 class DBPropertyValue;
00029 class DBProperty;
00030
00031
00032 class DBM {
00033
00034 public:
00035 DBM(int &argc, char *argv[]) {
00036 eyedb::init(argc, argv);
00037 init();
00038 }
00039
00040 ~DBM() {
00041 release();
00042 eyedb::release();
00043 }
00044
00045 static void init();
00046 static void release();
00047 static eyedb::Status updateSchema(eyedb::Database *db);
00048 static eyedb::Status updateSchema(eyedb::Schema *m);
00049 };
00050
00051 class DBMDatabase : public eyedb::Database {
00052
00053 public:
00054 DBMDatabase(const char *dbname, const char *_dbmdb_str = 0) : eyedb::Database(dbname, _dbmdb_str) {}
00055 DBMDatabase(eyedb::Connection *conn, const char *dbname, const char *_dbmdb_str, eyedb::Database::OpenFlag, const char *user = 0, const char *passwd = 0);
00056 DBMDatabase(eyedb::Connection *conn, const char *dbname, eyedb::Database::OpenFlag, const char *user = 0, const char *passwd = 0);
00057 DBMDatabase(const char *dbname, int _dbid, const char *_dbmdb_str = 0) : eyedb::Database(dbname, _dbid, _dbmdb_str) {}
00058 DBMDatabase(int _dbid, const char *_dbmdb_str = 0) : eyedb::Database(_dbid, _dbmdb_str) {}
00059 eyedb::Status open(eyedb::Connection *, eyedb::Database::OpenFlag, const char *user = 0, const char *passwd = 0);
00060 eyedb::Status open(eyedb::Connection *, eyedb::Database::OpenFlag, const eyedb::OpenHints *hints, const char *user = 0, const char *passwd = 0);
00061 static void setConsApp(eyedb::Database *);
00062 static eyedb::Status checkSchema(eyedb::Schema *);
00063 static eyedb::Bool getDynamicGetErrorPolicy();
00064 static eyedb::Bool getDynamicSetErrorPolicy();
00065 static void setDynamicGetErrorPolicy(eyedb::Bool policy);
00066 static void setDynamicSetErrorPolicy(eyedb::Bool policy);
00067 };
00068
00069 enum SysAccessMode {
00070 NoSysAccessMode = 0,
00071 DBCreateSysAccessMode = 256,
00072 AddUserSysAccessMode = 512,
00073 DeleteUserSysAccessMode = 1024,
00074 SetUserPasswdSysAccessMode = 2048,
00075 AdminSysAccessMode = 768,
00076 SuperUserSysAccessMode = 4095
00077 };
00078
00079 enum DBAccessMode {
00080 NoDBAccessMode = 0,
00081 ReadDBAccessMode = 16,
00082 WriteDBAccessMode = 32,
00083 ExecDBAccessMode = 64,
00084 ReadWriteDBAccessMode = 48,
00085 ReadExecDBAccessMode = 80,
00086 ReadWriteExecDBAccessMode = 112,
00087 AdminDBAccessMode = 113
00088 };
00089
00090 enum UserType {
00091 EyeDBUser = 1,
00092 UnixUser = 2,
00093 StrictUnixUser = 3
00094 };
00095
00096 class UserEntry : public eyedb::Struct {
00097
00098 public:
00099 UserEntry(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00100 UserEntry(const UserEntry& x);
00101
00102 virtual eyedb::Object *clone() const {return new UserEntry(*this);};
00103
00104 UserEntry& operator=(const UserEntry& x);
00105
00106 virtual UserEntry *asUserEntry() {return this;}
00107 virtual const UserEntry *asUserEntry() const {return this;}
00108
00109 eyedb::Status name(const std::string &);
00110 eyedb::Status name(unsigned int a0, char );
00111 std::string name(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00112 char name(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00113
00114 eyedb::Status passwd(const std::string &);
00115 eyedb::Status passwd(unsigned int a0, char );
00116 std::string passwd(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00117 char passwd(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00118
00119 eyedb::Status uid(eyedblib::int32 );
00120 eyedblib::int32 uid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00121
00122 eyedb::Status type(UserType , eyedb::Bool _check_value = eyedb::True);
00123 UserType type(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00124 virtual ~UserEntry() {garbageRealize();}
00125
00126 protected:
00127 UserEntry(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00128 UserEntry(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00129 UserEntry(const UserEntry *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00130
00131 private:
00132 void initialize(eyedb::Database *_db);
00133
00134 public:
00135 UserEntry(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00136 UserEntry(const UserEntry *, eyedb::Bool = eyedb::False);
00137 UserEntry(const eyedb::Class *, eyedb::Data);
00138 };
00139
00140 class DBUserAccess : public eyedb::Struct {
00141
00142 public:
00143 DBUserAccess(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00144 DBUserAccess(const DBUserAccess& x);
00145
00146 virtual eyedb::Object *clone() const {return new DBUserAccess(*this);};
00147
00148 DBUserAccess& operator=(const DBUserAccess& x);
00149
00150 virtual DBUserAccess *asDBUserAccess() {return this;}
00151 virtual const DBUserAccess *asDBUserAccess() const {return this;}
00152
00153 eyedb::Status dbentry(DBEntry*);
00154 DBEntry*dbentry(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00155 const DBEntry*dbentry(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00156 eyedb::Oid dbentry_oid(eyedb::Status * = 0) const;
00157 eyedb::Status dbentry_oid(const eyedb::Oid &);
00158
00159 eyedb::Status user(UserEntry*);
00160 UserEntry*user(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00161 const UserEntry*user(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00162 eyedb::Oid user_oid(eyedb::Status * = 0) const;
00163 eyedb::Status user_oid(const eyedb::Oid &);
00164
00165 eyedb::Status mode(DBAccessMode , eyedb::Bool _check_value = eyedb::True);
00166 DBAccessMode mode(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00167 virtual ~DBUserAccess() {garbageRealize();}
00168
00169 protected:
00170 DBUserAccess(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00171 DBUserAccess(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00172 DBUserAccess(const DBUserAccess *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00173
00174 private:
00175 void initialize(eyedb::Database *_db);
00176
00177 public:
00178 DBUserAccess(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00179 DBUserAccess(const DBUserAccess *, eyedb::Bool = eyedb::False);
00180 DBUserAccess(const eyedb::Class *, eyedb::Data);
00181 };
00182
00183 class SysUserAccess : public eyedb::Struct {
00184
00185 public:
00186 SysUserAccess(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00187 SysUserAccess(const SysUserAccess& x);
00188
00189 virtual eyedb::Object *clone() const {return new SysUserAccess(*this);};
00190
00191 SysUserAccess& operator=(const SysUserAccess& x);
00192
00193 virtual SysUserAccess *asSysUserAccess() {return this;}
00194 virtual const SysUserAccess *asSysUserAccess() const {return this;}
00195
00196 eyedb::Status user(UserEntry*);
00197 UserEntry*user(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00198 const UserEntry*user(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00199 eyedb::Oid user_oid(eyedb::Status * = 0) const;
00200 eyedb::Status user_oid(const eyedb::Oid &);
00201
00202 eyedb::Status mode(SysAccessMode , eyedb::Bool _check_value = eyedb::True);
00203 SysAccessMode mode(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00204 virtual ~SysUserAccess() {garbageRealize();}
00205
00206 protected:
00207 SysUserAccess(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00208 SysUserAccess(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00209 SysUserAccess(const SysUserAccess *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00210
00211 private:
00212 void initialize(eyedb::Database *_db);
00213
00214 public:
00215 SysUserAccess(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00216 SysUserAccess(const SysUserAccess *, eyedb::Bool = eyedb::False);
00217 SysUserAccess(const eyedb::Class *, eyedb::Data);
00218 };
00219
00220 class DBEntry : public eyedb::Struct {
00221
00222 public:
00223 DBEntry(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00224 DBEntry(const DBEntry& x);
00225
00226 virtual eyedb::Object *clone() const {return new DBEntry(*this);};
00227
00228 DBEntry& operator=(const DBEntry& x);
00229
00230 virtual DBEntry *asDBEntry() {return this;}
00231 virtual const DBEntry *asDBEntry() const {return this;}
00232
00233 eyedb::Status dbname(const std::string &);
00234 eyedb::Status dbname(unsigned int a0, char );
00235 std::string dbname(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00236 char dbname(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00237
00238 eyedb::Status dbid(eyedblib::int32 );
00239 eyedblib::int32 dbid(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00240
00241 eyedb::Status dbfile(const std::string &);
00242 eyedb::Status dbfile(unsigned int a0, char );
00243 std::string dbfile(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00244 char dbfile(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00245
00246 eyedb::Status default_access(DBAccessMode , eyedb::Bool _check_value = eyedb::True);
00247 DBAccessMode default_access(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00248
00249 eyedb::Status schm(eyedb::Object*);
00250 eyedb::Object*schm(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00251 const eyedb::Object*schm(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00252 eyedb::Oid schm_oid(eyedb::Status * = 0) const;
00253 eyedb::Status schm_oid(const eyedb::Oid &);
00254
00255 eyedb::Status comment(const std::string &);
00256 eyedb::Status comment(unsigned int a0, char );
00257 std::string comment(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00258 char comment(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00259
00260 eyedb::Status props(unsigned int a0, DBProperty*);
00261 eyedb::Status props_cnt(unsigned int a0);
00262 DBProperty*props(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00263 const DBProperty*props(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00264 eyedb::Oid props_oid(unsigned int a0, eyedb::Status * = 0) const;
00265 eyedb::Status props_oid(unsigned int a0, const eyedb::Oid &);
00266 unsigned int props_cnt(eyedb::Status * = 0) const;
00267 virtual ~DBEntry() {garbageRealize();}
00268
00269 protected:
00270 DBEntry(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00271 DBEntry(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00272 DBEntry(const DBEntry *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00273
00274 private:
00275 void initialize(eyedb::Database *_db);
00276
00277 public:
00278 DBEntry(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00279 DBEntry(const DBEntry *, eyedb::Bool = eyedb::False);
00280 DBEntry(const eyedb::Class *, eyedb::Data);
00281 };
00282
00283 class DBPropertyValue : public eyedb::Struct {
00284
00285 public:
00286 DBPropertyValue(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00287 DBPropertyValue(const DBPropertyValue& x);
00288
00289 virtual eyedb::Object *clone() const {return new DBPropertyValue(*this);};
00290
00291 DBPropertyValue& operator=(const DBPropertyValue& x);
00292
00293 virtual DBPropertyValue *asDBPropertyValue() {return this;}
00294 virtual const DBPropertyValue *asDBPropertyValue() const {return this;}
00295
00296 eyedb::Status ival(eyedblib::int64 );
00297 eyedblib::int64 ival(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00298
00299 eyedb::Status sval(const std::string &);
00300 eyedb::Status sval(unsigned int a0, char );
00301 std::string sval(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00302 char sval(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00303
00304 eyedb::Status bval(const unsigned char *, unsigned int len);
00305 eyedb::Status bval(unsigned int a0, unsigned char );
00306 eyedb::Status bval_cnt(unsigned int a0);
00307 const unsigned char *bval(unsigned int *len, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00308 unsigned char bval(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00309 unsigned int bval_cnt(eyedb::Status * = 0) const;
00310
00311 eyedb::Status oval(eyedb::Object*);
00312 eyedb::Object*oval(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00313 const eyedb::Object*oval(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00314 eyedb::Oid oval_oid(eyedb::Status * = 0) const;
00315 eyedb::Status oval_oid(const eyedb::Oid &);
00316 virtual ~DBPropertyValue() {garbageRealize();}
00317
00318 protected:
00319 DBPropertyValue(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00320 DBPropertyValue(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00321 DBPropertyValue(const DBPropertyValue *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00322
00323 private:
00324 void initialize(eyedb::Database *_db);
00325
00326 public:
00327 DBPropertyValue(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00328 DBPropertyValue(const DBPropertyValue *, eyedb::Bool = eyedb::False);
00329 DBPropertyValue(const eyedb::Class *, eyedb::Data);
00330 };
00331
00332 class DBProperty : public eyedb::Struct {
00333
00334 public:
00335 DBProperty(eyedb::Database * = 0, const eyedb::Dataspace * = 0);
00336 DBProperty(const DBProperty& x);
00337
00338 virtual eyedb::Object *clone() const {return new DBProperty(*this);};
00339
00340 DBProperty& operator=(const DBProperty& x);
00341
00342 virtual DBProperty *asDBProperty() {return this;}
00343 virtual const DBProperty *asDBProperty() const {return this;}
00344
00345 eyedb::Status key(const std::string &);
00346 eyedb::Status key(unsigned int a0, char );
00347 std::string key(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00348 char key(unsigned int a0, eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00349
00350 eyedb::Status value(DBPropertyValue*);
00351 DBPropertyValue*value(eyedb::Bool *isnull = 0, eyedb::Status * = 0) ;
00352 const DBPropertyValue*value(eyedb::Bool *isnull = 0, eyedb::Status * = 0) const;
00353 virtual ~DBProperty() {garbageRealize();}
00354
00355 protected:
00356 DBProperty(eyedb::Database *_db, const eyedb::Dataspace *_dataspace, int) : eyedb::Struct(_db, _dataspace) {}
00357 DBProperty(const eyedb::Struct *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00358 DBProperty(const DBProperty *x, eyedb::Bool share, int) : eyedb::Struct(x, share) {}
00359
00360 private:
00361 void initialize(eyedb::Database *_db);
00362
00363 public:
00364 DBProperty(const eyedb::Struct *, eyedb::Bool = eyedb::False);
00365 DBProperty(const DBProperty *, eyedb::Bool = eyedb::False);
00366 DBProperty(const eyedb::Class *, eyedb::Data);
00367 };
00368
00369
00370 extern eyedb::Object *DBMMakeObject(eyedb::Object *, eyedb::Bool=eyedb::True);
00371 extern eyedb::Bool DBM_set_oid_check(eyedb::Bool);
00372 extern eyedb::Bool DBM_get_oid_check();
00373
00374
00375 }
00376
00377 #endif