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