Commit 3646bea8 authored by lw's avatar lw

*** empty log message ***

parent 9f25dc2f
...@@ -6,13 +6,13 @@ ...@@ -6,13 +6,13 @@
void * void *
wb_orepdbs::operator new(size_t size, wb_vrepdbs *v) wb_orepdbs::operator new(size_t size, wb_vrepdbs *v)
{ {
return (void *)v->new_wb_repdbs(size); return (void *)v->new_wb_orepdbs(size);
} }
void void
wb_orepdbs::operator delete(void *p, size_t size, wb_vrepdbs *v) wb_orepdbs::operator delete(void *p, wb_vrepdbs *v)
{ {
v->delete_wb_orepdbs(size, p); v->delete_wb_orepdbs(p);
} }
...@@ -49,6 +49,22 @@ pwr_tOid wb_orepdbs::oid() const ...@@ -49,6 +49,22 @@ pwr_tOid wb_orepdbs::oid() const
return m_o->oid; return m_o->oid;
} }
pwr_tVid wb_orepdbs::vid() const
{
if (m_o == 0)
throw wb_error_str("No current object");
return m_o->oid.vid;
}
pwr_tOix wb_orepdbs::oix() const
{
if (m_o == 0)
throw wb_error_str("No current object");
return m_o->oid.oix;
}
pwr_tOid wb_orepdbs::poid() const pwr_tOid wb_orepdbs::poid() const
{ {
if (m_o == 0) if (m_o == 0)
...@@ -57,6 +73,38 @@ pwr_tOid wb_orepdbs::poid() const ...@@ -57,6 +73,38 @@ pwr_tOid wb_orepdbs::poid() const
return m_o->poid; return m_o->poid;
} }
pwr_tOid wb_orepdbs::foid() const
{
if (m_o == 0)
throw wb_error_str("No current object");
return pwr_cNOid;
}
pwr_tOid wb_orepdbs::loid() const
{
if (m_o == 0)
throw wb_error_str("No current object");
return pwr_cNOid;
}
pwr_tOid wb_orepdbs::boid() const
{
if (m_o == 0)
throw wb_error_str("No current object");
return pwr_cNOid;
}
pwr_tOid wb_orepdbs::aoid() const
{
if (m_o == 0)
throw wb_error_str("No current object");
return pwr_cNOid;
}
pwr_tCid wb_orepdbs::cid() const pwr_tCid wb_orepdbs::cid() const
{ {
if (m_o == 0) if (m_o == 0)
...@@ -73,6 +121,12 @@ char * const wb_orepdbs::name() ...@@ -73,6 +121,12 @@ char * const wb_orepdbs::name()
return m_o->name; return m_o->name;
} }
bool wb_orepdbs::isOffspringOf(const wb_orep *o) const
{
return false;
}
wb_orep *wb_orepdbs::after(pwr_tStatus *sts) const wb_orep *wb_orepdbs::after(pwr_tStatus *sts) const
{ {
return m_vrep->after(sts, (wb_orep*)this); return m_vrep->after(sts, (wb_orep*)this);
......
...@@ -15,6 +15,8 @@ class wb_orepdbs : public wb_orep ...@@ -15,6 +15,8 @@ class wb_orepdbs : public wb_orep
friend class wb_bdrep; friend class wb_bdrep;
friend class wb_adrep; friend class wb_adrep;
friend class wb_tdrep; friend class wb_tdrep;
friend class wb_vrepdbs;
public: public:
...@@ -23,7 +25,7 @@ public: ...@@ -23,7 +25,7 @@ public:
~wb_orepdbs(); ~wb_orepdbs();
void* operator new(size_t size, wb_vrepdbs *v); void* operator new(size_t size, wb_vrepdbs *v);
void operator delete(void *p, size_t size, wb_vrepdbs *v); void operator delete(void *p, wb_vrepdbs *v);
virtual pwr_tOid oid() const; virtual pwr_tOid oid() const;
virtual pwr_tVid vid() const; virtual pwr_tVid vid() const;
......
...@@ -13,18 +13,41 @@ wb_vrep *wb_vrepdbs::ref() ...@@ -13,18 +13,41 @@ wb_vrep *wb_vrepdbs::ref()
return this; return this;
} }
#if 1
wb_vrepdbs::wb_vrepdbs(const char *fileName) wb_vrepdbs::wb_vrepdbs(const char *fileName)
{ {
strcpy(m_fileName, fileName);
m_isDbsenvLoaded = false;
}
dbs_sEnv *
wb_vrepdbs::dbsenv()
{
dbs_sEnv *ep;
pwr_tStatus sts; pwr_tStatus sts;
if (!m_isDbsenvLoaded) {
ep = dbs_Map(&sts, &m_dbsenv, m_fileName);
if (!ep) {
}
m_isDbsenvLoaded = true;
} else {
ep = &m_dbsenv;
}
dbs_sEnv *ep =dbs_Map(&sts, &m_dbsenv, fileName);
if (!ep)
ep = 0;
return ep;
}
bool
wb_vrepdbs::load()
{
return dbsenv() != 0;
} }
wb_orep *wb_vrepdbs::object(pwr_tStatus *sts, pwr_tOid oid)
wb_orep *
wb_vrepdbs::object(pwr_tStatus *sts, pwr_tOid oid)
{ {
dbs_sObject *op = dbs_OidToObject(sts, &m_dbsenv, oid); dbs_sObject *op = dbs_OidToObject(sts, &m_dbsenv, oid);
if (op == 0) if (op == 0)
...@@ -33,7 +56,8 @@ wb_orep *wb_vrepdbs::object(pwr_tStatus *sts, pwr_tOid oid) ...@@ -33,7 +56,8 @@ wb_orep *wb_vrepdbs::object(pwr_tStatus *sts, pwr_tOid oid)
return new (this) wb_orepdbs(op); return new (this) wb_orepdbs(op);
} }
wb_orep *wb_vrepdbs::object(pwr_tStatus *sts, wb_orep *parent, wb_name name) wb_orep *
wb_vrepdbs::object(pwr_tStatus *sts, wb_orep *parent, wb_name name)
{ {
#if 0 #if 0
dbs_sName n; dbs_sName n;
...@@ -228,4 +252,64 @@ wb_srep *wb_vrepdbs::newSession() ...@@ -228,4 +252,64 @@ wb_srep *wb_vrepdbs::newSession()
{ {
return (wb_srep*)0; return (wb_srep*)0;
} }
#endif
wb_orep *
wb_vrepdbs::object(pwr_tStatus *)
{
return 0;
}
bool
wb_vrepdbs::isLocal(wb_orep *) const
{
return false;
}
pwr_tCid
wb_vrepdbs::cid() const
{
return 0;
}
pwr_tVid
wb_vrepdbs::vid() const
{
return 0;
}
wb_merep *wb_vrepdbs::merep() const
{
return 0;
}
bool wb_vrepdbs::createSnapshot(char *)
{
return false;
}
void wb_vrepdbs::iterObject(wb_dbs *)
{
}
void wb_vrepdbs::iterRbody(wb_dbs *)
{
}
void wb_vrepdbs::iterDbody(wb_dbs *)
{
}
wb_orepdbs *
wb_vrepdbs::new_wb_orepdbs(size_t size)
{
wb_orepdbs *o = (wb_orepdbs *) calloc(1, size);
o->m_vrep = this;
return o;
}
void
wb_vrepdbs::delete_wb_orepdbs(void *p)
{
free(p);
}
...@@ -16,10 +16,14 @@ public: ...@@ -16,10 +16,14 @@ public:
unsigned int m_nSession; unsigned int m_nSession;
unsigned int m_nRef; unsigned int m_nRef;
dbs_sEnv m_dbsenv; char m_fileName[200];
bool m_isDbsenvLoaded;
dbs_sEnv m_dbsenv;
wb_vrepdbs(const char *fileName); wb_vrepdbs(const char *fileName);
dbs_sEnv *dbsenv();
bool load();
virtual void unref(); virtual void unref();
virtual wb_vrep *ref(); virtual wb_vrep *ref();
...@@ -75,11 +79,23 @@ public: ...@@ -75,11 +79,23 @@ public:
virtual wb_srep *newSession(); virtual wb_srep *newSession();
virtual bool isLocal(wb_orep *o);
virtual pwr_tVid vid() const; virtual pwr_tVid vid() const;
wb_orepdbs *new_wb_repdbs(size_t size); wb_orepdbs *new_wb_orepdbs(size_t size);
void delete_wb_orepdbs(size_t size, void *p); void delete_wb_orepdbs(void *p);
virtual wb_vrep *next () const;
virtual wb_orep *object (pwr_tStatus *);
virtual bool isLocal (wb_orep *) const;
virtual pwr_tCid cid () const;
virtual wb_merep *merep () const;
virtual bool createSnapshot (char *);
virtual void iterObject (wb_dbs *);
virtual void iterRbody (wb_dbs *);
virtual void iterDbody (wb_dbs *);
}; };
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment