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 na...@apache.org on 2006/04/25 05:40:39 UTC
svn commit: r396765 - in /webservices/axis/trunk/c/src/cbindings: ./ client/
Author: nadiramra
Date: Mon Apr 24 20:40:37 2006
New Revision: 396765
URL: http://svn.apache.org/viewcvs?rev=396765&view=rev
Log:
C support fixes/enhancements.
Added:
webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.cpp
webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.hpp
Modified:
webservices/axis/trunk/c/src/cbindings/AxisC.cpp
webservices/axis/trunk/c/src/cbindings/AxisObjectContainer.hpp
webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp
webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp
webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp
webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp
webservices/axis/trunk/c/src/cbindings/client/CallC.cpp
webservices/axis/trunk/c/src/cbindings/client/StubC.cpp
Modified: webservices/axis/trunk/c/src/cbindings/AxisC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/AxisC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/AxisC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/AxisC.cpp Mon Apr 24 20:40:37 2006
@@ -24,7 +24,6 @@
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/TypeMapping.h>
Modified: webservices/axis/trunk/c/src/cbindings/AxisObjectContainer.hpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/AxisObjectContainer.hpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/AxisObjectContainer.hpp (original)
+++ webservices/axis/trunk/c/src/cbindings/AxisObjectContainer.hpp Mon Apr 24 20:40:37 2006
@@ -1,6 +1,6 @@
/*
- * Copyright 2003-2004 The Apache Software Foundation.
-// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
+ * Copyright 2006-2006 The Apache Software Foundation.
+// (c) Copyright IBM Corp. 2006, 2006 All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Added: webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.cpp?rev=396765&view=auto
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.cpp (added)
+++ webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.cpp Mon Apr 24 20:40:37 2006
@@ -0,0 +1,422 @@
+/* -*- C++ -*- */
+/*
+ * Copyright 2006-2006 The Apache Software Foundation.
+// (c) Copyright IBM Corp. 2006, 2006 All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "AxisObjectConverter.hpp"
+
+AXIS_CPP_NAMESPACE_START
+
+AxiscAnyType *
+AxisObjectConverter::cppAnyTypeToC(AnyType *objAnyType,
+ AxiscAnyType *cAnyType,
+ bool deleteObj)
+{
+ return NULL;
+}
+
+Axisc_Array *
+AxisObjectConverter::cppArrayToC(Axis_Array *objArray,
+ Axisc_Array *cArray,
+ bool deleteObj)
+{
+ // If nothing to transform, return
+ if (objArray == NULL)
+ return cArray;
+
+ // Allocate cbinding array and initialize
+ if (cArray == NULL)
+ cArray = (Axisc_Array *)axiscAxisNew(XSDC_ARRAY, 0);
+
+ // Get object array stuff
+ XSDTYPE m_Type;
+ int m_Size;
+ void ** m_Array = objArray->get(m_Size, m_Type);
+
+ cArray->m_Size = m_Size;
+ cArray->m_Type = (AXISC_XSDTYPE)m_Type;
+
+ // Now generate the array
+ if (m_Array != NULL && m_Size > 0)
+ {
+ cArray->m_Array = new void*[m_Size];
+
+ for (int count = 0 ; count < m_Size ; count++)
+ {
+ if ( m_Array[count] == NULL)
+ {
+ cArray->m_Array[count] = NULL;
+ continue;
+ }
+
+ switch (m_Type)
+ {
+ case XSD_DURATION:
+ {
+ ((xsd__duration**) cArray->m_Array)[count] = new xsd__duration();
+ *((xsd__duration**)cArray->m_Array)[count] = *((xsd__duration**) m_Array)[count];
+ break;
+ }
+ case XSD_DATETIME:
+ {
+ ((xsd__dateTime**) cArray->m_Array)[count] = new xsd__dateTime();
+ *((xsd__dateTime**)cArray->m_Array)[count] = *((xsd__dateTime**) m_Array)[count];
+ break;
+ }
+ case XSD_TIME:
+ {
+ ((xsd__time**) cArray->m_Array)[count] = new xsd__time();
+ *((xsd__time**)cArray->m_Array)[count] = *((xsd__time**) m_Array)[count];
+ break;
+ }
+ case XSD_DATE:
+ {
+ ((xsd__date**) cArray->m_Array)[count] = new xsd__date();
+ *((xsd__date**)cArray->m_Array)[count] = *((xsd__date**) m_Array)[count];
+ break;
+ }
+ case XSD_GYEARMONTH:
+ {
+ ((xsd__gYearMonth**) cArray->m_Array)[count] = new xsd__gYearMonth();
+ *((xsd__gYearMonth**)cArray->m_Array)[count] = *((xsd__gYearMonth**) m_Array)[count];
+ break;
+ }
+ case XSD_GYEAR:
+ {
+ ((xsd__gYear**) cArray->m_Array)[count] = new xsd__gYear();
+ *((xsd__gYear**)cArray->m_Array)[count] = *((xsd__gYear**) m_Array)[count];
+ break;
+ }
+ case XSD_GMONTHDAY:
+ {
+ ((xsd__gMonthDay**) cArray->m_Array)[count] = new xsd__gMonthDay();
+ *((xsd__gMonthDay**)cArray->m_Array)[count] = *((xsd__gMonthDay**) m_Array)[count];
+ break;
+ }
+ case XSD_GDAY:
+ {
+ ((xsd__gDay**) cArray->m_Array)[count] = new xsd__gDay();
+ *((xsd__gDay**)cArray->m_Array)[count] = *((xsd__gDay**) m_Array)[count];
+ break;
+ }
+ case XSD_GMONTH:
+ {
+ ((xsd__gMonth**) cArray->m_Array)[count] = new xsd__gMonth();
+ *((xsd__gMonth**)cArray->m_Array)[count] = *((xsd__gMonth**) m_Array)[count];
+ break;
+ }
+ case XSD_STRING:
+ {
+ ((xsd__string*) cArray->m_Array)[count] = new char[strlen(((xsd__string*) m_Array)[count])+1];
+ strcpy(((xsd__string*) cArray->m_Array)[count], ((xsd__string*) m_Array)[count]);
+ break;
+ }
+ case XSD_NORMALIZEDSTRING:
+ {
+ ((xsd__normalizedString*) cArray->m_Array)[count] = new char[strlen(((xsd__normalizedString*) m_Array)[count])+1];
+ strcpy(((xsd__normalizedString*) cArray->m_Array)[count], ((xsd__normalizedString*) m_Array)[count]);
+ break;
+ }
+ case XSD_TOKEN:
+ {
+ ((xsd__token*) cArray->m_Array)[count] = new char[strlen(((xsd__token*) m_Array)[count])+1];
+ strcpy(((xsd__token*) cArray->m_Array)[count], ((xsd__token*) m_Array)[count]);
+ break;
+ }
+ case XSD_LANGUAGE:
+ {
+ ((xsd__language*) cArray->m_Array)[count] = new char[strlen(((xsd__language*) m_Array)[count])+1];
+ strcpy(((xsd__language*) cArray->m_Array)[count], ((xsd__language*) m_Array)[count]);
+ break;
+ }
+ case XSD_NAME:
+ {
+ ((xsd__Name*) cArray->m_Array)[count] = new char[strlen(((xsd__Name*) m_Array)[count])+1];
+ strcpy(((xsd__Name*) cArray->m_Array)[count], ((xsd__Name*) m_Array)[count]);
+ break;
+ }
+ case XSD_NCNAME:
+ {
+ ((xsd__NCName*) cArray->m_Array)[count] = new char[strlen(((xsd__NCName*) m_Array)[count])+1];
+ strcpy(((xsd__NCName*) cArray->m_Array)[count], ((xsd__NCName*) m_Array)[count]);
+ break;
+ }
+ case XSD_ID:
+ {
+ ((xsd__ID*) cArray->m_Array)[count] = new char[strlen(((xsd__ID*) m_Array)[count])+1];
+ strcpy(((xsd__ID*) cArray->m_Array)[count], ((xsd__ID*) m_Array)[count]);
+ break;
+ }
+ case XSD_IDREF:
+ {
+ ((xsd__IDREF*) cArray->m_Array)[count] = new char[strlen(((xsd__IDREF*) m_Array)[count])+1];
+ strcpy(((xsd__IDREF*) cArray->m_Array)[count], ((xsd__IDREF*) m_Array)[count]);
+ break;
+ }
+ case XSD_IDREFS:
+ {
+ ((xsd__IDREFS*) cArray->m_Array)[count] = new char[strlen(((xsd__IDREFS*) m_Array)[count])+1];
+ strcpy(((xsd__IDREFS*) cArray->m_Array)[count], ((xsd__IDREFS*) m_Array)[count]);
+ break;
+ }
+ case XSD_ENTITY:
+ {
+ ((xsd__ENTITY*) cArray->m_Array)[count] = new char[strlen(((xsd__ENTITY*) m_Array)[count])+1];
+ strcpy(((xsd__ENTITY*) cArray->m_Array)[count], ((xsd__ENTITY*) m_Array)[count]);
+ break;
+ }
+ case XSD_ENTITIES:
+ {
+ ((xsd__ENTITIES*) cArray->m_Array)[count] = new char[strlen(((xsd__ENTITIES*) m_Array)[count])+1];
+ strcpy(((xsd__ENTITIES*) cArray->m_Array)[count], ((xsd__ENTITIES*) m_Array)[count]);
+ break;
+ }
+ case XSD_NMTOKEN:
+ {
+ ((xsd__NMTOKEN*) cArray->m_Array)[count] = new char[strlen(((xsd__NMTOKEN*) m_Array)[count])+1];
+ strcpy(((xsd__NMTOKEN*) cArray->m_Array)[count], ((xsd__NMTOKEN*) m_Array)[count]);
+ break;
+ }
+ case XSD_NMTOKENS:
+ {
+ ((xsd__NMTOKENS*) cArray->m_Array)[count] = new char[strlen(((xsd__NMTOKENS*) m_Array)[count])+1];
+ strcpy(((xsd__NMTOKENS*) cArray->m_Array)[count], ((xsd__NMTOKENS*) m_Array)[count]);
+ break;
+ }
+ case XSD_BOOLEAN:
+ {
+ ((xsd__boolean**) cArray->m_Array)[count] = new xsd__boolean();
+ *((xsd__boolean**)cArray->m_Array)[count] = *((xsd__boolean**) m_Array)[count];
+ break;
+ }
+ case XSD_BASE64BINARY:
+ {
+ // TODO
+ ((xsdc__base64Binary**) cArray->m_Array)[count] = new xsdc__base64Binary();
+ *((xsdc__base64Binary**)cArray->m_Array)[count] = *((xsdc__base64Binary**) m_Array)[count];
+ break;
+ }
+ case XSD_HEXBINARY:
+ {
+ // TODO
+ ((xsdc__hexBinary**) cArray->m_Array)[count] = new xsdc__hexBinary();
+ *((xsdc__hexBinary**)cArray->m_Array)[count] = *((xsdc__hexBinary**) m_Array)[count];
+ break;
+ }
+ case XSD_FLOAT:
+ {
+ ((xsd__float**) cArray->m_Array)[count] = new xsd__float();
+ *((xsd__float**)cArray->m_Array)[count] = *((xsd__float**) m_Array)[count];
+ break;
+ }
+ case XSD_DECIMAL:
+ {
+ ((xsd__decimal**) cArray->m_Array)[count] = new xsd__decimal();
+ *((xsd__decimal**)cArray->m_Array)[count] = *((xsd__decimal**) m_Array)[count];
+ break;
+ }
+ case XSD_INTEGER:
+ {
+ ((xsd__integer**) cArray->m_Array)[count] = new xsd__integer();
+ *((xsd__integer**)cArray->m_Array)[count] = *((xsd__integer**) m_Array)[count];
+ break;
+ }
+ case XSD_NONPOSITIVEINTEGER:
+ {
+ ((xsd__nonPositiveInteger**) cArray->m_Array)[count] = new xsd__nonPositiveInteger();
+ *((xsd__nonPositiveInteger**)cArray->m_Array)[count] = *((xsd__nonPositiveInteger**) m_Array)[count];
+ break;
+ }
+ case XSD_NEGATIVEINTEGER:
+ {
+ ((xsd__negativeInteger**) cArray->m_Array)[count] = new xsd__negativeInteger();
+ *((xsd__negativeInteger**)cArray->m_Array)[count] = *((xsd__negativeInteger**) m_Array)[count];
+ break;
+ }
+ case XSD_LONG:
+ {
+ ((xsd__long**) cArray->m_Array)[count] = new xsd__long();
+ *((xsd__long**)cArray->m_Array)[count] = *((xsd__long**) m_Array)[count];
+ break;
+ }
+ case XSD_INT:
+ {
+ ((xsd__int**) cArray->m_Array)[count] = new xsd__int();
+ *((xsd__int**)cArray->m_Array)[count] = *((xsd__int**) m_Array)[count];
+ break;
+ }
+ case XSD_SHORT:
+ {
+ ((xsd__short**) cArray->m_Array)[count] = new xsd__short();
+ *((xsd__short**)cArray->m_Array)[count] = *((xsd__short**) m_Array)[count];
+ break;
+ }
+ case XSD_BYTE:
+ {
+ ((xsd__byte**) cArray->m_Array)[count] = new xsd__byte();
+ *((xsd__byte**)cArray->m_Array)[count] = *((xsd__byte**) m_Array)[count];
+ break;
+ }
+ case XSD_NONNEGATIVEINTEGER:
+ {
+ ((xsd__nonNegativeInteger**) cArray->m_Array)[count] = new xsd__nonNegativeInteger();
+ *((xsd__nonNegativeInteger**)cArray->m_Array)[count] = *((xsd__nonNegativeInteger**) m_Array)[count];
+ break;
+ }
+ case XSD_UNSIGNEDLONG:
+ {
+ ((xsd__unsignedLong**) cArray->m_Array)[count] = new xsd__unsignedLong();
+ *((xsd__unsignedLong**)cArray->m_Array)[count] = *((xsd__unsignedLong**) m_Array)[count];
+ break;
+ }
+ case XSD_UNSIGNEDINT:
+ {
+ ((xsd__unsignedInt**) cArray->m_Array)[count] = new xsd__unsignedInt();
+ *((xsd__unsignedInt**)cArray->m_Array)[count] = *((xsd__unsignedInt**) m_Array)[count];
+ break;
+ }
+ case XSD_UNSIGNEDSHORT:
+ {
+ ((xsd__unsignedShort**) cArray->m_Array)[count] = new xsd__unsignedShort();
+ *((xsd__unsignedShort**)cArray->m_Array)[count] = *((xsd__unsignedShort**) m_Array)[count];
+ break;
+ }
+ case XSD_UNSIGNEDBYTE:
+ {
+ ((xsd__unsignedByte**) cArray->m_Array)[count] = new xsd__unsignedByte();
+ *((xsd__unsignedByte**)cArray->m_Array)[count] = *((xsd__unsignedByte**) m_Array)[count];
+ break;
+ }
+ case XSD_POSITIVEINTEGER:
+ {
+ ((xsd__positiveInteger**) cArray->m_Array)[count] = new xsd__positiveInteger();
+ *((xsd__positiveInteger**)cArray->m_Array)[count] = *((xsd__positiveInteger**) m_Array)[count];
+ break;
+ }
+ case XSD_DOUBLE:
+ {
+ ((xsd__double**) cArray->m_Array)[count] = new xsd__double();
+ *((xsd__double**)cArray->m_Array)[count] = *((xsd__double**) m_Array)[count];
+ break;
+ }
+ case XSD_ANYURI:
+ {
+ ((xsd__anyURI*) cArray->m_Array)[count] = new char[strlen(((xsd__anyURI*) m_Array)[count])+1];
+ strcpy(((xsd__anyURI*) cArray->m_Array)[count], ((xsd__anyURI*) m_Array)[count]);
+ break;
+ }
+ case XSD_QNAME:
+ {
+ ((xsd__QName*) cArray->m_Array)[count] = new char[strlen(((xsd__QName*) m_Array)[count])+1];
+ strcpy(((xsd__QName*) cArray->m_Array)[count], ((xsd__QName*) m_Array)[count]);
+ break;
+ }
+ case XSD_NOTATION:
+ {
+ ((xsd__NOTATION*) cArray->m_Array)[count] = new char[strlen(((xsd__NOTATION*) m_Array)[count])+1];
+ strcpy(((xsd__NOTATION*) cArray->m_Array)[count], ((xsd__NOTATION*) m_Array)[count]);
+ break;
+ }
+ case XSD_ARRAY:
+ {
+ // TODO
+ cArray->m_Array[count] = m_Array[count];
+ break;
+ }
+ case USER_TYPE:
+ {
+ // TODO
+ cArray->m_Array[count] = m_Array[count];
+ break;
+ }
+ case XSD_UNKNOWN:
+ case XSD_ANY:
+ case ATTACHMENT:
+ default:
+ break;
+ } // end switch
+ } // end for loop
+ }
+
+ // delete c++ object array if requested to do so before returning
+ if (deleteObj)
+ delete objArray;
+
+ return cArray;
+}
+
+xsdc__base64Binary *
+AxisObjectConverter::cppBase64BinaryToC(xsd__base64Binary *objBase64Bin,
+ xsdc__base64Binary *cBase64Bin,
+ bool deleteObj)
+{
+ // Nothing to transform, return.
+ if (!objBase64Bin)
+ return (xsdc__base64Binary *)NULL;
+
+ // Get info from c++ Object
+ int base64BinaryDataSize;
+ xsd__unsignedByte *base64BinaryData = objBase64Bin->get(base64BinaryDataSize);
+
+ // Create c-style equivalent object
+ xsdc__base64Binary * pObjC = (xsdc__base64Binary *)axiscAxisNew(XSDC_BASE64BINARY, base64BinaryDataSize);
+
+ // populate c-style object with data from c++ object
+ if (base64BinaryDataSize > 0)
+ {
+ memcpy(pObjC->__ptr, base64BinaryData, base64BinaryDataSize);
+ pObjC->__ptr[base64BinaryDataSize] = '\0';
+ }
+
+ // Delete c++ object before returning c object
+ if (deleteObj)
+ delete objBase64Bin;
+
+ return pObjC;
+}
+
+xsdc__hexBinary *
+AxisObjectConverter::cppHexBinaryToC(xsd__hexBinary *objHexBin,
+ xsdc__hexBinary *cHexBin,
+ bool deleteObj)
+{
+ // If nothing to transform, return.
+ if (!objHexBin)
+ return (xsdc__hexBinary *)NULL;
+
+ // Get info from c++ Object
+ int hexDataSize;
+ xsd__unsignedByte *hexData = objHexBin->get(hexDataSize);
+
+ // Create c-style equivalent object
+ xsdc__hexBinary * pObjC = (xsdc__hexBinary *)axiscAxisNew(XSDC_HEXBINARY, hexDataSize);
+
+ // populate c-style object with data from c++ object
+ if (hexDataSize > 0)
+ {
+ memcpy(pObjC->__ptr, hexData, hexDataSize);
+ pObjC->__ptr[hexDataSize] = '\0';
+ }
+
+ // Delete c++ object before returning c object
+ if (deleteObj)
+ delete objHexBin;
+
+ return pObjC;
+}
+
+AXIS_CPP_NAMESPACE_END
Added: webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.hpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.hpp?rev=396765&view=auto
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.hpp (added)
+++ webservices/axis/trunk/c/src/cbindings/AxisObjectConverter.hpp Mon Apr 24 20:40:37 2006
@@ -0,0 +1,100 @@
+/*
+ * Copyright 2006-2006 The Apache Software Foundation.
+// (c) Copyright IBM Corp. 2006, 2006 All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_AXISOBJECTCONVERTER_HPP_OF_AXIS_INCLUDED_)
+#define _AXISOBJECTCONVERTER_HPP_OF_AXIS_INCLUDED_
+
+#include <axis/AxisUserAPI.hpp>
+#include <axis/AxisUserAPI.h>
+
+ /**
+ * @file AxisObjectConverter.hpp
+ * This file contains static methods to convert C++ objects into C objects and
+ * vice-versa. Probably the best way would have been to add methods to the
+ * C++ objects in order to do the conversion to C objects, but decision was
+ * made to keep the C++ engine clean of C support.
+ */
+AXIS_CPP_NAMESPACE_START
+class AxisObjectConverter
+{
+public :
+
+ /**
+ * Generate an AnyType C structure from the C++ object AnyType.
+ *
+ * @param objAnyType - Pointer to C++ object AnyType.
+ * @param cAnyType - Pointer to C AnyType. If NULL, one will be allocated.
+ * @param deleteObj - Boolean value indicating whether C++ object should be
+ * deleted after C equivalent has been generated.
+ *
+ * @return - Pointer to C AnyType. If cAnyType is not NULL, then
+ * that is returned; otherwise, a new C AnyType will be returned.
+ */
+ static AxiscAnyType *cppAnyTypeToC(AnyType *objAnyType,
+ AxiscAnyType *cAnyType,
+ bool deleteObj=false);
+
+ /**
+ * Generate a C array from the C++ object array.
+ *
+ * @param objArray - Pointer to C++ array.
+ * @param cArray - Pointer to C array. If NULL, one will be allocated.
+ * @param deleteObj - Boolean value indicating whether C++ object should be
+ * deleted after C equivalent has been generated.
+ *
+ * @return - Pointer to C array. If cArray is not NULL, then
+ * that is returned; otherwise, a new C array will be returned.
+ */
+ static Axisc_Array *cppArrayToC(Axis_Array *objArray,
+ Axisc_Array *cArray,
+ bool deleteObj=false);
+
+ /**
+ * Generate a base64Binary C structure from the C++ object base64Binary.
+ *
+ * @param objBase64Bin- Pointer to C++ object base64Bin.
+ * @param cBase64Bin - Pointer to C base64Bin. If NULL, one will be allocated.
+ * @param deleteObj - Boolean value indicating whether C++ object should be
+ * deleted after C equivalent has been generated.
+ *
+ * @return - Pointer to C base64Binary. If cBase64Bin is not NULL, then
+ * that is returned; otherwise, a new C base64Bin will be returned.
+ */
+
+ static xsdc__base64Binary *cppBase64BinaryToC(xsd__base64Binary *objBase64Bin,
+ xsdc__base64Binary *cBase64Bin,
+ bool deleteObjArray=false);
+
+ /**
+ * Generate a hexBinary C structure from the C++ object hexBinary.
+ *
+ * @param objHexBin - Pointer to C++ object hexBinary.
+ * @param cHexBin - Pointer to C hexBinary. If NULL, one will be allocated.
+ * @param deleteObj - Boolean value indicating whether C++ object should be
+ * deleted after C equivalent has been generated.
+ *
+ * @return - Pointer to C hexBinary. If cHexBinary is not NULL, then
+ * that is returned; otherwise, a new C hexBinary will be returned.
+ */
+ static xsdc__hexBinary *cppHexBinaryToC(xsd__hexBinary *objHexBin,
+ xsdc__hexBinary *cHexBin,
+ bool deleteObj=false);
+};
+
+AXIS_CPP_NAMESPACE_END
+
+#endif
Modified: webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp Mon Apr 24 20:40:37 2006
@@ -22,7 +22,6 @@
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/BasicNode.h>
AXIS_CPP_NAMESPACE_USE
Modified: webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp Mon Apr 24 20:40:37 2006
@@ -23,7 +23,6 @@
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/BasicNode.h>
#include <axis/SoapEnvVersions.h>
#include <axis/IHeaderBlock.h>
Modified: webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp Mon Apr 24 20:40:37 2006
@@ -19,11 +19,11 @@
#include <axis/AxisException.hpp>
#include "AxisObjectContainer.hpp"
+#include "AxisObjectConverter.hpp"
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/BasicNode.h>
#include <axis/SoapEnvVersions.h>
#include <axis/IWrapperSoapDeSerializer.h>
@@ -32,341 +32,6 @@
extern "C" {
-
-// Following helper function will create a C-binding type of array from a
-// C++ array
-static Axisc_Array *generateCBindingArray(Axisc_Array *cArray, Axis_Array*objArray, bool deleteObjArray=false)
-{
- // If nothing to transform, return
- if (objArray == NULL)
- return cArray;
-
- // Allocate cbinding array and initialize
- if (cArray == NULL)
- cArray = (Axisc_Array *)axiscAxisNew(XSDC_ARRAY, 0);
-
- // Get object array stuff
- XSDTYPE m_Type;
- int m_Size;
- void ** m_Array = objArray->get(m_Size, m_Type);
-
- cArray->m_Size = m_Size;
- cArray->m_Type = (AXISC_XSDTYPE)m_Type;
-
- // Now generate the array
- if (m_Array != NULL && m_Size > 0)
- {
- cArray->m_Array = new void*[m_Size];
-
- for (int count = 0 ; count < m_Size ; count++)
- {
- if ( m_Array[count] == NULL)
- {
- cArray->m_Array[count] = NULL;
- continue;
- }
-
- switch (m_Type)
- {
- case XSD_DURATION:
- {
- ((xsd__duration**) cArray->m_Array)[count] = new xsd__duration();
- *((xsd__duration**)cArray->m_Array)[count] = *((xsd__duration**) m_Array)[count];
- break;
- }
- case XSD_DATETIME:
- {
- ((xsd__dateTime**) cArray->m_Array)[count] = new xsd__dateTime();
- *((xsd__dateTime**)cArray->m_Array)[count] = *((xsd__dateTime**) m_Array)[count];
- break;
- }
- case XSD_TIME:
- {
- ((xsd__time**) cArray->m_Array)[count] = new xsd__time();
- *((xsd__time**)cArray->m_Array)[count] = *((xsd__time**) m_Array)[count];
- break;
- }
- case XSD_DATE:
- {
- ((xsd__date**) cArray->m_Array)[count] = new xsd__date();
- *((xsd__date**)cArray->m_Array)[count] = *((xsd__date**) m_Array)[count];
- break;
- }
- case XSD_GYEARMONTH:
- {
- ((xsd__gYearMonth**) cArray->m_Array)[count] = new xsd__gYearMonth();
- *((xsd__gYearMonth**)cArray->m_Array)[count] = *((xsd__gYearMonth**) m_Array)[count];
- break;
- }
- case XSD_GYEAR:
- {
- ((xsd__gYear**) cArray->m_Array)[count] = new xsd__gYear();
- *((xsd__gYear**)cArray->m_Array)[count] = *((xsd__gYear**) m_Array)[count];
- break;
- }
- case XSD_GMONTHDAY:
- {
- ((xsd__gMonthDay**) cArray->m_Array)[count] = new xsd__gMonthDay();
- *((xsd__gMonthDay**)cArray->m_Array)[count] = *((xsd__gMonthDay**) m_Array)[count];
- break;
- }
- case XSD_GDAY:
- {
- ((xsd__gDay**) cArray->m_Array)[count] = new xsd__gDay();
- *((xsd__gDay**)cArray->m_Array)[count] = *((xsd__gDay**) m_Array)[count];
- break;
- }
- case XSD_GMONTH:
- {
- ((xsd__gMonth**) cArray->m_Array)[count] = new xsd__gMonth();
- *((xsd__gMonth**)cArray->m_Array)[count] = *((xsd__gMonth**) m_Array)[count];
- break;
- }
- case XSD_STRING:
- {
- ((xsd__string*) cArray->m_Array)[count] = new char[strlen(((xsd__string*) m_Array)[count])+1];
- strcpy(((xsd__string*) cArray->m_Array)[count], ((xsd__string*) m_Array)[count]);
- break;
- }
- case XSD_NORMALIZEDSTRING:
- {
- ((xsd__normalizedString*) cArray->m_Array)[count] = new char[strlen(((xsd__normalizedString*) m_Array)[count])+1];
- strcpy(((xsd__normalizedString*) cArray->m_Array)[count], ((xsd__normalizedString*) m_Array)[count]);
- break;
- }
- case XSD_TOKEN:
- {
- ((xsd__token*) cArray->m_Array)[count] = new char[strlen(((xsd__token*) m_Array)[count])+1];
- strcpy(((xsd__token*) cArray->m_Array)[count], ((xsd__token*) m_Array)[count]);
- break;
- }
- case XSD_LANGUAGE:
- {
- ((xsd__language*) cArray->m_Array)[count] = new char[strlen(((xsd__language*) m_Array)[count])+1];
- strcpy(((xsd__language*) cArray->m_Array)[count], ((xsd__language*) m_Array)[count]);
- break;
- }
- case XSD_NAME:
- {
- ((xsd__Name*) cArray->m_Array)[count] = new char[strlen(((xsd__Name*) m_Array)[count])+1];
- strcpy(((xsd__Name*) cArray->m_Array)[count], ((xsd__Name*) m_Array)[count]);
- break;
- }
- case XSD_NCNAME:
- {
- ((xsd__NCName*) cArray->m_Array)[count] = new char[strlen(((xsd__NCName*) m_Array)[count])+1];
- strcpy(((xsd__NCName*) cArray->m_Array)[count], ((xsd__NCName*) m_Array)[count]);
- break;
- }
- case XSD_ID:
- {
- ((xsd__ID*) cArray->m_Array)[count] = new char[strlen(((xsd__ID*) m_Array)[count])+1];
- strcpy(((xsd__ID*) cArray->m_Array)[count], ((xsd__ID*) m_Array)[count]);
- break;
- }
- case XSD_IDREF:
- {
- ((xsd__IDREF*) cArray->m_Array)[count] = new char[strlen(((xsd__IDREF*) m_Array)[count])+1];
- strcpy(((xsd__IDREF*) cArray->m_Array)[count], ((xsd__IDREF*) m_Array)[count]);
- break;
- }
- case XSD_IDREFS:
- {
- ((xsd__IDREFS*) cArray->m_Array)[count] = new char[strlen(((xsd__IDREFS*) m_Array)[count])+1];
- strcpy(((xsd__IDREFS*) cArray->m_Array)[count], ((xsd__IDREFS*) m_Array)[count]);
- break;
- }
- case XSD_ENTITY:
- {
- ((xsd__ENTITY*) cArray->m_Array)[count] = new char[strlen(((xsd__ENTITY*) m_Array)[count])+1];
- strcpy(((xsd__ENTITY*) cArray->m_Array)[count], ((xsd__ENTITY*) m_Array)[count]);
- break;
- }
- case XSD_ENTITIES:
- {
- ((xsd__ENTITIES*) cArray->m_Array)[count] = new char[strlen(((xsd__ENTITIES*) m_Array)[count])+1];
- strcpy(((xsd__ENTITIES*) cArray->m_Array)[count], ((xsd__ENTITIES*) m_Array)[count]);
- break;
- }
- case XSD_NMTOKEN:
- {
- ((xsd__NMTOKEN*) cArray->m_Array)[count] = new char[strlen(((xsd__NMTOKEN*) m_Array)[count])+1];
- strcpy(((xsd__NMTOKEN*) cArray->m_Array)[count], ((xsd__NMTOKEN*) m_Array)[count]);
- break;
- }
- case XSD_NMTOKENS:
- {
- ((xsd__NMTOKENS*) cArray->m_Array)[count] = new char[strlen(((xsd__NMTOKENS*) m_Array)[count])+1];
- strcpy(((xsd__NMTOKENS*) cArray->m_Array)[count], ((xsd__NMTOKENS*) m_Array)[count]);
- break;
- }
- case XSD_BOOLEAN:
- {
- ((xsd__boolean**) cArray->m_Array)[count] = new xsd__boolean();
- *((xsd__boolean**)cArray->m_Array)[count] = *((xsd__boolean**) m_Array)[count];
- break;
- }
- case XSD_BASE64BINARY:
- {
- // TODO
- ((xsdc__base64Binary**) cArray->m_Array)[count] = new xsdc__base64Binary();
- *((xsdc__base64Binary**)cArray->m_Array)[count] = *((xsdc__base64Binary**) m_Array)[count];
- break;
- }
- case XSD_HEXBINARY:
- {
- // TODO
- ((xsdc__hexBinary**) cArray->m_Array)[count] = new xsdc__hexBinary();
- *((xsdc__hexBinary**)cArray->m_Array)[count] = *((xsdc__hexBinary**) m_Array)[count];
- break;
- }
- case XSD_FLOAT:
- {
- ((xsd__float**) cArray->m_Array)[count] = new xsd__float();
- *((xsd__float**)cArray->m_Array)[count] = *((xsd__float**) m_Array)[count];
- break;
- }
- case XSD_DECIMAL:
- {
- ((xsd__decimal**) cArray->m_Array)[count] = new xsd__decimal();
- *((xsd__decimal**)cArray->m_Array)[count] = *((xsd__decimal**) m_Array)[count];
- break;
- }
- case XSD_INTEGER:
- {
- ((xsd__integer**) cArray->m_Array)[count] = new xsd__integer();
- *((xsd__integer**)cArray->m_Array)[count] = *((xsd__integer**) m_Array)[count];
- break;
- }
- case XSD_NONPOSITIVEINTEGER:
- {
- ((xsd__nonPositiveInteger**) cArray->m_Array)[count] = new xsd__nonPositiveInteger();
- *((xsd__nonPositiveInteger**)cArray->m_Array)[count] = *((xsd__nonPositiveInteger**) m_Array)[count];
- break;
- }
- case XSD_NEGATIVEINTEGER:
- {
- ((xsd__negativeInteger**) cArray->m_Array)[count] = new xsd__negativeInteger();
- *((xsd__negativeInteger**)cArray->m_Array)[count] = *((xsd__negativeInteger**) m_Array)[count];
- break;
- }
- case XSD_LONG:
- {
- ((xsd__long**) cArray->m_Array)[count] = new xsd__long();
- *((xsd__long**)cArray->m_Array)[count] = *((xsd__long**) m_Array)[count];
- break;
- }
- case XSD_INT:
- {
- ((xsd__int**) cArray->m_Array)[count] = new xsd__int();
- *((xsd__int**)cArray->m_Array)[count] = *((xsd__int**) m_Array)[count];
- break;
- }
- case XSD_SHORT:
- {
- ((xsd__short**) cArray->m_Array)[count] = new xsd__short();
- *((xsd__short**)cArray->m_Array)[count] = *((xsd__short**) m_Array)[count];
- break;
- }
- case XSD_BYTE:
- {
- ((xsd__byte**) cArray->m_Array)[count] = new xsd__byte();
- *((xsd__byte**)cArray->m_Array)[count] = *((xsd__byte**) m_Array)[count];
- break;
- }
- case XSD_NONNEGATIVEINTEGER:
- {
- ((xsd__nonNegativeInteger**) cArray->m_Array)[count] = new xsd__nonNegativeInteger();
- *((xsd__nonNegativeInteger**)cArray->m_Array)[count] = *((xsd__nonNegativeInteger**) m_Array)[count];
- break;
- }
- case XSD_UNSIGNEDLONG:
- {
- ((xsd__unsignedLong**) cArray->m_Array)[count] = new xsd__unsignedLong();
- *((xsd__unsignedLong**)cArray->m_Array)[count] = *((xsd__unsignedLong**) m_Array)[count];
- break;
- }
- case XSD_UNSIGNEDINT:
- {
- ((xsd__unsignedInt**) cArray->m_Array)[count] = new xsd__unsignedInt();
- *((xsd__unsignedInt**)cArray->m_Array)[count] = *((xsd__unsignedInt**) m_Array)[count];
- break;
- }
- case XSD_UNSIGNEDSHORT:
- {
- ((xsd__unsignedShort**) cArray->m_Array)[count] = new xsd__unsignedShort();
- *((xsd__unsignedShort**)cArray->m_Array)[count] = *((xsd__unsignedShort**) m_Array)[count];
- break;
- }
- case XSD_UNSIGNEDBYTE:
- {
- ((xsd__unsignedByte**) cArray->m_Array)[count] = new xsd__unsignedByte();
- *((xsd__unsignedByte**)cArray->m_Array)[count] = *((xsd__unsignedByte**) m_Array)[count];
- break;
- }
- case XSD_POSITIVEINTEGER:
- {
- ((xsd__positiveInteger**) cArray->m_Array)[count] = new xsd__positiveInteger();
- *((xsd__positiveInteger**)cArray->m_Array)[count] = *((xsd__positiveInteger**) m_Array)[count];
- break;
- }
- case XSD_DOUBLE:
- {
- ((xsd__double**) cArray->m_Array)[count] = new xsd__double();
- *((xsd__double**)cArray->m_Array)[count] = *((xsd__double**) m_Array)[count];
- break;
- }
- case XSD_ANYURI:
- {
- ((xsd__anyURI*) cArray->m_Array)[count] = new char[strlen(((xsd__anyURI*) m_Array)[count])+1];
- strcpy(((xsd__anyURI*) cArray->m_Array)[count], ((xsd__anyURI*) m_Array)[count]);
- break;
- }
- case XSD_QNAME:
- {
- ((xsd__QName*) cArray->m_Array)[count] = new char[strlen(((xsd__QName*) m_Array)[count])+1];
- strcpy(((xsd__QName*) cArray->m_Array)[count], ((xsd__QName*) m_Array)[count]);
- break;
- }
- case XSD_NOTATION:
- {
- ((xsd__NOTATION*) cArray->m_Array)[count] = new char[strlen(((xsd__NOTATION*) m_Array)[count])+1];
- strcpy(((xsd__NOTATION*) cArray->m_Array)[count], ((xsd__NOTATION*) m_Array)[count]);
- break;
- }
- case XSD_ARRAY:
- {
- // TODO
- cArray->m_Array[count] = m_Array[count];
- break;
- }
- case USER_TYPE:
- {
- // TODO
- cArray->m_Array[count] = m_Array[count];
- break;
- }
- case XSD_UNKNOWN:
- case XSD_ANY:
- case ATTACHMENT:
- default:
- break;
- } // end switch
- } // end for loop
- }
-
- // delete c++ object array if requested to do so before returning
- if (deleteObjArray)
- delete objArray;
-
- return cArray;
-}
-
-
-
-
-
-
AXISC_STORAGE_CLASS_INFO
void axiscSoapDeSerializerDestroy(AXISCHANDLE wrapperSoapDeSerializer)
{
@@ -454,7 +119,7 @@
pDZFunct, pCreFunct, pDelFunct, pSizeFunct,
pName, pNamespace);
- return generateCBindingArray(pArray, pObjArray, false);
+ return AxisObjectConverter::cppArrayToC(pObjArray, pArray, false);
}
catch ( AxisException& e )
{
@@ -479,7 +144,8 @@
try
{
Axis_Array* pObjArray = dz->getBasicArray((XSDTYPE)nType, pName, pNamespace);
- return generateCBindingArray(NULL, pObjArray, true);
+
+ return AxisObjectConverter::cppArrayToC(pObjArray, NULL, true);
}
catch ( AxisException& e )
{
@@ -898,26 +564,7 @@
{
xsd__hexBinary * pObjCpp = dz->getElementAsHexBinary(pName, pNamespace);
- if (!pObjCpp)
- return (xsdc__hexBinary *)NULL;
-
- // Get info from c++ Object
- int hexDataSize;
- xsd__unsignedByte *hexData = pObjCpp->get(hexDataSize);
-
- // Create c-style equivalent object
- xsdc__hexBinary * pObjC = (xsdc__hexBinary *)axiscAxisNew(XSDC_HEXBINARY, hexDataSize);
-
- // populate c-style object with data from c++ object
- if (hexDataSize > 0)
- {
- memcpy(pObjC->__ptr, hexData, hexDataSize);
- pObjC->__ptr[hexDataSize] = '\0';
- }
-
- // Delete c++ object before returning c object
- delete pObjCpp;
- return pObjC;
+ return AxisObjectConverter::cppHexBinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -942,26 +589,7 @@
{
xsd__base64Binary * pObjCpp = dz->getElementAsBase64Binary(pName, pNamespace);
- if (!pObjCpp)
- return (xsdc__base64Binary *)NULL;
-
- // Get info from c++ Object
- int base64BinaryDataSize;
- xsd__unsignedByte *base64BinaryData = pObjCpp->get(base64BinaryDataSize);
-
- // Create c-style equivalent object
- xsdc__base64Binary * pObjC = (xsdc__base64Binary *)axiscAxisNew(XSDC_BASE64BINARY, base64BinaryDataSize);
-
- // populate c-style object with data from c++ object
- if (base64BinaryDataSize > 0)
- {
- memcpy(pObjC->__ptr, base64BinaryData, base64BinaryDataSize);
- pObjC->__ptr[base64BinaryDataSize] = '\0';
- }
-
- // Delete c++ object before returning c object
- delete pObjCpp;
- return pObjC;
+ return AxisObjectConverter::cppBase64BinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1446,26 +1074,7 @@
{
xsd__hexBinary * pObjCpp = dz->getAttributeAsHexBinary(pName, pNamespace);
- if (!pObjCpp)
- return (xsdc__hexBinary *)NULL;
-
- // Get info from c++ Object
- int hexDataSize;
- xsd__unsignedByte *hexData = pObjCpp->get(hexDataSize);
-
- // Create c-style equivalent object
- xsdc__hexBinary * pObjC = (xsdc__hexBinary *)axiscAxisNew(XSDC_HEXBINARY, hexDataSize);
-
- // populate c-style object with data from c++ object
- if (hexDataSize > 0)
- {
- memcpy(pObjC->__ptr, hexData, hexDataSize);
- pObjC->__ptr[hexDataSize] = '\0';
- }
-
- // Delete c++ object before returning c object
- delete pObjCpp;
- return pObjC;
+ return AxisObjectConverter::cppHexBinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1490,26 +1099,7 @@
{
xsd__base64Binary * pObjCpp = dz->getAttributeAsBase64Binary(pName, pNamespace);
- if (!pObjCpp)
- return (xsdc__base64Binary *)NULL;
-
- // Get info from c++ Object
- int base64BinaryDataSize;
- xsd__unsignedByte *base64BinaryData = pObjCpp->get(base64BinaryDataSize);
-
- // Create c-style equivalent object
- xsdc__base64Binary * pObjC = (xsdc__base64Binary *)axiscAxisNew(XSDC_BASE64BINARY, base64BinaryDataSize);
-
- // populate c-style object with data from c++ object
- if (base64BinaryDataSize > 0)
- {
- memcpy(pObjC->__ptr, base64BinaryData, base64BinaryDataSize);
- pObjC->__ptr[base64BinaryDataSize] = '\0';
- }
-
- // Delete c++ object before returning c object
- delete pObjCpp;
- return pObjC;
+ return AxisObjectConverter::cppBase64BinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1727,7 +1317,9 @@
try
{
- return (AxiscAnyType*)(dz->getAnyObject());
+ AnyType * pObjCpp = dz->getAnyObject();
+
+ return AxisObjectConverter::cppAnyTypeToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
Modified: webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp Mon Apr 24 20:40:37 2006
@@ -24,7 +24,6 @@
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/BasicNode.h>
#include <axis/SoapEnvVersions.h>
#include <axis/TypeMapping.h>
Modified: webservices/axis/trunk/c/src/cbindings/client/CallC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/client/CallC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/client/CallC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/client/CallC.cpp Mon Apr 24 20:40:37 2006
@@ -19,11 +19,11 @@
#include <axis/AxisException.hpp>
#include "../AxisObjectContainer.hpp"
+#include "../AxisObjectConverter.hpp"
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/SoapEnvVersions.h>
#include <axis/TypeMapping.h>
#include <axis/WSDDDefines.h>
@@ -1003,10 +1003,9 @@
try
{
- //TODO: Unimplemented
- xsdc__hexBinary * hb = new xsdc__hexBinary();
- memset(hb,0,sizeof(hb));
- return hb;
+ xsd__hexBinary * pObjCpp = dc->getElementAsHexBinary(pName, pNamespace);
+
+ return AxisObjectConverter::cppHexBinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1034,10 +1033,9 @@
try
{
- //TODO: Unimplemented
- xsdc__base64Binary * bb = new xsdc__base64Binary();
- memset(bb,0,sizeof(bb));
- return bb;
+ xsd__base64Binary * pObjCpp = c->getElementAsBase64Binary(pName, pNamespace);
+
+ return AxisObjectConverter::cppBase64BinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1624,10 +1622,9 @@
try
{
- //TODO: Unimplemented
- xsdc__hexBinary * hb = new xsdc__hexBinary();
- memset(hb,0,sizeof(hb));
- return hb;
+ xsd__hexBinary * pObjCpp = c->getAttributeAsHexBinary(pName, pNamespace);
+
+ return AxisObjectConverter::cppHexBinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1655,10 +1652,9 @@
try
{
- //TODO: Unimplemented
- xsdc__base64Binary *bb = new xsdc__base64Binary();
- memset(bb,0,sizeof(bb));
- return bb;
+ xsd__base64Binary * pObjCpp = c->getAttributeAsBase64Binary(pName, pNamespace);
+
+ return AxisObjectConverter::cppBase64BinaryToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
@@ -1834,15 +1830,16 @@
try
{
Axis_Array ObjArray;
- Axis_Array *pObjArray = NULL;
+ Axis_Array *pObjArray;
if (pArray)
- {
ObjArray.set(pArray->m_Array, pArray->m_Size, (XSDTYPE)pArray->m_Type);
- pObjArray = &ObjArray;
- }
- c->getCmplxArray(&ObjArray, pDZFunct, pCreFunct,pDelFunct,pSizeFunct, pName, pNamespace);
+ pObjArray = c->getCmplxArray(&ObjArray,
+ pDZFunct, pCreFunct,pDelFunct,pSizeFunct,
+ pName, pNamespace);
+
+ return AxisObjectConverter::cppArrayToC(pObjArray, pArray, false);
}
catch ( AxisException& e )
{
@@ -1871,9 +1868,9 @@
try
{
- //TODO: Unimplemented
- Axisc_Array* aa = (Axisc_Array *)NULL;
- return aa;
+ Axis_Array *pObjArray = c->getBasicArray(nType, pName, pNamespace);
+
+ return AxisObjectConverter::cppArrayToC(pObjArray, NULL, true);
}
catch ( AxisException& e )
{
@@ -2008,7 +2005,9 @@
try
{
- return (AxiscAnyType*)(c->getAnyObject());
+ AnyType * pObjCpp = c->getAnyObject();
+
+ return AxisObjectConverter::cppAnyTypeToC(pObjCpp, NULL, true);
}
catch ( AxisException& e )
{
Modified: webservices/axis/trunk/c/src/cbindings/client/StubC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/client/StubC.cpp?rev=396765&r1=396764&r2=396765&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/client/StubC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/client/StubC.cpp Mon Apr 24 20:40:37 2006
@@ -23,7 +23,6 @@
#include <axis/Axis.h>
#include <axis/GDefine.h>
#include <axis/AxisUserAPI.h>
-#include <axis/AxisUserAPIArrays.h>
#include <axis/client/Stub.h>
AXIS_CPP_NAMESPACE_START