const char *json_number_chars = "0123456789.+-eE";
const char *json_hex_chars = "0123456789abcdef";
-#ifdef REFCOUNT_DEBUG
-static const char* json_type_name[] = {
- "null",
- "boolean",
- "double",
- "int",
- "object",
- "array",
- "string",
-};
-#endif /* REFCOUNT_DEBUG */
-
static void json_object_generic_delete(struct json_object* jso);
static struct json_object* json_object_new(enum json_type o_type);
json_object_table->count);
lh_foreach(json_object_table, ent) {
struct json_object* obj = (struct json_object*)ent->v;
- MC_DEBUG("\t%s:%p\n", json_type_name[obj->o_type], obj);
+ MC_DEBUG("\t%s:%p\n", json_type_to_name(obj->o_type), obj);
}
}
}
{
#ifdef REFCOUNT_DEBUG
MC_DEBUG("json_object_delete_%s: %p\n",
- json_type_name[jso->o_type], jso);
+ json_type_to_name(jso->o_type), jso);
lh_table_delete(json_object_table, jso);
#endif /* REFCOUNT_DEBUG */
printbuf_free(jso->_pb);
jso->_delete = &json_object_generic_delete;
#ifdef REFCOUNT_DEBUG
lh_table_insert(json_object_table, jso, jso);
- MC_DEBUG("json_object_new_%s: %p\n", json_type_name[jso->o_type], jso);
+ MC_DEBUG("json_object_new_%s: %p\n", json_type_to_name(jso->o_type), jso);
#endif /* REFCOUNT_DEBUG */
return jso;
}
return jso->o_type;
}
-
/* json_object_to_json_string */
const char* json_object_to_json_string(struct json_object *jso)
return realloc(p, n);
}
#endif
+
+#define NELEM(a) (sizeof(a) / sizeof(a[0]))
+static const char* json_type_name[] = {
+ /* If you change this, be sure to update the enum json_type definition too */
+ "null",
+ "boolean",
+ "double",
+ "int",
+ "object",
+ "array",
+ "string",
+};
+
+const char *json_type_to_name(enum json_type o_type)
+{
+ if (o_type < 0 || o_type >= NELEM(json_type_name))
+ {
+ MC_ERROR("json_type_to_name: type %d is out of range [0,%d]\n", o_type, NELEM(json_type_name));
+ return NULL;
+ }
+ return json_type_name[o_type];
+}
+
extern int json_object_to_file(char *filename, struct json_object *obj);
extern int json_parse_int64(const char *buf, int64_t *retval);
+/**
+ * Return a string describing the type of the object.
+ * e.g. "int", or "object", etc...
+ */
+extern const char *json_type_to_name(enum json_type o_type);
+
#ifdef __cplusplus
}
#endif