summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe David Borba Manana <fdmanana@apache.org>2012-01-08 13:18:15 +0000
committerFilipe David Borba Manana <fdmanana@apache.org>2012-01-08 13:18:15 +0000
commitfcd7f804a7cf903aebaebd2793cada278ae59995 (patch)
tree8bde167c62fea9a4f2657a0c7527444e4727cd92
parentbcd5039afa00952635c44a9c7e0406032366755d (diff)
downloadcouchdb-fcd7f804a7cf903aebaebd2793cada278ae59995.tar.gz
Use enif_is_number on OTP R15B or higher
The NIF API in OTP R15B introduced the enif_is_number function.
-rw-r--r--src/couchdb/priv/couch_ejson_compare/couch_ejson_compare.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/couchdb/priv/couch_ejson_compare/couch_ejson_compare.c b/src/couchdb/priv/couch_ejson_compare/couch_ejson_compare.c
index e69696104..df68c2a1d 100644
--- a/src/couchdb/priv/couch_ejson_compare/couch_ejson_compare.c
+++ b/src/couchdb/priv/couch_ejson_compare/couch_ejson_compare.c
@@ -20,6 +20,17 @@
#define MAX_DEPTH 10
+#if (ERL_NIF_MAJOR_VERSION > 2) || \
+ (ERL_NIF_MAJOR_VERSION == 2 && ERL_NIF_MINOR_VERSION >= 3)
+/* OTP R15B or higher */
+#define term_is_number(env, t) enif_is_number(env, t)
+#else
+#define term_is_number(env, t) \
+ (!enif_is_binary(env, t) && \
+ !enif_is_list(env, t) && \
+ !enif_is_tuple(env, t))
+#endif
+
static ERL_NIF_TERM ATOM_TRUE;
static ERL_NIF_TERM ATOM_FALSE;
static ERL_NIF_TERM ATOM_NULL;
@@ -43,7 +54,6 @@ static __inline int atom_sort_order(ErlNifEnv*, ERL_NIF_TERM);
static __inline int compare_strings(ctx_t*, ErlNifBinary, ErlNifBinary);
static __inline int compare_lists(int, ctx_t*, ERL_NIF_TERM, ERL_NIF_TERM);
static __inline int compare_props(int, ctx_t*, ERL_NIF_TERM, ERL_NIF_TERM);
-static __inline int term_is_number(ErlNifEnv*, ERL_NIF_TERM);
static __inline void reserve_coll(ctx_t*);
static __inline void release_coll(ctx_t*);
@@ -237,15 +247,6 @@ atom_sort_order(ErlNifEnv* env, ERL_NIF_TERM a)
int
-term_is_number(ErlNifEnv* env, ERL_NIF_TERM t)
-{
- /* Determination by exclusion of parts. To be used only inside less_json! */
- return !enif_is_binary(env, t) && !enif_is_list(env, t) &&
- !enif_is_tuple(env, t);
-}
-
-
-int
compare_lists(int depth, ctx_t* ctx, ERL_NIF_TERM a, ERL_NIF_TERM b)
{
ERL_NIF_TERM headA, tailA;