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>