OID VStore::Object::keys() { OID nobj = OID::create(); for (int i=0; i<m_keys.size(); i++) { nobj.set(i, m_keys[i], true); } nobj.set(Size, m_keys.size(), true); return nobj; }
void test_tostring_nest(Test &test) { dstring str("nest _ hohoho"); OID strobj = str; strobj.set(5, 66666); char buf[100]; str.toString(buf,100); CHECK(strcmp(buf,"nest 66666 hohoho") == 0); DONE }
void VStore::Object::copy(const OID &nobj) { //OID nobj = OID::create(); OID res, value; int flags = 0; Attribute *attrib; char *dbuf = new char [5000]; char *dbuf2; DASM *dasm = (DASM*)(root.get("notations").get("dasm")); for (int i=0; i<m_keys.size(); i++) { if (m_keys[i] == This) continue; attrib = Attribute::get(m_oid, m_keys[i]); if (attrib == 0) { res = Null; value = Null; } else { flags = attrib->getFlags(); res = attrib->getDefinition(); } /*if (flags & OID::FLAG_OUT_OF_DATE) { attrib->setFlags(flags & (0xFF - OID::FLAG_OUT_OF_DATE)); flags = attrib->getFlags(); attrib->setValue(Definition(res).evaluate(m_oid, m_keys[i], false)); value = attrib->getValue(); }*/ if (res != Null) { //Clone the definition //value = res; //res = s_alloc; //s_alloc++; //value.copy(res); //std::cout << "CLONING DEF\n"; dbuf2 = dbuf; Definition d = res; nobj.toString(dbuf2, 100); dbuf2 += strlen(dbuf2); strcpy(dbuf2, " "); dbuf2 += strlen(dbuf2); m_keys[i].toString(dbuf2,100); dbuf2 += strlen(dbuf2); if (flags && 0x01) { //nobj.define(m_keys[i], res, true); strcpy(dbuf2, " is { "); dbuf2 += strlen(dbuf2); } else { value = attrib->getValue(); //nobj.set(m_keys[i], value, true); //nobj.definefuture(m_keys[i], res, true); strcpy(dbuf2, " = "); dbuf2 += strlen(dbuf2); value.toString(dbuf2, 100); dbuf2 += strlen(dbuf2); strcpy(dbuf2, "\n"); dbuf2 += strlen(dbuf2); m_keys[i].toString(dbuf2, 100); dbuf2 += strlen(dbuf2); strcpy(dbuf2, " := { "); dbuf2 += strlen(dbuf2); } d.toString(dbuf2, 4000); dbuf2 += strlen(dbuf2); strcpy(dbuf2, " }\n"); //std::cout << "DBUF: " << dbuf << "\n"; //Execute dasm->execute(dbuf); } else { if (flags && OID::FLAG_DEEP) { //#ifdef LINUX //SPINLOCK //pthread_mutex_lock(&oid_lock); //#endif res = s_alloc; s_alloc++; //#ifdef LINUX //SPINLOCK //pthread_mutex_unlock(&oid_lock); //#endif value = attrib->getValue(); value.copy(res); res.set(This, nobj, true); nobj.set(m_keys[i], res, true); } else { value = attrib->getValue(); if (value != Null) nobj.set(m_keys[i], value, true); } nobj.flags(m_keys[i],flags, true); } //delete evt; } delete [] dbuf; }