#ifndef _sdet_SModelsXMLManager_h_ #define _sdet_SModelsXMLManager_h_ #include #include #include #include namespace utl { class Reader; class Branch; class TabulatedFunction; } namespace sdet { /** \class SModelsXMLManager \brief Manager for SD description in XML "model" files This manager reads XML files containing SD description information which is arranged into so-called models. Information in a "model" may apply to more than 1 station. Using model-based description reduces the amount of redundant information one has to type in and keeps XML files more manageable. \author T. Paul \author D. Veberic \version $Id$ \date 04 Feb 2003 \date 22 Jun 2005 DV update \ingroup managers */ class SModelsXMLManager : public det::VManager { public: virtual ~SModelsXMLManager() { } void Init(const std::string& configLink); VMANAGER_GETDATA_CALL(InternalGetData, double) VMANAGER_GETDATA_CALL(InternalGetData, int) VMANAGER_GETDATA_CALL(InternalGetData, std::string) VMANAGER_GETDATA_CALL(InternalGetData, std::vector) VMANAGER_GETDATA_CALL(InternalGetData, std::vector) VMANAGER_GETDATA_CALL(InternalGetData, std::vector) VMANAGER_GETDATA_CALL(InternalGetData, std::list) VMANAGER_GETDATA_CALL(InternalGetData, std::list) VMANAGER_GETDATA_CALL(InternalGetData, std::list) /** Data to be returned as a tabulated function must be specified with * tags indicating the ordinate values, abscissa values, * and (optionally) a scale factor for the abscissa values, with * the nomenclature indicated in this example: * \code * * 1 2 3 * 1 4 6 * 10 * * \endcode */ Status GetData(utl::TabulatedFunction& returnData, const std::string& componentProperty, const std::string& componentName, const IndexMap& componentIndex) const; VMANAGER_GETDATA_NOTFOUND(std::vector) VMANAGER_GETDATA_NOTFOUND(std::vector >) VMANAGER_GETDATA_NOTFOUND(std::map) VMANAGER_GETDATA_DENIED(std::list >) VMANAGER_GETDATA_DENIED(std::map) VMANAGER_GETDATA_DENIED(utl::TabulatedFunctionComplexLgAmpPhase) //VMANAGER_GETDATA_DENIED(unsigned long long int) private: template Status InternalGetData(T& returnData, const std::string& componentProperty, const std::string& componentName, const IndexMap& componentIndex) const; // Find Branch where the requested data resides utl::Branch FindBranch(const std::string& property, const std::string& modelType, const IndexMap& componentIndex) const; // Utility function to fill aforementioned maps void FillMaps(); VMANAGER_GETDATA_HANDLE_DENIED // map Station Id to a map of model type, model id // (map ) std::map fStationModelMap; // map when IndexMap fAllStationsModelMap; }; } #endif // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "cd ../../cmt; make -k test check" // End: