static void amqpvalue_clear()

in src/amqpvalue.c [4799:4878]


static void amqpvalue_clear(AMQP_VALUE_DATA* value_data)
{
    switch (value_data->type)
    {
    default:
        break;

    case AMQP_TYPE_BINARY:
        if (value_data->value.binary_value.bytes != NULL)
        {
            free((void*)value_data->value.binary_value.bytes);
        }
        break;
    case AMQP_TYPE_STRING:
        if (value_data->value.string_value.chars != NULL)
        {
            free(value_data->value.string_value.chars);
        }
        break;
    case AMQP_TYPE_SYMBOL:
        if (value_data->value.symbol_value.chars != NULL)
        {
            free(value_data->value.symbol_value.chars);
        }
        break;
    case AMQP_TYPE_LIST:
    {
        if (value_data->value.list_value.items != NULL)
        {
            size_t i;
            for (i = 0; i < value_data->value.list_value.count; i++)
            {
                amqpvalue_destroy(value_data->value.list_value.items[i]);
            }

            free(value_data->value.list_value.items);
            value_data->value.list_value.items = NULL;
        }
        break;
    }
    case AMQP_TYPE_MAP:
    {
        if (value_data->value.map_value.pairs != NULL)
        {
            size_t i;
            for (i = 0; i < value_data->value.map_value.pair_count; i++)
            {
                amqpvalue_destroy(value_data->value.map_value.pairs[i].key);
                amqpvalue_destroy(value_data->value.map_value.pairs[i].value);
            }

            free(value_data->value.map_value.pairs);
            value_data->value.map_value.pairs = NULL;
        }
        break;
    }
    case AMQP_TYPE_ARRAY:
    {
        if (value_data->value.array_value.items != NULL)
        {
            size_t i;
            for (i = 0; i < value_data->value.array_value.count; i++)
            {
                amqpvalue_destroy(value_data->value.array_value.items[i]);
            }

            free(value_data->value.array_value.items);
            value_data->value.array_value.items = NULL;
        }
        break;
    }
    case AMQP_TYPE_COMPOSITE:
    case AMQP_TYPE_DESCRIBED:
        amqpvalue_destroy(value_data->value.described_value.descriptor);
        amqpvalue_destroy(value_data->value.described_value.value);
        break;
    }

    value_data->type = AMQP_TYPE_UNKNOWN;
}