]> git.saurik.com Git - wxWidgets.git/blame - src/expat/amiga/expat_68k_handler_stubs.c
wxMessageBox off the main thread lost result code.
[wxWidgets.git] / src / expat / amiga / expat_68k_handler_stubs.c
CommitLineData
11a3e7b6
VZ
1/*
2** Copyright (c) 2001-2009 Expat maintainers.
3**
4** Permission is hereby granted, free of charge, to any person obtaining
5** a copy of this software and associated documentation files (the
6** "Software"), to deal in the Software without restriction, including
7** without limitation the rights to use, copy, modify, merge, publish,
8** distribute, sublicense, and/or sell copies of the Software, and to
9** permit persons to whom the Software is furnished to do so, subject to
10** the following conditions:
11**
12** The above copyright notice and this permission notice shall be included
13** in all copies or substantial portions of the Software.
14**
15** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22*/
23
24#ifdef __USE_INLINE__
25#undef __USE_INLINE__
26#endif
27
28#include "expat_68k.h"
29#include <exec/emulation.h>
30#include <proto/exec.h>
31#include <stdarg.h>
32
33static uint32 VARARGS68K call_68k_code (struct ExecIFace *IExec, void *code, int num_args, ...) {
34 uint32 res = 0;
35
36 va_list vargs;
37 va_startlinear(vargs, num_args);
38 uint32 *args = va_getlinearva(vargs, uint32 *);
39
40 uint8 *stack = IExec->AllocVec(4096, MEMF_SHARED);
41 if (stack) {
42 uint32 *sp = (uint32 *)(stack + 4096);
43 args += num_args;
44 while (num_args--) {
45 *--sp = *--args;
46 }
47
48 res = IExec->EmulateTags(code, ET_StackPtr, sp, TAG_END);
49 IExec->FreeVec(stack);
50 }
51
52 va_end(vargs);
53
54 return res;
55}
56
57void _68k_startelementhandler(void *userdata, const char *name, const char **attrs) {
58 M68kXML_Parser p = userdata;
59 call_68k_code(p->IExec, p->startelementhandler, 3, p->handlerarg, name, attrs);
60}
61
62void _68k_endelementhandler(void *userdata, const char *name) {
63 M68kXML_Parser p = userdata;
64 call_68k_code(p->IExec, p->endelementhandler, 2, p->handlerarg, name);
65}
66
67void _68k_chardatahandler(void *userdata, const char *s, int len) {
68 M68kXML_Parser p = userdata;
69 call_68k_code(p->IExec, p->chardatahandler, 3, p->handlerarg, s, len);
70}
71
72void _68k_procinsthandler(void *userdata, const char *target, const char *data) {
73 M68kXML_Parser p = userdata;
74 call_68k_code(p->IExec, p->procinsthandler, 3, p->handlerarg, target, data);
75}
76
77void _68k_commenthandler(void *userdata, const char *data) {
78 M68kXML_Parser p = userdata;
79 call_68k_code(p->IExec, p->commenthandler, 2, p->handlerarg, data);
80}
81
82void _68k_startcdatahandler(void *userdata) {
83 M68kXML_Parser p = userdata;
84 call_68k_code(p->IExec, p->startcdatahandler, 1, p->handlerarg);
85}
86
87void _68k_endcdatahandler(void *userdata) {
88 M68kXML_Parser p = userdata;
89 call_68k_code(p->IExec, p->endcdatahandler, 1, p->handlerarg);
90}
91
92void _68k_defaulthandler(void *userdata, const char *s, int len) {
93 M68kXML_Parser p = userdata;
94 call_68k_code(p->IExec, p->defaulthandler, 3, p->handlerarg, s, len);
95}
96
97void _68k_defaulthandlerexp(void *userdata, const char *s, int len) {
98 M68kXML_Parser p = userdata;
99 call_68k_code(p->IExec, p->defaulthandlerexp, 3, p->handlerarg, s, len);
100}
101
102int _68k_extentrefhandler(XML_Parser parser, const char *context, const char *base,
103 const char *sysid, const char *pubid)
104{
105 M68kXML_Parser p = XML_GetUserData(parser);
106 void *arg = p->extenthandlerarg;
107 return (int)call_68k_code(p->IExec, p->extentrefhandler, 5, arg ? arg : p, context, base, sysid, pubid);
108}
109
110int _68k_unknownenchandler(void *enchandlerdata, const char *name, XML_Encoding *info) {
111 M68kXML_Parser p = enchandlerdata;
112 return (int)call_68k_code(p->IExec, p->unknownenchandler, 3, p->enchandlerarg, name, info);
113}
114
115void _68k_startnamespacehandler(void *userdata, const char *prefix, const char *uri) {
116 M68kXML_Parser p = userdata;
117 call_68k_code(p->IExec, p->startnamespacehandler, 3, p->handlerarg, prefix, uri);
118}
119
120void _68k_endnamespacehandler(void *userdata, const char *prefix) {
121 M68kXML_Parser p = userdata;
122 call_68k_code(p->IExec, p->endnamespacehandler, 2, p->handlerarg, prefix);
123}
124
125void _68k_xmldeclhandler(void *userdata, const char *version, const char *encoding, int standalone) {
126 M68kXML_Parser p = userdata;
127 call_68k_code(p->IExec, p->xmldeclhandler, 4, p->handlerarg, version, encoding, standalone);
128}
129
130void _68k_startdoctypehandler(void *userdata, const char *doctypename,
131 const char *sysid, const char *pubid, int has_internal_subset)
132{
133 M68kXML_Parser p = userdata;
134 call_68k_code(p->IExec, p->startdoctypehandler, 5, p->handlerarg, doctypename, sysid, pubid, has_internal_subset);
135}
136
137void _68k_enddoctypehandler(void *userdata) {
138 M68kXML_Parser p = userdata;
139 call_68k_code(p->IExec, p->enddoctypehandler, 1, p->handlerarg);
140}
141
142void _68k_elementdeclhandler(void *userdata, const char *name, XML_Content *model) {
143 M68kXML_Parser p = userdata;
144 call_68k_code(p->IExec, p->elementdeclhandler, 3, p->handlerarg, name, model);
145}
146
147void _68k_attlistdeclhandler(void *userdata, const char *elname, const char *attname,
148 const char *att_type, const char *dflt, int isrequired)
149{
150 M68kXML_Parser p = userdata;
151 call_68k_code(p->IExec, p->attlistdeclhandler, 6, p->handlerarg, elname, attname, att_type, dflt, isrequired);
152}
153
154void _68k_entitydeclhandler(void *userdata, const char *entityname, int is_param_entity,
155 const char *value, int value_length, const char *base, const char *sysid, const char *pubid,
156 const char *notationname)
157{
158 M68kXML_Parser p = userdata;
159 call_68k_code(p->IExec, p->entitydeclhandler, 9, p->handlerarg, entityname, is_param_entity,
160 value, value_length, base, sysid, pubid, notationname);
161}
162
163void _68k_unparseddeclhandler(void *userdata, const char *entityname, const char *base,
164 const char *sysid, const char *pubid, const char *notationname)
165{
166 M68kXML_Parser p = userdata;
167 call_68k_code(p->IExec, p->unparseddeclhandler, 6, p->handlerarg, entityname, base, sysid, pubid, notationname);
168}
169
170void _68k_notationdeclhandler(void *userdata, const char *notationname, const char *base,
171 const char *sysid, const char *pubid)
172{
173 M68kXML_Parser p = userdata;
174 call_68k_code(p->IExec, p->notationdeclhandler, 5, p->handlerarg, notationname, base, sysid, pubid);
175}
176
177int _68k_notstandalonehandler(void *userdata) {
178 M68kXML_Parser p = userdata;
179 return (int)call_68k_code(p->IExec, p->notstandalonehandler, 1, p->handlerarg);
180}
181
182void _68k_skippedentityhandler(void *userdata, const char *entityname, int is_param_entity) {
183 M68kXML_Parser p = userdata;
184 call_68k_code(p->IExec, p->skippedentityhandler, 3, p->handlerarg, entityname, is_param_entity);
185}