X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Fjansson_private.h;h=3045956435a01c11c6e9cce5527705ec4fe94ef1;hb=8d75235ff22dc4aced697e198c3c024f1f4b88fe;hp=ad8419aa16f2f128c7e262a9d7065f1b3616b2ee;hpb=2f4d6f8ae768886f8ee831bae169763856b5a827;p=jansson.git diff --git a/src/jansson_private.h b/src/jansson_private.h index ad8419a..3045956 100644 --- a/src/jansson_private.h +++ b/src/jansson_private.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Petri Lehtinen + * Copyright (c) 2009, 2010 Petri Lehtinen * * Jansson is free software; you can redistribute it and/or modify * it under the terms of the MIT license. See LICENSE for details. @@ -8,8 +8,45 @@ #ifndef JANSSON_PRIVATE_H #define JANSSON_PRIVATE_H -int json_object_set_nocheck(json_t *json, const char *key, json_t *value); -json_t *json_string_nocheck(const char *value); +#include "jansson.h" +#include "hashtable.h" +#define container_of(ptr_, type_, member_) \ + ((type_ *)((char *)ptr_ - (size_t)&((type_ *)0)->member_)) + +typedef struct { + json_t json; + hashtable_t hashtable; + int visited; +} json_object_t; + +typedef struct { + json_t json; + unsigned int size; + unsigned int entries; + json_t **table; + int visited; +} json_array_t; + +typedef struct { + json_t json; + char *value; +} json_string_t; + +typedef struct { + json_t json; + double value; +} json_real_t; + +typedef struct { + json_t json; + int value; +} json_integer_t; + +#define json_to_object(json_) container_of(json_, json_object_t, json) +#define json_to_array(json_) container_of(json_, json_array_t, json) +#define json_to_string(json_) container_of(json_, json_string_t, json) +#define json_to_real(json_) container_of(json_, json_real_t, json) +#define json_to_integer(json_) container_of(json_, json_integer_t, json) #endif