You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2006/06/13 01:42:42 UTC

svn commit: r413768 - in /webservices/axis/trunk/c: include/axis/Axis.h src/cbindings/AxisC.cpp src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java

Author: nadiramra
Date: Mon Jun 12 16:42:41 2006
New Revision: 413768

URL: http://svn.apache.org/viewvc?rev=413768&view=rev
Log:
C support fixes/enhancements. Create new APIs to allocate/deallocate c-type arrays. Needed in
stub allocation and cleanup of objects.

Modified:
    webservices/axis/trunk/c/include/axis/Axis.h
    webservices/axis/trunk/c/src/cbindings/AxisC.cpp
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java
    webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java

Modified: webservices/axis/trunk/c/include/axis/Axis.h
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/include/axis/Axis.h?rev=413768&r1=413767&r2=413768&view=diff
==============================================================================
--- webservices/axis/trunk/c/include/axis/Axis.h (original)
+++ webservices/axis/trunk/c/include/axis/Axis.h Mon Jun 12 16:42:41 2006
@@ -85,12 +85,34 @@
  * storage required by the client for basic types must use this 
  * function in order that it may be freed by proxy code or the Axis engine.
  * 
+ * @param type The XSDTYPE of the storage to be allocated.
  * @param size - size of storage to be allocated
  * @return pointer to allocated storage
  */
 AXISC_STORAGE_CLASS_INFO 
 void * axiscAxisNew(AXISC_XSDTYPE type, 
                     int size);
+
+/**
+ * Deletes storage allocated by the Axis engine representing a C-type array. 
+ * This is an internal API used by the generated stubs. The elements in array are
+ * the responsibility of the stubs to clean up.
+ * 
+ * @param pValue Pointer to storage to be reclaimed
+ * @return AXISC_SUCCESS or AXISC_FAIL to indicate success or fail
+ */
+AXISC_STORAGE_CLASS_INFO 
+int axiscAxisDeleteCArray(void ** pValue);
+
+/**
+ * Allocates storage to be used by stubs.  The storage is a C-type array.
+ * This is an internal API used by the generated stubs.
+ * 
+ * @param size - size of array to be allocated
+ * @return pointer to allocated storage
+ */
+AXISC_STORAGE_CLASS_INFO 
+void ** axiscAxisNewCArray(int size);
 
 /**
  * Registers a function that will be invoked to handle Axis engine

Modified: webservices/axis/trunk/c/src/cbindings/AxisC.cpp
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/cbindings/AxisC.cpp?rev=413768&r1=413767&r2=413768&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/cbindings/AxisC.cpp (original)
+++ webservices/axis/trunk/c/src/cbindings/AxisC.cpp Mon Jun 12 16:42:41 2006
@@ -421,6 +421,25 @@
     return retVal;
 }
 
+
+AXISC_STORAGE_CLASS_INFO 
+int axiscAxisDeleteCArray(void ** pValue)
+{
+    delete [] pValue;
+}
+
+
+AXISC_STORAGE_CLASS_INFO 
+void ** axiscAxisNewCArray(int size)
+{
+    if (size > 0)
+        return new void *[size];
+    else
+        return (void **)NULL;
+}
+
+
+
 AXISC_STORAGE_CLASS_INFO 
 void axiscAxisRegisterExceptionHandler( AXIS_EXCEPTION_HANDLER_FUNCT fp )
 {

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java?rev=413768&r1=413767&r2=413768&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/ArrayParamWriter.java Mon Jun 12 16:42:41 2006
@@ -182,8 +182,11 @@
             
             writer.write("\t/* Reclaim memory resources of array elements, if it exists */\n");
             writer.write("\tif (param->m_Array && param->m_Size > 0)\n");
+            writer.write("\t{\n");            
             writer.write("\t\tAxis_Delete_" +  attribs[0].getTypeName() 
                     + "((" + attribs[0].getTypeName() + " *)param->m_Array, param->m_Size);\n");
+            writer.write("\t\tparam->m_Array = NULL;\n");            
+            writer.write("\t}\n");                     
             writer.write("\n");
             
             writer.write("\t/* Reclaim array data type memory resources */\n");

Modified: webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java?rev=413768&r1=413767&r2=413768&view=diff
==============================================================================
--- webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java (original)
+++ webservices/axis/trunk/c/src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java Mon Jun 12 16:42:41 2006
@@ -754,7 +754,7 @@
         writer.write("\t{\n");
         writer.write("\t\tint i;\n");        
         writer.write("\t\t" + classname + "** pNew = (" + 
-                classname + "**) malloc(sizeof(" + classname + "*)*nSize);\n");
+                classname + "**) axiscAxisNewCArray(nSize);\n");
         writer.write("\t\tfor (i=0; i < nSize; ++i)\n");
         writer.write("\t\t\tpNew[i] = (" + classname + "*)Axis_Create_" + classname + "(0);\n");
         writer.write("\t\treturn (void *)pNew;\n");
@@ -840,7 +840,7 @@
         writer.write("\t\tfor (i = 0 ; i < nSize ; i++ )\n");
         writer.write("\t\t\tif (paramArray[i])\n");
         writer.write("\t\t\t\tAxis_Delete_" + classname + "(paramArray[i],0);\n");
-        writer.write("\t\tfree(param);\n");
+        writer.write("\t\taxiscAxisDeleteCArray((void **)param);\n");
         writer.write("\t}\n");
         
         writer.write("\telse\n");



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org