Chameleon

Chameleon Svn Source Tree

Root/branches/cparm/i386/modules/include/xml.h

1/*
2 * Copyright (c) 2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * Portions Copyright (c) 2003 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 2.0 (the "License"). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
12 * this file.
13 *
14 * The Original Code and all software distributed under the License are
15 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
20 * under the License.
21 *
22 * @APPLE_LICENSE_HEADER_END@
23 */
24
25#ifndef __XML_H
26#define __XML_H
27
28/*
29 * Max size fo config data array, in bytes.
30 */
31#define IO_CONFIG_DATA_SIZE40960
32
33
34struct Tag {
35long type;
36char *string;
37long offset;
38struct Tag *tag;
39struct Tag *tagNext;
40};
41typedef struct Tag Tag, *TagPtr;
42
43typedef struct {
44charplist[IO_CONFIG_DATA_SIZE];// buffer for plist
45TagPtrdictionary;// buffer for xml dictionary
46bool canOverride; // flag to mark a dictionary can be overriden
47} config_file_t;
48
49enum xmltype {
50 kTagTypeNone = 0,
51 kTagTypeDict,
52 kTagTypeKey,
53 kTagTypeString,
54 kTagTypeInteger,
55 kTagTypeData,
56 kTagTypeDate,
57 kTagTypeFalse,
58 kTagTypeTrue,
59 kTagTypeArray
60};
61
62
63struct string_ref
64{
65char* string;
66int id;
67struct string_ref* next;
68};
69typedef struct string_ref string_ref;
70
71#define kXMLTagPList "plist "
72#define kXMLTagDict "dict"
73#define kXMLTagKey "key"
74#define kXMLTagString "string"
75#define kXMLTagInteger "integer"
76#define kXMLTagData "data"
77#define kXMLTagDate "date"
78#define kXMLTagFalse "false/"
79#define kXMLTagTrue "true/"
80#define kXMLTagArray "array"
81
82#define kXMLStringID"ID="
83#define kXMLStringIDRef "IDREF="
84
85
86#define kPropCFBundleIdentifier ("CFBundleIdentifier")
87#define kPropCFBundleExecutable ("CFBundleExecutable")
88#define kPropOSBundleRequired ("OSBundleRequired")
89#define kPropOSBundleLibraries ("OSBundleLibraries")
90#define kPropOSBundlePriority ("OSBundlePriority")
91#define kPropOSBundleEnabled ("OSBundleEnabled")
92#define kPropIOKitPersonalities ("IOKitPersonalities")
93#define kPropIONameMatch ("IONameMatch")
94#define kPropCFBundleGetInfoString ("CFBundleGetInfoString")
95
96#define kPropNSHumanReadableCopyright ("NSHumanReadableCopyright")
97#define kPropCFBundleShortVersionString ("CFBundleShortVersionString")
98#define kPropCFBundleIconFile ("CFBundleIconFile")
99#define kPropCFBundleVersion ("CFBundleVersion")
100#define kPropCFBundlePackageType ("CFBundlePackageType")
101#define kPropCFBundleName ("CFBundleName")
102#define kPropNSPrincipalClass ("NSPrincipalClass")
103#define kPropIOClass ("IOClass")
104#define kPropIOProviderClass ("IOProviderClass")
105#define kPropOSBundleWorkspace ("OSBundleWorkspace")
106#define kPropCFBundleLocalizations("CFBundleLocalizations")
107
108#define DEFAULT_BOOT_CONFIG_DICT (TagPtr)0
109#define DEFAULT_SYSTEM_CONFIG_DICT (TagPtr)1
110#define DEFAULT_OVERRIDE_CONFIG_DICT (TagPtr)2
111#define DEFAULT_SMBIOS_CONFIG_DICT (TagPtr)3
112#define DEFAULT_HELPER_CONFIG_DICT (TagPtr)4
113TagPtr XMLGetProperty( TagPtr dict, const char * key );
114TagPtr XMLGetElement( TagPtr dict, int id );
115int XMLTagCount( TagPtr dict );
116
117
118bool XMLIsType(TagPtr dict, enum xmltype type);
119
120bool XMLCastBoolean( TagPtr dict );
121char* XMLCastString( TagPtr dict );
122long XMLCastStringOffset(TagPtr dict);
123int XMLCastInteger ( TagPtr dict );
124TagPtr XMLCastDict ( TagPtr dict );
125TagPtr XMLCastArray( TagPtr dict );
126
127long XMLParseNextTag(char *buffer, TagPtr *tag);
128void XMLFreeTag(TagPtr tag);
129char* XMLDecode(const char *in);
130//==========================================================================
131// XMLParseFile
132// Expects to see one dictionary in the XML file.
133// Puts the first dictionary it finds in the
134// tag pointer and returns 0, or returns -1 if not found.
135//
136long XMLParseFile( char * buffer, TagPtr * dict );
137
138#endif /* __XML_H */
139

Archive Download this file

Revision: 2182