summaryrefslogtreecommitdiff
path: root/json-c/src/json_object_iterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'json-c/src/json_object_iterator.h')
-rw-r--r--json-c/src/json_object_iterator.h478
1 files changed, 239 insertions, 239 deletions
diff --git a/json-c/src/json_object_iterator.h b/json-c/src/json_object_iterator.h
index f6e7ca6..2f21881 100644
--- a/json-c/src/json_object_iterator.h
+++ b/json-c/src/json_object_iterator.h
@@ -1,239 +1,239 @@
-/**
-*******************************************************************************
-* @file json_object_iterator.h
-*
-* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
-*
-* This library is free software; you can redistribute it and/or modify
-* it under the terms of the MIT license. See COPYING for details.
-*
-* @brief json-c forces clients to use its private data
-* structures for JSON Object iteration. This API
-* corrects that by abstracting the private json-c
-* details.
-*
-* API attributes: <br>
-* * Thread-safe: NO<br>
-* * Reentrant: NO
-*
-*******************************************************************************
-*/
-
-
-#ifndef JSON_OBJECT_ITERATOR_H
-#define JSON_OBJECT_ITERATOR_H
-
-#include <stddef.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * Forward declaration for the opaque iterator information.
- */
-struct json_object_iter_info_;
-
-/**
- * The opaque iterator that references a name/value pair within
- * a JSON Object instance or the "end" iterator value.
- */
-struct json_object_iterator {
- const void* opaque_;
-};
-
-
-/**
- * forward declaration of json-c's JSON value instance structure
- */
-struct json_object;
-
-
-/**
- * Initializes an iterator structure to a "default" value that
- * is convenient for initializing an iterator variable to a
- * default state (e.g., initialization list in a class'
- * constructor).
- *
- * @code
- * struct json_object_iterator iter = json_object_iter_init_default();
- * MyClass() : iter_(json_object_iter_init_default())
- * @endcode
- *
- * @note The initialized value doesn't reference any specific
- * pair, is considered an invalid iterator, and MUST NOT
- * be passed to any json-c API that expects a valid
- * iterator.
- *
- * @note User and internal code MUST NOT make any assumptions
- * about and dependencies on the value of the "default"
- * iterator value.
- *
- * @return json_object_iterator
- */
-struct json_object_iterator
-json_object_iter_init_default(void);
-
-/** Retrieves an iterator to the first pair of the JSON Object.
- *
- * @warning Any modification of the underlying pair invalidates all
- * iterators to that pair.
- *
- * @param obj JSON Object instance (MUST be of type json_object)
- *
- * @return json_object_iterator If the JSON Object has at
- * least one pair, on return, the iterator refers
- * to the first pair. If the JSON Object doesn't
- * have any pairs, the returned iterator is
- * equivalent to the "end" iterator for the same
- * JSON Object instance.
- *
- * @code
- * struct json_object_iterator it;
- * struct json_object_iterator itEnd;
- * struct json_object* obj;
- *
- * obj = json_tokener_parse("{'first':'george', 'age':100}");
- * it = json_object_iter_begin(obj);
- * itEnd = json_object_iter_end(obj);
- *
- * while (!json_object_iter_equal(&it, &itEnd)) {
- * printf("%s\n",
- * json_object_iter_peek_name(&it));
- * json_object_iter_next(&it);
- * }
- *
- * @endcode
- */
-struct json_object_iterator
-json_object_iter_begin(struct json_object* obj);
-
-/** Retrieves the iterator that represents the position beyond the
- * last pair of the given JSON Object instance.
- *
- * @warning Do NOT write code that assumes that the "end"
- * iterator value is NULL, even if it is so in a
- * particular instance of the implementation.
- *
- * @note The reason we do not (and MUST NOT) provide
- * "json_object_iter_is_end(json_object_iterator* iter)"
- * type of API is because it would limit the underlying
- * representation of name/value containment (or force us
- * to add additional, otherwise unnecessary, fields to
- * the iterator structure). The "end" iterator and the
- * equality test method, on the other hand, permit us to
- * cleanly abstract pretty much any reasonable underlying
- * representation without burdening the iterator
- * structure with unnecessary data.
- *
- * @note For performance reasons, memorize the "end" iterator prior
- * to any loop.
- *
- * @param obj JSON Object instance (MUST be of type json_object)
- *
- * @return json_object_iterator On return, the iterator refers
- * to the "end" of the Object instance's pairs
- * (i.e., NOT the last pair, but "beyond the last
- * pair" value)
- */
-struct json_object_iterator
-json_object_iter_end(const struct json_object* obj);
-
-/** Returns an iterator to the next pair, if any
- *
- * @warning Any modification of the underlying pair
- * invalidates all iterators to that pair.
- *
- * @param iter [IN/OUT] Pointer to iterator that references a
- * name/value pair; MUST be a valid, non-end iterator.
- * WARNING: bad things will happen if invalid or "end"
- * iterator is passed. Upon return will contain the
- * reference to the next pair if there is one; if there
- * are no more pairs, will contain the "end" iterator
- * value, which may be compared against the return value
- * of json_object_iter_end() for the same JSON Object
- * instance.
- */
-void
-json_object_iter_next(struct json_object_iterator* iter);
-
-
-/** Returns a const pointer to the name of the pair referenced
- * by the given iterator.
- *
- * @param iter pointer to iterator that references a name/value
- * pair; MUST be a valid, non-end iterator.
- *
- * @warning bad things will happen if an invalid or
- * "end" iterator is passed.
- *
- * @return const char* Pointer to the name of the referenced
- * name/value pair. The name memory belongs to the
- * name/value pair, will be freed when the pair is
- * deleted or modified, and MUST NOT be modified or
- * freed by the user.
- */
-const char*
-json_object_iter_peek_name(const struct json_object_iterator* iter);
-
-
-/** Returns a pointer to the json-c instance representing the
- * value of the referenced name/value pair, without altering
- * the instance's reference count.
- *
- * @param iter pointer to iterator that references a name/value
- * pair; MUST be a valid, non-end iterator.
- *
- * @warning bad things will happen if invalid or
- * "end" iterator is passed.
- *
- * @return struct json_object* Pointer to the json-c value
- * instance of the referenced name/value pair; the
- * value's reference count is not changed by this
- * function: if you plan to hold on to this json-c node,
- * take a look at json_object_get() and
- * json_object_put(). IMPORTANT: json-c API represents
- * the JSON Null value as a NULL json_object instance
- * pointer.
- */
-struct json_object*
-json_object_iter_peek_value(const struct json_object_iterator* iter);
-
-
-/** Tests two iterators for equality. Typically used to test
- * for end of iteration by comparing an iterator to the
- * corresponding "end" iterator (that was derived from the same
- * JSON Object instance).
- *
- * @note The reason we do not (and MUST NOT) provide
- * "json_object_iter_is_end(json_object_iterator* iter)"
- * type of API is because it would limit the underlying
- * representation of name/value containment (or force us
- * to add additional, otherwise unnecessary, fields to
- * the iterator structure). The equality test method, on
- * the other hand, permits us to cleanly abstract pretty
- * much any reasonable underlying representation.
- *
- * @param iter1 Pointer to first valid, non-NULL iterator
- * @param iter2 POinter to second valid, non-NULL iterator
- *
- * @warning if a NULL iterator pointer or an uninitialized
- * or invalid iterator, or iterators derived from
- * different JSON Object instances are passed, bad things
- * will happen!
- *
- * @return json_bool non-zero if iterators are equal (i.e., both
- * reference the same name/value pair or are both at
- * "end"); zero if they are not equal.
- */
-json_bool
-json_object_iter_equal(const struct json_object_iterator* iter1,
- const struct json_object_iterator* iter2);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif // JSON_OBJECT_ITERATOR_H
+/**
+*******************************************************************************
+* @file json_object_iterator.h
+*
+* Copyright (c) 2009-2012 Hewlett-Packard Development Company, L.P.
+*
+* This library is free software; you can redistribute it and/or modify
+* it under the terms of the MIT license. See COPYING for details.
+*
+* @brief json-c forces clients to use its private data
+* structures for JSON Object iteration. This API
+* corrects that by abstracting the private json-c
+* details.
+*
+* API attributes: <br>
+* * Thread-safe: NO<br>
+* * Reentrant: NO
+*
+*******************************************************************************
+*/
+
+
+#ifndef JSON_OBJECT_ITERATOR_H
+#define JSON_OBJECT_ITERATOR_H
+
+#include <stddef.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Forward declaration for the opaque iterator information.
+ */
+struct json_object_iter_info_;
+
+/**
+ * The opaque iterator that references a name/value pair within
+ * a JSON Object instance or the "end" iterator value.
+ */
+struct json_object_iterator {
+ const void* opaque_;
+};
+
+
+/**
+ * forward declaration of json-c's JSON value instance structure
+ */
+struct json_object;
+
+
+/**
+ * Initializes an iterator structure to a "default" value that
+ * is convenient for initializing an iterator variable to a
+ * default state (e.g., initialization list in a class'
+ * constructor).
+ *
+ * @code
+ * struct json_object_iterator iter = json_object_iter_init_default();
+ * MyClass() : iter_(json_object_iter_init_default())
+ * @endcode
+ *
+ * @note The initialized value doesn't reference any specific
+ * pair, is considered an invalid iterator, and MUST NOT
+ * be passed to any json-c API that expects a valid
+ * iterator.
+ *
+ * @note User and internal code MUST NOT make any assumptions
+ * about and dependencies on the value of the "default"
+ * iterator value.
+ *
+ * @return json_object_iterator
+ */
+struct json_object_iterator
+json_object_iter_init_default(void);
+
+/** Retrieves an iterator to the first pair of the JSON Object.
+ *
+ * @warning Any modification of the underlying pair invalidates all
+ * iterators to that pair.
+ *
+ * @param obj JSON Object instance (MUST be of type json_object)
+ *
+ * @return json_object_iterator If the JSON Object has at
+ * least one pair, on return, the iterator refers
+ * to the first pair. If the JSON Object doesn't
+ * have any pairs, the returned iterator is
+ * equivalent to the "end" iterator for the same
+ * JSON Object instance.
+ *
+ * @code
+ * struct json_object_iterator it;
+ * struct json_object_iterator itEnd;
+ * struct json_object* obj;
+ *
+ * obj = json_tokener_parse("{'first':'george', 'age':100}");
+ * it = json_object_iter_begin(obj);
+ * itEnd = json_object_iter_end(obj);
+ *
+ * while (!json_object_iter_equal(&it, &itEnd)) {
+ * printf("%s\n",
+ * json_object_iter_peek_name(&it));
+ * json_object_iter_next(&it);
+ * }
+ *
+ * @endcode
+ */
+struct json_object_iterator
+json_object_iter_begin(struct json_object* obj);
+
+/** Retrieves the iterator that represents the position beyond the
+ * last pair of the given JSON Object instance.
+ *
+ * @warning Do NOT write code that assumes that the "end"
+ * iterator value is NULL, even if it is so in a
+ * particular instance of the implementation.
+ *
+ * @note The reason we do not (and MUST NOT) provide
+ * "json_object_iter_is_end(json_object_iterator* iter)"
+ * type of API is because it would limit the underlying
+ * representation of name/value containment (or force us
+ * to add additional, otherwise unnecessary, fields to
+ * the iterator structure). The "end" iterator and the
+ * equality test method, on the other hand, permit us to
+ * cleanly abstract pretty much any reasonable underlying
+ * representation without burdening the iterator
+ * structure with unnecessary data.
+ *
+ * @note For performance reasons, memorize the "end" iterator prior
+ * to any loop.
+ *
+ * @param obj JSON Object instance (MUST be of type json_object)
+ *
+ * @return json_object_iterator On return, the iterator refers
+ * to the "end" of the Object instance's pairs
+ * (i.e., NOT the last pair, but "beyond the last
+ * pair" value)
+ */
+struct json_object_iterator
+json_object_iter_end(const struct json_object* obj);
+
+/** Returns an iterator to the next pair, if any
+ *
+ * @warning Any modification of the underlying pair
+ * invalidates all iterators to that pair.
+ *
+ * @param iter [IN/OUT] Pointer to iterator that references a
+ * name/value pair; MUST be a valid, non-end iterator.
+ * WARNING: bad things will happen if invalid or "end"
+ * iterator is passed. Upon return will contain the
+ * reference to the next pair if there is one; if there
+ * are no more pairs, will contain the "end" iterator
+ * value, which may be compared against the return value
+ * of json_object_iter_end() for the same JSON Object
+ * instance.
+ */
+void
+json_object_iter_next(struct json_object_iterator* iter);
+
+
+/** Returns a const pointer to the name of the pair referenced
+ * by the given iterator.
+ *
+ * @param iter pointer to iterator that references a name/value
+ * pair; MUST be a valid, non-end iterator.
+ *
+ * @warning bad things will happen if an invalid or
+ * "end" iterator is passed.
+ *
+ * @return const char* Pointer to the name of the referenced
+ * name/value pair. The name memory belongs to the
+ * name/value pair, will be freed when the pair is
+ * deleted or modified, and MUST NOT be modified or
+ * freed by the user.
+ */
+const char*
+json_object_iter_peek_name(const struct json_object_iterator* iter);
+
+
+/** Returns a pointer to the json-c instance representing the
+ * value of the referenced name/value pair, without altering
+ * the instance's reference count.
+ *
+ * @param iter pointer to iterator that references a name/value
+ * pair; MUST be a valid, non-end iterator.
+ *
+ * @warning bad things will happen if invalid or
+ * "end" iterator is passed.
+ *
+ * @return struct json_object* Pointer to the json-c value
+ * instance of the referenced name/value pair; the
+ * value's reference count is not changed by this
+ * function: if you plan to hold on to this json-c node,
+ * take a look at json_object_get() and
+ * json_object_put(). IMPORTANT: json-c API represents
+ * the JSON Null value as a NULL json_object instance
+ * pointer.
+ */
+struct json_object*
+json_object_iter_peek_value(const struct json_object_iterator* iter);
+
+
+/** Tests two iterators for equality. Typically used to test
+ * for end of iteration by comparing an iterator to the
+ * corresponding "end" iterator (that was derived from the same
+ * JSON Object instance).
+ *
+ * @note The reason we do not (and MUST NOT) provide
+ * "json_object_iter_is_end(json_object_iterator* iter)"
+ * type of API is because it would limit the underlying
+ * representation of name/value containment (or force us
+ * to add additional, otherwise unnecessary, fields to
+ * the iterator structure). The equality test method, on
+ * the other hand, permits us to cleanly abstract pretty
+ * much any reasonable underlying representation.
+ *
+ * @param iter1 Pointer to first valid, non-NULL iterator
+ * @param iter2 POinter to second valid, non-NULL iterator
+ *
+ * @warning if a NULL iterator pointer or an uninitialized
+ * or invalid iterator, or iterators derived from
+ * different JSON Object instances are passed, bad things
+ * will happen!
+ *
+ * @return json_bool non-zero if iterators are equal (i.e., both
+ * reference the same name/value pair or are both at
+ * "end"); zero if they are not equal.
+ */
+json_bool
+json_object_iter_equal(const struct json_object_iterator* iter1,
+ const struct json_object_iterator* iter2);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* JSON_OBJECT_ITERATOR_H */