Eneboo - Documentación para desarrolladores
|
00001 #ifndef _COUNTEDDICTIONARY_H_ 00002 #define _COUNTEDDICTIONARY_H_ 00003 00004 template <class Dict> 00005 class CountedDictionary : public Dict { 00006 public: 00007 class Entry : public Dict::Entry {}; 00008 00009 __forceinline CountedDictionary (void) 00010 : num (0) 00011 {} 00012 00013 __forceinline void clear (void) { 00014 num = 0; 00015 Dict::clear(); 00016 } 00017 00018 __forceinline Entry * get (void) { 00019 Entry * e = (Entry *) Dict::get(); 00020 if (e) { 00021 --num; 00022 } 00023 return e; 00024 } 00025 00026 __forceinline Entry * remove (void) { 00027 Entry * e = (Entry *) Dict::remove(); 00028 if (e) { 00029 --num; 00030 } 00031 return e; 00032 } 00033 00034 __forceinline void insert (Entry * e) { 00035 Dict::insert (e); 00036 ++num; 00037 } 00038 00039 __forceinline int getNumber (void) const { 00040 return num; 00041 } 00042 00043 private: 00044 int num; 00045 }; 00046 00047 #endif