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