From 10fe00650cadac76bb9601d67c9ea3971efdcd50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Esser?= Date: Mon, 11 Dec 2017 12:55:40 +0100 Subject: [PATCH 1/2] json_object: Add size_t json_object_sizeof() --- json_object.c | 5 +++++ json_object.h | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/json_object.c b/json_object.c index 9daa6fd..f12d8f0 100644 --- a/json_object.c +++ b/json_object.c @@ -509,6 +509,11 @@ int json_object_object_length(const struct json_object *jso) return lh_table_length(jso->o.c_object); } +size_t json_object_sizeof(void) +{ + return sizeof(struct json_object); +} + struct json_object* json_object_object_get(const struct json_object* jso, const char *key) { diff --git a/json_object.h b/json_object.h index 283eb95..6a2751d 100644 --- a/json_object.h +++ b/json_object.h @@ -392,6 +392,11 @@ JSON_EXPORT struct lh_table* json_object_get_object(const struct json_object *ob */ JSON_EXPORT int json_object_object_length(const struct json_object* obj); +/** Get the sizeof (struct json_object). + * @returns a size_t with the sizeof (struct json_object) + */ +JSON_EXPORT size_t json_object_sizeof(void); + /** Add an object field to a json_object of type json_type_object * * The reference count will *not* be incremented. This is to make adding From 8baf4378178e855aadf26396ca94e93fd6d2b91d Mon Sep 17 00:00:00 2001 From: Eric Haszlakiewicz Date: Tue, 12 Dec 2017 18:26:51 -0500 Subject: [PATCH 2/2] Apply gcc's "const" attribute to the json_c_object_sizeof() function as an optimizer hint. Also, rename that function from json_object_sizeof(). --- json_object.c | 2 +- json_object.h | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/json_object.c b/json_object.c index f12d8f0..042477a 100644 --- a/json_object.c +++ b/json_object.c @@ -509,7 +509,7 @@ int json_object_object_length(const struct json_object *jso) return lh_table_length(jso->o.c_object); } -size_t json_object_sizeof(void) +size_t json_c_object_sizeof(void) { return sizeof(struct json_object); } diff --git a/json_object.h b/json_object.h index 6a2751d..758efa6 100644 --- a/json_object.h +++ b/json_object.h @@ -27,6 +27,12 @@ #define THIS_FUNCTION_IS_DEPRECATED(func) func #endif +#ifdef __GNUC__ +#define JSON_C_CONST_FUNCTION(func) func __attribute__((const)) +#else +#define CONST_FUNCTION(func) func +#endif + #if defined(_MSC_VER) #define JSON_EXPORT __declspec(dllexport) #else @@ -395,7 +401,7 @@ JSON_EXPORT int json_object_object_length(const struct json_object* obj); /** Get the sizeof (struct json_object). * @returns a size_t with the sizeof (struct json_object) */ -JSON_EXPORT size_t json_object_sizeof(void); +JSON_C_CONST_FUNCTION(JSON_EXPORT size_t json_c_object_sizeof(void)); /** Add an object field to a json_object of type json_type_object *