예제 #1
0
파일: Object.cpp 프로젝트: maxyor6040/cpp
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];
}
예제 #2
0
파일: Object.cpp 프로젝트: maxyor6040/cpp
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;
}
예제 #3
0
파일: Object.cpp 프로젝트: maxyor6040/cpp
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;
}
예제 #4
0
파일: Object.cpp 프로젝트: sazulay3/OOP-HW5
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;
}
예제 #5
0
파일: Object.cpp 프로젝트: sazulay3/OOP-HW5
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;
}