00001 // -*- C++ -*- 00019 /* 00020 * $Log: NumberingPolicy.h,v $ 00021 * Revision 1.1 2006/11/04 21:07:40 n-ando 00022 * Component numbering rule was derived into policy class. 00023 * 00024 */ 00025 00026 #ifndef NumberingPolicy_h 00027 #define NumberingPolicy_h 00028 00029 #include <string> 00030 #include <vector> 00031 00032 class NumberingPolicy 00033 { 00034 public: 00035 struct ObjectNotFound {}; 00036 virtual std::string onCreate(void* obj) = 0; 00037 virtual void onDelete(void* obj) = 0; 00038 }; 00039 00040 00041 class DefaultNumberingPolicy 00042 : public virtual NumberingPolicy 00043 { 00044 public: 00045 DefaultNumberingPolicy() : m_num(0) {}; 00046 virtual ~DefaultNumberingPolicy(){}; 00047 virtual std::string onCreate(void* obj); 00048 virtual void onDelete(void* obj); 00049 00050 protected: 00051 long int find(void* obj); 00052 00053 private: 00054 int m_num; 00055 std::vector<void*> m_objects; 00056 }; 00057 00058 00059 #endif // NumberingPolicy_h