Annotation of embedaddon/expat/amiga/expat_68k_handler_stubs.c, revision 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>