176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* JSON free
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * ZZJSON - Copyright (C) 2008 by Ivo van Poorten
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * License: GNU Lesser General Public License version 2.1
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#include "zzjson.h"
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid zzjson_free(ZZJSON_CONFIG *config, ZZJSON *zzjson) {
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    while (zzjson) {
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman        ZZJSON *next;
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman        switch(zzjson->type) {
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman            case ZZJSON_OBJECT:
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                config->free(zzjson->value.object.label);
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                zzjson_free(config, zzjson->value.object.val);
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                break;
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman            case ZZJSON_ARRAY:
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                zzjson_free(config, zzjson->value.array.val);
1876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                break;
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman            case ZZJSON_STRING:
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                config->free(zzjson->value.string.string);
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                break;
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman            default:
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman                break;
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman        }
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman        next = zzjson->next;
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman        config->free(zzjson);
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman        zzjson = next;
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    }
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman}
30