Annotation of embedaddon/expat/amiga/expat_68k_handler_stubs.c, revision 1.1.1.1
1.1 misho 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:
33: static 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:
57: void _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:
62: void _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:
67: void _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:
72: void _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:
77: void _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:
82: void _68k_startcdatahandler(void *userdata) {
83: M68kXML_Parser p = userdata;
84: call_68k_code(p->IExec, p->startcdatahandler, 1, p->handlerarg);
85: }
86:
87: void _68k_endcdatahandler(void *userdata) {
88: M68kXML_Parser p = userdata;
89: call_68k_code(p->IExec, p->endcdatahandler, 1, p->handlerarg);
90: }
91:
92: void _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:
97: void _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:
102: int _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:
110: int _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:
115: void _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:
120: void _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:
125: void _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:
130: void _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:
137: void _68k_enddoctypehandler(void *userdata) {
138: M68kXML_Parser p = userdata;
139: call_68k_code(p->IExec, p->enddoctypehandler, 1, p->handlerarg);
140: }
141:
142: void _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:
147: void _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:
154: void _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:
163: void _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:
170: void _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:
177: int _68k_notstandalonehandler(void *userdata) {
178: M68kXML_Parser p = userdata;
179: return (int)call_68k_code(p->IExec, p->notstandalonehandler, 1, p->handlerarg);
180: }
181:
182: void _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: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>