/** * @file object.hpp * @author Julian Iseringhausen * @date Mon Apr 18 12:22:29 2011 * * @brief Header file for the class VMG::Object. * */ #ifndef OBJECT_HPP_ #define OBJECT_HPP_ #include #include namespace VMG { class Object { public: Object() : registered(false) {} Object(std::string name_) : name(name_), registered(true) { ObjectInit(); } virtual ~Object() {} void Register(std::string name_); template T* Cast() { T* casted = static_cast(this); assert(casted != NULL); return casted; } std::string Name() {return name;} private: void ObjectInit(); std::string name; bool registered; }; template class ObjectStorage : public Object { public: ObjectStorage(const T& val_) : val(val_) {} ObjectStorage(std::string name_, const T& val_) : Object(name_), val(val_) {} T& Val() {return val;} private: T val; }; } #endif /* OBJECT_HPP_ */