00001 // Emacs -*- C++ -*- 00002 #ifndef ANAPHE_AIDABASEHISTOGRAM 00003 #define ANAPHE_AIDABASEHISTOGRAM 1 00004 00005 #include "AIDA/IBaseHistogram.h" 00006 #include "AIDA_Dev/IDevManagedObject.h" 00007 00008 namespace Anaphe { 00009 namespace AIDA_Histogram_native { 00010 00020 class AIDA_BaseHistogram : virtual public AIDA::IBaseHistogram, 00021 virtual public AIDA::Dev::IDevManagedObject 00022 { 00023 protected: 00025 AIDA_BaseHistogram( const std::string& title, 00026 const std::string& classType, 00027 int dimension ); 00028 00029 public: 00031 virtual ~AIDA_BaseHistogram(); 00032 00034 const std::string& title() const; 00035 bool setTitle( const std::string& title ); 00036 AIDA::IAnnotation& annotation(); 00037 const AIDA::IAnnotation& annotation() const; 00038 int dimension() const; 00039 00047 00048 bool isUpToDate() const; 00049 void setUpToDate( bool isUpToDate ); 00050 bool setName( const std::string& newName ); 00051 const std::string& userLevelClassType() const; 00052 00054 const std::string& name() const; 00055 00056 protected: 00058 AIDA::IAnnotation& annotationNoUpdate(); 00059 const AIDA::IAnnotation& annotationNoUpdate() const; 00061 virtual void updateAnnotation() const; 00062 AIDA::IAnnotation* createAnnotation(); 00063 00064 private: 00065 AIDA::IAnnotation* m_annotation; 00066 std::string m_classType; 00067 int m_dimension; 00068 bool m_upToDate; 00069 }; 00070 00071 } 00072 } 00073 00074 00076 #include "AIDA_BaseHistogram.inl" 00077 00078 #endif /* ifndef ANAPHE_AIDABASEHISTOGRAM */