amf0_data * amf0_object_get(amf0_data * data, const char * name) { if (data != NULL) { amf0_node * node = amf0_list_first(&(data->list_data)); while (node != NULL) { if (strncmp((char*)(node->data->string_data.mbstr), name, (size_t)(node->data->string_data.size)) == 0) { node = node->next; return (node != NULL) ? node->data : NULL; } /* we have to skip the element data to reach the next name */ node = node->next->next; } } return NULL; }
amf0_data * amf0_object_delete(amf0_data * data, const char * name) { if (data != NULL) { amf0_node * node = amf0_list_first(&data->list_data); while (node != NULL) { node = node->next; if (strncmp((char*)(node->data->string_data.mbstr), name, (size_t)(node->data->string_data.size)) == 0) { amf0_node * data_node = node->next; amf0_data_free(amf0_list_delete(&data->list_data, node)); return amf0_list_delete(&data->list_data, data_node); } else { node = node->next; } } } return NULL; }
amf0_data * amf0_object_set(amf0_data * data, const char * name, amf0_data * element) { if (data != NULL) { amf0_node * node = amf0_list_first(&(data->u.list_data)); while (node != NULL) { if (strncmp((char*)(node->data->u.string_data.mbstr), name, (size_t)(node->data->u.string_data.size)) == 0) { node = node->next; if (node != NULL && node->data != NULL) { amf0_data_free(node->data); node->data = element; return element; } } /* we have to skip the element data to reach the next name */ node = node->next->next; } } return NULL; }
amf0_node * amf0_array_first(amf0_data * data) { return (data != NULL) ? amf0_list_first(&data->list_data) : NULL; }
amf0_node * amf0_object_first(amf0_data * data) { return (data != NULL) ? amf0_list_first(&data->u.list_data) : NULL; }