You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by su...@apache.org on 2004/01/28 11:15:54 UTC

cvs commit: ws-axis/c/src/client/samples/interoptests/cbase InteropBase.wsdl InteropBaseClient.c SOAPStruct_Array.h InteropTestPortType.c InteropTestPortType.h SOAPStruct.c SOAPStruct.h ArrayOfSOAPStruct.h ArrayOffloat.h ArrayOfint.h ArrayOfstring.h

susantha    2004/01/28 02:15:54

  Modified:    c/src/client/samples/interoptests/base InteropBase.wsdl
               c/src/client/samples/interoptests/cbase
                        InteropTestPortType.c InteropTestPortType.h
                        SOAPStruct.c SOAPStruct.h
  Added:       c/src/client/samples/interoptests/cbase InteropBase.wsdl
                        InteropBaseClient.c SOAPStruct_Array.h
  Removed:     c/src/client/samples/interoptests/cbase ArrayOfSOAPStruct.h
                        ArrayOffloat.h ArrayOfint.h ArrayOfstring.h
  Log:
  Adding C client sample for InteropBase test
  
  Revision  Changes    Path
  1.2       +14 -14    ws-axis/c/src/client/samples/interoptests/base/InteropBase.wsdl
  
  Index: InteropBase.wsdl
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/samples/interoptests/base/InteropBase.wsdl,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InteropBase.wsdl	21 Oct 2003 15:06:37 -0000	1.1
  +++ InteropBase.wsdl	28 Jan 2004 10:15:50 -0000	1.2
  @@ -185,7 +185,7 @@
   	<binding name="InteropTestSoapBinding" type="tns:InteropTestPortType">
   		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
   		<operation name="echoString">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoString"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -194,7 +194,7 @@
   			</output>
   		</operation>
   		<operation name="echoStringArray">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoStringArray"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -203,7 +203,7 @@
   			</output>
   		</operation>
   		<operation name="echoInteger">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoInteger"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -212,7 +212,7 @@
   			</output>
   		</operation>
   		<operation name="echoIntegerArray">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoIntegerArray"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -221,7 +221,7 @@
   			</output>
   		</operation>
   		<operation name="echoFloat">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoFloat"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -230,7 +230,7 @@
   			</output>
   		</operation>
   		<operation name="echoFloatArray">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoFloatArray"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -239,7 +239,7 @@
   			</output>
   		</operation>
   		<operation name="echoStruct">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoStruct"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -248,7 +248,7 @@
   			</output>
   		</operation>
   		<operation name="echoStructArray">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoStructArray"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -257,7 +257,7 @@
   			</output>
   		</operation>
   		<operation name="echoVoid">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoVoid"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -266,7 +266,7 @@
   			</output>
   		</operation>
   		<operation name="echoBase64">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoBase64"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -275,7 +275,7 @@
   			</output>
   		</operation>
   		<operation name="echoDate">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoDate"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -284,7 +284,7 @@
   			</output>
   		</operation>
   		<operation name="echoHexBinary">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoHexBinary"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -293,7 +293,7 @@
   			</output>
   		</operation>
   		<operation name="echoDecimal">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoDecimal"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  @@ -302,7 +302,7 @@
   			</output>
   		</operation>
   		<operation name="echoBoolean">
  -			<soap:operation soapAction="http://soapinterop.org/"/>
  +			<soap:operation soapAction="InteropBase#echoBoolean"/>
   			<input>
   				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
   			</input>
  
  
  
  1.2       +174 -159  ws-axis/c/src/client/samples/interoptests/cbase/InteropTestPortType.c
  
  Index: InteropTestPortType.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/samples/interoptests/cbase/InteropTestPortType.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InteropTestPortType.c	12 Jan 2004 12:39:53 -0000	1.1
  +++ InteropTestPortType.c	28 Jan 2004 10:15:51 -0000	1.2
  @@ -7,7 +7,7 @@
   #include "InteropTestPortType.h"
   
   extern int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ);
  -extern void* Axis_Create_SOAPStruct(bool bArray, int nSize);
  +extern void* Axis_Create_SOAPStruct(SOAPStruct *Obj, bool bArray, int nSize);
   extern void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray, int nSize);
   extern int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray);
   extern int Axis_GetSize_SOAPStruct();
  @@ -18,25 +18,26 @@
   /*
    * This method wrap the service methodechoString
    */
  -char* echoString(char* Value0)
  +xsd__string echoString(xsd__string Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	char* Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__string Ret;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoString");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoString", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputString", XSD_STRING);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_STRING);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetString(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStringResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsString(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -46,27 +47,28 @@
   /*
    * This method wrap the service methodechoStringArray
    */
  -ArrayOfstring echoStringArray(ArrayOfstring Value0)
  +xsd__string_Array echoStringArray(xsd__string_Array Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	ArrayOfstring RetArray = {NULL, 0};
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__string_Array RetArray = {NULL, 0};
  +	Axis_Array array;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return RetArray;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return RetArray;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoStringArray");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoStringArray", "http://soapinterop.org/");
   	pCall->AddBasicArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), XSD_STRING, "inputStringArray");
  -	pCall->SetBasicArrayReturnType(g_pInteropTestPortType, (Axis_Array*)(&RetArray), XSD_STRING);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS != nStatus)
  -	{
  -		free(RetArray.m_Array);
  -		RetArray.m_Array = NULL;
  -		RetArray.m_Size = 0;
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	{
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStringArrayResponse", ""))
  +		{
  +			array = pCall->GetBasicArray(g_pInteropTestPortType, XSD_STRING, 0, 0);
  +			memcpy(&RetArray, &array, sizeof(Axis_Array));
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return RetArray;
  @@ -79,22 +81,23 @@
   int echoInteger(int Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  +	CallFunctions* pCall;
   	int Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoInteger");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoInteger", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputInteger", XSD_INT);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_INT);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetInt(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoIntegerResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsInt(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -104,27 +107,28 @@
   /*
    * This method wrap the service methodechoIntegerArray
    */
  -ArrayOfint echoIntegerArray(ArrayOfint Value0)
  +xsd__int_Array echoIntegerArray(xsd__int_Array Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	ArrayOfint RetArray = {NULL, 0};
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__int_Array RetArray = {NULL, 0};
  +	Axis_Array array;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return RetArray;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return RetArray;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoIntegerArray");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoIntegerArray", "http://soapinterop.org/");
   	pCall->AddBasicArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), XSD_INT, "inputIntegerArray");
  -	pCall->SetBasicArrayReturnType(g_pInteropTestPortType, (Axis_Array*)(&RetArray), XSD_INT);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS != nStatus)
  -	{
  -		free(RetArray.m_Array);
  -		RetArray.m_Array = NULL;
  -		RetArray.m_Size = 0;
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	{
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoIntegerArrayResponse", ""))
  +		{
  +			array = pCall->GetBasicArray(g_pInteropTestPortType, XSD_INT, 0, 0);
  +			memcpy(&RetArray, &array, sizeof(Axis_Array));
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return RetArray;
  @@ -137,22 +141,23 @@
   float echoFloat(float Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  +	CallFunctions* pCall;
   	float Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoFloat");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoFloat", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputFloat", XSD_FLOAT);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_FLOAT);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetFloat(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoFloatResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsFloat(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -162,27 +167,28 @@
   /*
    * This method wrap the service methodechoFloatArray
    */
  -ArrayOffloat echoFloatArray(ArrayOffloat Value0)
  +xsd__float_Array echoFloatArray(xsd__float_Array Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	ArrayOffloat RetArray = {NULL, 0};
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__float_Array RetArray = {NULL, 0};
  +	Axis_Array array;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return RetArray;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return RetArray;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoFloatArray");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoFloatArray", "http://soapinterop.org/");
   	pCall->AddBasicArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), XSD_FLOAT, "inputFloatArray");
  -	pCall->SetBasicArrayReturnType(g_pInteropTestPortType, (Axis_Array*)(&RetArray), XSD_FLOAT);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS != nStatus)
  -	{
  -		free(RetArray.m_Array);
  -		RetArray.m_Array = NULL;
  -		RetArray.m_Size = 0;
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	{
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoFloatArrayResponse", ""))
  +		{
  +			array = pCall->GetBasicArray(g_pInteropTestPortType, XSD_FLOAT, 0, 0);
  +			memcpy(&RetArray, &array, sizeof(Axis_Array));
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return RetArray;
  @@ -195,22 +201,23 @@
   SOAPStruct* echoStruct(SOAPStruct* Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  +	CallFunctions* pCall;
   	SOAPStruct* pReturn = NULL;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return pReturn;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return pReturn;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return pReturn;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoStruct");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoStruct", "http://soapinterop.org/");
  -	pCall->AddCmplxParameter(g_pInteropTestPortType, Value0, (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, "inputStruct");
  -	pCall->SetCmplxReturnType(g_pInteropTestPortType, (void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	pCall->AddCmplxParameter(g_pInteropTestPortType, Value0, (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, "inputStruct", 0);
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		pCall->GetCmplxResult(g_pInteropTestPortType, (void**)&pReturn);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStructResponse", ""))
  +		{
  +			pReturn = (SOAPStruct*)pCall->GetCmplxObject(g_pInteropTestPortType, (void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return pReturn;
  @@ -220,27 +227,28 @@
   /*
    * This method wrap the service methodechoStructArray
    */
  -ArrayOfSOAPStruct echoStructArray(ArrayOfSOAPStruct Value0)
  +SOAPStruct_Array echoStructArray(SOAPStruct_Array Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	ArrayOfSOAPStruct RetArray = {NULL, 0};
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	SOAPStruct_Array RetArray = {NULL, 0};
  +	Axis_Array array;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return RetArray;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return RetArray;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return RetArray;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoStructArray");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoStructArray", "http://soapinterop.org/");
  -	pCall->AddCmplxArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct, "inputStructArray");
  -	pCall->SetCmplxArrayReturnType(g_pInteropTestPortType, (Axis_Array*)(&RetArray), (void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS != nStatus)
  -	{
  -		free(RetArray.m_Array);
  -		RetArray.m_Array = NULL;
  -		RetArray.m_Size = 0;
  +	pCall->AddCmplxArrayParameter(g_pInteropTestPortType, (Axis_Array*)(&Value0), (void*)Axis_Serialize_SOAPStruct, (void*)Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct);
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
  +	{
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoStructArrayResponse", ""))
  +		{
  +			array = pCall->GetCmplxArray(g_pInteropTestPortType, (void*) Axis_DeSerialize_SOAPStruct, (void*) Axis_Create_SOAPStruct, (void*) Axis_Delete_SOAPStruct, (void*) Axis_GetSize_SOAPStruct, 0, 0);
  +			memcpy(&RetArray, &array, sizeof(Axis_Array));
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return RetArray;
  @@ -253,18 +261,20 @@
   void echoVoid()
   {
   	int nStatus;
  -	CallX* pCall;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return 	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return ;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return ;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoVoid");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoVoid", "http://soapinterop.org/");
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS != nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		//What to do ? . Throw an exception ??? 
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoVoidResponse", ""))
  +		{
  +			/*not successful*/
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   }
  @@ -273,25 +283,26 @@
   /*
    * This method wrap the service methodechoBase64
    */
  -Axis_Base64Binary echoBase64(Axis_Base64Binary Value0)
  +xsd__base64Binary echoBase64(xsd__base64Binary Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	Axis_Base64Binary Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__base64Binary Ret;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
   	/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoBase64");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoBase64", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputBase64", XSD_BASE64BINARY);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_BASE64BINARY);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetBase64String(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoBase64Response", ""))
  +		{
  +			Ret = pCall->GetElementAsBase64Binary(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -301,25 +312,26 @@
   /*
    * This method wrap the service methodechoDate
    */
  -Axis_DateTime echoDate(Axis_DateTime Value0)
  +xsd__dateTime echoDate(xsd__dateTime Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	Axis_DateTime Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__dateTime Ret;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoDate");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoDate", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputDate", XSD_DATETIME);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_DATETIME);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetDateTime(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoDateResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsDateTime(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -329,25 +341,26 @@
   /*
    * This method wrap the service methodechoHexBinary
    */
  -Axis_HexBinary echoHexBinary(Axis_HexBinary Value0)
  +xsd__hexBinary echoHexBinary(xsd__hexBinary Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	Axis_HexBinary Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__hexBinary Ret;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoHexBinary");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoHexBinary", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputHexBinary", XSD_HEXBINARY);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_HEXBINARY);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetHexString(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoHexBinaryResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsHexBinary(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -357,25 +370,26 @@
   /*
    * This method wrap the service methodechoDecimal
    */
  -Axis_Decimal echoDecimal(Axis_Decimal Value0)
  +xsd__decimal echoDecimal(xsd__decimal Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	Axis_Decimal Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__decimal Ret;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoDecimal");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoDecimal", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputDecimal", XSD_DECIMAL);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_DECIMAL);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetDecimal(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoDecimalResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsDecimal(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  @@ -385,25 +399,26 @@
   /*
    * This method wrap the service methodechoBoolean
    */
  -Axis_Boolean echoBoolean(Axis_Boolean Value0)
  +xsd__boolean echoBoolean(xsd__boolean Value0)
   {
   	int nStatus;
  -	CallX* pCall;
  -	Axis_Boolean Ret;
  -	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost/axis/InteropBase");
  +	CallFunctions* pCall;
  +	xsd__boolean Ret;
  +	if (!g_pInteropTestPortType) g_pInteropTestPortType = GetCallObject(APTHTTP, "http://localhost:5555/axis/InteropBase");
   	if (!g_pInteropTestPortType || !g_pInteropTestPortType->__vfptr) return Ret;
   	pCall = g_pInteropTestPortType->__vfptr;
  -/* Following will establish the connections with the server too */
  -	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType)) return Ret;
  -	pCall->SetHeader(g_pInteropTestPortType, "SOAPAction", "InteropBase");
  +	/* Following will establish the connections with the server too */
  +	if (AXIS_SUCCESS != pCall->Initialize(g_pInteropTestPortType, RPC_ENCODED)) return Ret;
  +	pCall->SetTransportProperty(g_pInteropTestPortType,SOAPACTION_HEADER , "InteropBase#echoBoolean");
   	pCall->SetSOAPVersion(g_pInteropTestPortType, SOAP_VER_1_1);
   	pCall->SetOperation(g_pInteropTestPortType, "echoBoolean", "http://soapinterop.org/");
   	pCall->AddParameter(g_pInteropTestPortType, (void*)&Value0, "inputBoolean", XSD_BOOLEAN);
  -	pCall->SetReturnType(g_pInteropTestPortType, XSD_BOOLEAN);
  -	nStatus = pCall->Invoke(g_pInteropTestPortType);
  -	if (AXIS_SUCCESS == nStatus)
  +	if (AXIS_SUCCESS == pCall->Invoke(g_pInteropTestPortType))
   	{
  -		Ret = pCall->GetInt(g_pInteropTestPortType);
  +		if(AXIS_SUCCESS == pCall->CheckMessage(g_pInteropTestPortType, "echoBooleanResponse", ""))
  +		{
  +			Ret = pCall->GetElementAsBoolean(g_pInteropTestPortType, 0, 0);
  +		}
   	}
   	pCall->UnInitialize(g_pInteropTestPortType);
   	return Ret;
  
  
  
  1.2       +11 -14    ws-axis/c/src/client/samples/interoptests/cbase/InteropTestPortType.h
  
  Index: InteropTestPortType.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/samples/interoptests/cbase/InteropTestPortType.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- InteropTestPortType.h	12 Jan 2004 12:39:53 -0000	1.1
  +++ InteropTestPortType.h	28 Jan 2004 10:15:51 -0000	1.2
  @@ -8,28 +8,25 @@
   
   #include <axis/client/Call.h>
   #include <axis/common/AxisWrapperAPI.h>
  +#include "SOAPStruct_Array.h"
   #include "SOAPStruct.h"
  -#include "ArrayOffloat.h"
  -#include "ArrayOfSOAPStruct.h"
  -#include "ArrayOfint.h"
  -#include "ArrayOfstring.h"
   
   
   Call* g_pInteropTestPortType;
  -extern char* echoString(char* Value0);
  -extern ArrayOfstring echoStringArray(ArrayOfstring Value0);
  +extern xsd__string echoString(xsd__string Value0);
  +extern xsd__string_Array echoStringArray(xsd__string_Array Value0);
   extern int echoInteger(int Value0);
  -extern ArrayOfint echoIntegerArray(ArrayOfint Value0);
  +extern xsd__int_Array echoIntegerArray(xsd__int_Array Value0);
   extern float echoFloat(float Value0);
  -extern ArrayOffloat echoFloatArray(ArrayOffloat Value0);
  +extern xsd__float_Array echoFloatArray(xsd__float_Array Value0);
   extern SOAPStruct* echoStruct(SOAPStruct* Value0);
  -extern ArrayOfSOAPStruct echoStructArray(ArrayOfSOAPStruct Value0);
  +extern SOAPStruct_Array echoStructArray(SOAPStruct_Array Value0);
   extern void echoVoid();
  -extern Axis_Base64Binary echoBase64(Axis_Base64Binary Value0);
  -extern Axis_DateTime echoDate(Axis_DateTime Value0);
  -extern Axis_HexBinary echoHexBinary(Axis_HexBinary Value0);
  -extern Axis_Decimal echoDecimal(Axis_Decimal Value0);
  -extern Axis_Boolean echoBoolean(Axis_Boolean Value0);
  +extern xsd__base64Binary echoBase64(xsd__base64Binary Value0);
  +extern xsd__dateTime echoDate(xsd__dateTime Value0);
  +extern xsd__hexBinary echoHexBinary(xsd__hexBinary Value0);
  +extern xsd__decimal echoDecimal(xsd__decimal Value0);
  +extern xsd__boolean echoBoolean(xsd__boolean Value0);
   
   
   #endif // !defined(__INTEROPTESTPORTTYPE_H__INCLUDED_)
  
  
  
  1.2       +34 -20    ws-axis/c/src/client/samples/interoptests/cbase/SOAPStruct.c
  
  Index: SOAPStruct.c
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/samples/interoptests/cbase/SOAPStruct.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SOAPStruct.c	12 Jan 2004 12:39:53 -0000	1.1
  +++ SOAPStruct.c	28 Jan 2004 10:15:51 -0000	1.2
  @@ -13,25 +13,23 @@
    */
   int Axis_Serialize_SOAPStruct(SOAPStruct* param, IWrapperSoapSerializer* pSZ, bool bArray)
   {
  -	IWrapperSoapSerializerX* pSZX = pSZ->__vfptr;
  +	IWrapperSoapSerializerFunctions* pSZX = pSZ->__vfptr;
   	const AxisChar* sPrefix;
   	if (bArray)
   	{
  -		pSZX->Serialize(pSZ, "<", Axis_TypeName_SOAPStruct, ">", NULL);
  +		pSZX->SerializeStartElementOfType(pSZ, Axis_TypeName_SOAPStruct, 0, 0);
   	}
   	else
   	{
  -		sPrefix = pSZX->getNewNamespacePrefix(pSZ);
  -		pSZX->Serialize(pSZ, "<", Axis_TypeName_SOAPStruct, " xsi:type=\"", sPrefix, ":",
  -			Axis_TypeName_SOAPStruct, "\" xmlns:", sPrefix, "=\"",
  -			Axis_URI_SOAPStruct, "\">", NULL);
  +		sPrefix = pSZX->GetNamespacePrefix(pSZ, Axis_URI_SOAPStruct);
  +		pSZX->SerializeStartElementOfType(pSZ, Axis_TypeName_SOAPStruct, Axis_URI_SOAPStruct, sPrefix);
   	}
   
  -	pSZX->SerializeBasicType(pSZ, "varString", (void*)&(param->varString), XSD_STRING);
  -	pSZX->SerializeBasicType(pSZ, "varInt", (void*)&(param->varInt), XSD_INT);
  -	pSZX->SerializeBasicType(pSZ, "varFloat", (void*)&(param->varFloat), XSD_FLOAT);
  +	pSZX->SerializeAsElement(pSZ, "varString", (void*)&(param->varString), XSD_STRING);
  +	pSZX->SerializeAsElement(pSZ, "varInt", (void*)&(param->varInt), XSD_INT);
  +	pSZX->SerializeAsElement(pSZ, "varFloat", (void*)&(param->varFloat), XSD_FLOAT);
   
  -	pSZX->Serialize(pSZ, "</", Axis_TypeName_SOAPStruct, ">", NULL);
  +	pSZX->SerializeEndElementOfType(pSZ, Axis_TypeName_SOAPStruct);
   	return AXIS_SUCCESS;
   }
   
  @@ -40,32 +38,48 @@
    */
   int Axis_DeSerialize_SOAPStruct(SOAPStruct* param, IWrapperSoapDeSerializer *pDZ)
   {
  -	IWrapperSoapDeSerializerX* pDZX = pDZ->__vfptr;
  -	param->varString = pDZX->GetString()(pDZ);
  -	param->varInt = pDZX->GetInt()(pDZ);
  -	param->varFloat = pDZX->GetFloat()(pDZ);
  -	return AXIS_SUCCESS;
  +	IWrapperSoapDeSerializerFunctions* pDZX = pDZ->__vfptr;
  +	param->varString = pDZX->GetElementAsString(pDZ,0,0);
  +	param->varInt = pDZX->GetElementAsInt(pDZ,0,0);
  +	param->varFloat = pDZX->GetElementAsFloat(pDZ,0,0);
  +	return pDZX->GetStatus(pDZ);
   }
  -void* Axis_Create_SOAPStruct(bool bArray, int nSize)
  +void* Axis_Create_SOAPStruct(SOAPStruct* pObj, bool bArray, int nSize)
   {
   	if (bArray && (nSize > 0))
  -		return malloc(sizeof(SOAPStruct)*nSize);
  +	{
  +		pObj = malloc(sizeof(SOAPStruct)*nSize);
  +		memset(pObj, 0, sizeof(SOAPStruct)*nSize);
  +	}
   	else
  -		return malloc(sizeof(SOAPStruct));
  +	{
  +		pObj = malloc(sizeof(SOAPStruct));
  +		memset(pObj, 0, sizeof(SOAPStruct));
  +	}
  +	return pObj;
   }
  -
   /**
  - * This static method delete a SOAPStruct type of object
  + * This static method to deallocate a SOAPStruct type of object
    */
   void Axis_Delete_SOAPStruct(SOAPStruct* param, bool bArray, int nSize)
   {
  +	int x;
  +	SOAPStruct* pTemp;
   	if (bArray)
   	{
  +		/*delete any pointer members or array members of this struct here*/
  +		pTemp = param;
  +		for (x=0; x<nSize; x++)
  +		{
  +			if(pTemp->varString) free(pTemp->varString);
  +			pTemp++;
  +		}
   		free(param);
   	}
   	else
   	{
   		/*delete any pointer members or array members of this struct here*/
  +		if(param->varString) free(param->varString);
   		free(param);
   	}
   }
  
  
  
  1.2       +1 -1      ws-axis/c/src/client/samples/interoptests/cbase/SOAPStruct.h
  
  Index: SOAPStruct.h
  ===================================================================
  RCS file: /home/cvs/ws-axis/c/src/client/samples/interoptests/cbase/SOAPStruct.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SOAPStruct.h	12 Jan 2004 12:39:53 -0000	1.1
  +++ SOAPStruct.h	28 Jan 2004 10:15:51 -0000	1.2
  @@ -14,7 +14,7 @@
   static const char* Axis_TypeName_SOAPStruct = "SOAPStruct";
   
   typedef struct {
  -	char* varString;
  +	xsd__string varString;
   	int varInt;
   	float varFloat;
   } SOAPStruct;
  
  
  
  1.1                  ws-axis/c/src/client/samples/interoptests/cbase/InteropBase.wsdl
  
  Index: InteropBase.wsdl
  ===================================================================
  <?xml version="1.0"?>
  <definitions name="InteropTest" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://soapinterop.org/" xmlns:s="http://soapinterop.org/xsd" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  
  	<types>
  		<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/xsd">
  	                <import namespace = "http://schemas.xmlsoap.org/soap/encoding/"/>
  			<complexType name="ArrayOfstring">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="string[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfint">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="int[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOffloat">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="float[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="ArrayOfSOAPStruct">
  				<complexContent>
  					<restriction base="SOAP-ENC:Array">
  						<attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="s:SOAPStruct[]"/>
  					</restriction>
  				</complexContent>
  			</complexType>
  			<complexType name="SOAPStruct">
  				<all>
  					<element name="varString" type="string"/>
  					<element name="varInt" type="int"/>
  					<element name="varFloat" type="float"/>
  				</all>
  			</complexType>
  		</schema>
  	</types>
  
  	<message name="echoStringRequest">
  		<part name="inputString" type="xsd:string"/>
  	</message>
  	<message name="echoStringResponse">
  		<part name="return" type="xsd:string"/>
  	</message>
  	<message name="echoStringArrayRequest">
  		<part name="inputStringArray" type="s:ArrayOfstring"/>
  	</message>
  	<message name="echoStringArrayResponse">
  		<part name="return" type="s:ArrayOfstring"/>
  	</message>
  	<message name="echoIntegerRequest">
  		<part name="inputInteger" type="xsd:int"/>
  	</message>
  	<message name="echoIntegerResponse">
  		<part name="return" type="xsd:int"/>
  	</message>
  	<message name="echoIntegerArrayRequest">
  		<part name="inputIntegerArray" type="s:ArrayOfint"/>
  	</message>
  	<message name="echoIntegerArrayResponse">
  		<part name="return" type="s:ArrayOfint"/>
  	</message>
  	<message name="echoFloatRequest">
  		<part name="inputFloat" type="xsd:float"/>
  	</message>
  	<message name="echoFloatResponse">
  		<part name="return" type="xsd:float"/>
  	</message>
  	<message name="echoFloatArrayRequest">
  		<part name="inputFloatArray" type="s:ArrayOffloat"/>
  	</message>
  	<message name="echoFloatArrayResponse">
  		<part name="return" type="s:ArrayOffloat"/>
  	</message>
  	<message name="echoStructRequest">
  		<part name="inputStruct" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructResponse">
  		<part name="return" type="s:SOAPStruct"/>
  	</message>
  	<message name="echoStructArrayRequest">
  		<part name="inputStructArray" type="s:ArrayOfSOAPStruct"/>
  	</message>
  	<message name="echoStructArrayResponse">
  		<part name="return" type="s:ArrayOfSOAPStruct"/>
  	</message>
  	<message name="echoVoidRequest"/>
  	<message name="echoVoidResponse"/>
  	<message name="echoBase64Request">
  		<part name="inputBase64" type="xsd:base64Binary"/>
  	</message>
  	<message name="echoBase64Response">
  		<part name="return" type="xsd:base64Binary"/>
  	</message>
  	<message name="echoDateRequest">
  		<part name="inputDate" type="xsd:dateTime"/>
  	</message>
  	<message name="echoDateResponse">
  		<part name="return" type="xsd:dateTime"/>
  	</message>
  	<message name="echoHexBinaryRequest">
  		<part name="inputHexBinary" type="xsd:hexBinary"/>
  	</message>
  	<message name="echoHexBinaryResponse">
  		<part name="return" type="xsd:hexBinary"/>
  	</message>
  	<message name="echoDecimalRequest">
  		<part name="inputDecimal" type="xsd:decimal"/>
  	</message>
  	<message name="echoDecimalResponse">
  		<part name="return" type="xsd:decimal"/>
  	</message>
  	<message name="echoBooleanRequest">
  		<part name="inputBoolean" type="xsd:boolean"/>
  	</message>
  	<message name="echoBooleanResponse">
  		<part name="return" type="xsd:boolean"/>
  	</message>
  
  	<portType name="InteropTestPortType">
  		<operation name="echoString" parameterOrder="inputString">
  			<input message="tns:echoStringRequest"/>
  			<output message="tns:echoStringResponse"/>
  		</operation>
  		<operation name="echoStringArray" parameterOrder="inputStringArray">
  			<input message="tns:echoStringArrayRequest"/>
  			<output message="tns:echoStringArrayResponse"/>
  		</operation>
  		<operation name="echoInteger" parameterOrder="inputInteger">
  			<input message="tns:echoIntegerRequest"/>
  			<output message="tns:echoIntegerResponse"/>
  		</operation>
  		<operation name="echoIntegerArray" parameterOrder="inputIntegerArray">
  			<input message="tns:echoIntegerArrayRequest"/>
  			<output message="tns:echoIntegerArrayResponse"/>
  		</operation>
  		<operation name="echoFloat" parameterOrder="inputFloat">
  			<input message="tns:echoFloatRequest"/>
  			<output message="tns:echoFloatResponse"/>
  		</operation>
  		<operation name="echoFloatArray" parameterOrder="inputFloatArray">
  			<input message="tns:echoFloatArrayRequest"/>
  			<output message="tns:echoFloatArrayResponse"/>
  		</operation>
  		<operation name="echoStruct" parameterOrder="inputStruct">
  			<input message="tns:echoStructRequest"/>
  			<output message="tns:echoStructResponse"/>
  		</operation>
  		<operation name="echoStructArray" parameterOrder="inputStructArray">
  			<input message="tns:echoStructArrayRequest"/>
  			<output message="tns:echoStructArrayResponse"/>
  		</operation>
  		<operation name="echoVoid">
  			<input message="tns:echoVoidRequest"/>
  			<output message="tns:echoVoidResponse"/>
  		</operation>
  		<operation name="echoBase64" parameterOrder="inputBase64">
  			<input message="tns:echoBase64Request"/>
  			<output message="tns:echoBase64Response"/>
  		</operation>
  		<operation name="echoDate" parameterOrder="inputDate">
  			<input message="tns:echoDateRequest"/>
  			<output message="tns:echoDateResponse"/>
  		</operation>
  		<operation name="echoHexBinary" parameterOrder="inputHexBinary">
  			<input message="tns:echoHexBinaryRequest"/>
  			<output message="tns:echoHexBinaryResponse"/>
  		</operation>
  		<operation name="echoDecimal" parameterOrder="inputDecimal">
  			<input message="tns:echoDecimalRequest"/>
  			<output message="tns:echoDecimalResponse"/>
  		</operation>
  		<operation name="echoBoolean" parameterOrder="inputBoolean">
  			<input message="tns:echoBooleanRequest"/>
  			<output message="tns:echoBooleanResponse"/>
  		</operation>
  	</portType>
  
  	<binding name="InteropTestSoapBinding" type="tns:InteropTestPortType">
  		<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  		<operation name="echoString">
  			<soap:operation soapAction="InteropBase#echoString"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStringArray">
  			<soap:operation soapAction="InteropBase#echoStringArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoInteger">
  			<soap:operation soapAction="InteropBase#echoInteger"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoIntegerArray">
  			<soap:operation soapAction="InteropBase#echoIntegerArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloat">
  			<soap:operation soapAction="InteropBase#echoFloat"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoFloatArray">
  			<soap:operation soapAction="InteropBase#echoFloatArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStruct">
  			<soap:operation soapAction="InteropBase#echoStruct"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoStructArray">
  			<soap:operation soapAction="InteropBase#echoStructArray"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoVoid">
  			<soap:operation soapAction="InteropBase#echoVoid"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBase64">
  			<soap:operation soapAction="InteropBase#echoBase64"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDate">
  			<soap:operation soapAction="InteropBase#echoDate"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoHexBinary">
  			<soap:operation soapAction="InteropBase#echoHexBinary"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoDecimal">
  			<soap:operation soapAction="InteropBase#echoDecimal"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  		<operation name="echoBoolean">
  			<soap:operation soapAction="InteropBase#echoBoolean"/>
  			<input>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</input>
  			<output>
  				<soap:body use="encoded" namespace="http://soapinterop.org/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
  			</output>
  		</operation>
  	</binding>
   	<service name="InteropBase">
      		<port binding="tns:InteropTestSoapBinding" name="InteropBaseTest">
        		<soap:address location="http://localhost/axis/InteropBase"/>
      		</port>
    	</service>
  </definitions>
  
  
  
  1.1                  ws-axis/c/src/client/samples/interoptests/cbase/InteropBaseClient.c
  
  Index: InteropBaseClient.c
  ===================================================================
  // InteropBaseClient.cpp : Defines the entry point for the console application.
  //
  
  #include "InteropTestPortType.h" 
  #include <stdio.h>
  
  #define ARRAYSIZE 2
  
  int main(int argc, char* argv[])
  {
  	int x;
  	char buffer1[100];
  	char buffer2[100];
  	xsd__string_Array arrstr;
  	xsd__int_Array arrint;
  	xsd__float_Array arrfloat;
  	SOAPStruct_Array arrstct;
  	SOAPStruct stct;
  	time_t tim;
  	struct tm* lt;
  	printf("invoking echoString...\n");
  	//testing echoString 
  	if (0 == strcmp(echoString("hello world"), "hello world"))
  		printf("successful\n");
  	else
  		printf("failed\n");
  	// testing echoStringArray 
  	arrstr.m_Array = malloc(sizeof(char*)*ARRAYSIZE);
  	arrstr.m_Size = ARRAYSIZE;
  	for(x=0; x< ARRAYSIZE; x++)
  	{
  		sprintf(buffer1, "%dth element of string array", 0);
  		arrstr.m_Array[x] = strdup(buffer1);
  	}
  	//arrstr.m_Array[1] = buffer2;
  	printf("invoking echoStringArray...\n");
  	if (echoStringArray(arrstr).m_Array != NULL)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	// testing echoInteger 
  	printf("invoking echoInteger...\n");
  	if (echoInteger(56) == 56)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	// testing echoIntegerArray 
  	arrint.m_Array = malloc(sizeof(int)*ARRAYSIZE);
  	arrint.m_Size = ARRAYSIZE;
  	for (x=0;x<ARRAYSIZE;x++)
  	{
  		arrint.m_Array[x] = x;
  	}
  	printf("invoking echoIntegerArray...\n");
  	if (echoIntegerArray(arrint).m_Array != NULL)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	// testing echoFloat 
  	printf("invoking echoFloat...\n");
  	if (echoFloat(1.4214) > 1.42)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	// testing echoFloat 
  	arrfloat.m_Array = malloc(sizeof(float)*ARRAYSIZE);
  	arrfloat.m_Size = ARRAYSIZE;
  	for (x=0;x<ARRAYSIZE;x++)
  	{
  		arrfloat.m_Array[x] = 1.1111*x;
  	}
  	printf("invoking echoFloatArray...\n");
  	if (echoFloatArray(arrfloat).m_Array != NULL)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	// testing echo Struct
  	stct.varFloat = 12345.7346345;
  	stct.varInt = 5000;
  	stct.varString = strdup("This is string in SOAPStruct");
  	printf("invoking echoStruct...\n");
  	if (echoStruct(&stct) != NULL)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	//testing echo Array of Struct
  	arrstct.m_Array = malloc(sizeof(SOAPStruct)*ARRAYSIZE);
  	arrstct.m_Size = ARRAYSIZE;
  	for (x=0;x<ARRAYSIZE;x++)
  	{
  		arrstct.m_Array[x].varFloat = 1.1111*x;
  		arrstct.m_Array[x].varInt = x;
  		sprintf(buffer1, "varString of %dth element of SOAPStruct array", x);
  		arrstct.m_Array[x].varString = buffer1;
  	}
  	//testing echo Struct Array
  	printf("invoking echoStructArray...\n");
  	if (echoStructArray(arrstct).m_Array != NULL)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	//testing echo void
  	printf("invoking echoVoid...\n");
  	echoVoid();
  	printf("successful\n");
  	//testing echo base 64 binary
  /*	printf("invoking echoBase64...\n");
  	if (0 == strcmp(ws.echoBase64("BCDF675E234242WHRTKMJDGKGUEJ898636JFJFHEJDGWTDHFJRURYGBCDHTWRSG"),
  		"BCDF675E234242WHRTKMJDGKGUEJ898636JFJFHEJDGWTDHFJRURYGBCDHTWRSG"))
  		printf("successful\n");
  	else
  		printf("failed\n");
  	time(&tim);
  	lt = gmtime(&tim);
  	printf("invoking echoDate...\n");
  	if (memcmp(&(echoDate(*lt)), lt, sizeof(tm)) == 0)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	//testing echo hex binary
  	printf("invoking echoHexBinary...\n");
  	if (0 == strcmp(echoHexBinary("CCCFFA46552BC7D5A09BC5F23DE9E0FE7862AD45BC87D02FEE"),
  		"CCCFFA46552BC7D5A09BC5F23DE9E0FE7862AD45BC87D02FEE"))
  		printf("successful\n");
  	else
  		printf("failed\n");
  */	//testing echo decimal
  	printf("invoking echoDecimal...\n");
  	if (echoDecimal(1234.567890) > 1234.56)
  		printf("successful\n");
  	else
  		printf("failed\n");
  	//testing echo boolean
  	printf("invoking echoBoolean...\n");
  	if (echoBoolean(true_) == true_)
  		printf("successful\n");
  	else
  		printf("failed\n");
  		
  	getchar();
  	return 0;
  }
  
  
  
  1.1                  ws-axis/c/src/client/samples/interoptests/cbase/SOAPStruct_Array.h
  
  Index: SOAPStruct_Array.h
  ===================================================================
  /*
   *This file is automatically generated by the Axis C++ Wrapper Class Generator
   *Web service wrapper class's implementation generated by Axis WCG
   *Parameters and wrapper methos to manipulate SOAPStruct_Array
   */
  
  #if !defined(__SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_)
  #define __SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_
  
  #include "SOAPStruct.h"
  
  typedef struct {
  	SOAPStruct* m_Array;
  	int m_Size;
  } SOAPStruct_Array;
  
  #endif /* !defined(__SOAPSTRUCT_ARRAY_ARRAY_H__INCLUDED_)*/