Changeset 588 in Sophya for trunk/SophyaLib/BaseTools/ppersist.h


Ignore:
Timestamp:
Nov 17, 1999, 4:47:03 PM (26 years ago)
Author:
ansari
Message:

Gestion typeid/typename. Gestion simultanee tag+reference

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/BaseTools/ppersist.h

    r582 r588  
    6969    typedef PPersist*            (*ClassCreatorFunc)();
    7070 
    71     static void                  RegisterClass(uint_8 classId, ClassCreatorFunc f);
     71    static void                  RegisterClass(uint_8 classId, string typname, ClassCreatorFunc f);
    7272    static ClassCreatorFunc      FindCreatorFunc(uint_8 classId);
    7373    static uint_8 Hash(string const& typname) {
     
    8080 
    8181    static void Initialize();   // Pour initialiser classList
     82    static uint_8 getTypeId(string s) {return (*typeids)[s];}
    8283  private:
    8384
     
    8586    // Pas de createur appele pour objets statiques sur Linux - $CHECK$ Reza 26/04/99
    8687    static ClassList *           classList; 
     88    static map<string, uint_8> * typeids;
    8789
    8890  protected:
     91
    8992    enum {PPS_NULL = 0,             // this is a null object
    9093          PPS_STRING = 1,           // string, length (2b) + data
     
    9497          PPS_EOF = 5,              // Just before tag infomation, offset to PPS_TAG
    9598          PPS_LINE = 6,             // '\n'-terminated, deprecated ?
     99          PPS_TAG_MARK = 7,         // to reset object count when skipped
    96100          PPS_SIMPLE = 16,          // 16 + number of bytes, up to 8 bytes
    97101          PPS_SIMPLE_ARRAY = 32,    // 32 + number of bytes, up to 8 bytes, then 2 bytes of length
     
    166170    void   CheckTag   (short datasz);
    167171    void   CheckArrayTag(short datasz, size_t sz);
     172    void   GetTypeTag (char& c);
    168173    void   GetRawByte (char& c);
    169174    void   GetRawBytes(void* ptr, size_t bytes);
     
    319324    public:
    320325      static PPersist* Create() {return new T();}
    321       static void Register(string id) {PIOPersist::RegisterClass(Hash(id),Create);}
     326      static void Register(string id) {PIOPersist::RegisterClass(Hash(id),typeid(T).name(),Create);}
    322327      static uint_8 Hash(string id) {
    323328        return PIOPersist::Hash(id);
Note: See TracChangeset for help on using the changeset viewer.