7 #ifndef ATLAS_OBJECTS_OPERATION_ROOTOPERATION_H
8 #define ATLAS_OBJECTS_OPERATION_ROOTOPERATION_H
10 #include <Atlas/Objects/Root.h>
11 #include <Atlas/Objects/SmartPtr.h>
13 #include <Atlas/Objects/objectFactory.h>
15 namespace Atlas {
namespace Objects {
namespace Operation {
27 class RootOperationData;
28 typedef SmartPtr<RootOperationData> RootOperation;
30 static const int ROOT_OPERATION_NO = 9;
47 m_class_no = ROOT_OPERATION_NO;
63 virtual void setAttr(
const std::string& name,
66 virtual void removeAttr(
const std::string& name);
72 virtual void addToMessage(Atlas::Message::MapType &)
const;
79 inline void setFrom(
const std::string& val);
81 inline void setTo(
const std::string& val);
87 inline void setArgs(
const std::vector<Root>& val);
89 inline void setArgsAsList(
const Atlas::Message::ListType& val);
91 template <
class ObjectData>
103 inline const std::string&
getFrom()
const;
107 inline const std::string&
getTo()
const;
119 inline const std::vector<Root>&
getArgs()
const;
144 virtual int getAttrFlag(
const std::string& name)
const;
175 virtual void iterate(
int& current_class, std::string& attr)
const;
197 static std::map<std::string, int> * attr_flags_RootOperationData;
204 extern const std::string SERIALNO_ATTR;
205 extern const std::string REFNO_ATTR;
206 extern const std::string FROM_ATTR;
207 extern const std::string TO_ATTR;
208 extern const std::string SECONDS_ATTR;
209 extern const std::string FUTURE_SECONDS_ATTR;
210 extern const std::string ARGS_ATTR;
216 const int SERIALNO_FLAG = 1 << 14;
221 m_attrFlags |= SERIALNO_FLAG;
224 const int REFNO_FLAG = 1 << 15;
229 m_attrFlags |= REFNO_FLAG;
232 const int FROM_FLAG = 1 << 16;
237 m_attrFlags |= FROM_FLAG;
240 const int TO_FLAG = 1 << 17;
245 m_attrFlags |= TO_FLAG;
248 const int SECONDS_FLAG = 1 << 18;
253 m_attrFlags |= SECONDS_FLAG;
256 const int FUTURE_SECONDS_FLAG = 1 << 19;
261 m_attrFlags |= FUTURE_SECONDS_FLAG;
264 const int ARGS_FLAG = 1 << 20;
269 m_attrFlags |= ARGS_FLAG;
274 m_attrFlags |= ARGS_FLAG;
276 for(Message::ListType::const_iterator I = val.begin();
281 attr_args.push_back(Factories::instance()->createObject(I->asMap()));
286 template <
class ObjectData>
289 m_attrFlags |= ARGS_FLAG;
296 if(m_attrFlags & SERIALNO_FLAG)
304 if(!(m_attrFlags & SERIALNO_FLAG))
311 if(m_attrFlags & REFNO_FLAG)
319 if(!(m_attrFlags & REFNO_FLAG))
326 if(m_attrFlags & FROM_FLAG)
334 if(!(m_attrFlags & FROM_FLAG))
341 if(m_attrFlags & TO_FLAG)
349 if(!(m_attrFlags & TO_FLAG))
356 if(m_attrFlags & SECONDS_FLAG)
364 if(!(m_attrFlags & SECONDS_FLAG))
371 if(m_attrFlags & FUTURE_SECONDS_FLAG)
379 if(!(m_attrFlags & FUTURE_SECONDS_FLAG))
386 if(m_attrFlags & ARGS_FLAG)
394 if(!(m_attrFlags & ARGS_FLAG))
401 const std::vector<Root>& args_in =
getArgs();
402 Atlas::Message::ListType args_out;
403 for(std::vector<Root>::const_iterator I = args_in.begin();
407 args_out.push_back(Atlas::Message::MapType());
408 (*I)->addToMessage(args_out.back().asMap());
415 return (m_attrFlags & SERIALNO_FLAG) == 0;
420 return (m_attrFlags & REFNO_FLAG) == 0;
425 return (m_attrFlags & FROM_FLAG) == 0;
430 return (m_attrFlags & TO_FLAG) == 0;
435 return (m_attrFlags & SECONDS_FLAG) == 0;
440 return (m_attrFlags & FUTURE_SECONDS_FLAG) == 0;
445 return (m_attrFlags & ARGS_FLAG) == 0;
451 #endif // ATLAS_OBJECTS_OPERATION_ROOTOPERATION_H