12#ifndef TT_INCLUDE__DEFINITIONMGRCLASS_H
13#define TT_INCLUDE__DEFINITIONMGRCLASS_H
16#include "engine_common.h"
17#include "engine_threading.h"
18#include "engine_string.h"
19#include "engine_vector.h"
20#include "PostLoadableClass.h"
21#include "SaveLoadSubSystemClass.h"
22#include "HashTemplateClass.h"
26class DefinitionMgrClass :
public SaveLoadSubSystemClass
30 static HashTemplateClass<StringClass,DynamicVectorClass<DefinitionClass *> *>* DefinitionHash;
31 static int _MaxDefinitionCount;
32 SHARED_API
static DefinitionClass **_SortedDefinitionArray;
33 static int _DefinitionCount;
41 static unsigned long Get_New_ID(uint32 class_id);
43 SHARED_API
static DefinitionClass* Find_Definition(uint32
id,
bool twiddle);
44 SHARED_API
static DefinitionClass* Find_Named_Definition(
const char* name,
bool twiddle);
45 SHARED_API
static DefinitionClass* Find_Typed_Definition(
const char* name, uint32 class_id,
bool twiddle);
46 SHARED_API
static void Register_Definition(DefinitionClass *definition);
47 SHARED_API
static void Unregister_Definition(DefinitionClass *definition);
49 static DefinitionClass* Find_Definition(uint32
id,
bool twiddle);
50 static DefinitionClass* Find_Named_Definition(
const char* name,
bool twiddle);
51 static DefinitionClass* Find_Typed_Definition(
const char* name, uint32 class_id,
bool twiddle);
52 static void Register_Definition(DefinitionClass *definition);
53 static void Unregister_Definition(DefinitionClass *definition);
55 SHARED_API
static DefinitionClass *Get_First(uint32
id,ID_TYPE type = ID_CLASS);
57 static DefinitionClass *Get_First()
59 return _SortedDefinitionArray[0];
62 SHARED_API
static DefinitionClass *Get_Next(DefinitionClass* curr_def,uint32
id,ID_TYPE type = ID_CLASS);
63 SHARED_API
static DefinitionClass *Get_Next(DefinitionClass* curr_def);
64 SHARED_API
static void Free_Definitions();
65 static void Prepare_Definition_Array();
66 static int fnCompareDefinitionsCallback(
const void* elem1,
const void* elem2);
68 bool Save_Objects(ChunkSaveClass& csave);
69 bool Load_Objects(ChunkLoadClass& cload);
70 bool Save_Variables(ChunkSaveClass& csave);
71 bool Load_Variables(ChunkLoadClass& cload);
72 virtual ~DefinitionMgrClass();
73 virtual uint32 Chunk_ID()
const
77 virtual bool Contains_Data()
const
81 virtual bool Save(ChunkSaveClass& csave);
82 virtual bool Load(ChunkLoadClass& cload);
83 virtual const char* Name()
const
85 return "DefinitionMgrClass";