| | |
| | | template <class T, class ...Params> T * New(Params const&...params) { return construct<T>(anonymous_instance, std::nothrow)(params...); } |
| | | template <class T> void Delete(T *p) { if (p) { destroy_ptr<T>(p); }; } |
| | | template <class T> void Delete(offset_ptr<T> p) { Delete(p.get()); } |
| | | template <class T> T *Find(const std::string &name) { return find<T>(name.c_str()).first; } |
| | | |
| | | }; |
| | | |
| | |
| | | throw("Error: Not enough memory, can not allocate \"" + name_ + "\""); |
| | | } |
| | | } |
| | | Data *find(const std::string &name) { return shm_.find<Data>(ObjName(name).c_str()).first; } |
| | | static Data *Find(SharedMemory &shm, const std::string &name) { return shm.Find<Data>(ObjName(name)); } |
| | | Data *Find(const std::string &name) { return Find(shm_, ObjName(name)); } |
| | | virtual ~ShmObject() {} |
| | | std::string name() const { return name_; } |
| | | Data* data() { return pdata_; } |