7 #ifndef ATLAS_OBJECTS_BASEOBJECT_H 8 #define ATLAS_OBJECTS_BASEOBJECT_H 10 #include <Atlas/Message/MEncoder.h> 11 #include <Atlas/Message/Element.h> 12 #include <Atlas/Bridge.h> 13 #include <Atlas/Exception.h> 51 m_name = std::move(rhs.m_name);
52 Atlas::Exception::operator=(rhs);
125 T *getDefaultObjectInstance();
143 void free(T *instance);
152 template <
typename T>
158 template <
typename T>
163 template <
typename T>
169 template <
typename T>
178 assert(res->m_refCount == 0);
179 res->m_attrFlags = 0;
180 res->m_attributes.clear();
187 template <
typename T>
198 template <
typename T>
207 next =
static_cast<T*
>(next->m_next);
212 static const int BASE_OBJECT_NO = 0;
265 uint32_t getAttrFlags()
const 273 virtual bool instanceOf(
int classNo)
const;
276 bool hasAttr(
const std::string& name)
const;
278 bool hasAttrFlag(uint32_t flag)
const;
284 virtual int copyAttr(
const std::string& name,
287 virtual void setAttr(std::string name,
290 virtual void removeAttr(
const std::string& name);
292 virtual void removeAttrFlag(uint32_t flag);
296 Atlas::Message::MapType asMessage()
const;
299 virtual void addToMessage(Atlas::Message::MapType &)
const;
310 virtual void free() = 0;
311 virtual void reset() = 0;
316 virtual int getAttrClass(
const std::string& name)
const;
319 virtual bool getAttrFlag(
const std::string& name, uint32_t& flag)
const;
322 static T * copyInstance(
const T& instance);
336 std::map<std::string, Atlas::Message::Element> m_attributes;
338 uint32_t m_attrFlags;
341 inline void BaseObjectData::incRef() {
345 inline void BaseObjectData::decRef() {
347 assert( m_refCount >= 0 );
356 T * BaseObjectData::copyInstance(
const T& instance) {
357 T * copied = T::allocator.alloc();
359 copied->m_refCount = -1;
std::mutex m_begin_Data_mutex
std::map< std::string, uint32_t > attr_flags_Data
T * getDefaultObjectInstance()
const std::string & getName() const
Get the name of the attribute which does not exist.
int getClassNo() const
Get class number:
BaseObjectData * m_defaults