00001 // This file's extension implies that it's C, but it's really -*- C++ -*-. 00002 // $Id$ 00011 #ifndef ATHCONTAINERS_PACKEDCONTAINER_H 00012 #define ATHCONTAINERS_PACKEDCONTAINER_H 00013 00014 00015 #include "AthContainersInterfaces/IAuxSetOption.h" 00016 #include "AthContainers/PackedParameters.h" 00017 #include "CxxUtils/override.h" 00018 #include <vector> 00019 00020 00021 namespace SG { 00022 00023 00044 template <class T> 00045 class PackedContainer 00046 : public std::vector<T>, public IAuxSetOption 00047 { 00048 public: 00050 typedef std::vector<T> vector_type; 00051 00052 00059 PackedContainer(); 00060 00061 00070 virtual bool setOption (const AuxDataOption& option) ATH_OVERRIDE; 00071 00072 00082 bool setOption (const std::string& name, int val); 00083 00084 00094 bool setOption (const std::string& name, float val); 00095 00096 00106 bool setOption (const std::string& name, double val); 00107 00108 00112 const PackedParameters& parms() const; 00113 00114 00119 void setParms (const PackedParameters& parms); 00120 00121 00122 private: 00124 PackedParameters m_parms; 00125 }; 00126 00127 00128 } // namespace SG 00129 00130 00131 #include "AthContainers/PackedContainer.icc" 00132 00133 00134 #endif // not ATHCONTAINERS_PACKEDCONTAINER_H