1340084Svangyzen/* Interface to some helper routines used to accumulate and check
2340084Svangyzen   structured content.
3340084Svangyzen                            __  __            _
4340084Svangyzen                         ___\ \/ /_ __   __ _| |_
5340084Svangyzen                        / _ \\  /| '_ \ / _` | __|
6340084Svangyzen                       |  __//  \| |_) | (_| | |_
7340084Svangyzen                        \___/_/\_\ .__/ \__,_|\__|
8340084Svangyzen                                 |_| XML parser
9340084Svangyzen
10340084Svangyzen   Copyright (c) 1997-2000 Thai Open Source Software Center Ltd
11340084Svangyzen   Copyright (c) 2000-2017 Expat development team
12340084Svangyzen   Licensed under the MIT license:
13340084Svangyzen
14340084Svangyzen   Permission is  hereby granted,  free of charge,  to any  person obtaining
15340084Svangyzen   a  copy  of  this  software   and  associated  documentation  files  (the
16340084Svangyzen   "Software"),  to  deal in  the  Software  without restriction,  including
17340084Svangyzen   without  limitation the  rights  to use,  copy,  modify, merge,  publish,
18340084Svangyzen   distribute, sublicense, and/or sell copies of the Software, and to permit
19340084Svangyzen   persons  to whom  the Software  is  furnished to  do so,  subject to  the
20340084Svangyzen   following conditions:
21340084Svangyzen
22340084Svangyzen   The above copyright  notice and this permission notice  shall be included
23340084Svangyzen   in all copies or substantial portions of the Software.
24340084Svangyzen
25340084Svangyzen   THE  SOFTWARE  IS  PROVIDED  "AS  IS",  WITHOUT  WARRANTY  OF  ANY  KIND,
26340084Svangyzen   EXPRESS  OR IMPLIED,  INCLUDING  BUT  NOT LIMITED  TO  THE WARRANTIES  OF
27340084Svangyzen   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
28340084Svangyzen   NO EVENT SHALL THE AUTHORS OR  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
29340084Svangyzen   DAMAGES OR  OTHER LIABILITY, WHETHER  IN AN  ACTION OF CONTRACT,  TORT OR
30340084Svangyzen   OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
31340084Svangyzen   USE OR OTHER DEALINGS IN THE SOFTWARE.
32340084Svangyzen*/
33340084Svangyzen
34340084Svangyzen#ifdef __cplusplus
35340084Svangyzenextern "C" {
36340084Svangyzen#endif
37340084Svangyzen
38340084Svangyzen#ifndef XML_STRUCTDATA_H
39355604Sdelphij#  define XML_STRUCTDATA_H 1
40340084Svangyzen
41355604Sdelphij#  include "expat.h"
42340084Svangyzen
43340084Svangyzentypedef struct {
44355604Sdelphij  const XML_Char *str;
45355604Sdelphij  int data0;
46355604Sdelphij  int data1;
47355604Sdelphij  int data2;
48340084Svangyzen} StructDataEntry;
49340084Svangyzen
50340084Svangyzentypedef struct {
51355604Sdelphij  int count;     /* Number of entries used */
52355604Sdelphij  int max_count; /* Number of StructDataEntry items in `entries` */
53355604Sdelphij  StructDataEntry *entries;
54340084Svangyzen} StructData;
55340084Svangyzen
56340084Svangyzenvoid StructData_Init(StructData *storage);
57340084Svangyzen
58355604Sdelphijvoid StructData_AddItem(StructData *storage, const XML_Char *s, int data0,
59355604Sdelphij                        int data1, int data2);
60340084Svangyzen
61355604Sdelphijvoid StructData_CheckItems(StructData *storage, const StructDataEntry *expected,
62340084Svangyzen                           int count);
63340084Svangyzen
64340084Svangyzenvoid StructData_Dispose(StructData *storage);
65340084Svangyzen
66355604Sdelphij#endif /* XML_STRUCTDATA_H */
67340084Svangyzen
68340084Svangyzen#ifdef __cplusplus
69340084Svangyzen}
70340084Svangyzen#endif
71