Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

atlas_utils.h

00001 #ifndef ATLAS_CAST_H
00002 #define ATLAS_CAST_H
00003 
00004 #include <stdexcept>
00005 
00006 #include <Atlas/Message/Object.h>
00007 #include <Atlas/Objects/Root.h>
00008 
00009 namespace Atlas {
00010 
00011 template <class T>
00012 const T atlas_cast(const Message::Object &data)
00013 {
00014         T obj = T::Instantiate();
00015         if (!data.IsMap()) {
00016                 assert(false);
00017                 throw std::invalid_argument("Input message object is not a map");
00018         }
00019         
00020         const Message::Object::MapType & mp = data.AsMap();
00021         
00022         for (Message::Object::MapType::const_iterator A = mp.begin();
00023                 A != mp.end(); ++A)
00024         {
00025                 obj.SetAttr(A->first, A->second);
00026         }
00027         
00028         return obj;
00029 }
00030 
00031 template <class T>
00032 const T atlas_cast(const Objects::Root &data)
00033 {
00034         T obj = T::Instantiate();
00035         Message::Object::MapType mp = data.AsObject().AsMap();
00036         
00037         for (Message::Object::MapType::iterator A = mp.begin();
00038                 A != mp.end(); ++A)
00039         {
00040                 obj.SetAttr(A->first, A->second);
00041         }
00042         
00043         return obj;
00044 }
00045 
00046 }
00047 
00048 #endif

Generated on Thu May 22 08:01:02 2003 for Eris by doxygen1.3-rc3