Object* Object::getObj(std::string name) { if (Class::currentContext != this && !Class::accessEnabled) throw FieldNotAccessible(); if(objectClass->staticObjectFields.find(name) != objectClass->staticObjectFields.end()) return objectClass->staticObjectFields[name]; if (objectFields.find(name) == objectFields.end()) throw FieldNotFound(); return objectFields[name]; }
void Object::setInt(std::string name, int value) { if ((Class::currentContext != this) && (!Class::accessEnabled)) throw FieldNotAccessible(); if(objectClass->staticIntFields.find(name) != objectClass->staticIntFields.end()) { objectClass->staticIntFields[name] = value; return; } if (intFields.find(name) == intFields.end()) throw FieldNotFound(); intFields[name] = value; }
void Object::setObj(std::string name, Object *value) { if (Class::currentContext != this && !Class::accessEnabled) throw FieldNotAccessible(); if(objectClass->staticObjectFields.find(name) != objectClass->staticObjectFields.end()) { objectClass->staticObjectFields[name] = value; return; } if (objectFields.find(name) == objectFields.end()) throw FieldNotFound(); objectFields[name] = value; }
Object* Object::getObj(std::string name) { Field field = this->getClass()->getField(name); if (field.getType() != OBJECT) { throw TypeError(); } if (field.isStatic()) { return this->getClass()->getObj(name); } std::map<std::string, Object*>::iterator iter = mIntObjectValues.find(name); if (iter == mIntObjectValues.end()) { throw FieldNotFound(); } if (!shimon_access) { if (this->shouldThrowAccess()) { throw FieldNotAccessible(); } } return iter->second; }
void Object::setInt(std::string name, int value) { Field field = this->getClass()->getField(name); if (field.getType() != INT) { throw TypeError(); } if (field.isStatic()) { this->getClass()->setInt(name, value); return; } std::map<std::string, int>::iterator iter = mIntFieldValues.find(name); if (iter == mIntFieldValues.end()) { throw FieldNotFound(); } if (!shimon_access) { if (this->shouldThrowAccess()) { throw FieldNotAccessible(); } } mIntFieldValues[name] = value; }