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

📄 soapc.c

📁 linux下简单对象应用协议的开发库
💻 C
📖 第 1 页 / 共 3 页
字号:
/* soapC.c   Generated by gSOAP 2.3 from quote.h   Copyright (C) 2001-2003 Genivia inc.   All Rights Reserved.*/#include "soapH.h"#ifdef __cplusplusextern "C" {#endifSOAP_SOURCE_STAMP("@(#) soapC.c ver 2.3 2003-06-24 23:24:12 GMT")#ifndef WITH_NOGLOBALSOAP_FMAC1 void SOAP_FMAC2 soap_serializeheader(struct soap *soap){	soap_serialize_SOAP_ENV__Header(soap, soap->header);}SOAP_FMAC1 int SOAP_FMAC2 soap_putheader(struct soap *soap){	if (soap->header)	{	soap->part = SOAP_IN_HEADER;		soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL);		soap->part = SOAP_END_HEADER;	}	return SOAP_OK;}SOAP_FMAC1 int SOAP_FMAC2 soap_getheader(struct soap *soap){	soap->part = SOAP_IN_HEADER;	soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL);	soap->part = SOAP_END_HEADER;	return soap->header == NULL;}SOAP_FMAC1 void SOAP_FMAC2 soap_fault(struct soap *soap){	if (!soap->fault)	{	soap->fault = (struct SOAP_ENV__Fault*)soap_malloc(soap, sizeof(struct SOAP_ENV__Fault));		soap_default_SOAP_ENV__Fault(soap, soap->fault);	}	if (soap->version == 2 && !soap->fault->SOAP_ENV__Code)	{	soap->fault->SOAP_ENV__Code = (struct SOAP_ENV__Code*)soap_malloc(soap, sizeof(struct SOAP_ENV__Code));		soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code);	}}SOAP_FMAC1 void SOAP_FMAC2 soap_serializefault(struct soap *soap){	soap_serialize_SOAP_ENV__Fault(soap, soap->fault);}SOAP_FMAC1 int SOAP_FMAC2 soap_putfault(struct soap *soap){	return soap_out_SOAP_ENV__Fault(soap, "SOAP-ENV:Fault", 0, soap->fault, NULL);}SOAP_FMAC1 int SOAP_FMAC2 soap_getfault(struct soap *soap){	return (soap->fault = soap_in_SOAP_ENV__Fault(soap, "SOAP-ENV:Fault", NULL, NULL)) == NULL;}SOAP_FMAC1 const char ** SOAP_FMAC2 soap_faultcode(struct soap *soap){	soap_fault(soap);	if (soap->version == 2)		return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value;	return (const char**)&soap->fault->faultcode;}SOAP_FMAC1 const char ** SOAP_FMAC2 soap_faultstring(struct soap *soap){	soap_fault(soap);	if (soap->version == 2)		return (const char**)&soap->fault->SOAP_ENV__Reason;	return (const char**)&soap->fault->faultstring;}SOAP_FMAC1 const char ** SOAP_FMAC2 soap_faultdetail(struct soap *soap){	soap_fault(soap);	if (soap->version == 2)		return (const char**)&soap->fault->SOAP_ENV__Detail;	return (const char**)&soap->fault->detail;}#endifSOAP_FMAC1 int SOAP_FMAC2 soap_getindependent(struct soap *soap){	int t;	for (;;)		if (!soap_getelement(soap, &t))			if (soap->error || soap_ignore_element(soap))				break;	if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF)		soap->error = SOAP_OK;	return soap->error;}SOAP_FMAC1 void * SOAP_FMAC2 soap_getelement(struct soap *soap, int *type){	if (soap_peek_element(soap))		return NULL;	if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id)))		*type = soap_lookup_type(soap, soap->href);	switch (*type)	{	case SOAP_TYPE_byte:		return soap_in_byte(soap, NULL, NULL, "xsd:byte");	case SOAP_TYPE_int:		return soap_in_int(soap, NULL, NULL, "xsd:int");	case SOAP_TYPE_float:		return soap_in_float(soap, NULL, NULL, "xsd:float");	case SOAP_TYPE_ns__getQuote:		return soap_in_ns__getQuote(soap, NULL, NULL, "ns:getQuote");	case SOAP_TYPE_ns__getQuoteResponse:		return soap_in_ns__getQuoteResponse(soap, NULL, NULL, "ns:getQuoteResponse");	case SOAP_TYPE_PointerTofloat:		return soap_in_PointerTofloat(soap, NULL, NULL, "xsd:float");	case SOAP_TYPE__QName:	{	char **s;		s = soap_in__QName(soap, NULL, NULL, "QName");		return s ? *s : NULL;	}	case SOAP_TYPE_string:	{	char **s;		s = soap_in_string(soap, NULL, NULL, "xsd:string");		return s ? *s : NULL;	}	default:		if (!*soap->type)			return NULL;		if (!soap_match_tag(soap, soap->type, "xsd:byte"))		{	*type = SOAP_TYPE_byte;			return soap_in_byte(soap, NULL, NULL, NULL);		}		if (!soap_match_tag(soap, soap->type, "xsd:int"))		{	*type = SOAP_TYPE_int;			return soap_in_int(soap, NULL, NULL, NULL);		}		if (!soap_match_tag(soap, soap->type, "xsd:float"))		{	*type = SOAP_TYPE_float;			return soap_in_float(soap, NULL, NULL, NULL);		}		if (!soap_match_tag(soap, soap->type, "ns:getQuote"))		{	*type = SOAP_TYPE_ns__getQuote;			return soap_in_ns__getQuote(soap, NULL, NULL, NULL);		}		if (!soap_match_tag(soap, soap->type, "ns:getQuoteResponse"))		{	*type = SOAP_TYPE_ns__getQuoteResponse;			return soap_in_ns__getQuoteResponse(soap, NULL, NULL, NULL);		}		if (!soap_match_tag(soap, soap->type, "QName"))		{	char **s;			*type = SOAP_TYPE__QName;			s = soap_in__QName(soap, NULL, NULL, NULL);			return s ? *s : NULL;		}		if (!soap_match_tag(soap, soap->type, "xsd:string"))		{	char **s;			*type = SOAP_TYPE_string;			s = soap_in_string(soap, NULL, NULL, NULL);			return s ? *s : NULL;		}	return NULL;	}}SOAP_FMAC1 int SOAP_FMAC2 soap_ignore_element(struct soap *soap){	if (soap->mode & SOAP_XML_STRICT)		return SOAP_TAG_MISMATCH;	if (!soap_peek_element(soap))	{	int t;		if (soap->mustUnderstand && !soap->other)			return soap->error = SOAP_MUSTUNDERSTAND;		if (!*soap->id || !soap_getelement(soap, &t))		{	soap->peeked = 0;			DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unknown element '%s' (level=%u, %d)\n", soap->tag, soap->level, soap->body));			if (soap->fignore)				soap->error = soap->fignore(soap, soap->tag);			else				soap->error = SOAP_OK;			DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag));			if (!soap->error && soap->body)			{	soap->level++;				while (!soap_ignore_element(soap))					;				if (soap->error == SOAP_NO_TAG)					soap->error = soap_element_end_in(soap, NULL);			}		}	}	return soap->error;}SOAP_FMAC1 int SOAP_FMAC2 soap_putindependent(struct soap *soap){	int i;	struct soap_plist *pp;	if (soap->version == 1 && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH)))		for (i = 0; i < SOAP_PTRHASH; i++)			for (pp = soap->pht[i]; pp; pp = pp->next)				if ((soap->mode & SOAP_IO_LENGTH) ? pp->mark1 == 2 : pp->mark2 == 2)					if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type))						return soap->error;	return SOAP_OK;}SOAP_FMAC1 int SOAP_FMAC2 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type){	switch (type)	{	case SOAP_TYPE_byte:		return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte");	case SOAP_TYPE_int:		return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int");	case SOAP_TYPE_float:		return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float");	case SOAP_TYPE_ns__getQuote:		return soap_out_ns__getQuote(soap, tag, id, (const struct ns__getQuote *)ptr, "ns:getQuote");	case SOAP_TYPE_ns__getQuoteResponse:		return soap_out_ns__getQuoteResponse(soap, tag, id, (const struct ns__getQuoteResponse *)ptr, "ns:getQuoteResponse");	case SOAP_TYPE_PointerTofloat:		return soap_out_PointerTofloat(soap, tag, id, (float *const*)ptr, "xsd:float");	case SOAP_TYPE__QName:		return soap_out_string(soap, tag, id, (char**)&ptr, "QName");	case SOAP_TYPE_string:		return soap_out_string(soap, tag, id, (char**)&ptr, "xsd:string");	}	return SOAP_OK;}#ifndef WITH_LEANERSOAP_FMAC1 int SOAP_FMAC2 soap_getattachments(struct soap *soap){	if (!(soap->mode & SOAP_ENC_DIME))		return SOAP_OK;	while (soap->dime_flags & SOAP_DIME_CF)	{	if (soap_getdimehdr(soap))			return soap->error;		if (soap_move(soap, soap->dime_size))			return soap->error = SOAP_EOF;	}	if (soap_move(soap, ((soap->dime_size+3)&(~3))-soap_tell(soap)))		return soap->error = SOAP_EOF;	for (;;)	{	if (soap_getdime(soap) || !soap->dime_id)			break;		switch (soap_lookup_type(soap, soap->dime_id))		{		case SOAP_TYPE__QName:		{	char ** a;			a = (char **)soap_id_enter(soap, soap->dime_id, NULL, SOAP_TYPE__QName, sizeof(char *), 0);			if (a)				*a = soap->dime_ptr;			break;		}		case SOAP_TYPE_string:		{	char ** a;			a = (char **)soap_id_enter(soap, soap->dime_id, NULL, SOAP_TYPE_string, sizeof(char *), 0);			if (a)				*a = soap->dime_ptr;			break;		}		default:			soap->error = SOAP_DIME_ERROR;		}		if (soap->error)			break;	}	if (soap->error == SOAP_EOD)		soap->error = SOAP_OK;	return soap->error;}SOAP_FMAC1 int SOAP_FMAC2 soap_putattachments(struct soap *soap){	int i;	struct soap_plist *pp;	if (!(soap->mode & SOAP_ENC_DIME))		return SOAP_OK;	for (i = 0; i < SOAP_PTRHASH; i++)		for (pp = soap->pht[i]; pp; pp = pp->next)			if (pp->mark2 == 3)				switch (pp->type)				{				}			return SOAP_OK;}#endifSOAP_FMAC1 void SOAP_FMAC2 soap_default_byte(struct soap *soap, char *a){#ifdef SOAP_DEFAULT_byte	*a = SOAP_DEFAULT_byte;#else	*a = (char)0;#endif}SOAP_FMAC1 void SOAP_FMAC2 soap_serialize_byte(struct soap *soap, char const*a){	soap_reference(soap, a, SOAP_TYPE_byte);}SOAP_FMAC1 int SOAP_FMAC2 soap_put_byte(struct soap *soap, char *a, const char *tag, const char *type){	int i = soap_embed_element(soap, (void*)a, tag, SOAP_TYPE_byte);	if (i >= 0)		soap_out_byte(soap, tag, i, a, type);	return soap_putindependent(soap);}SOAP_FMAC1 int SOAP_FMAC2 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type){	return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_byte);}SOAP_FMAC1 char * SOAP_FMAC2 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type){	if ((p = soap_in_byte(soap, tag, p, type)))		soap_getindependent(soap);	return p;}SOAP_FMAC1 char * SOAP_FMAC2 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type){	return soap_inbyte(soap, tag, a, type, SOAP_TYPE_byte);}SOAP_FMAC1 void SOAP_FMAC2 soap_default_int(struct soap *soap, int *a){#ifdef SOAP_DEFAULT_int	*a = SOAP_DEFAULT_int;#else	*a = (int)0;#endif}SOAP_FMAC1 void SOAP_FMAC2 soap_serialize_int(struct soap *soap, int const*a){	soap_reference(soap, a, SOAP_TYPE_int);}SOAP_FMAC1 int SOAP_FMAC2 soap_put_int(struct soap *soap, int *a, const char *tag, const char *type){	int i = soap_embed_element(soap, (void*)a, tag, SOAP_TYPE_int);	if (i >= 0)		soap_out_int(soap, tag, i, a, type);	return soap_putindependent(soap);}SOAP_FMAC1 int SOAP_FMAC2 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type){	return soap_outint(soap, tag, id, a, type, SOAP_TYPE_int);}SOAP_FMAC1 int * SOAP_FMAC2 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type){	if ((p = soap_in_int(soap, tag, p, type)))		soap_getindependent(soap);	return p;}SOAP_FMAC1 int * SOAP_FMAC2 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type){	return soap_inint(soap, tag, a, type, SOAP_TYPE_int);}SOAP_FMAC1 void SOAP_FMAC2 soap_default_float(struct soap *soap, float *a){#ifdef SOAP_DEFAULT_float	*a = SOAP_DEFAULT_float;#else	*a = (float)0;#endif}SOAP_FMAC1 void SOAP_FMAC2 soap_serialize_float(struct soap *soap, float const*a){	soap_reference(soap, a, SOAP_TYPE_float);}SOAP_FMAC1 int SOAP_FMAC2 soap_put_float(struct soap *soap, float *a, const char *tag, const char *type){	int i = soap_embed_element(soap, (void*)a, tag, SOAP_TYPE_float);	if (i >= 0)		soap_out_float(soap, tag, i, a, type);	return soap_putindependent(soap);}SOAP_FMAC1 int SOAP_FMAC2 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type){	return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_float);}SOAP_FMAC1 float * SOAP_FMAC2 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type){	if ((p = soap_in_float(soap, tag, p, type)))		soap_getindependent(soap);	return p;}SOAP_FMAC1 float * SOAP_FMAC2 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type){	return soap_infloat(soap, tag, a, type, SOAP_TYPE_float);

⌨️ 快捷键说明

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