void Axis_Array::addElement()

in src/common/AxisUserAPI.cpp [520:827]


void Axis_Array::addElement(void* element)
{
    void** temp = new void*[m_Size+1];
    for (int count = 0 ; count < m_Size ; count++ )
        temp[count] = m_Array[count];

    if (m_Array != NULL)
        delete [] m_Array;

    m_Array = temp;
    m_belongsToAxisEngine = true;
 
    if ( element == NULL)
        m_Array[m_Size] = NULL;
    else
    {
        switch (m_Type)
        {
            case XSD_STRING:
            {
                ((xsd__string*) m_Array)[m_Size] = new char[strlen((xsd__string) element)+1];
                strcpy(((xsd__string*) m_Array)[m_Size], (xsd__string) element);
                break;
            }
            case XSD_DURATION:
            {
                ((xsd__duration**) m_Array)[m_Size] = new xsd__duration();
                *((xsd__duration**)m_Array)[m_Size] = *(xsd__duration*) element;
                break;
            }
            case XSD_DATETIME:
            {
                ((xsd__dateTime**) m_Array)[m_Size] = new xsd__dateTime();
                *((xsd__dateTime**)m_Array)[m_Size] = *(xsd__dateTime*) element;
                break;
            }
            case XSD_TIME:
            {
                ((xsd__time**) m_Array)[m_Size] = new xsd__time();
                *((xsd__time**)m_Array)[m_Size] = *(xsd__time*) element;
                break;
            }
            case XSD_DATE:
            {
                ((xsd__date**) m_Array)[m_Size] = new xsd__date();
                *((xsd__date**)m_Array)[m_Size] = *(xsd__date*) element;
                break;
            }
            case XSD_GYEARMONTH:
            {
                ((xsd__gYearMonth**) m_Array)[m_Size] = new xsd__gYearMonth();
                *((xsd__gYearMonth**)m_Array)[m_Size] = *(xsd__gYearMonth*) element;
                break;
            }           
            case XSD_GYEAR:
            {
                ((xsd__gYear**) m_Array)[m_Size] = new xsd__gYear();
                *((xsd__gYear**)m_Array)[m_Size] = *(xsd__gYear*) element;
                break;
            }
            case XSD_GMONTHDAY:
            {
                ((xsd__gMonthDay**) m_Array)[m_Size] = new xsd__gMonthDay();
                *((xsd__gMonthDay**)m_Array)[m_Size] = *(xsd__gMonthDay*) element;
                break;
            }
            case XSD_GDAY:
            {
                ((xsd__gDay**) m_Array)[m_Size] = new xsd__gDay();
                *((xsd__gDay**)m_Array)[m_Size] = *(xsd__gDay*) element;
                break;
            }
            case XSD_GMONTH:
            {
                ((xsd__gMonth**) m_Array)[m_Size] = new xsd__gMonth();
                *((xsd__gMonth**)m_Array)[m_Size] = *(xsd__gMonth*) element;
                break;
            }

            case XSD_NORMALIZEDSTRING:
            {
                ((xsd__normalizedString*) m_Array)[m_Size] = new char[strlen((xsd__normalizedString) element)+1];
                strcpy(((xsd__normalizedString*) m_Array)[m_Size], (xsd__normalizedString) element);
                break;
            }
            case XSD_TOKEN:
            {
                ((xsd__token*) m_Array)[m_Size] = new char[strlen((xsd__token) element)+1];
                strcpy(((xsd__token*) m_Array)[m_Size], (xsd__token) element);
                break;
            }
            case XSD_LANGUAGE:
            {
                ((xsd__language*) m_Array)[m_Size] = new char[strlen((xsd__language) element)+1];
                strcpy(((xsd__language*) m_Array)[m_Size], (xsd__language) element);
                break;
            }
            case XSD_NAME:
            {
                ((xsd__Name*) m_Array)[m_Size] = new char[strlen((xsd__Name) element)+1];
                strcpy(((xsd__Name*) m_Array)[m_Size], (xsd__Name) element);
                break;
            }
            case XSD_NCNAME:
            {
                ((xsd__NCName*) m_Array)[m_Size] = new char[strlen((xsd__NCName) element)+1];
                strcpy(((xsd__NCName*) m_Array)[m_Size], (xsd__NCName) element);
                break;
            }
            case XSD_ID:
            {
                ((xsd__ID*) m_Array)[m_Size] = new char[strlen((xsd__ID) element)+1];
                strcpy(((xsd__ID*) m_Array)[m_Size], (xsd__ID) element);
                break;
            }
            case XSD_IDREF:
            {
                ((xsd__IDREF*) m_Array)[m_Size] = new char[strlen((xsd__IDREF) element)+1];
                strcpy(((xsd__IDREF*) m_Array)[m_Size], (xsd__IDREF) element);
                break;
            }
            case XSD_IDREFS:
            {
                ((xsd__IDREFS*) m_Array)[m_Size] = new char[strlen((xsd__IDREFS) element)+1];
                strcpy(((xsd__IDREFS*) m_Array)[m_Size], (xsd__IDREFS) element);
                break;
            }
            case XSD_ENTITY:
            {
                ((xsd__ENTITY*) m_Array)[m_Size] = new char[strlen((xsd__ENTITY) element)+1];
                strcpy(((xsd__ENTITY*) m_Array)[m_Size], (xsd__ENTITY) element);
                break;
            }
            case XSD_ENTITIES:
            {
                ((xsd__ENTITIES*) m_Array)[m_Size] = new char[strlen((xsd__ENTITIES) element)+1];
                strcpy(((xsd__ENTITIES*) m_Array)[m_Size], (xsd__ENTITIES) element);
                break;
            }
            case XSD_NMTOKEN:
            {
                ((xsd__NMTOKEN*) m_Array)[m_Size] = new char[strlen((xsd__NMTOKEN) element)+1];
                strcpy(((xsd__NMTOKEN*) m_Array)[m_Size], (xsd__NMTOKEN) element);
                break;
            }
            case XSD_NMTOKENS:
            {
                ((xsd__NMTOKENS*) m_Array)[m_Size] = new char[strlen((xsd__NMTOKENS) element)+1];
                strcpy(((xsd__NMTOKENS*) m_Array)[m_Size], (xsd__NMTOKENS) element);
                break;
            }
            case XSD_BOOLEAN:
            {
                ((xsd__boolean**) m_Array)[m_Size] = new xsd__boolean();
                *((xsd__boolean**)m_Array)[m_Size] = *(xsd__boolean*) element;
                break;
            }
            case XSD_BASE64BINARY:
            {
                ((xsd__base64Binary**) m_Array)[m_Size] = new xsd__base64Binary();
                *((xsd__base64Binary**)m_Array)[m_Size] = *(xsd__base64Binary*) element;
                break;
            }
            case XSD_HEXBINARY:
            {
                ((xsd__hexBinary**) m_Array)[m_Size] = new xsd__hexBinary();
                *((xsd__hexBinary**)m_Array)[m_Size] = *(xsd__hexBinary*) element;
                break;
            }
            case XSD_FLOAT:
            {
                ((xsd__float**) m_Array)[m_Size] = new xsd__float();
                *((xsd__float**)m_Array)[m_Size] = *(xsd__float*) element;
                break;
            }
            case XSD_DECIMAL:
            {
                ((xsd__decimal**) m_Array)[m_Size] = new xsd__decimal();
                *((xsd__decimal**)m_Array)[m_Size] = *(xsd__decimal*) element;
                break;
            }
            case XSD_INTEGER:
            {
                ((xsd__integer**) m_Array)[m_Size] = new xsd__integer();
                *((xsd__integer**)m_Array)[m_Size] = *(xsd__integer*) element;
                break;
            }
            case XSD_NONPOSITIVEINTEGER:
            {
                ((xsd__nonPositiveInteger**) m_Array)[m_Size] = new xsd__nonPositiveInteger();
                *((xsd__nonPositiveInteger**)m_Array)[m_Size] = *(xsd__nonPositiveInteger*) element;
                break;
            }
            case XSD_NEGATIVEINTEGER:
            {
                ((xsd__negativeInteger**) m_Array)[m_Size] = new xsd__negativeInteger();
                *((xsd__negativeInteger**)m_Array)[m_Size] = *(xsd__negativeInteger*) element;
                break;
            }
            case XSD_LONG:
            {
                ((xsd__long**) m_Array)[m_Size] = new xsd__long();
                *((xsd__long**)m_Array)[m_Size] = *(xsd__long*) element;
                break;
            }
            case XSD_INT:
            {
                ((xsd__int**) m_Array)[m_Size] = new xsd__int();
                *((xsd__int**)m_Array)[m_Size] = *(xsd__int*) element;
                break;
            }
            case XSD_SHORT:
            {
                ((xsd__short**) m_Array)[m_Size] = new xsd__short();
                *((xsd__short**)m_Array)[m_Size] = *(xsd__short*) element;
                break;
            }
            case XSD_BYTE:
            {
                ((xsd__byte**) m_Array)[m_Size] = new xsd__byte();
                *((xsd__byte**)m_Array)[m_Size] = *(xsd__byte*) element;
                break;
            }
            case XSD_NONNEGATIVEINTEGER:
            {
                ((xsd__nonNegativeInteger**) m_Array)[m_Size] = new xsd__nonNegativeInteger();
                *((xsd__nonNegativeInteger**)m_Array)[m_Size] = *(xsd__nonNegativeInteger*) element;
                break;
            }
            case XSD_UNSIGNEDLONG:
            {
                ((xsd__unsignedLong**) m_Array)[m_Size] = new xsd__unsignedLong();
                *((xsd__unsignedLong**)m_Array)[m_Size] = *(xsd__unsignedLong*) element;
                break;
            }
            case XSD_UNSIGNEDINT:
            {
                ((xsd__unsignedInt**) m_Array)[m_Size] = new xsd__unsignedInt();
                *((xsd__unsignedInt**)m_Array)[m_Size] = *(xsd__unsignedInt*) element;
                break;
            }
            case XSD_UNSIGNEDSHORT:
            {
                ((xsd__unsignedShort**) m_Array)[m_Size] = new xsd__unsignedShort();
                *((xsd__unsignedShort**)m_Array)[m_Size] = *(xsd__unsignedShort*) element;
                break;
            }
            case XSD_UNSIGNEDBYTE:
            {
                ((xsd__unsignedByte**) m_Array)[m_Size] = new xsd__unsignedByte();
                *((xsd__unsignedByte**)m_Array)[m_Size] = *(xsd__unsignedByte*) element;
                break;
            }
            case XSD_POSITIVEINTEGER:
            {
                ((xsd__positiveInteger**) m_Array)[m_Size] = new xsd__positiveInteger();
                *((xsd__positiveInteger**)m_Array)[m_Size] = *(xsd__positiveInteger*) element;
                break;
            }
            case XSD_DOUBLE:
            {
                ((xsd__double**) m_Array)[m_Size] = new xsd__double();
                *((xsd__double**)m_Array)[m_Size] = *(xsd__double*) element;
                break;
            }
            case XSD_ANYURI:
            {
                ((xsd__anyURI*) m_Array)[m_Size] = new char[strlen((xsd__anyURI) element)+1];
                strcpy(((xsd__anyURI*) m_Array)[m_Size], (xsd__anyURI) element);
                break;
            }
            case XSD_QNAME:
            {
                ((xsd__QName*) m_Array)[m_Size] = new char[strlen((xsd__QName) element)+1];
                strcpy(((xsd__QName*) m_Array)[m_Size], (xsd__QName) element);
                break;
            }
            case XSD_NOTATION:
            {
                ((xsd__NOTATION*) m_Array)[m_Size] = new char[strlen((xsd__NOTATION) element)+1];
                strcpy(((xsd__NOTATION*) m_Array)[m_Size], (xsd__NOTATION) element);
                break;
            }
            case XSD_ARRAY:
            {
                ((Axis_Array**) m_Array)[m_Size] = new Axis_Array(*(Axis_Array*) element);
                break;
            }
            case USER_TYPE:
            {
                m_Array[m_Size] = element;
                break;
            }
            case XSD_ANYTYPE:
            {
                ((xsd__anyType*) m_Array)[m_Size] = new char[strlen((xsd__anyType) element)+1];
                strcpy(((xsd__anyType*) m_Array)[m_Size], (xsd__anyType) element);
                break;
            }
            case XSD_UNKNOWN:
            case XSD_ANY:
            case ATTACHMENT:
            default:
                break;
        }
    }
    m_Size++;
}