📄 soapc.c
字号:
/* soapC.c Generated by gSOAP 2.3 rev 4 from dsmp.h Copyright (C) 2001-2003 Genivia inc. All Rights Reserved.*/#include "soapH.h"#ifdef __cplusplusextern "C" {#endifSOAP_BEGIN_NAMESPACE(soap)SOAP_SOURCE_STAMP("@(#) soapC.c ver 2.3 rev 4 2003-09-18 05:52:45 GMT")#ifndef WITH_NOGLOBALSOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap){ soap_serialize_SOAP_ENV__Header(soap, soap->header);}SOAP_FMAC3 int SOAP_FMAC4 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_FMAC3 int SOAP_FMAC4 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_FMAC3 void SOAP_FMAC4 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_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap){ soap_serialize_SOAP_ENV__Fault(soap, soap->fault);}SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap){ return soap_out_SOAP_ENV__Fault(soap, "SOAP-ENV:Fault", 0, soap->fault, NULL);}SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap){ return (soap->fault = soap_in_SOAP_ENV__Fault(soap, "SOAP-ENV:Fault", NULL, NULL)) == NULL;}SOAP_FMAC3 const char ** SOAP_FMAC4 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_FMAC3 const char ** SOAP_FMAC4 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_FMAC3 const char ** SOAP_FMAC4 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_FMAC3 int SOAP_FMAC4 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_FMAC3 void * SOAP_FMAC4 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_unsignedByte: return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); case SOAP_TYPE_unsignedInt: return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); case SOAP_TYPE_dsmp__SyncOrderRelationReq: return soap_in_dsmp__SyncOrderRelationReq(soap, NULL, NULL, "dsmp:SyncOrderRelationReq"); case SOAP_TYPE_dsmp__address_info: return soap_in_dsmp__address_info(soap, NULL, NULL, "dsmp:address-info"); case SOAP_TYPE_dsmp__user_id: return soap_in_dsmp__user_id(soap, NULL, NULL, "dsmp:user-id"); case SOAP_TYPE_dsmp__SyncOrderRelationResp: return soap_in_dsmp__SyncOrderRelationResp(soap, NULL, NULL, "dsmp:SyncOrderRelationResp"); case SOAP_TYPE_xsd__base64Binary: return soap_in_xsd__base64Binary(soap, NULL, NULL, "xsd:base64Binary"); case SOAP_TYPE_PointerTodsmp__SyncOrderRelationResp: return soap_in_PointerTodsmp__SyncOrderRelationResp(soap, NULL, NULL, "dsmp:SyncOrderRelationResp"); case SOAP_TYPE_PointerTodsmp__SyncOrderRelationReq: return soap_in_PointerTodsmp__SyncOrderRelationReq(soap, NULL, NULL, "dsmp:SyncOrderRelationReq"); case SOAP_TYPE_PointerTodsmp__user_id: return soap_in_PointerTodsmp__user_id(soap, NULL, NULL, "dsmp:user-id"); case SOAP_TYPE_PointerTodsmp__address_info: return soap_in_PointerTodsmp__address_info(soap, NULL, NULL, "dsmp:address-info"); case SOAP_TYPE_PointerToxsd__base64Binary: return soap_in_PointerToxsd__base64Binary(soap, NULL, NULL, "xsd:base64Binary"); case SOAP_TYPE_dsmp__TransactionID: { char **s; s = soap_in_dsmp__TransactionID(soap, NULL, NULL, "dsmp:TransactionID"); return s ? *s : NULL; } case SOAP_TYPE_PointerToxsd__string: return soap_in_PointerToxsd__string(soap, NULL, NULL, "xsd:string"); case SOAP_TYPE_xsd__integer: { char **s; s = soap_in_xsd__integer(soap, NULL, NULL, "xsd:integer"); return s ? *s : NULL; } case SOAP_TYPE_PointerTounsignedByte: return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); case SOAP_TYPE_xsd__string: { char **s; s = soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); return s ? *s : NULL; } 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:unsignedByte")) { *type = SOAP_TYPE_unsignedByte; return soap_in_unsignedByte(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "xsd:unsignedInt")) { *type = SOAP_TYPE_unsignedInt; return soap_in_unsignedInt(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "dsmp:SyncOrderRelationReq")) { *type = SOAP_TYPE_dsmp__SyncOrderRelationReq; return soap_in_dsmp__SyncOrderRelationReq(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "dsmp:address-info")) { *type = SOAP_TYPE_dsmp__address_info; return soap_in_dsmp__address_info(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "dsmp:user-id")) { *type = SOAP_TYPE_dsmp__user_id; return soap_in_dsmp__user_id(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "dsmp:SyncOrderRelationResp")) { *type = SOAP_TYPE_dsmp__SyncOrderRelationResp; return soap_in_dsmp__SyncOrderRelationResp(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "xsd:base64Binary")) { *type = SOAP_TYPE_xsd__base64Binary; return soap_in_xsd__base64Binary(soap, NULL, NULL, NULL); } if (!soap_match_tag(soap, soap->type, "dsmp:TransactionID")) { char **s; *type = SOAP_TYPE_dsmp__TransactionID; s = soap_in_dsmp__TransactionID(soap, NULL, NULL, NULL); return s ? *s : NULL; } if (!soap_match_tag(soap, soap->type, "xsd:integer")) { char **s; *type = SOAP_TYPE_xsd__integer; s = soap_in_xsd__integer(soap, NULL, NULL, NULL); return s ? *s : NULL; } if (!soap_match_tag(soap, soap->type, "xsd:string")) { char **s; *type = SOAP_TYPE_xsd__string; s = soap_in_xsd__string(soap, NULL, NULL, NULL); return s ? *s : 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_FMAC3 int SOAP_FMAC4 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_FMAC3 int SOAP_FMAC4 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_FMAC3 int SOAP_FMAC4 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_unsignedByte: return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); case SOAP_TYPE_unsignedInt: return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); case SOAP_TYPE_dsmp__SyncOrderRelationReq: return soap_out_dsmp__SyncOrderRelationReq(soap, tag, id, (const struct dsmp__SyncOrderRelationReq *)ptr, "dsmp:SyncOrderRelationReq"); case SOAP_TYPE_dsmp__address_info: return soap_out_dsmp__address_info(soap, tag, id, (const struct dsmp__address_info *)ptr, "dsmp:address-info"); case SOAP_TYPE_dsmp__user_id: return soap_out_dsmp__user_id(soap, tag, id, (const struct dsmp__user_id *)ptr, "dsmp:user-id"); case SOAP_TYPE_dsmp__SyncOrderRelationResp: return soap_out_dsmp__SyncOrderRelationResp(soap, tag, id, (const struct dsmp__SyncOrderRelationResp *)ptr, "dsmp:SyncOrderRelationResp"); case SOAP_TYPE_xsd__base64Binary: return soap_out_xsd__base64Binary(soap, tag, id, (const struct xsd__base64Binary *)ptr, "xsd:base64Binary"); case SOAP_TYPE_PointerTodsmp__SyncOrderRelationResp: return soap_out_PointerTodsmp__SyncOrderRelationResp(soap, tag, id, (struct dsmp__SyncOrderRelationResp *const*)ptr, "dsmp:SyncOrderRelationResp"); case SOAP_TYPE_PointerTodsmp__SyncOrderRelationReq: return soap_out_PointerTodsmp__SyncOrderRelationReq(soap, tag, id, (struct dsmp__SyncOrderRelationReq *const*)ptr, "dsmp:SyncOrderRelationReq"); case SOAP_TYPE_PointerTodsmp__user_id: return soap_out_PointerTodsmp__user_id(soap, tag, id, (struct dsmp__user_id *const*)ptr, "dsmp:user-id"); case SOAP_TYPE_PointerTodsmp__address_info: return soap_out_PointerTodsmp__address_info(soap, tag, id, (struct dsmp__address_info *const*)ptr, "dsmp:address-info"); case SOAP_TYPE_PointerToxsd__base64Binary: return soap_out_PointerToxsd__base64Binary(soap, tag, id, (struct xsd__base64Binary *const*)ptr, "xsd:base64Binary"); case SOAP_TYPE_dsmp__TransactionID: return soap_out_string(soap, tag, id, (char**)&ptr, "dsmp:TransactionID"); case SOAP_TYPE_PointerToxsd__string: return soap_out_PointerToxsd__string(soap, tag, id, (char **const*)ptr, "xsd:string"); case SOAP_TYPE_xsd__integer: return soap_out_string(soap, tag, id, (char**)&ptr, "xsd:integer"); case SOAP_TYPE_PointerTounsignedByte: return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); case SOAP_TYPE_xsd__string: return soap_out_string(soap, tag, id, (char**)&ptr, "xsd:string"); 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_FMAC3 int SOAP_FMAC4 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_xsd__base64Binary: { struct xsd__base64Binary * a; a = (struct xsd__base64Binary *)soap_id_enter(soap, soap->dime_id, NULL, SOAP_TYPE_xsd__base64Binary, sizeof(struct xsd__base64Binary), 0); if (a) { a->__ptr = (unsigned char*)soap->dime_ptr; a->__size = soap->dime_size;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -