Beispiel #1
0
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_SOAP_ENV__Reason:
		return soap_in_SOAP_ENV__Reason(soap, NULL, NULL, "SOAP-ENV:Reason");
	case SOAP_TYPE_PointerToSOAP_ENV__Reason:
		return soap_in_PointerToSOAP_ENV__Reason(soap, NULL, NULL, "SOAP-ENV:Reason");
	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:
	{	const char *t = soap->type;
		if (!*t)
			t = soap->tag;
		if (!soap_match_tag(soap, t, "xsd:byte"))
		{	*type = SOAP_TYPE_byte;
			return soap_in_byte(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:int"))
		{	*type = SOAP_TYPE_int;
			return soap_in_int(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "SOAP-ENV:Reason"))
		{	*type = SOAP_TYPE_SOAP_ENV__Reason;
			return soap_in_SOAP_ENV__Reason(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "QName"))
		{	char **s;
			*type = SOAP_TYPE__QName;
			s = soap_in__QName(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
		if (!soap_match_tag(soap, t, "xsd:string"))
		{	char **s;
			*type = SOAP_TYPE_string;
			s = soap_in_string(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
	}
	}
	soap->error = SOAP_TAG_MISMATCH;
	return NULL;
}
Beispiel #2
0
SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type)
{	(void)type;
	if (soap_peek_element(soap))
		return NULL;
#ifndef WITH_NOIDREF
	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__QName:
	{	char **s;
		s = soap_in__QName(soap, NULL, NULL, "xsd: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:
#else
	*type = 0;
#endif
	{	const char *t = soap->type;
		if (!*t)
			t = soap->tag;
		if (!soap_match_tag(soap, t, "xsd:byte"))
		{	*type = SOAP_TYPE_byte;
			return soap_in_byte(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:int"))
		{	*type = SOAP_TYPE_int;
			return soap_in_int(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:QName"))
		{	char **s;
			*type = SOAP_TYPE__QName;
			s = soap_in__QName(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
		if (!soap_match_tag(soap, t, "xsd:string"))
		{	char **s;
			*type = SOAP_TYPE_string;
			s = soap_in_string(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
		t = soap->tag;
#ifndef WITH_NOIDREF
	}
#endif
	}
	soap->error = SOAP_TAG_MISMATCH;
	return NULL;
}
Beispiel #3
0
SOAP_FMAC1 int SOAP_FMAC2 soap_getattachments(struct soap *soap)
{
	if (!soap->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)&-4)-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_string:
		{	char ** a;
			a = (char **)soap_id_enter(soap, soap->dime_id, NULL, SOAP_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;
}
Beispiel #4
0
SOAP_FMAC1 int SOAP_FMAC2 soap_getindependent(struct soap *soap)
{
	for (;;)
	{	if (soap_peek_element(soap) || !*soap->id)
			break;
		switch (soap_lookup_type(soap, soap->id))
		{
		case SOAP_byte:
			soap_in_byte(soap, NULL, NULL, "");
			break;
		case SOAP_int:
			soap_in_int(soap, NULL, NULL, "");
			break;
		case SOAP_float:
			soap_in_float(soap, NULL, NULL, "");
			break;
		case SOAP_SOAP_ENV__Fault:
			soap_in_SOAP_ENV__Fault(soap, NULL, NULL, "");
			break;
		case SOAP_SOAP_ENV__Header:
			soap_in_SOAP_ENV__Header(soap, NULL, NULL, "");
			break;
		case SOAP_ns__getQuote:
			soap_in_ns__getQuote(soap, NULL, NULL, "ns:getQuote");
			break;
		case SOAP_ns__getQuoteResponse:
			soap_in_ns__getQuoteResponse(soap, NULL, NULL, "ns:getQuoteResponse");
			break;
		case SOAP_string:
			soap_in_string(soap, NULL, NULL, "");
			break;
		default:
			soap_in_ns__getQuote(soap, NULL, NULL, "ns:getQuote");
			if (soap->error == SOAP_TYPE_MISMATCH && soap->level == 2)
				soap_in_ns__getQuoteResponse(soap, NULL, NULL, "ns:getQuoteResponse");
			if (soap->error)
			{	soap->peeked = 1;
				soap_ignore_element(soap);
			}
		}
		if (soap->error)
			break;
	}
	if (soap->error == SOAP_NO_TAG)
		soap->error = SOAP_OK;
	return soap->error;
}
Beispiel #5
0
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_xsd__int:
		return soap_in_xsd__int(soap, NULL, NULL, "xsd:int");
	case SOAP_TYPE_int:
		return soap_in_int(soap, NULL, NULL, "xsd:int");
	case SOAP_TYPE_ws__setTrafficShapeCfg:
		return soap_in_ws__setTrafficShapeCfg(soap, NULL, NULL, "ws:setTrafficShapeCfg");
	case SOAP_TYPE_ws__setTrafficShapeCfgResponse:
		return soap_in_ws__setTrafficShapeCfgResponse(soap, NULL, NULL, "ws:setTrafficShapeCfgResponse");
	case SOAP_TYPE_ws__getTrafficShapeCfg:
		return soap_in_ws__getTrafficShapeCfg(soap, NULL, NULL, "ws:getTrafficShapeCfg");
	case SOAP_TYPE_ws__TrafficShapeCfgInfo:
		return soap_in_ws__TrafficShapeCfgInfo(soap, NULL, NULL, "ws:TrafficShapeCfgInfo");
	case SOAP_TYPE_TrafficShapeCfgInfo:
		return soap_in_TrafficShapeCfgInfo(soap, NULL, NULL, "TrafficShapeCfgInfo");
	case SOAP_TYPE_noop:
		return soap_in_noop(soap, NULL, NULL, "noop");
	case SOAP_TYPE_PointerTows__TrafficShapeCfgInfo:
		return soap_in_PointerTows__TrafficShapeCfgInfo(soap, NULL, NULL, "ws:TrafficShapeCfgInfo");
	case SOAP_TYPE_PointerToxsd__int:
		return soap_in_PointerToxsd__int(soap, NULL, NULL, "xsd:int");
	case SOAP_TYPE_PointerToint:
		return soap_in_PointerToint(soap, NULL, NULL, "xsd:int");
	case SOAP_TYPE_xsd__string:
	{	char **s;
		s = soap_in_xsd__string(soap, NULL, NULL, "xsd:string");
		return s ? *s : NULL;
	}
	case SOAP_TYPE_string:
	{	char **s;
		s = soap_in_string(soap, NULL, NULL, "xsd:string");
		return s ? *s : NULL;
	}
	default:
	{	const char *t = soap->type;
		if (!*t)
			t = soap->tag;
		if (!soap_match_tag(soap, t, "xsd:byte"))
		{	*type = SOAP_TYPE_byte;
			return soap_in_byte(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:int"))
		{	*type = SOAP_TYPE_xsd__int;
			return soap_in_xsd__int(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:int"))
		{	*type = SOAP_TYPE_int;
			return soap_in_int(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "ws:setTrafficShapeCfg"))
		{	*type = SOAP_TYPE_ws__setTrafficShapeCfg;
			return soap_in_ws__setTrafficShapeCfg(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "ws:setTrafficShapeCfgResponse"))
		{	*type = SOAP_TYPE_ws__setTrafficShapeCfgResponse;
			return soap_in_ws__setTrafficShapeCfgResponse(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "ws:getTrafficShapeCfg"))
		{	*type = SOAP_TYPE_ws__getTrafficShapeCfg;
			return soap_in_ws__getTrafficShapeCfg(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "ws:TrafficShapeCfgInfo"))
		{	*type = SOAP_TYPE_ws__TrafficShapeCfgInfo;
			return soap_in_ws__TrafficShapeCfgInfo(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "TrafficShapeCfgInfo"))
		{	*type = SOAP_TYPE_TrafficShapeCfgInfo;
			return soap_in_TrafficShapeCfgInfo(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "noop"))
		{	*type = SOAP_TYPE_noop;
			return soap_in_noop(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "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, t, "xsd:string"))
		{	char **s;
			*type = SOAP_TYPE_string;
			s = soap_in_string(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
		t = soap->tag;
		if (!soap_match_tag(soap, t, "xsd:QName"))
		{	char **s;
			*type = SOAP_TYPE__QName;
			s = soap_in__QName(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
	}
	}
	soap->error = SOAP_TAG_MISMATCH;
	return NULL;
}
Beispiel #6
0
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_time:
		return soap_in_time(soap, NULL, NULL, "xsd:dateTime");
	case SOAP_TYPE_ns__currentTime:
		return soap_in_ns__currentTime(soap, NULL, NULL, "ns:currentTime");
	case SOAP_TYPE_ns__currentTimeResponse:
		return soap_in_ns__currentTimeResponse(soap, NULL, NULL, "ns:currentTimeResponse");
	case SOAP_TYPE_PointerTotime:
		return soap_in_PointerTotime(soap, NULL, NULL, "xsd:dateTime");
	case SOAP_TYPE_string:
	{	char **s;
		s = soap_in_string(soap, NULL, NULL, "xsd:string");
		return s ? *s : NULL;
	}
	default:
	{	const char *t = soap->type;
		if (!*t)
			t = soap->tag;
		if (!soap_match_tag(soap, t, "xsd:byte"))
		{	*type = SOAP_TYPE_byte;
			return soap_in_byte(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:int"))
		{	*type = SOAP_TYPE_int;
			return soap_in_int(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:dateTime"))
		{	*type = SOAP_TYPE_time;
			return soap_in_time(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "ns:currentTime"))
		{	*type = SOAP_TYPE_ns__currentTime;
			return soap_in_ns__currentTime(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "ns:currentTimeResponse"))
		{	*type = SOAP_TYPE_ns__currentTimeResponse;
			return soap_in_ns__currentTimeResponse(soap, NULL, NULL, NULL);
		}
		if (!soap_match_tag(soap, t, "xsd:string"))
		{	char **s;
			*type = SOAP_TYPE_string;
			s = soap_in_string(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
		t = soap->tag;
		if (!soap_match_tag(soap, t, "xsd:QName"))
		{	char **s;
			*type = SOAP_TYPE__QName;
			s = soap_in__QName(soap, NULL, NULL, NULL);
			return s ? *s : NULL;
		}
	}
	}
	soap->error = SOAP_TAG_MISMATCH;
	return NULL;
}