00001 // $Id: TESSerializer.h,v 1.1 2008/10/17 08:56:05 mato Exp $ 00002 #ifndef GAUDIPYTHON_TESSERIALIZER_H 00003 #define GAUDIPYTHON_TESSERIALIZER_H 00004 00005 #include "GaudiKernel/IDataStoreAgent.h" 00006 00007 // vector and string 00008 #include <string> 00009 #include <vector> 00010 00011 // forward declarations 00012 class IDataProviderSvc; 00013 class IDataManagerSvc; 00014 class TBufferFile; 00015 class DataStoreItem; 00016 class DataObject; 00017 00018 namespace GaudiPython { 00019 class TESSerializer : virtual public IDataStoreAgent { 00020 typedef std::vector<DataStoreItem*> Items; 00021 typedef std::vector<std::string> ItemNames; 00022 typedef std::vector<DataObject*> Objects; 00023 public: 00024 TESSerializer(IDataProviderSvc* svc); 00025 00026 TBufferFile* dumpBuffer(); 00027 void loadBuffer(TBufferFile*); 00028 00029 void addItem(const std::string& path, int level); 00030 void addOptItem(const std::string& path, int level); 00031 00033 virtual bool analyse(IRegistry* dir, int level); 00034 00035 protected: 00036 void addItem(Items& itms, const std::string& path, int level); 00037 private: 00039 IDataProviderSvc* m_TES; 00041 IDataManagerSvc* m_TESMgr; 00043 ItemNames m_itemNames; 00045 Items m_itemList; 00047 ItemNames m_optItemNames; 00049 Items m_optItemList; 00051 DataStoreItem* m_currentItem; 00053 Objects m_objects; 00054 }; 00055 } 00056 #endif 00057 00058