00001 #ifndef DYBKERNEL_DYBALGORITHMIMP_H 00002 #define DYBKERNEL_DYBALGORITHMIMP_H 00003 00004 00005 00006 template <class HeaderType> 00007 DybAlgorithm<HeaderType>::DybAlgorithm(const std::string& name, ISvcLocator* pSvcLocator) 00008 : DybBaseAlg(name,pSvcLocator) 00009 { 00010 declareProperty("Location",m_location = HeaderType::defaultLocation(), 00011 "TES path location for the HeaderObject this algorithm produces."); 00012 00013 m_pullMode = false; 00014 } 00015 00016 template <class HeaderType> 00017 DybAlgorithm<HeaderType>::~DybAlgorithm() 00018 { 00019 } 00020 00021 template <class HeaderType> 00022 HeaderType* DybAlgorithm<HeaderType>::MakeHeaderObject() 00023 { 00024 if (m_headerObject) { 00025 debug () << "MakeHeaderObject, returning cached" << endreq; 00026 return GetCurrentHeaderObject(); 00027 } 00028 00029 HeaderType *typed_header = new HeaderType; 00030 m_headerObject = typed_header; 00031 this->InitializeHeader(m_headerObject); 00032 00033 debug() << "MakeHeaderObject with exec num " << getExecNum() << endreq; 00034 return typed_header; 00035 } 00036 00037 template <class HeaderType> 00038 HeaderType* DybAlgorithm<HeaderType>::GetCurrentHeaderObject() const 00039 { 00040 return dynamic_cast<HeaderType*>(m_headerObject); 00041 } 00042 00043 00044 #endif // DYBKERNEL_DYBALGORITHMIMP_H 00045