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/10 07:18:50 UTC

svn commit: r392889 - in /webservices/axis/trunk/c: include/axis/ src/cbindings/ src/cbindings/client/

Author: nadiramra
Date: Sun Apr  9 22:18:47 2006
New Revision: 392889

URL: http://svn.apache.org/viewcvs?rev=392889&view=rev
Log:
C support fixes/enhancements.

Modified:
    webservices/axis/trunk/c/include/axis/TypeMapping.h
    webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp
    webservices/axis/trunk/c/src/cbindings/IAttributeC.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/include/axis/TypeMapping.h
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/include/axis/TypeMapping.h?rev=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/include/axis/TypeMapping.h (original)
+++ webservices/axis/trunk/c/include/axis/TypeMapping.h Sun Apr  9 22:18:47 2006
@@ -34,21 +34,21 @@
 #endif
 
 typedef enum XSDCTYPETag 
-{ XSDC__UNKNOWN=1, XSDC__INT, XSDC__FLOAT, XSDC__STRING, XSDC__LONG, XSDC__SHORT, \
-                XSDC__BYTE, XSDC__UNSIGNEDLONG, \
-                XSDC__BOOLEAN, XSDC__UNSIGNEDINT, XSDC__UNSIGNEDSHORT, \
-                XSDC__UNSIGNEDBYTE, \
-                XSDC__DOUBLE, XSDC__DECIMAL, XSDC__DURATION, \
-                XSDC__DATETIME, XSDC__TIME, XSDC__DATE, \
-                XSDC__GYEARMONTH, XSDC__GYEAR, XSDC__GMONTHDAY, XSDC__GDAY, \
-                XSDC__GMONTH, XSDC__HEXBINARY, \
-                XSDC__BASE64BINARY, XSDC__ANYURI, XSDC__QNAME,  XSDC__NOTATION, \
-                XSDC__INTEGER, \
-                XSDC__ARRAY, C_USER_TYPE,  XSDC__NMTOKEN, XSDC__ANY, XSDC__NONNEGATIVEINTEGER, \
-                XSDC__POSITIVEINTEGER, XSDC__NONPOSITIVEINTEGER, XSDC__NEGATIVEINTEGER, \
-                XSDC__NORMALIZEDSTRING, XSDC__TOKEN, XSDC__LANGUAGE, XSDC__NAME, \
-                XSDC__NCNAME, XSDC__ID, XSDC__IDREF, XSDC__IDREFS, XSDC__ENTITY, \
-                XSDC__ENTITIES, XSDC_NMTOKENS, C_ATTACHMENT \
+{ XSDC_UNKNOWN=1, XSDC_INT, XSDC_FLOAT, XSDC_STRING, XSDC_LONG, XSDC_SHORT, \
+                XSDC_BYTE, XSDC_UNSIGNEDLONG, \
+                XSDC_BOOLEAN, XSDC_UNSIGNEDINT, XSDC_UNSIGNEDSHORT, \
+                XSDC_UNSIGNEDBYTE, \
+                XSDC_DOUBLE, XSDC_DECIMAL, XSDC_DURATION, \
+                XSDC_DATETIME, XSDC_TIME, XSDC_DATE, \
+                XSDC_GYEARMONTH, XSDC_GYEAR, XSDC_GMONTHDAY, XSDC_GDAY, \
+                XSDC_GMONTH, XSDC_HEXBINARY, \
+                XSDC_BASE64BINARY, XSDC_ANYURI, XSDC_QNAME,  XSDC_NOTATION, \
+                XSDC_INTEGER, \
+                XSDC_ARRAY, C_USER_TYPE,  XSDC_NMTOKEN, XSDC_ANY, XSDC_NONNEGATIVEINTEGER, \
+                XSDC_POSITIVEINTEGER, XSDC_NONPOSITIVEINTEGER, XSDC_NEGATIVEINTEGER, \
+                XSDC_NORMALIZEDSTRING, XSDC_TOKEN, XSDC_LANGUAGE, XSDC_NAME, \
+                XSDC_NCNAME, XSDC_ID, XSDC_IDREF, XSDC_IDREFS, XSDC_ENTITY, \
+                XSDC_ENTITIES, XSDC_NMTOKENS, C_ATTACHMENT \
 } AXISC_XSDTYPE;
 
 /**

Modified: webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp?rev=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/BasicNodeC.cpp Sun Apr  9 22:18:47 2006
@@ -19,13 +19,15 @@
 
 #include "AxisObjectContainer.hpp"
 
-AXIS_CPP_NAMESPACE_USE
-
-extern "C" {
 #include <axis/Axis.h>
 #include <axis/GDefine.h>
 #include <axis/AxisUserAPI.h>
+#include <axis/AxisUserAPIArrays.h>
 #include <axis/BasicNode.h>
+
+AXIS_CPP_NAMESPACE_USE
+
+extern "C" {
 
 AXISC_STORAGE_CLASS_INFO 
 AXISCHANDLE axiscGetAttribute(AXISCHANDLE basicNode, 

Modified: webservices/axis/trunk/c/src/cbindings/IAttributeC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IAttributeC.cpp?rev=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IAttributeC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IAttributeC.cpp Sun Apr  9 22:18:47 2006
@@ -20,12 +20,13 @@
 
 #include "AxisObjectContainer.hpp"
 
-AXIS_CPP_NAMESPACE_USE
-
-extern "C" {
 #include <axis/Axis.h>
 #include <axis/GDefine.h>
 #include <axis/IAttribute.h>
+
+AXIS_CPP_NAMESPACE_USE
+
+extern "C" {
 
 AXISC_STORAGE_CLASS_INFO 
 void axiscDestroyIAttribute(AXISCHANDLE attribute) 

Modified: webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp?rev=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IHeaderBlockC.cpp Sun Apr  9 22:18:47 2006
@@ -20,15 +20,17 @@
 
 #include "AxisObjectContainer.hpp"
 
-AXIS_CPP_NAMESPACE_USE
-
-extern "C" {
 #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>
+
+AXIS_CPP_NAMESPACE_USE
+
+extern "C" {
 
 AXISC_STORAGE_CLASS_INFO 
 AXISCHANDLE axiscCreateNamespaceDeclINamespace(AXISCHANDLE headerBlock, 

Modified: webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp?rev=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IWrapperSoapDeSerializerC.cpp Sun Apr  9 22:18:47 2006
@@ -20,17 +20,348 @@
 
 #include "AxisObjectContainer.hpp"
 
-AXIS_CPP_NAMESPACE_USE
-
-extern "C" {
 #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>
 #include <axis/IWrapperSoapDeSerializer.h>
 
+AXIS_CPP_NAMESPACE_USE
+
+extern "C" {
+
+
+// Following helper function will create a C-binding type of array from a 
+// C++ array
+static Axisc_Array *generateCBindingArray(Axis_Array*objArray, bool deleteObjArray=false)
+{  
+    // Allocate cbinding array and initialize
+    Axisc_Array *c_array = new Axisc_Array();
+    memset(c_array, 0, sizeof(Axisc_Array));
+    
+    // If nothing to transform, return
+    if (objArray == NULL)
+        return c_array;
+    
+    // Get object array stuff
+    XSDTYPE m_Type;
+    int     m_Size;
+    void ** m_Array = objArray->get(m_Size, m_Type);
+    
+    c_array->m_Size = m_Size;
+    c_array->m_Type = (AXISC_XSDTYPE)m_Type;
+    
+    // Now generate the array
+    if (m_Array != NULL && m_Size > 0)
+    {
+        c_array->m_Array = new void*[m_Size];
+        
+        for (int count = 0 ; count < m_Size ; count++)
+        {
+            if ( m_Array[count] == NULL)
+            {
+                c_array->m_Array[count] = NULL;
+                continue;
+            }
+    
+            switch (m_Type)
+            {
+                case XSD_DURATION:
+                {
+                    ((xsd__duration**) c_array->m_Array)[count] = new xsd__duration();
+                    *((xsd__duration**)c_array->m_Array)[count] = *((xsd__duration**) m_Array)[count];
+                    break;
+                }
+                case XSD_DATETIME:
+                {
+                    ((xsd__dateTime**) c_array->m_Array)[count] = new xsd__dateTime();
+                    *((xsd__dateTime**)c_array->m_Array)[count] = *((xsd__dateTime**) m_Array)[count];
+                    break;
+                }
+                case XSD_TIME:
+                {
+                    ((xsd__time**) c_array->m_Array)[count] = new xsd__time();
+                    *((xsd__time**)c_array->m_Array)[count] = *((xsd__time**) m_Array)[count];
+                    break;
+                }
+                case XSD_DATE:
+                {
+                    ((xsd__date**) c_array->m_Array)[count] = new xsd__date();
+                    *((xsd__date**)c_array->m_Array)[count] = *((xsd__date**) m_Array)[count];
+                    break;
+                }
+                case XSD_GYEARMONTH:
+                {
+                    ((xsd__gYearMonth**) c_array->m_Array)[count] = new xsd__gYearMonth();
+                    *((xsd__gYearMonth**)c_array->m_Array)[count] = *((xsd__gYearMonth**) m_Array)[count];
+                    break;
+                }           
+                case XSD_GYEAR:
+                {
+                    ((xsd__gYear**) c_array->m_Array)[count] = new xsd__gYear();
+                    *((xsd__gYear**)c_array->m_Array)[count] = *((xsd__gYear**) m_Array)[count];
+                    break;
+                }
+                case XSD_GMONTHDAY:
+                {
+                    ((xsd__gMonthDay**) c_array->m_Array)[count] = new xsd__gMonthDay();
+                    *((xsd__gMonthDay**)c_array->m_Array)[count] = *((xsd__gMonthDay**) m_Array)[count];
+                    break;
+                }
+                case XSD_GDAY:
+                {
+                    ((xsd__gDay**) c_array->m_Array)[count] = new xsd__gDay();
+                    *((xsd__gDay**)c_array->m_Array)[count] = *((xsd__gDay**) m_Array)[count];
+                    break;
+                }
+                case XSD_GMONTH:
+                {
+                    ((xsd__gMonth**) c_array->m_Array)[count] = new xsd__gMonth();
+                    *((xsd__gMonth**)c_array->m_Array)[count] = *((xsd__gMonth**) m_Array)[count];
+                    break;
+                }
+                case XSD_STRING:
+                {
+                    ((xsd__string*) c_array->m_Array)[count] = new char[strlen(((xsd__string*) m_Array)[count])+1];
+                    strcpy(((xsd__string*) c_array->m_Array)[count], ((xsd__string*) m_Array)[count]);
+                    break;
+                }
+                case XSD_NORMALIZEDSTRING:
+                {
+                    ((xsd__normalizedString*) c_array->m_Array)[count] = new char[strlen(((xsd__normalizedString*) m_Array)[count])+1];
+                    strcpy(((xsd__normalizedString*) c_array->m_Array)[count], ((xsd__normalizedString*) m_Array)[count]);
+                    break;
+                }
+                case XSD_TOKEN:
+                {
+                    ((xsd__token*) c_array->m_Array)[count] = new char[strlen(((xsd__token*) m_Array)[count])+1];
+                    strcpy(((xsd__token*) c_array->m_Array)[count], ((xsd__token*) m_Array)[count]);
+                    break;
+                }
+                case XSD_LANGUAGE:
+                {
+                    ((xsd__language*) c_array->m_Array)[count] = new char[strlen(((xsd__language*) m_Array)[count])+1];
+                    strcpy(((xsd__language*) c_array->m_Array)[count], ((xsd__language*) m_Array)[count]);
+                    break;
+                }
+                case XSD_NAME:
+                {
+                    ((xsd__Name*) c_array->m_Array)[count] = new char[strlen(((xsd__Name*) m_Array)[count])+1];
+                    strcpy(((xsd__Name*) c_array->m_Array)[count], ((xsd__Name*) m_Array)[count]);
+                    break;
+                }
+                case XSD_NCNAME:
+                {
+                    ((xsd__NCName*) c_array->m_Array)[count] = new char[strlen(((xsd__NCName*) m_Array)[count])+1];
+                    strcpy(((xsd__NCName*) c_array->m_Array)[count], ((xsd__NCName*) m_Array)[count]);
+                    break;
+                }
+                case XSD_ID:
+                {
+                    ((xsd__ID*) c_array->m_Array)[count] = new char[strlen(((xsd__ID*) m_Array)[count])+1];
+                    strcpy(((xsd__ID*) c_array->m_Array)[count], ((xsd__ID*) m_Array)[count]);
+                    break;
+                }
+                case XSD_IDREF:
+                {
+                    ((xsd__IDREF*) c_array->m_Array)[count] = new char[strlen(((xsd__IDREF*) m_Array)[count])+1];
+                    strcpy(((xsd__IDREF*) c_array->m_Array)[count], ((xsd__IDREF*) m_Array)[count]);
+                    break;
+                }
+                case XSD_IDREFS:
+                {
+                    ((xsd__IDREFS*) c_array->m_Array)[count] = new char[strlen(((xsd__IDREFS*) m_Array)[count])+1];
+                    strcpy(((xsd__IDREFS*) c_array->m_Array)[count], ((xsd__IDREFS*) m_Array)[count]);
+                    break;
+                }
+                case XSD_ENTITY:
+                {
+                    ((xsd__ENTITY*) c_array->m_Array)[count] = new char[strlen(((xsd__ENTITY*) m_Array)[count])+1];
+                    strcpy(((xsd__ENTITY*) c_array->m_Array)[count], ((xsd__ENTITY*) m_Array)[count]);
+                    break;
+                }
+                case XSD_ENTITIES:
+                {
+                    ((xsd__ENTITIES*) c_array->m_Array)[count] = new char[strlen(((xsd__ENTITIES*) m_Array)[count])+1];
+                    strcpy(((xsd__ENTITIES*) c_array->m_Array)[count], ((xsd__ENTITIES*) m_Array)[count]);
+                    break;
+                }
+                case XSD_NMTOKEN:
+                {
+                    ((xsd__NMTOKEN*) c_array->m_Array)[count] = new char[strlen(((xsd__NMTOKEN*) m_Array)[count])+1];
+                    strcpy(((xsd__NMTOKEN*) c_array->m_Array)[count], ((xsd__NMTOKEN*) m_Array)[count]);
+                    break;
+                }
+                case XSD_NMTOKENS:
+                {
+                    ((xsd__NMTOKENS*) c_array->m_Array)[count] = new char[strlen(((xsd__NMTOKENS*) m_Array)[count])+1];
+                    strcpy(((xsd__NMTOKENS*) c_array->m_Array)[count], ((xsd__NMTOKENS*) m_Array)[count]);
+                    break;
+                }
+                case XSD_BOOLEAN:
+                {
+                    ((xsd__boolean**) c_array->m_Array)[count] = new xsd__boolean();
+                    *((xsd__boolean**)c_array->m_Array)[count] = *((xsd__boolean**) m_Array)[count];
+                    break;
+                }
+                case XSD_BASE64BINARY:
+                {
+                    // TODO
+                    ((xsd__base64Binary**) c_array->m_Array)[count] = new xsd__base64Binary();
+                    *((xsd__base64Binary**)c_array->m_Array)[count] = *((xsd__base64Binary**) m_Array)[count];
+                    break;
+                }
+                case XSD_HEXBINARY:
+                {
+                    // TODO
+                    ((xsd__hexBinary**) c_array->m_Array)[count] = new xsd__hexBinary();
+                    *((xsd__hexBinary**)c_array->m_Array)[count] = *((xsd__hexBinary**) m_Array)[count];
+                    break;
+                }
+                case XSD_FLOAT:
+                {
+                    ((xsd__float**) c_array->m_Array)[count] = new xsd__float();
+                    *((xsd__float**)c_array->m_Array)[count] = *((xsd__float**) m_Array)[count];
+                    break;
+                }
+                case XSD_DECIMAL:
+                {
+                    ((xsd__decimal**) c_array->m_Array)[count] = new xsd__decimal();
+                    *((xsd__decimal**)c_array->m_Array)[count] = *((xsd__decimal**) m_Array)[count];
+                    break;
+                }
+                case XSD_INTEGER:
+                {
+                    ((xsd__integer**) c_array->m_Array)[count] = new xsd__integer();
+                    *((xsd__integer**)c_array->m_Array)[count] = *((xsd__integer**) m_Array)[count];
+                    break;
+                }
+                case XSD_NONPOSITIVEINTEGER:
+                {
+                    ((xsd__nonPositiveInteger**) c_array->m_Array)[count] = new xsd__nonPositiveInteger();
+                    *((xsd__nonPositiveInteger**)c_array->m_Array)[count] = *((xsd__nonPositiveInteger**) m_Array)[count];
+                    break;
+                }
+                case XSD_NEGATIVEINTEGER:
+                {
+                    ((xsd__negativeInteger**) c_array->m_Array)[count] = new xsd__negativeInteger();
+                    *((xsd__negativeInteger**)c_array->m_Array)[count] = *((xsd__negativeInteger**) m_Array)[count];
+                    break;
+                }
+                case XSD_LONG:
+                {
+                    ((xsd__long**) c_array->m_Array)[count] = new xsd__long();
+                    *((xsd__long**)c_array->m_Array)[count] = *((xsd__long**) m_Array)[count];
+                    break;
+                }
+                case XSD_INT:
+                {
+                    ((xsd__int**) c_array->m_Array)[count] = new xsd__int();
+                    *((xsd__int**)c_array->m_Array)[count] = *((xsd__int**) m_Array)[count];
+                    break;
+                }
+                case XSD_SHORT:
+                {
+                    ((xsd__short**) c_array->m_Array)[count] = new xsd__short();
+                    *((xsd__short**)c_array->m_Array)[count] = *((xsd__short**) m_Array)[count];
+                    break;
+                }
+                case XSD_BYTE:
+                {
+                    ((xsd__byte**) c_array->m_Array)[count] = new xsd__byte();
+                    *((xsd__byte**)c_array->m_Array)[count] = *((xsd__byte**) m_Array)[count];
+                    break;
+                }
+                case XSD_NONNEGATIVEINTEGER:
+                {
+                    ((xsd__nonNegativeInteger**) c_array->m_Array)[count] = new xsd__nonNegativeInteger();
+                    *((xsd__nonNegativeInteger**)c_array->m_Array)[count] = *((xsd__nonNegativeInteger**) m_Array)[count];
+                    break;
+                }
+                case XSD_UNSIGNEDLONG:
+                {
+                    ((xsd__unsignedLong**) c_array->m_Array)[count] = new xsd__unsignedLong();
+                    *((xsd__unsignedLong**)c_array->m_Array)[count] = *((xsd__unsignedLong**) m_Array)[count];
+                    break;
+                }
+                case XSD_UNSIGNEDINT:
+                {
+                    ((xsd__unsignedInt**) c_array->m_Array)[count] = new xsd__unsignedInt();
+                    *((xsd__unsignedInt**)c_array->m_Array)[count] = *((xsd__unsignedInt**) m_Array)[count];
+                    break;
+                }
+                case XSD_UNSIGNEDSHORT:
+                {
+                    ((xsd__unsignedShort**) c_array->m_Array)[count] = new xsd__unsignedShort();
+                    *((xsd__unsignedShort**)c_array->m_Array)[count] = *((xsd__unsignedShort**) m_Array)[count];
+                    break;
+                }
+                case XSD_UNSIGNEDBYTE:
+                {
+                    ((xsd__unsignedByte**) c_array->m_Array)[count] = new xsd__unsignedByte();
+                    *((xsd__unsignedByte**)c_array->m_Array)[count] = *((xsd__unsignedByte**) m_Array)[count];
+                    break;
+                }
+                case XSD_POSITIVEINTEGER:
+                {
+                    ((xsd__positiveInteger**) c_array->m_Array)[count] = new xsd__positiveInteger();
+                    *((xsd__positiveInteger**)c_array->m_Array)[count] = *((xsd__positiveInteger**) m_Array)[count];
+                    break;
+                }
+                case XSD_DOUBLE:
+                {
+                    ((xsd__double**) c_array->m_Array)[count] = new xsd__double();
+                    *((xsd__double**)c_array->m_Array)[count] = *((xsd__double**) m_Array)[count];
+                    break;
+                }
+                case XSD_ANYURI:
+                {
+                    ((xsd__anyURI*) c_array->m_Array)[count] = new char[strlen(((xsd__anyURI*) m_Array)[count])+1];
+                    strcpy(((xsd__anyURI*) c_array->m_Array)[count], ((xsd__anyURI*) m_Array)[count]);
+                    break;
+                }
+                case XSD_QNAME:
+                {
+                    ((xsd__QName*) c_array->m_Array)[count] = new char[strlen(((xsd__QName*) m_Array)[count])+1];
+                    strcpy(((xsd__QName*) c_array->m_Array)[count], ((xsd__QName*) m_Array)[count]);
+                    break;
+                }
+                case XSD_NOTATION:
+                {
+                    ((xsd__NOTATION*) c_array->m_Array)[count] = new char[strlen(((xsd__NOTATION*) m_Array)[count])+1];
+                    strcpy(((xsd__NOTATION*) c_array->m_Array)[count], ((xsd__NOTATION*) m_Array)[count]);
+                    break;
+                }
+                case XSD_ARRAY:
+                {
+                    // TODO
+                    ((Axis_Array**) c_array->m_Array)[count] = new Axis_Array(*((Axis_Array**) m_Array)[count]);
+                    break;
+                }
+                case USER_TYPE:
+                {
+                    c_array->m_Array[count] = m_Array[count];
+                    break;
+                }
+                case XSD_UNKNOWN:
+                case XSD_ANY:
+                case ATTACHMENT:
+                default:
+                    break;
+            } // end switch
+        } // end for loop
+    }
+    
+    return c_array;
+}
+
+
+
+
+
+
 AXISC_STORAGE_CLASS_INFO 
 void axiscDestroyIWrapperSoapDeSerializer(AXISCHANDLE wrapperSoapDeSerializer) 
 {
@@ -137,10 +468,8 @@
 
     try
     {
-        // TODO: not implemented
-        Axisc_Array* aa = new Axisc_Array();
-        memset(aa,0,sizeof(aa));
-        return aa;
+        Axis_Array* pObjArray = dz->getBasicArray((XSDTYPE)nType, pName, pNamespace);
+        return generateCBindingArray(pObjArray, 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=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/IWrapperSoapSerializerC.cpp Sun Apr  9 22:18:47 2006
@@ -21,17 +21,19 @@
 #include "../soap/SoapSerializer.h"
 #include "AxisObjectContainer.hpp"
 
-AXIS_CPP_NAMESPACE_USE
-
-extern "C" {
 #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>
 #include <axis/WSDDDefines.h>
 #include <axis/IWrapperSoapSerializer.h>
+
+AXIS_CPP_NAMESPACE_USE
+
+extern "C" {
 
 AXISC_STORAGE_CLASS_INFO 
 void axiscDestroyIWrapperSoapSerializer(AXISCHANDLE wrapperSoapSerializer) 

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=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/client/CallC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/client/CallC.cpp Sun Apr  9 22:18:47 2006
@@ -20,17 +20,19 @@
 
 #include "../AxisObjectContainer.hpp"
 
-AXIS_CPP_NAMESPACE_USE
-
-extern "C" {
 #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>
 #include <axis/client/Call.h>
 
+AXIS_CPP_NAMESPACE_USE
+
+extern "C" {
+
 AXISC_STORAGE_CLASS_INFO 
 AXISCHANDLE axiscCreateCall() 
 {
@@ -1831,9 +1833,9 @@
     
     try
     {
-        //TODO: Unimplemented
-        Axisc_Array* aa = (Axisc_Array *)NULL;
-        return aa;
+    	Axis_Array ObjArray;
+    	ObjArray.set(pArray->m_Array, pArray->m_Size, (XSDTYPE)pArray->m_Type);
+    	c->getCmplxArray(&ObjArray, pDZFunct, pCreFunct,pDelFunct,pSizeFunct, pName, pNamespace); 
     }
     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=392889&r1=392888&r2=392889&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/client/StubC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/client/StubC.cpp Sun Apr  9 22:18:47 2006
@@ -20,6 +20,12 @@
 
 #include "../AxisObjectContainer.hpp"
 
+#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
 class StubC : Stub
 {
@@ -36,11 +42,6 @@
 AXIS_CPP_NAMESPACE_USE
 
 extern "C" {
-#include <axis/Axis.h>
-#include <axis/GDefine.h>
-#include <axis/AxisUserAPI.h>
-#include <axis/client/Stub.h>
-
 
 AXISC_STORAGE_CLASS_INFO 
 AXISCHANDLE axiscCreateStub(const char * pcEndPointURI,