xref: /reactos/sdk/include/psdk/xmllite.idl (revision c2c66aff)
1/*
2 * Copyright (C) 2010 Nikolay Sivov
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19import "unknwn.idl";
20import "objidl.idl";
21import "oaidl.idl";
22
23typedef enum XmlNodeType {
24    XmlNodeType_None                  = 0,
25    XmlNodeType_Element               = 1,
26    XmlNodeType_Attribute             = 2,
27    XmlNodeType_Text                  = 3,
28    XmlNodeType_CDATA                 = 4,
29    XmlNodeType_ProcessingInstruction = 7,
30    XmlNodeType_Comment               = 8,
31    XmlNodeType_DocumentType          = 10,
32    XmlNodeType_Whitespace            = 13,
33    XmlNodeType_EndElement            = 15,
34    XmlNodeType_XmlDeclaration        = 17,
35    _XmlNodeType_Last                 = 17
36} XmlNodeType;
37
38/* IXmlReader */
39[
40  local,
41  object,
42  uuid(7279fc81-709d-4095-b63d-69fe4b0d9030),
43  pointer_default(unique)
44]
45interface IXmlReader : IUnknown
46{
47    HRESULT SetInput( [in] IUnknown *input);
48    HRESULT GetProperty( [in] UINT property, [out] LONG_PTR *value);
49    HRESULT SetProperty( [in] UINT property, [in] LONG_PTR value);
50    HRESULT Read( [out] XmlNodeType *node_type);
51    HRESULT GetNodeType( [out] XmlNodeType *node_type);
52    HRESULT MoveToFirstAttribute(void);
53    HRESULT MoveToNextAttribute(void);
54    HRESULT MoveToAttributeByName( [in] LPCWSTR local_name,
55                                   [in] LPCWSTR namespaceUri);
56    HRESULT MoveToElement(void);
57    HRESULT GetQualifiedName( [out] LPCWSTR *qualifiedName,
58                              [out] UINT *qualifiedName_length);
59    HRESULT GetNamespaceUri( [out] LPCWSTR *namespaceUri,
60                             [out] UINT *nnamespaceUri_length);
61    HRESULT GetLocalName( [out] LPCWSTR *local_name,
62                          [out] UINT *locale_name_length);
63    HRESULT GetPrefix( [out] LPCWSTR *prefix,
64                       [out] UINT *prefix_length);
65    HRESULT GetValue( [out] LPCWSTR *value,
66                      [out] UINT *value_length);
67    HRESULT ReadValueChunk( [out] WCHAR *buffer,
68                            [in]  UINT chunk_size,
69                            [in,out] UINT *read);
70    HRESULT GetBaseUri( [out] LPCWSTR *baseUri,
71                        [out] UINT *baseUri_length);
72    BOOL IsDefault(void);
73    BOOL IsEmptyElement(void);
74    HRESULT GetLineNumber( [out] UINT *lineNumber);
75    HRESULT GetLinePosition( [out] UINT *linePosition);
76    HRESULT GetAttributeCount( [out] UINT *attributeCount);
77    HRESULT GetDepth( [out] UINT *depth);
78    BOOL IsEOF(void);
79}
80
81/* IXmlResolver */
82[
83  local,
84  object,
85  uuid(7279fc82-709d-4095-b63d-69fe4b0d9030),
86  pointer_default(unique)
87]
88interface IXmlResolver : IUnknown
89{
90    HRESULT ResolveUri([in] LPCWSTR base_uri,
91                       [in] LPCWSTR public_id,
92                       [in] LPCWSTR system_id,
93                       [out] IUnknown **input);
94}
95
96/* IXmlReader state */
97typedef enum XmlReadState
98{
99    XmlReadState_Initial,
100    XmlReadState_Interactive,
101    XmlReadState_Error,
102    XmlReadState_EndOfFile,
103    XmlReadState_Closed
104} XmlReadState;
105
106/* conformance levels */
107typedef enum XmlConformanceLevel
108{
109    XmlConformanceLevel_Auto,
110    XmlConformanceLevel_Fragment,
111    XmlConformanceLevel_Document,
112    _XmlConformanceLevel_Last = XmlConformanceLevel_Document
113} XmlConformanceLevel;
114
115/* DTD processing mode */
116typedef enum DtdProcessing
117{
118    DtdProcessing_Prohibit,
119    DtdProcessing_Parse,
120    _DtdProcessing_Last = DtdProcessing_Parse
121} DtdProcessing;
122
123/* IXmlReader properties */
124typedef enum XmlReaderProperty
125{
126    XmlReaderProperty_MultiLanguage,
127    XmlReaderProperty_ConformanceLevel,
128    XmlReaderProperty_RandomAccess,
129    XmlReaderProperty_XmlResolver,
130    XmlReaderProperty_DtdProcessing,
131    XmlReaderProperty_ReadState,
132    XmlReaderProperty_MaxElementDepth,
133    XmlReaderProperty_MaxEntityExpansion,
134    _XmlReaderProperty_Last = XmlReaderProperty_MaxEntityExpansion
135} XmlReaderProperty;
136
137/* reader error codes */
138typedef enum XmlError
139{
140    MX_E_MX = 0xc00cee00,
141    MX_E_INPUTEND,
142    MX_E_ENCODING,
143    MX_E_ENCODINGSWITCH,
144    MX_E_ENCODINGSIGNATURE,
145    WC_E_WC = 0xc00cee20,
146    WC_E_WHITESPACE,
147    WC_E_SEMICOLON,
148    WC_E_GREATERTHAN,
149    WC_E_QUOTE,
150    WC_E_EQUAL,
151    WC_E_LESSTHAN,
152    WC_E_HEXDIGIT,
153    WC_E_DIGIT,
154    WC_E_LEFTBRACKET,
155    WC_E_LEFTPAREN,
156    WC_E_XMLCHARACTER,
157    WC_E_NAMECHARACTER,
158    WC_E_SYNTAX,
159    WC_E_CDSECT,
160    WC_E_COMMENT,
161    WC_E_CONDSECT,
162    WC_E_DECLATTLIST,
163    WC_E_DECLDOCTYPE,
164    WC_E_DECLELEMENT,
165    WC_E_DECLENTITY,
166    WC_E_DECLNOTATION,
167    WC_E_NDATA,
168    WC_E_PUBLIC,
169    WC_E_SYSTEM,
170    WC_E_NAME,
171    WC_E_ROOTELEMENT,
172    WC_E_ELEMENTMATCH,
173    WC_E_UNIQUEATTRIBUTE,
174    WC_E_TEXTXMLDECL,
175    WC_E_LEADINGXML,
176    WC_E_TEXTDECL,
177    WC_E_XMLDECL,
178    WC_E_ENCNAME,
179    WC_E_PUBLICID,
180    WC_E_PESINTERNALSUBSET,
181    WC_E_PESBETWEENDECLS,
182    WC_E_NORECURSION,
183    WC_E_ENTITYCONTENT,
184    WC_E_UNDECLAREDENTITY,
185    WC_E_PARSEDENTITY,
186    WC_E_NOEXTERNALENTITYREF,
187    WC_E_PI,
188    WC_E_SYSTEMID,
189    WC_E_QUESTIONMARK,
190    WC_E_CDSECTEND,
191    WC_E_MOREDATA,
192    WC_E_DTDPROHIBITED,
193    WC_E_INVALIDXMLSPACE,
194    NC_E_NC = 0xc00cee60,
195    NC_E_QNAMECHARACTER,
196    NC_E_QNAMECOLON,
197    NC_E_NAMECOLON,
198    NC_E_DECLAREDPREFIX,
199    NC_E_UNDECLAREDPREFIX,
200    NC_E_EMPTYURI,
201    NC_E_XMLPREFIXRESERVED,
202    NC_E_XMLNSPREFIXRESERVED,
203    NC_E_XMLURIRESERVED,
204    NC_E_XMLNSURIRESERVED,
205    SC_E_SC = 0xc00cee80,
206    SC_E_MAXELEMENTDEPTH,
207    SC_E_MAXENTITYEXPANSION,
208    WR_E_WR = 0xc00cef00,
209    WR_E_NONWHITESPACE,
210    WR_E_NSPREFIXDECLARED,
211    WR_E_NSPREFIXWITHEMPTYNSURI,
212    WR_E_DUPLICATEATTRIBUTE,
213    WR_E_XMLNSPREFIXDECLARATION,
214    WR_E_XMLPREFIXDECLARATION,
215    WR_E_XMLURIDECLARATION,
216    WR_E_XMLNSURIDECLARATION,
217    WR_E_NAMESPACEUNDECLARED,
218    WR_E_INVALIDXMLSPACE,
219    WR_E_INVALIDACTION,
220    WR_E_INVALIDSURROGATEPAIR,
221    XML_E_INVALID_DECIMAL = 0xc00ce01d,
222    XML_E_INVALID_HEXIDECIMAL,
223    XML_E_INVALID_UNICODE,
224    XML_E_INVALIDENCODING = 0xc00ce06e
225} XmlError;
226
227/* IXmlReader construction */
228cpp_quote("STDAPI CreateXmlReader(REFIID riid, void **ppvObject, IMalloc *pMalloc);")
229
230cpp_quote("typedef IUnknown IXmlReaderInput;")
231cpp_quote("STDAPI CreateXmlReaderInputWithEncodingName(IUnknown *stream, IMalloc *pMalloc,")
232cpp_quote("                                            LPCWSTR encoding, BOOL hint,")
233cpp_quote("                                            LPCWSTR base_uri, IXmlReaderInput **ppInput);")
234
235typedef enum XmlStandalone
236{
237    XmlStandalone_Omit,
238    XmlStandalone_Yes,
239    XmlStandalone_No,
240    _XmlStandalone_Last = XmlStandalone_No
241} XmlStandalone;
242
243typedef enum XmlWriterProperty
244{
245    XmlWriterProperty_MultiLanguage,
246    XmlWriterProperty_Indent,
247    XmlWriterProperty_ByteOrderMark,
248    XmlWriterProperty_OmitXmlDeclaration,
249    XmlWriterProperty_ConformanceLevel,
250    _XmlWriterProperty_Last = XmlWriterProperty_OmitXmlDeclaration
251} XmlWriterProperty;
252
253/* IXmlWriter */
254[
255  local,
256  object,
257  uuid(7279FC88-709D-4095-B63D-69FE4B0D9030),
258  pointer_default(unique)
259]
260interface IXmlWriter : IUnknown
261{
262    HRESULT SetOutput([in] IUnknown *pOutput);
263    HRESULT GetProperty([in] UINT nProperty, [out] LONG_PTR *ppValue);
264    HRESULT SetProperty([in] UINT nProperty, [in] LONG_PTR pValue);
265    HRESULT WriteAttributes([in] IXmlReader *pReader, [in] BOOL fWriteDefaultAttributes);
266    HRESULT WriteAttributeString([in] LPCWSTR pwszPrefix, [in] LPCWSTR pwszLocalName,
267                                 [in] LPCWSTR pwszNamespaceUri, [in] LPCWSTR pwszValue);
268    HRESULT WriteCData([in] LPCWSTR pwszText);
269    HRESULT WriteCharEntity([in] WCHAR wch);
270    HRESULT WriteChars([in] const WCHAR *pwch, [in] UINT cwch);
271    HRESULT WriteComment([in] LPCWSTR pwszComment);
272    HRESULT WriteDocType([in] LPCWSTR pwszName, [in] LPCWSTR pwszPublicId,
273                         [in] LPCWSTR pwszSystemId, [in] LPCWSTR pwszSubset);
274    HRESULT WriteElementString([in] LPCWSTR pwszPrefix, [in] LPCWSTR pwszLocalName,
275                               [in] LPCWSTR pwszNamespaceUri, [in] LPCWSTR pwszValue);
276    HRESULT WriteEndDocument();
277    HRESULT WriteEndElement();
278    HRESULT WriteEntityRef([in] LPCWSTR pwszName);
279    HRESULT WriteFullEndElement();
280    HRESULT WriteName([in] LPCWSTR pwszName);
281    HRESULT WriteNmToken([in] LPCWSTR pwszNmToken);
282    HRESULT WriteNode([in] IXmlReader *pReader, [in] BOOL fWriteDefaultAttributes);
283    HRESULT WriteNodeShallow([in] IXmlReader *pReader, [in] BOOL fWriteDefaultAttributes);
284    HRESULT WriteProcessingInstruction([in] LPCWSTR pwszName, [in] LPCWSTR pwszText);
285    HRESULT WriteQualifiedName([in] LPCWSTR pwszLocalName, [in] LPCWSTR pwszNamespaceUri);
286    HRESULT WriteRaw([in] LPCWSTR pwszData);
287    HRESULT WriteRawChars([in] const WCHAR *pwch, [in] UINT cwch);
288    HRESULT WriteStartDocument([in] XmlStandalone standalone);
289    HRESULT WriteStartElement([in] LPCWSTR pwszPrefix, [in] LPCWSTR pwszLocalName,
290                              [in]  LPCWSTR pwszNamespaceUri);
291    HRESULT WriteString([in] LPCWSTR pwszText);
292    HRESULT WriteSurrogateCharEntity([in] WCHAR wchLow, [in] WCHAR wchHigh);
293    HRESULT WriteWhitespace([in] LPCWSTR pwszWhitespace);
294    HRESULT Flush();
295}
296
297/* IXmlWriter construction */
298cpp_quote("STDAPI CreateXmlWriter(REFIID riid, void **ppvObject, IMalloc *pMalloc);")
299
300cpp_quote("typedef IUnknown IXmlWriterOutput;")
301cpp_quote("STDAPI CreateXmlWriterOutputWithEncodingName(IUnknown *stream, IMalloc *pMalloc,")
302cpp_quote("                                             LPCWSTR encoding, IXmlWriterOutput **output);")
303cpp_quote("STDAPI CreateXmlWriterOutputWithEncodingCodePage(IUnknown *stream, IMalloc *pMalloc,")
304cpp_quote("    UINT codepage, IXmlWriterOutput **output);")
305