[asterisk-commits] mjordan: trunk r391675 - in /trunk: include/asterisk/ main/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jun 13 13:14:40 CDT 2013


Author: mjordan
Date: Thu Jun 13 13:14:38 2013
New Revision: 391675

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=391675
Log:
Blow away usage of libjansson's foreach macro

While very handy, this macro didn't occur until a later version of libjansson.
We'd prefer to be compatible with older versions still - as such, iteration
over key/value pairs in a JSON object have to be done with a little bit more
manual work.


Modified:
    trunk/include/asterisk/json.h
    trunk/main/json.c
    trunk/main/manager.c

Modified: trunk/include/asterisk/json.h
URL: http://svnview.digium.com/svn/asterisk/trunk/include/asterisk/json.h?view=diff&rev=391675&r1=391674&r2=391675
==============================================================================
--- trunk/include/asterisk/json.h (original)
+++ trunk/include/asterisk/json.h Thu Jun 13 13:14:38 2013
@@ -604,15 +604,6 @@
 const char *ast_json_object_iter_key(struct ast_json_iter *iter);
 
 /*!
- * \brief Retrieve the iterator object for a particular key
- * \since 12.0.0
- *
- * \param key Key of the field the \c ast_json_iter points to
- * \return \ref ast_json_iter object that points to \a key
- */
-struct ast_json_iter *ast_json_object_key_to_iter(const char *key);
-
-/*!
  * \brief Get the value from an iterator.
  * \since 12.0.0
  *
@@ -638,23 +629,6 @@
  * \return -1 on error.
  */
 int ast_json_object_iter_set(struct ast_json *object, struct ast_json_iter *iter, struct ast_json *value);
-
-/*!
- * \brief Iterate over key/value pairs
- *
- * \note This is a reproduction of the jansson library's \ref json_object_foreach
- * using the equivalent ast_* wrapper functions. This creates a for loop using the various
- * iteration function calls.
- *
- * \param object The \ref ast_json object that contains key/value tuples to iterate over
- * \param key A \c const char pointer key for the key/value tuple
- * \param value A \ref ast_json object for the key/value tuple
- */
-#define ast_json_object_foreach(object, key, value) \
-	for (key = ast_json_object_iter_key(ast_json_object_iter(object)); \
-		key && (value = ast_json_object_iter_value(ast_json_object_key_to_iter(key))); \
-		key = ast_json_object_iter_key(ast_json_object_iter_next(object, ast_json_object_key_to_iter(key))))
-
 
 /*!@}*/
 

Modified: trunk/main/json.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/json.c?view=diff&rev=391675&r1=391674&r2=391675
==============================================================================
--- trunk/main/json.c (original)
+++ trunk/main/json.c Thu Jun 13 13:14:38 2013
@@ -329,10 +329,6 @@
 const char *ast_json_object_iter_key(struct ast_json_iter *iter)
 {
 	return json_object_iter_key(iter);
-}
-struct ast_json_iter *ast_json_object_key_to_iter(const char *key)
-{
-	return (struct ast_json_iter *)json_object_key_to_iter(key);
 }
 struct ast_json *ast_json_object_iter_value(struct ast_json_iter *iter)
 {

Modified: trunk/main/manager.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/manager.c?view=diff&rev=391675&r1=391674&r2=391675
==============================================================================
--- trunk/main/manager.c (original)
+++ trunk/main/manager.c Thu Jun 13 13:14:38 2013
@@ -1278,12 +1278,16 @@
 {
 	struct ast_str *output_str = ast_str_create(32);
 	struct ast_json *value;
+	struct ast_json_iter *iter;
 	const char *key;
 	if (!output_str) {
 		return NULL;
 	}
 
-	ast_json_object_foreach(blob, key, value) {
+	for (iter = ast_json_object_iter(blob); iter; iter = ast_json_object_iter_next(blob, iter)) {
+		key = ast_json_object_iter_key(iter);
+		value = ast_json_object_iter_value(iter);
+
 		if (exclusion_cb && exclusion_cb(key)) {
 			continue;
 		}




More information about the asterisk-commits mailing list