00001 #ifndef __RESOURCEMGR_H__
00002 #define __RESOURCEMGR_H__
00003
00004
00005
00006
00007
00008
00009 #include "configure.h"
00010 #include "handle.h"
00011
00012
00013 typedef vVOID ( *CleanResourceFunc_t )( vVOID *resource );
00014
00015 typedef struct tagResourceManager
00016 {
00017 vVOID **resources;
00018 vSIZE numResources;
00019 vINDEX *freeIndices;
00020 vSIZE numFreeIndices;
00021 vMAGIC *magicNumbers;
00022 vSIZE *referenceCounts;
00023 CleanResourceFunc_t cleanFunc_t;
00024 }
00025 ResourceManager;
00026
00027
00028
00029
00030
00031
00032 ResourceManager* CreateResourceManager
00033 (
00034 vSIZE numResources
00035 );
00036
00037
00038
00039
00040
00041
00042 vVOID DestroyResourceManager
00043 (
00044 ResourceManager **manager
00045 );
00046
00047
00048
00049
00050
00051
00052 vVOID DebugResourceManager
00053 (
00054 ResourceManager *manager,
00055 vSTRING debugDescription
00056 );
00057
00058
00059
00060
00061
00062
00063
00064 vBOOL IncreaseResourceCapacity
00065 (
00066 ResourceManager *manager,
00067 vSIZE increment
00068 );
00069
00070
00071 vBOOL HasMoreHandles
00072 (
00073 ResourceManager *manager
00074 );
00075
00076
00077
00078
00079 vSIZE GetNumResources
00080 (
00081 ResourceManager *manager
00082 );
00083
00084
00085 vHANDLE GetHandle
00086 (
00087 ResourceManager *manager
00088 );
00089
00090
00091 vHANDLE ReferenceHandle
00092 (
00093 ResourceManager *manager,
00094 vHANDLE handle
00095 );
00096
00097
00098 vSIZE GetReferenceCount
00099 (
00100 ResourceManager *manager,
00101 vHANDLE handle
00102 );
00103
00104
00105 vVOID ReleaseHandle
00106 (
00107 ResourceManager *manager,
00108 vHANDLE handle
00109 );
00110
00111
00112 vBOOL IsValidHandle
00113 (
00114 ResourceManager *manager,
00115 vHANDLE handle
00116 );
00117
00118
00119 vVOID* GetResource
00120 (
00121 ResourceManager *manager,
00122 vHANDLE handle
00123 );
00124
00125
00126 vVOID SetResource
00127 (
00128 ResourceManager *manager,
00129 vHANDLE handle,
00130 vVOID *resource
00131 );
00132
00133
00134 #endif
00135