00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __freStatisticDictionary_h
00022 #define __freStatisticDictionary_h
00023
00024 #include "freElementals.h"
00025
00026 #include "freStatisticValueDefinition.h"
00027 #include "freStatisticEntryDefinition.h"
00028
00029 #include "freXMLCollectionBase.h"
00030
00031 namespace FREE
00032 {
00033
00034 freXMLTagMacro(StatisticDictionary, "freStat:Dictionary");
00035 freXMLTagMacro(StatisticValueDefinitions, "freStat:ValueDefinitions");
00036 freXMLTagMacro(StatisticEntryDefinitions, "freStat:EntryDefinitions");
00037
00045 class StatisticDictionary: public XMLStreamObject, public itk::LightObject
00046 {
00047 public:
00048 typedef StatisticDictionary Self;
00049 typedef itk::LightObject Superclass;
00050 typedef itk::SmartPointer<Self> Pointer;
00051 typedef itk::SmartPointer<const Self> ConstPointer;
00052
00053 itkTypeMacro(StatisticDictionary, XMLStreamObject);
00054 itkNewMacro(StatisticDictionary);
00055
00056 typedef StatisticValueDefinition::IDType ValueIDType;
00057 typedef StatisticEntryDefinition::IDType EntryIDType;
00058 typedef unsigned long IndexType;
00059
00060 typedef XMLCollectionBase<StatisticValueDefinition> ValueDefinitionsType;
00061 typedef XMLCollectionBase<StatisticEntryDefinition> EntryDefinitionsType;
00062
00063 StatisticValueDefinition* AddValueDefinition();
00064 StatisticValueDefinition* AddValueDefinition(const std::string& sIDPath,
00065 const std::string& sName,
00066 const std::string& sDescription);
00067
00068 StatisticValueDefinition* GetValueDefinitionByName(const std::string& sIDPath, const std::string& sName);
00069 StatisticValueDefinition* GetValueDefinitionByIndex(const IndexType& index);
00070 StatisticValueDefinition* GetValueDefinitionByID(const ValueIDType& id);
00071 ValueIDType GetValueDefinitionIDByName(const std::string& sIDPath, const std::string& sName);
00072
00073 StatisticEntryDefinition* AddEntryDefinition();
00074 StatisticEntryDefinition* AddEntryDefinition(const std::string& sIDPath,
00075 const std::string& sName,
00076 const std::string& sControllerID,
00077 const std::string& sDescription);
00078
00079 StatisticEntryDefinition* GetEntryDefinitionByName(const std::string& sIDPath, const std::string& sName);
00080 StatisticEntryDefinition* GetEntryDefinitionByIndex(const IndexType& index);
00081 StatisticEntryDefinition* GetEntryDefinitionByID(const EntryIDType& id);
00082 EntryIDType GetEntryDefinitionIDByName(const std::string& sIDPath, const std::string& sName);
00083
00084 virtual ~StatisticDictionary();
00085
00087 virtual void Reset();
00088
00089 protected:
00090 StatisticDictionary();
00091
00092 ValueDefinitionsType m_ValueDefs;
00093 EntryDefinitionsType m_EntryDefs;
00094
00096 virtual void SubElementLoadProcessing(const std::string& rsXMLSubTag, const std::string& rsXMLSubElement, const std::string& rsXMLSubData);
00097
00099 virtual std::string SaveData(const unsigned int& iDepth, bool& bHasSubElements) const;
00100 };
00101
00102 }
00103
00104 #endif