void TRI_DestroyJson (TRI_memory_zone_t* zone, TRI_json_t* object) { size_t n; size_t i; switch (object->_type) { case TRI_JSON_UNUSED: case TRI_JSON_NULL: case TRI_JSON_BOOLEAN: case TRI_JSON_NUMBER: break; case TRI_JSON_STRING: TRI_DestroyBlob(zone, &object->_value._string); break; case TRI_JSON_ARRAY: case TRI_JSON_LIST: n = object->_value._objects._length; for (i = 0; i < n; ++i) { TRI_json_t* v = TRI_AtVector(&object->_value._objects, i); TRI_DestroyJson(zone, v); } TRI_DestroyVector(&object->_value._objects); break; } }
void TRI_DestroyJson (TRI_memory_zone_t* zone, TRI_json_t* object) { switch (object->_type) { case TRI_JSON_UNUSED: case TRI_JSON_NULL: case TRI_JSON_BOOLEAN: case TRI_JSON_NUMBER: break; case TRI_JSON_STRING: TRI_DestroyBlob(zone, &object->_value._string); break; case TRI_JSON_STRING_REFERENCE: // we will not be destroying the string!! break; case TRI_JSON_ARRAY: case TRI_JSON_LIST: { size_t i, n; n = object->_value._objects._length; for (i = 0; i < n; ++i) { TRI_json_t* v = (TRI_json_t*) TRI_AtVector(&object->_value._objects, i); TRI_DestroyJson(zone, v); } TRI_DestroyVector(&object->_value._objects); break; } } }
void TRI_DestroyJson (TRI_memory_zone_t* zone, TRI_json_t* object) { switch (object->_type) { case TRI_JSON_UNUSED: case TRI_JSON_NULL: case TRI_JSON_BOOLEAN: case TRI_JSON_NUMBER: case TRI_JSON_STRING_REFERENCE: break; case TRI_JSON_STRING: TRI_DestroyBlob(zone, &object->_value._string); break; case TRI_JSON_OBJECT: case TRI_JSON_ARRAY: { size_t const n = TRI_LengthVector(&object->_value._objects); for (size_t i = 0; i < n; ++i) { auto v = static_cast<TRI_json_t*>(TRI_AddressVector(&object->_value._objects, i)); TRI_DestroyJson(zone, v); } TRI_DestroyVector(&object->_value._objects); break; } } }
void TRI_FreeBlob (TRI_memory_zone_t* zone, TRI_blob_t* blob) { if (blob != NULL) { TRI_DestroyBlob(zone, blob); TRI_Free(zone, blob); } }