void test_construct(Test &test) { dstring str("hello world"); OID obj = str; CHECK((char)obj.get(0) == 'h'); CHECK((int)obj.get(Size) == 11); DONE }
void Definition::toString(char *buf, int max, int indent) const { int index=0; OID temp; int modi; char buf2[50]; Event *evt2 = NEW Event(Event::GET_RANGE, m_def); evt2->param<0>(0); evt2->param<1>(m_size); evt2->send(); OID boid = evt2->result(); OID ifobj = Null; Buffer *def = Buffer::lookup(boid); delete evt2; if (def == 0) { buf[0] = 0; return; } for (int i=0; i<indent; i++) strcat(buf, "\t"); while (index < m_size) { temp = def->get(index++); if (temp.isModifier()) { modi = temp.d(); switch (modi) { case modifiers::ENDSUB: strcat(buf, ")"); break; case modifiers::BEGINSUB: strcat(buf, "("); break; case modifiers::UNION: strcat(buf, "union "); break; case modifiers::COMPARE: strcat(buf, "== "); break; default: break; } } else { if (temp == This) { strcat(buf, "."); } else if (index == 1 && temp.get("type") == OID("if")) { ifobj = temp; strcat(buf, "if "); //buildif(buf, temp); } else { temp.toString(buf2, 50); strcat(buf, buf2); strcat(buf, " "); } } } if (ifobj != Null) buildif(buf, ifobj, indent); Buffer::free(boid); }
void SoftAgent::onExecute() { //Loop through code std::cout << "EXECUTE\n"; OID c = code(); int size = c.get(Size); int t1,t2,t3; OID reg[MAX_REGISTERS]; for (int i=0; i<size; i++) { switch ((int)c.get(i)) { case SSET: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1].set(reg[t2], reg[t3]); break; case ASET: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1].set(reg[t2], reg[t3], true); break; case SGET: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1] = reg[t2].get(reg[t3]); break; case SDEF: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1].definefuture(reg[t2], reg[t3]); break; case ADEF: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1].definefuture(reg[t2], reg[t3], true); break; case GDEF: break; //reg[c.get(++i)] = reg[c.get(++i)].get(reg[c.get(++i)]); break; case GFUN: break; //reg[c.get(++i)] = reg[c.get(++i)].get(reg[c.get(++i)]); break; case SFUN: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1].define(reg[t2], reg[t3]); break; case AFUN: t1 = (int)c.get(++i); t2 = (int)c.get(++i); t3 = (int)c.get(++i); reg[t1].define(reg[t2], reg[t3], true); break; case CREA: t1 = (int)c.get(++i); reg[t1] = OID::create(); break; case ISET: t1 = (int)c.get(++i); reg[t1] = c.get(++i); break; default: Error(0, "An invalid agent instruction was encountered"); } } }