| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // ================================================================================
- // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås ==
- // == See tb_core.h for more information. ==
- // ================================================================================
- #ifndef TB_ID_H
- #define TB_ID_H
- #include "tb_types.h"
- #include "tb_hash.h"
- #include "tb_str.h"
- namespace tb {
- typedef void (*TBIDRegisterStringCallback) (uint32 id, const char* string);
- /** TBID is a wrapper for a uint32 to be used as ID.
- The uint32 can be set directly to any uint32, or it can be
- set from a string which will be hashed into the uint32. */
- class TBID
- {
- public:
- TBID(uint32 id = 0) { Set(id); }
- TBID(const char *string) { Set(string); }
- TBID(const TBID &id) { Set(id); }
- #ifdef TB_RUNTIME_DEBUG_INFO
- void Set(uint32 newid);
- void Set(const TBID &newid);
- void Set(const char *string);
- #else
- void Set(uint32 newid) { id = newid; }
- void Set(const TBID &newid) { id = newid; }
- void Set(const char *string) { id = TBGetHash(string); if (tbidRegisterCallback) tbidRegisterCallback(id, string); }
- #endif
- operator uint32 () const { return id; }
- const TBID& operator = (const TBID &id) { Set(id); return *this; }
- private:
- uint32 id;
- public:
- /** This string is here to aid debugging (Only in debug builds!)
- It should not to be used in your code! */
- #ifdef TB_RUNTIME_DEBUG_INFO
- friend class TBLanguage;
- TBStr debug_string;
- #endif
- static TBIDRegisterStringCallback tbidRegisterCallback;
- };
- }; // namespace tb
- #endif // TB_ID_H
|