private void writeDeleteGlobalMethod()

in src/wsdl/org/apache/axis/wsdl/wsdl2ws/c/BeanParamWriter.java [886:983]


    private void writeDeleteGlobalMethod() throws IOException
    {
        CUtils.printMethodComment(c_writer, "Function used to delete objects of type " 
                + c_classname + ".");
        
        c_writer.write("void Axis_Delete_" + c_classname
                + "(" + c_classname + "* param, int nSize)\n");
        
        c_writer.write("{\n");
        c_writer.write("\t/* If NULL, just return */\n");
        c_writer.write("\tif (param == NULL)\n");
        c_writer.write("\t\treturn;\n");
        c_writer.write("\n");
        
        c_writer.write("\t/* Reclaim memory resources (recursion is used to reclaim arrays) */\n");
        c_writer.write("\tif (nSize > 0)\n");
        c_writer.write("\t{\n");
        c_writer.write("\t\tint i;\n");
        c_writer.write("\t\t" + c_classname + " **paramArray = (" + c_classname + " **)param;\n");
        c_writer.write("\t\tfor (i = 0 ; i < nSize ; i++ )\n");
        c_writer.write("\t\t\tif (paramArray[i])\n");
        c_writer.write("\t\t\t\tAxis_Delete_" + c_classname + "(paramArray[i],0);\n");
        c_writer.write("\t\taxiscAxisDeleteCArray((void **)param);\n");
        c_writer.write("\t}\n");
        
        c_writer.write("\telse\n");
        
        c_writer.write("\t{\n");
        int anyCounter = 0;
        
        for (int i = 0; i < attribs.length; i++)
        {
            if (attribs[i].isSimpleType() || attribs[i].getType().isSimpleType())
            {
                String passedInBaseType;
                String baseTypeName = null;
                
                if (!attribs[i].isSimpleType() && attribs[i].getType().isSimpleType())
                    baseTypeName = CUtils.getSimpleType(attribs[i].getType().getBaseType());
                else
                    baseTypeName = attribs[i].getTypeName();
                
                if (CUtils.getXSDEnumeratorForType( baseTypeName).equals("XSDC_HEXBINARY")
                        || CUtils.getXSDEnumeratorForType( baseTypeName).equals("XSDC_BASE64BINARY"))
                {
                    // need to delete the pointer
                    String dot = ".";
                    if (isElementNillable(i) || isElementOptional(i) 
                            || attribs[i].getChoiceElement() || attribs[i].getAllElement()) 
                        dot = "->";
                    
                    c_writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + dot + "__ptr != NULL)\n");                    
                    c_writer.write("\t\t\taxiscAxisDelete(param->" + attribs[i].getParamNameAsMember() 
                            + dot + "__ptr, XSDC_UNSIGNEDBYTE);\n");
                    c_writer.write("\n");
                }
                else if (CUtils.isPointerType(attribs[i].getTypeName()) || attribs[i].isArray()
                        || isElementNillable(i) || isElementOptional(i) 
                        || attribs[i].getChoiceElement() || attribs[i].getAllElement())
                {                    
                    if (attribs[i].isArray())
                        passedInBaseType = "XSDC_ARRAY";
                    else
                        passedInBaseType = CUtils.getXSDEnumeratorForType(baseTypeName);
                                    
                    c_writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + " != NULL)\n");
                    c_writer.write("\t\t\taxiscAxisDelete(param->" + attribs[i].getParamNameAsMember() 
                            + "," + passedInBaseType + ");\n");
                    c_writer.write("\n");
                }
            }
            else if (attribs[i].isAnyElement())
            {
                anyCounter += 1;
                String fieldName  = "any" + Integer.toString(anyCounter);
                
                c_writer.write("\t\tif (param->" + fieldName + " != NULL)\n");
                c_writer.write("\t\t\taxiscAxisDelete(param->" + fieldName + ", XSDC_ANY);\n");               
            }
            else
            {                
                c_writer.write("\t\tif (param->" + attribs[i].getParamNameAsMember() + ")\n");
                
                if (attribs[i].isArray())
                    c_writer.write("\t\t\tAxis_Delete_" 
                            + CUtils.sanitizeString(CUtils.getArrayNameForType(attribs[i].getTypeName()))  
                            + "(param->" + attribs[i].getParamNameAsMember() + ", 0);\n");  
                else
                    c_writer.write("\t\t\tAxis_Delete_" + CUtils.sanitizeString(attribs[i].getTypeName()) 
                            + "(param->" + attribs[i].getParamNameAsMember() + ", 0);\n");     
            }
        }
        
        c_writer.write("\t\tfree(param);\n");
        c_writer.write("\t}\n");
        
        c_writer.write("}\n");
    }