From 0ae0172a25d7bf0a5efcd7fed5668b828e159dd6 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 11 Oct 2017 18:11:55 -0700 Subject: [PATCH] ircd::json: Warn when sampling size() of object and array the wrong way. --- include/ircd/json/array.h | 9 +++++++++ include/ircd/json/object.h | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/include/ircd/json/array.h b/include/ircd/json/array.h index 0a0590597..1cc50db21 100644 --- a/include/ircd/json/array.h +++ b/include/ircd/json/array.h @@ -60,6 +60,7 @@ struct ircd::json::array const_iterator find(size_t i) const; size_t count() const; + size_t size() const; template T at(const size_t &i) const; string_view at(const size_t &i) const; @@ -147,6 +148,14 @@ const return it; } +__attribute__((warning("Taking string_view::size() not the count() of array elements"))) +inline size_t +ircd::json::array::size() +const +{ + return count(); +} + inline size_t ircd::json::array::count() const diff --git a/include/ircd/json/object.h b/include/ircd/json/object.h index 79ee7a8c3..0df8d0b92 100644 --- a/include/ircd/json/object.h +++ b/include/ircd/json/object.h @@ -84,6 +84,7 @@ struct ircd::json::object // util size_t count() const; + size_t size() const; // warns if used; use count() bool has(const string_view &key) const; bool has(const path &) const; @@ -286,6 +287,14 @@ catch(const bad_lex_cast &e) return def; } +__attribute__((warning("Taking string_view::size() not the count() of members in the object"))) +inline size_t +ircd::json::object::size() +const +{ + return string_view::size(); +} + inline size_t ircd::json::object::count() const