00001
00002
00003
00004
00005
00006
00007
00008
00013 #ifndef _BLT_REGISTRY_H_
00014 #define _BLT_REGISTRY_H_
00015
00016
00017
00018
00019 #include "Atomix.h"
00020 #include "BltDefs.h"
00021 #include "BltTypes.h"
00022 #include "BltErrors.h"
00023 #include "BltMedia.h"
00024
00025
00026
00027
00028 typedef struct BLT_RegistryKey BLT_RegistryKey;
00029
00030 typedef enum {
00031 BLT_REGISTRY_VALUE_TYPE_NONE,
00032 BLT_REGISTRY_VALUE_TYPE_STRING,
00033 BLT_REGISTRY_VALUE_TYPE_INTEGER,
00034 BLT_REGISTRY_VALUE_TYPE_BOOLEAN,
00035 BLT_REGISTRY_VALUE_TYPE_RAW_DATA
00036 } BLT_RegistryValueType;
00037
00038 typedef struct {
00039 BLT_Size size;
00040 BLT_Any buffer;
00041 } BLT_RegistryRawData;
00042
00043 typedef union {
00044 BLT_CString string;
00045 BLT_Boolean boolean;
00046 BLT_UInt32 integer;
00047 BLT_RegistryRawData data;
00048 } BLT_RegistryValue;
00049
00050
00051
00052
00053 #define BLT_REGISTRY_KEY_ROOT ((BLT_RegistryKey*)0)
00054 #define BLT_REGISTRY_KEY_PUBLIC "BLT_PUBLIC"
00055 #define BLT_REGISTRY_KEY_PRIVATE "BLT_PRIVATE"
00056 #define BLT_REGISTRY_NAME_CATEGORY_MEDIA_TYPE_IDS "MediaTypes"
00057
00058 #define BLT_ERROR_NO_SUCH_KEY (BLT_ERROR_BASE_REGISTRY - 0)
00059 #define BLT_ERROR_KEY_VALUE_TYPE_MISMATCH (BLT_ERROR_BASE_REGISTRY - 1)
00060
00061
00062
00063
00064 ATX_DECLARE_INTERFACE(BLT_Registry)
00069 ATX_BEGIN_INTERFACE_DEFINITION(BLT_Registry)
00070 BLT_Result (*CreateKey)(BLT_Registry* self,
00071 BLT_RegistryKey* parent,
00072 BLT_CString name,
00073 BLT_RegistryKey** key);
00074
00075 BLT_Result (*DestroyKey)(BLT_Registry* self,
00076 BLT_RegistryKey* key);
00077
00078 BLT_Result (*GetKey)(BLT_Registry* self,
00079 BLT_RegistryKey* parent,
00080 BLT_CString name,
00081 BLT_RegistryKey** key);
00082
00083 BLT_Result (*SetKeyValue)(BLT_Registry* self,
00084 BLT_RegistryKey* parent,
00085 BLT_CString name,
00086 BLT_RegistryValueType value_type,
00087 BLT_RegistryValue* value);
00088
00089 BLT_Result (*GetKeyValue)(BLT_Registry* self,
00090 BLT_RegistryKey* parent,
00091 BLT_CString name,
00092 BLT_RegistryValueType* value_type,
00093 BLT_RegistryValue* value);
00094 BLT_Result (*RegisterName)(BLT_Registry* self,
00095 BLT_CString category,
00096 BLT_CString name,
00097 BLT_UInt32* id);
00098 BLT_Result (*RegisterNameForId)(BLT_Registry* self,
00099 BLT_CString category,
00100 BLT_CString name,
00101 BLT_UInt32 id);
00102 BLT_Result (*GetNameForId)(BLT_Registry* self,
00103 BLT_CString category,
00104 BLT_UInt32 id,
00105 BLT_CString* name);
00106 BLT_Result (*GetIdForName)(BLT_Registry* self,
00107 BLT_CString category,
00108 BLT_CString name,
00109 BLT_UInt32* id);
00110 BLT_Result (*RegisterExtension)(BLT_Registry* self,
00111 BLT_CString extension,
00112 BLT_CString media_type);
00113 BLT_Result (*GetMediaTypeIdForExtension)(BLT_Registry* self,
00114 BLT_CString extension,
00115 BLT_MediaTypeId* type_id);
00116 ATX_END_INTERFACE_DEFINITION
00117
00118
00119
00120
00121 #define BLT_Registry_CreateKey(object, parent, name, key) \
00122 ATX_INTERFACE(object)->CreateKey(object, parent, name, key)
00123
00124 #define BLT_Registry_DestroyKey(object, key) \
00125 ATX_INTERFACE(object)->DestroyKey(object, key)
00126
00127 #define BLT_Registry_GetKey(object, parent, name, key) \
00128 ATX_INTERFACE(object)->GetKey(object, parent, name, key)
00129
00130 #define BLT_Registry_SetKeyValue(object, parent, name, value_type, value) \
00131 ATX_INTERFACE(object)->SetKeyValue(object, \
00132 parent, name, value_type, value)
00133
00134 #define BLT_Registry_GetKeyValue(object, parent, name, value_type, value) \
00135 ATX_INTERFACE(object)->GetKeyValue(object, \
00136 parent, name, value_type, value)
00137
00138 #define BLT_Registry_RegisterName(object, category, name, id) \
00139 ATX_INTERFACE(object)->RegisterName(object, category, \
00140 name, id)
00141
00142 #define BLT_Registry_RegisterNameForId(object, category, name, id) \
00143 ATX_INTERFACE(object)->RegisterNameForId(object, category, \
00144 name, id)
00145
00146 #define BLT_Registry_GetNameForId(object, category, name, id) \
00147 ATX_INTERFACE(object)->GetNameForId(object, category, name, id)
00148
00149 #define BLT_Registry_GetIdForName(object, category, name, id) \
00150 ATX_INTERFACE(object)->GetIdForName(object, category, \
00151 name, id)
00152
00153 #define BLT_Registry_RegisterExtension(object, extension, media_type) \
00154 ATX_INTERFACE(object)->RegisterExtension(object, \
00155 extension, media_type)
00156
00157 #define BLT_Registry_GetMediaTypeIdForExtension(object, extension, type_id) \
00158 ATX_INTERFACE(object)->GetMediaTypeIdForExtension(object, \
00159 extension, type_id)
00160
00161 #define BLT_Registry_Destroy(object) ATX_DESTROY_OBJECT(object)
00162
00163 #endif