@@ -20,11 +20,19 @@ | |||||
JSON_C_MICRO_VERSION) | JSON_C_MICRO_VERSION) | ||||
#define JSON_C_VERSION "0.13.99" | #define JSON_C_VERSION "0.13.99" | ||||
#ifndef JSON_EXPORT | |||||
#if defined(_MSC_VER) | |||||
#define JSON_EXPORT __declspec(dllexport) | |||||
#else | |||||
#define JSON_EXPORT extern | |||||
#endif | |||||
#endif | |||||
/** | /** | ||||
* @see JSON_C_VERSION | * @see JSON_C_VERSION | ||||
* @return the version of the json-c library as a string | * @return the version of the json-c library as a string | ||||
*/ | */ | ||||
const char *json_c_version(void); /* Returns JSON_C_VERSION */ | |||||
JSON_EXPORT const char *json_c_version(void); /* Returns JSON_C_VERSION */ | |||||
/** | /** | ||||
* The json-c version encoded into an int, with the low order 8 bits | * The json-c version encoded into an int, with the low order 8 bits | ||||
@@ -35,6 +43,6 @@ const char *json_c_version(void); /* Returns JSON_C_VERSION */ | |||||
* @see JSON_C_VERSION_NUM | * @see JSON_C_VERSION_NUM | ||||
* @return the version of the json-c library as an int | * @return the version of the json-c library as an int | ||||
*/ | */ | ||||
int json_c_version_num(void); /* Returns JSON_C_VERSION_NUM */ | |||||
JSON_EXPORT int json_c_version_num(void); /* Returns JSON_C_VERSION_NUM */ | |||||
#endif | #endif |
@@ -33,11 +33,13 @@ | |||||
#define JSON_C_CONST_FUNCTION(func) func | #define JSON_C_CONST_FUNCTION(func) func | ||||
#endif | #endif | ||||
#ifndef JSON_EXPORT | |||||
#if defined(_MSC_VER) | #if defined(_MSC_VER) | ||||
#define JSON_EXPORT __declspec(dllexport) | #define JSON_EXPORT __declspec(dllexport) | ||||
#else | #else | ||||
#define JSON_EXPORT extern | #define JSON_EXPORT extern | ||||
#endif | #endif | ||||
#endif | |||||
#include <stddef.h> | #include <stddef.h> | ||||
#include "json_inttypes.h" | #include "json_inttypes.h" | ||||
@@ -26,6 +26,14 @@ | |||||
#include <stddef.h> | #include <stddef.h> | ||||
#ifndef JSON_EXPORT | |||||
#if defined(_MSC_VER) | |||||
#define JSON_EXPORT __declspec(dllexport) | |||||
#else | |||||
#define JSON_EXPORT extern | |||||
#endif | |||||
#endif | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" { | extern "C" { | ||||
#endif | #endif | ||||
@@ -72,7 +80,7 @@ struct json_object; | |||||
* | * | ||||
* @return json_object_iterator | * @return json_object_iterator | ||||
*/ | */ | ||||
struct json_object_iterator | |||||
JSON_EXPORT struct json_object_iterator | |||||
json_object_iter_init_default(void); | json_object_iter_init_default(void); | ||||
/** Retrieves an iterator to the first pair of the JSON Object. | /** Retrieves an iterator to the first pair of the JSON Object. | ||||
@@ -106,7 +114,7 @@ json_object_iter_init_default(void); | |||||
* | * | ||||
* @endcode | * @endcode | ||||
*/ | */ | ||||
struct json_object_iterator | |||||
JSON_EXPORT struct json_object_iterator | |||||
json_object_iter_begin(struct json_object* obj); | json_object_iter_begin(struct json_object* obj); | ||||
/** Retrieves the iterator that represents the position beyond the | /** Retrieves the iterator that represents the position beyond the | ||||
@@ -137,7 +145,7 @@ json_object_iter_begin(struct json_object* obj); | |||||
* (i.e., NOT the last pair, but "beyond the last | * (i.e., NOT the last pair, but "beyond the last | ||||
* pair" value) | * pair" value) | ||||
*/ | */ | ||||
struct json_object_iterator | |||||
JSON_EXPORT struct json_object_iterator | |||||
json_object_iter_end(const struct json_object* obj); | json_object_iter_end(const struct json_object* obj); | ||||
/** Returns an iterator to the next pair, if any | /** Returns an iterator to the next pair, if any | ||||
@@ -155,7 +163,7 @@ json_object_iter_end(const struct json_object* obj); | |||||
* of json_object_iter_end() for the same JSON Object | * of json_object_iter_end() for the same JSON Object | ||||
* instance. | * instance. | ||||
*/ | */ | ||||
void | |||||
JSON_EXPORT void | |||||
json_object_iter_next(struct json_object_iterator* iter); | json_object_iter_next(struct json_object_iterator* iter); | ||||
@@ -174,7 +182,7 @@ json_object_iter_next(struct json_object_iterator* iter); | |||||
* deleted or modified, and MUST NOT be modified or | * deleted or modified, and MUST NOT be modified or | ||||
* freed by the user. | * freed by the user. | ||||
*/ | */ | ||||
const char* | |||||
JSON_EXPORT const char* | |||||
json_object_iter_peek_name(const struct json_object_iterator* iter); | json_object_iter_peek_name(const struct json_object_iterator* iter); | ||||
@@ -197,7 +205,7 @@ json_object_iter_peek_name(const struct json_object_iterator* iter); | |||||
* the JSON Null value as a NULL json_object instance | * the JSON Null value as a NULL json_object instance | ||||
* pointer. | * pointer. | ||||
*/ | */ | ||||
struct json_object* | |||||
JSON_EXPORT struct json_object* | |||||
json_object_iter_peek_value(const struct json_object_iterator* iter); | json_object_iter_peek_value(const struct json_object_iterator* iter); | ||||
@@ -227,7 +235,7 @@ json_object_iter_peek_value(const struct json_object_iterator* iter); | |||||
* reference the same name/value pair or are both at | * reference the same name/value pair or are both at | ||||
* "end"); zero if they are not equal. | * "end"); zero if they are not equal. | ||||
*/ | */ | ||||
json_bool | |||||
JSON_EXPORT json_bool | |||||
json_object_iter_equal(const struct json_object_iterator* iter1, | json_object_iter_equal(const struct json_object_iterator* iter1, | ||||
const struct json_object_iterator* iter2); | const struct json_object_iterator* iter2); | ||||
@@ -44,7 +44,7 @@ extern "C" { | |||||
* | * | ||||
* @return negative if an error (or not found), or 0 if succeeded | * @return negative if an error (or not found), or 0 if succeeded | ||||
*/ | */ | ||||
int json_pointer_get(struct json_object *obj, const char *path, struct json_object **res); | |||||
JSON_EXPORT int json_pointer_get(struct json_object *obj, const char *path, struct json_object **res); | |||||
/** | /** | ||||
* This is a variant of 'json_pointer_get()' that supports printf() style arguments. | * This is a variant of 'json_pointer_get()' that supports printf() style arguments. | ||||
@@ -62,7 +62,7 @@ int json_pointer_get(struct json_object *obj, const char *path, struct json_obje | |||||
* | * | ||||
* @return negative if an error (or not found), or 0 if succeeded | * @return negative if an error (or not found), or 0 if succeeded | ||||
*/ | */ | ||||
int json_pointer_getf(struct json_object *obj, struct json_object **res, const char *path_fmt, ...); | |||||
JSON_EXPORT int json_pointer_getf(struct json_object *obj, struct json_object **res, const char *path_fmt, ...); | |||||
/** | /** | ||||
* Sets JSON object 'value' in the 'obj' tree at the location specified | * Sets JSON object 'value' in the 'obj' tree at the location specified | ||||
@@ -93,7 +93,7 @@ int json_pointer_getf(struct json_object *obj, struct json_object **res, const c | |||||
* | * | ||||
* @return negative if an error (or not found), or 0 if succeeded | * @return negative if an error (or not found), or 0 if succeeded | ||||
*/ | */ | ||||
int json_pointer_set(struct json_object **obj, const char *path, struct json_object *value); | |||||
JSON_EXPORT int json_pointer_set(struct json_object **obj, const char *path, struct json_object *value); | |||||
/** | /** | ||||
* This is a variant of 'json_pointer_set()' that supports printf() style arguments. | * This is a variant of 'json_pointer_set()' that supports printf() style arguments. | ||||
@@ -110,7 +110,7 @@ int json_pointer_set(struct json_object **obj, const char *path, struct json_obj | |||||
* | * | ||||
* @return negative if an error (or not found), or 0 if succeeded | * @return negative if an error (or not found), or 0 if succeeded | ||||
*/ | */ | ||||
int json_pointer_setf(struct json_object **obj, struct json_object *value, const char *path_fmt, ...); | |||||
JSON_EXPORT int json_pointer_setf(struct json_object **obj, struct json_object *value, const char *path_fmt, ...); | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -116,7 +116,7 @@ struct json_tokener | |||||
* | * | ||||
* See json_tokener_parse_ex() for an example of how to use this. | * See json_tokener_parse_ex() for an example of how to use this. | ||||
*/ | */ | ||||
size_t json_tokener_get_parse_end(struct json_tokener *tok); | |||||
JSON_EXPORT size_t json_tokener_get_parse_end(struct json_tokener *tok); | |||||
/** | /** | ||||
@@ -142,7 +142,7 @@ typedef struct json_tokener json_tokener; | |||||
* | * | ||||
* @return a generic error message is returned if an invalid error value is provided. | * @return a generic error message is returned if an invalid error value is provided. | ||||
*/ | */ | ||||
const char *json_tokener_error_desc(enum json_tokener_error jerr); | |||||
JSON_EXPORT const char *json_tokener_error_desc(enum json_tokener_error jerr); | |||||
/** | /** | ||||
* Retrieve the error caused by the last call to json_tokener_parse_ex(), | * Retrieve the error caused by the last call to json_tokener_parse_ex(), | ||||
@@ -40,7 +40,7 @@ extern "C" { | |||||
* | * | ||||
* Returns NULL on failure. See json_util_get_last_err() for details. | * Returns NULL on failure. See json_util_get_last_err() for details. | ||||
*/ | */ | ||||
extern struct json_object* json_object_from_file(const char *filename); | |||||
JSON_EXPORT struct json_object* json_object_from_file(const char *filename); | |||||
/** | /** | ||||
* Create a JSON object from already opened file descriptor. | * Create a JSON object from already opened file descriptor. | ||||
@@ -52,7 +52,7 @@ extern struct json_object* json_object_from_file(const char *filename); | |||||
* | * | ||||
* Returns NULL on failure. See json_util_get_last_err() for details. | * Returns NULL on failure. See json_util_get_last_err() for details. | ||||
*/ | */ | ||||
extern struct json_object* json_object_from_fd(int fd); | |||||
JSON_EXPORT struct json_object* json_object_from_fd(int fd); | |||||
/** | /** | ||||
* Equivalent to: | * Equivalent to: | ||||
@@ -60,7 +60,7 @@ extern struct json_object* json_object_from_fd(int fd); | |||||
* | * | ||||
* Returns -1 if something fails. See json_util_get_last_err() for details. | * Returns -1 if something fails. See json_util_get_last_err() for details. | ||||
*/ | */ | ||||
extern int json_object_to_file(const char *filename, struct json_object *obj); | |||||
JSON_EXPORT int json_object_to_file(const char *filename, struct json_object *obj); | |||||
/** | /** | ||||
* Open and truncate the given file, creating it if necessary, then | * Open and truncate the given file, creating it if necessary, then | ||||
@@ -68,7 +68,7 @@ extern int json_object_to_file(const char *filename, struct json_object *obj); | |||||
* | * | ||||
* Returns -1 if something fails. See json_util_get_last_err() for details. | * Returns -1 if something fails. See json_util_get_last_err() for details. | ||||
*/ | */ | ||||
extern int json_object_to_file_ext(const char *filename, struct json_object *obj, int flags); | |||||
JSON_EXPORT int json_object_to_file_ext(const char *filename, struct json_object *obj, int flags); | |||||
/** | /** | ||||
* Convert the json_object to a string and write it to the file descriptor. | * Convert the json_object to a string and write it to the file descriptor. | ||||
@@ -80,24 +80,24 @@ extern int json_object_to_file_ext(const char *filename, struct json_object *obj | |||||
* @param flags flags to pass to json_object_to_json_string_ext() | * @param flags flags to pass to json_object_to_json_string_ext() | ||||
* @return -1 if something fails. See json_util_get_last_err() for details. | * @return -1 if something fails. See json_util_get_last_err() for details. | ||||
*/ | */ | ||||
extern int json_object_to_fd(int fd, struct json_object *obj, int flags); | |||||
JSON_EXPORT int json_object_to_fd(int fd, struct json_object *obj, int flags); | |||||
/** | /** | ||||
* Return the last error from various json-c functions, including: | * Return the last error from various json-c functions, including: | ||||
* json_object_to_file{,_ext}, json_object_to_fd() or | * json_object_to_file{,_ext}, json_object_to_fd() or | ||||
* json_object_from_{file,fd}, or NULL if there is none. | * json_object_from_{file,fd}, or NULL if there is none. | ||||
*/ | */ | ||||
const char *json_util_get_last_err(void); | |||||
JSON_EXPORT const char *json_util_get_last_err(void); | |||||
extern int json_parse_int64(const char *buf, int64_t *retval); | |||||
extern int json_parse_double(const char *buf, double *retval); | |||||
JSON_EXPORT int json_parse_int64(const char *buf, int64_t *retval); | |||||
JSON_EXPORT int json_parse_double(const char *buf, double *retval); | |||||
/** | /** | ||||
* Return a string describing the type of the object. | * Return a string describing the type of the object. | ||||
* e.g. "int", or "object", etc... | * e.g. "int", or "object", etc... | ||||
*/ | */ | ||||
extern const char *json_type_to_name(enum json_type o_type); | |||||
JSON_EXPORT const char *json_type_to_name(enum json_type o_type); | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
} | } | ||||
@@ -31,7 +31,7 @@ typedef int (json_c_visit_userfunc)(json_object *jso, int flags, | |||||
* Returns <0 if an error occurred during iteration, including if | * Returns <0 if an error occurred during iteration, including if | ||||
* userfunc returned JSON_C_VISIT_RETURN_ERROR. | * userfunc returned JSON_C_VISIT_RETURN_ERROR. | ||||
*/ | */ | ||||
int json_c_visit(json_object *jso, int future_flags, | |||||
JSON_EXPORT int json_c_visit(json_object *jso, int future_flags, | |||||
json_c_visit_userfunc *userfunc, void *userarg); | json_c_visit_userfunc *userfunc, void *userarg); | ||||
/** | /** | ||||
@@ -23,6 +23,14 @@ | |||||
#ifndef _printbuf_h_ | #ifndef _printbuf_h_ | ||||
#define _printbuf_h_ | #define _printbuf_h_ | ||||
#ifndef JSON_EXPORT | |||||
#if defined(_MSC_VER) | |||||
#define JSON_EXPORT __declspec(dllexport) | |||||
#else | |||||
#define JSON_EXPORT extern | |||||
#endif | |||||
#endif | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
extern "C" { | extern "C" { | ||||
#endif | #endif | ||||
@@ -34,7 +42,7 @@ struct printbuf { | |||||
}; | }; | ||||
typedef struct printbuf printbuf; | typedef struct printbuf printbuf; | ||||
extern struct printbuf* | |||||
JSON_EXPORT struct printbuf* | |||||
printbuf_new(void); | printbuf_new(void); | ||||
/* As an optimization, printbuf_memappend_fast() is defined as a macro | /* As an optimization, printbuf_memappend_fast() is defined as a macro | ||||
@@ -45,7 +53,7 @@ printbuf_new(void); | |||||
* Your code should not use printbuf_memappend() directly unless it | * Your code should not use printbuf_memappend() directly unless it | ||||
* checks the return code. Use printbuf_memappend_fast() instead. | * checks the return code. Use printbuf_memappend_fast() instead. | ||||
*/ | */ | ||||
extern int | |||||
JSON_EXPORT int | |||||
printbuf_memappend(struct printbuf *p, const char *buf, int size); | printbuf_memappend(struct printbuf *p, const char *buf, int size); | ||||
#define printbuf_memappend_fast(p, bufptr, bufsize) \ | #define printbuf_memappend_fast(p, bufptr, bufsize) \ | ||||
@@ -89,7 +97,7 @@ do { \ | |||||
* | * | ||||
* If offset is -1, this starts at the end of the current data in the buffer. | * If offset is -1, this starts at the end of the current data in the buffer. | ||||
*/ | */ | ||||
extern int | |||||
JSON_EXPORT int | |||||
printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len); | printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len); | ||||
/** | /** | ||||
@@ -106,13 +114,13 @@ printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len); | |||||
* printbuf_memappend() | * printbuf_memappend() | ||||
* printbuf_strappend() | * printbuf_strappend() | ||||
*/ | */ | ||||
extern int | |||||
JSON_EXPORT int | |||||
sprintbuf(struct printbuf *p, const char *msg, ...); | sprintbuf(struct printbuf *p, const char *msg, ...); | ||||
extern void | |||||
JSON_EXPORT void | |||||
printbuf_reset(struct printbuf *p); | printbuf_reset(struct printbuf *p); | ||||
extern void | |||||
JSON_EXPORT void | |||||
printbuf_free(struct printbuf *p); | printbuf_free(struct printbuf *p); | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||