Advertisement
x89codered89x

identification.h

Dec 9th, 2012
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.98 KB | None | 0 0
  1. #ifndef IDENTIFICATION_JAMES
  2. #define IDENTIFICATION_JAMES
  3.  
  4. #include <queue>
  5. #include <string>
  6. #include <sstream>
  7. #include <iostream>
  8.  
  9.  
  10. //This class Needs to be FAST
  11.  
  12. //ID class that works with different classes
  13.  
  14. class Identification {
  15.     public:
  16.     //Constructors
  17.     Identification( const std::string typeName_, const bool active_);//
  18.  
  19.     //Destructor
  20.     ~Identification();//
  21.    
  22.     //Const Access
  23.     const bool& active() const;//
  24.     const void* const reference() const;//
  25.     const std::string& typeName() const;//
  26.     const unsigned int& instanceID() const;//
  27.     const unsigned int& typeNameID() const;//
  28.  
  29.     //Debug and Metrics
  30.     static std::string display();//
  31.     static unsigned int typeNamesCount();//
  32.     static std::vector<unsigned int> freeIDsCount();//
  33.     static std::vector<unsigned int> instancesCount();//
  34.     static int findTypeNameID(const std::string& typeName_);//
  35.  
  36.     //Use
  37.     void* const reference();//
  38.  
  39.     protected:
  40.     //Activation
  41.     void activate();//
  42.     void deactivate();//
  43.  
  44.     //Mod Stat Access
  45.     static std::vector<std::string>& typeNames();//
  46.     static std::vector<unsigned int>& nextInstanceIDs();//
  47.     static std::vector<std::queue<unsigned int> >& freeInstanceIDs();//
  48.  
  49.     private:
  50.     //Internal Management
  51.     void pushInstanceID();//
  52.     const unsigned int pullInstanceID();//
  53.     const unsigned int pullTypeNameID(const std::string& typeName_);//
  54.  
  55.     //class-level keys
  56.     const unsigned int _typeNameID;
  57.     static std::vector<std::string> _typeNames;
  58.  
  59.     //instance-level keys
  60.     unsigned int _instanceID;
  61.     static std::vector<unsigned int> _nextInstanceIDs;
  62.     static std::vector<std::queue<unsigned int> > _freeInstanceIDs;
  63.  
  64.     //data
  65.     bool _active;
  66.     void* const _reference;
  67. };
  68. std::vector<std::string> Identification::_typeNames = std::vector<std::string>();
  69. std::vector<unsigned int> Identification::_nextInstanceIDs = std::vector<unsigned int>();
  70. std::vector<std::queue<unsigned int> > Identification::_freeInstanceIDs = std::vector<std::queue<unsigned int> >();
  71.  
  72. #include "identification.cxx"
  73. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement