⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmlsax2setdocumentlocator_chdl.c

📁 图片显示,电脑光于望技术湖连望键往,网络
💻 C
字号:
#include <libxml/SAX2.h>
#include <ch.h>

static ChInterp_t interp;
static xmlChar * getPublicId_chdl_funarg(void *ctx);
static void * getPublicId_chdl_funptr;

static xmlChar * getSystemId_chdl_funarg(void *ctx);
static void * getSystemId_chdl_funptr;

static int getLineNumber_chdl_funarg(void *ctx);
static void * getLineNumber_chdl_funptr;

static int getColumnNumber_chdl_funarg(void *ctx);
static void * getColumnNumber_chdl_funptr;

EXPORTCH void xmlSAX2SetDocumentLocator_chdl(void *varg) {
    va_list ap;
    void *ctx;
    xmlSAXLocatorPtr loc;
	xmlSAXLocator loc_tmp;
	

    Ch_VaStart(interp, ap, varg);
    ctx = Ch_VaArg(interp, ap, void *);
    loc = Ch_VaArg(interp, ap, xmlSAXLocatorPtr);
    if( loc != NULL ){
      loc_tmp = *loc;
      if(loc->getPublicId){
         getPublicId_chdl_funptr = (void *)loc->getPublicId;
         loc_tmp.getPublicId = getPublicId_chdl_funarg;
      }else{
         loc_tmp.getPublicId = NULL;
	  }

      if(loc->getSystemId){
         getSystemId_chdl_funptr = (void *)loc->getSystemId;
         loc_tmp.getSystemId = getSystemId_chdl_funarg;
      }else{
         loc_tmp.getSystemId = NULL;
	  }
	  
      if(loc->getLineNumber){
         getLineNumber_chdl_funptr = (void *)loc->getLineNumber;
         loc_tmp.getLineNumber = getLineNumber_chdl_funarg;
      }else{
         loc_tmp.getLineNumber = NULL;
	  }

      if(loc->getColumnNumber){
         getColumnNumber_chdl_funptr = (void *)loc->getColumnNumber;
         loc_tmp.getColumnNumber = getColumnNumber_chdl_funarg;
      }else{
         loc_tmp.getColumnNumber = NULL;
	  }

	}
    xmlSAX2SetDocumentLocator(ctx, &loc_tmp);
    Ch_VaEnd(interp, ap);
}


static xmlChar * getPublicId_chdl_funarg(void *ctx){
    xmlChar *retval;
    Ch_CallFuncByAddr(interp, getPublicId_chdl_funptr, &retval, ctx);
    return retval;
}

static xmlChar * getSystemId_chdl_funarg(void *ctx){
    xmlChar *retval;
    Ch_CallFuncByAddr(interp, getSystemId_chdl_funptr, &retval, ctx);
    return retval;

}

static int getLineNumber_chdl_funarg(void *ctx){
    int retval;
    Ch_CallFuncByAddr(interp, getLineNumber_chdl_funptr, &retval, ctx);
    return retval;

}

static int getColumnNumber_chdl_funarg(void *ctx){
    int retval;
    Ch_CallFuncByAddr(interp, getLineNumber_chdl_funptr, &retval, ctx);
    return retval;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -