/* mkjson.h - a part of mkjson library * * Copyright (C) 2018 Jacek Wieczorek * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file for details. */ #ifndef MKJSON_H #define MKJSON_H // JSON container types enum mkjson_container_type { MKJSON_ARR = 0, // An array MKJSON_OBJ = 1 // An object (hash or whatever you call it) }; // JSON data types enum mkjson_value_type { MKJSON_STRING = (int)('s'), // const char* - String data MKJSON_STRING_FREE = (int)('f'), // char* - String data, but pointer is freed MKJSON_JSON = (int)('r'), // const char* - JSON data (like string, but no quotes) MKJSON_JSON_FREE = (int)('j'), // char* - JSON data, but pointer is freed MKJSON_INT = (int)('i'), // int - An integer MKJSON_LLINT = (int)('I'), // long long int - A long integer MKJSON_DOUBLE = (int)('d'), // double - A double MKJSON_LDOUBLE = (int)('D'), // long double - A long double MKJSON_SCI_DOUBLE = (int)('e'), // double - A double with scientific notation MKJSON_SCI_LDOUBLE = (int)('E'), // long double - A long double with scientific notation MKJSON_BOOL = (int)('b'), // int - A boolean value MKJSON_NULL = (int)('n'), // -- - JSON null value // These cause one argument of certain type to be ignored MKJSON_IGN_STRING = (-MKJSON_STRING), MKJSON_IGN_STRING_FREE = (-MKJSON_STRING_FREE), MKJSON_IGN_JSON = (-MKJSON_JSON), MKJSON_IGN_JSON_FREE = (-MKJSON_JSON_FREE), MKJSON_IGN_INT = (-MKJSON_INT), MKJSON_IGN_LLINT = (-MKJSON_LLINT), MKJSON_IGN_DOUBLE = (-MKJSON_DOUBLE), MKJSON_IGN_LDOUBLE = (-MKJSON_LDOUBLE), MKJSON_IGN_BOOL = (-MKJSON_BOOL), MKJSON_IGN_NULL = (-MKJSON_NULL) }; extern char *mkjson( enum mkjson_container_type otype, int count, ... ); #endif