void free_amq_field_list_cls( amq_field_list_cls *obj) { if (obj && obj->field_list) { asl_field_list_destroy (&(obj->field_list)); obj->field_list=0; } if (obj) free(obj); }
void asl_field_selftest ( void) { asl_field_list_t *list, // List of fields *embedded_list; // List embedded in the top list asl_field_t *field, // One field in list *embedded_field; // Field in the embedded list icl_longstr_t *string; // Serialised field list // // We create a new empty list by passing it a null string // list = asl_field_list_new (NULL); // To add fields to the list, we use these methods, which // do not return any values. // asl_field_new_string (list, "string", "ring a ding ding"); asl_field_new_integer (list, "integer", 123456789); asl_field_new_decimal (list, "decimal", 123456789, 3); asl_field_new_time (list, "time", 123456789); asl_field_new_void (list, "void"); embedded_list = asl_field_list_new (NULL); asl_field_new_string (embedded_list, "string", "hello world"); asl_field_new_integer (embedded_list, "integer", 654321); asl_field_new_field_table (list, "table", embedded_list); asl_field_list_unlink (&embedded_list); // When we want to send a field list, we flatten it into a // string, which the list_flatten method allocates for us. // string = asl_field_list_flatten (list); asl_field_list_destroy (&list); // Let's recreate the list and check that it's correct list = asl_field_list_new (string); field = asl_field_list_search (list, "string"); assert (streq (asl_field_string (field), "ring a ding ding")); asl_field_unlink (&field); field = asl_field_list_search (list, "integer"); assert (asl_field_integer (field) == 123456789); assert (streq (asl_field_string (field), "123456789")); asl_field_unlink (&field); field = asl_field_list_search (list, "decimal"); assert (asl_field_integer (field) == 123456); assert (streq (asl_field_string (field), "123457")); asl_field_unlink (&field); field = asl_field_list_search (list, "time"); assert (asl_field_integer (field) == 123456789); asl_field_unlink (&field); field = asl_field_list_search (list, "void"); assert (asl_field_integer (field) == 0); asl_field_unlink (&field); field = asl_field_list_search (list, "table"); embedded_list = asl_field_field_table (field); embedded_field = asl_field_list_search (embedded_list, "string"); assert (streq (asl_field_string (embedded_field), "hello world")); asl_field_unlink (&embedded_field); embedded_field = asl_field_list_search (embedded_list, "integer"); assert (asl_field_integer (embedded_field) == 654321); asl_field_unlink (&embedded_field); asl_field_list_unlink (&embedded_list); asl_field_unlink (&field); // We must destroy the flat string when finished with it asl_field_list_destroy (&list); icl_longstr_destroy (&string); }