19#ifndef OC_SERIALIZE_LIB_H
20#define OC_SERIALIZE_LIB_H
37 IN CONST CHAR8 *Context OPTIONAL,
38 IN OUT UINT32 *ErrorCount OPTIONAL
169 OUT VOID *Serialized,
172 IN CONST CHAR8 *Context OPTIONAL,
173 IN OUT UINT32 *ErrorCount OPTIONAL
181 OUT VOID *Serialized,
184 IN CONST CHAR8 *Context OPTIONAL,
185 IN OUT UINT32 *ErrorCount OPTIONAL
193 OUT VOID *Serialized,
196 IN CONST CHAR8 *Context OPTIONAL,
197 IN OUT UINT32 *ErrorCount OPTIONAL
206 OUT VOID *Serialized,
209 IN CONST CHAR8 *Context OPTIONAL,
210 IN OUT UINT32 *ErrorCount OPTIONAL
218 OUT VOID *Serialized,
221 IN CONST CHAR8 *Context OPTIONAL,
222 IN OUT UINT32 *ErrorCount OPTIONAL
231 OUT VOID *Serialized,
233 IN VOID *PlistBuffer,
235 IN OUT UINT32 *ErrorCount OPTIONAL
241#define OC_SCHEMA_FIELD(Base, Type, Offset) \
242 ((Type *)(((UINT8 *) (Base)) + (Offset)))
247#define OC_SCHEMA_VALUE(Name, Offset, Type, SourceType) \
248 {(Name), PLIST_NODE_TYPE_ANY, FALSE, ParseSerializedValue, \
249 {.Value = {Offset, sizeof (Type), SourceType}}}
251#define OC_SCHEMA_BLOB(Name, Offset, SourceType) \
252 {(Name), PLIST_NODE_TYPE_ANY, FALSE, ParseSerializedBlob, \
253 {.Blob = {Offset, SourceType}}}
266#define OC_SCHEMA_DICT(Name, Schema) \
267 {(Name), PLIST_NODE_TYPE_DICT, FALSE, ParseSerializedDict, \
268 {.Dict = {(Schema), ARRAY_SIZE (Schema)}}}
270#define OC_SCHEMA_DICT_OPT(Name, Schema) \
271 {(Name), PLIST_NODE_TYPE_DICT, TRUE, ParseSerializedDict, \
272 {.Dict = {(Schema), ARRAY_SIZE (Schema)}}}
274#define OC_SCHEMA_BOOLEAN(Name) \
275 OC_SCHEMA_VALUE (Name, 0, BOOLEAN, OC_SCHEMA_VALUE_BOOLEAN)
277#define OC_SCHEMA_INTEGER(Name, Type) \
278 OC_SCHEMA_VALUE (Name, 0, Type, OC_SCHEMA_VALUE_INTEGER)
280#define OC_SCHEMA_STRING(Name) \
281 OC_SCHEMA_BLOB (Name, 0, OC_SCHEMA_BLOB_STRING)
283#define OC_SCHEMA_STRINGF(Name, Type) \
284 OC_SCHEMA_VALUE (Name, 0, Type, OC_SCHEMA_VALUE_STRING)
286#define OC_SCHEMA_DATA(Name) \
287 OC_SCHEMA_BLOB (Name, 0, OC_SCHEMA_BLOB_DATA)
289#define OC_SCHEMA_DATAF(Name, Type) \
290 OC_SCHEMA_VALUE (Name, 0, Type, OC_SCHEMA_VALUE_DATA)
292#define OC_SCHEMA_MDATA(Name) \
293 OC_SCHEMA_BLOB (Name, 0, OC_SCHEMA_BLOB_MDATA)
295#define OC_SCHEMA_MDATAF(Name, Type) \
296 OC_SCHEMA_VALUE (Name, 0, Type, OC_SCHEMA_VALUE_MDATA)
298#define OC_SCHEMA_ARRAY(Name, ChildSchema) \
299 {(Name), PLIST_NODE_TYPE_ARRAY, FALSE, ParseSerializedArray, \
300 {.List = {0, ChildSchema}}}
302#define OC_SCHEMA_MAP(Name, ChildSchema) \
303 {(Name), PLIST_NODE_TYPE_DICT, FALSE, ParseSerializedMap, \
304 {.List = {0, ChildSchema}}}
315#define OC_SCHEMA_BOOLEAN_IN(Name, Type, Field) \
316 OC_SCHEMA_VALUE (Name, OFFSET_OF (Type, Field), (((Type *)0)->Field), \
317 OC_SCHEMA_VALUE_BOOLEAN)
319#define OC_SCHEMA_INTEGER_IN(Name, Type, Field) \
320 OC_SCHEMA_VALUE (Name, OFFSET_OF (Type, Field), (((Type *)0)->Field), \
321 OC_SCHEMA_VALUE_INTEGER)
323#define OC_SCHEMA_STRING_IN(Name, Type, Field) \
324 OC_SCHEMA_BLOB (Name, OFFSET_OF (Type, Field), OC_SCHEMA_BLOB_STRING)
326#define OC_SCHEMA_STRINGF_IN(Name, Type, Field) \
327 OC_SCHEMA_VALUE (Name, OFFSET_OF (Type, Field), (((Type *)0)->Field), \
328 OC_SCHEMA_VALUE_STRING)
330#define OC_SCHEMA_DATA_IN(Name, Type, Field) \
331 OC_SCHEMA_BLOB (Name, OFFSET_OF (Type, Field), OC_SCHEMA_BLOB_DATA)
333#define OC_SCHEMA_DATAF_IN(Name, Type, Field) \
334 OC_SCHEMA_VALUE (Name, OFFSET_OF (Type, Field), (((Type *)0)->Field), \
335 OC_SCHEMA_VALUE_DATA)
337#define OC_SCHEMA_MDATA_IN(Name, Type, Field) \
338 OC_SCHEMA_BLOB (Name, OFFSET_OF (Type, Field), OC_SCHEMA_BLOB_MDATA)
340#define OC_SCHEMA_MDATAF_IN(Name, Type, Field) \
341 OC_SCHEMA_VALUE (Name, OFFSET_OF (Type, Field), (((Type *)0)->Field), \
342 OC_SCHEMA_VALUE_MDATA)
344#define OC_SCHEMA_ARRAY_IN(Name, Type, Field, ChildSchema) \
345 {(Name), PLIST_NODE_TYPE_ARRAY, FALSE, ParseSerializedArray, \
346 {.List = {OFFSET_OF (Type, Field), ChildSchema}}}
348#define OC_SCHEMA_MAP_IN(Name, Type, Field, ChildSchema) \
349 {(Name), PLIST_NODE_TYPE_DICT, FALSE, ParseSerializedMap, \
350 {.List = {OFFSET_OF (Type, Field), ChildSchema}}}
DMG_SIZE_DEVICE_PATH Size
#define OC_SCHEMA_BLOB(Name, Offset, SourceType)
VOID ParseSerializedArray(OUT VOID *Serialized, IN XML_NODE *Node, IN OC_SCHEMA_INFO *Info, IN CONST CHAR8 *Context OPTIONAL, IN OUT UINT32 *ErrorCount OPTIONAL)
OC_SCHEMA * LookupConfigSchema(IN OC_SCHEMA *SortedList, IN UINT32 Size, IN CONST CHAR8 *Name)
BOOLEAN ParseSerialized(OUT VOID *Serialized, IN OC_SCHEMA_INFO *RootSchema, IN VOID *PlistBuffer, IN UINT32 PlistSize, IN OUT UINT32 *ErrorCount OPTIONAL)
VOID ParseSerializedValue(OUT VOID *Serialized, IN XML_NODE *Node, IN OC_SCHEMA_INFO *Info, IN CONST CHAR8 *Context OPTIONAL, IN OUT UINT32 *ErrorCount OPTIONAL)
VOID ParseSerializedBlob(OUT VOID *Serialized, IN XML_NODE *Node, IN OC_SCHEMA_INFO *Info, IN CONST CHAR8 *Context OPTIONAL, IN OUT UINT32 *ErrorCount OPTIONAL)
VOID ParseSerializedDict(OUT VOID *Serialized, IN XML_NODE *Node, IN OC_SCHEMA_INFO *Info, IN CONST CHAR8 *Context OPTIONAL, IN OUT UINT32 *ErrorCount OPTIONAL)
VOID(* OC_APPLY)(OUT VOID *Serialized, IN XML_NODE *Node, IN OC_SCHEMA_INFO *Info, IN CONST CHAR8 *Context OPTIONAL, IN OUT UINT32 *ErrorCount OPTIONAL)
VOID ParseSerializedMap(OUT VOID *Serialized, IN XML_NODE *Node, IN OC_SCHEMA_INFO *Info, IN CONST CHAR8 *Context OPTIONAL, IN OUT UINT32 *ErrorCount OPTIONAL)
enum OC_SCHEMA_BLOB_TYPE_ OC_SCHEMA_BLOB_TYPE
#define OC_SCHEMA_VALUE(Name, Offset, Type, SourceType)
@ OC_SCHEMA_VALUE_BOOLEAN
@ OC_SCHEMA_VALUE_INTEGER
#define OC_SCHEMA_DICT(Name, Schema)
enum OC_SCHEMA_VALUE_TYPE_ OC_SCHEMA_VALUE_TYPE
enum PLIST_NODE_TYPE_ PLIST_NODE_TYPE
OC_SCHEMA_VALUE_TYPE Type