Use Sphinx 1.0, change the HTML theme

This commit is contained in:
Petri Lehtinen 2010-09-05 22:00:47 +03:00
parent 664c88ca97
commit 8567816542
3 changed files with 194 additions and 169 deletions

View File

@ -32,14 +32,14 @@ type, including themselves. For this reason, Jansson's type system is
also dynamic in nature. There's one C type to represent all JSON
values, and this structure knows the type of the JSON value it holds.
.. ctype:: json_t
.. type:: json_t
This data structure is used throughout the library to represent all
JSON values. It always contains the type of the JSON value it holds
and the value's reference count. The rest depends on the type of the
value.
Objects of :ctype:`json_t` are always used through a pointer. There
Objects of :type:`json_t` are always used through a pointer. There
are APIs for querying the type, manipulating the reference count, and
for constructing and manipulating values of different types.
@ -56,42 +56,41 @@ Type
The type of a JSON value is queried and tested using the following
functions:
.. ctype:: enum json_type
.. type:: enum json_type
The type of a JSON value. The following members are defined:
+-------------------------+
| :const:`JSON_OBJECT` |
+-------------------------+
| :const:`JSON_ARRAY` |
+-------------------------+
| :const:`JSON_STRING` |
+-------------------------+
| :const:`JSON_INTEGER` |
+-------------------------+
| :const:`JSON_REAL` |
+-------------------------+
| :const:`JSON_TRUE` |
+-------------------------+
| :const:`JSON_FALSE` |
+-------------------------+
| :const:`JSON_NULL` |
+-------------------------+
+--------------------+
| ``JSON_OBJECT`` |
+--------------------+
| ``JSON_ARRAY`` |
+--------------------+
| ``JSON_STRING`` |
+--------------------+
| ``JSON_INTEGER`` |
+--------------------+
| ``JSON_REAL`` |
+--------------------+
| ``JSON_TRUE`` |
+--------------------+
| ``JSON_FALSE`` |
+--------------------+
| ``JSON_NULL`` |
+--------------------+
These correspond to JSON object, array, string, number, boolean and
null. A number is represented by either a value of the type
:const:`JSON_INTEGER` or of the type :const:`JSON_REAL`. A true
boolean value is represented by a value of the type
:const:`JSON_TRUE` and false by a value of the type
:const:`JSON_FALSE`.
``JSON_INTEGER`` or of the type ``JSON_REAL``. A true boolean value
is represented by a value of the type ``JSON_TRUE`` and false by a
value of the type ``JSON_FALSE``.
.. cfunction:: int json_typeof(const json_t *json)
.. function:: int json_typeof(const json_t *json)
Return the type of the JSON value (a :ctype:`json_type` cast to
:ctype:`int`). *json* MUST NOT be *NULL*. This function is actually
Return the type of the JSON value (a :type:`json_type` cast to
:type:`int`). *json* MUST NOT be *NULL*. This function is actually
implemented as a macro for speed.
.. cfunction:: json_is_object(const json_t *json)
.. function:: json_is_object(const json_t *json)
json_is_array(const json_t *json)
json_is_string(const json_t *json)
json_is_integer(const json_t *json)
@ -104,15 +103,15 @@ functions:
of the given type, and false (zero) for values of other types and
for *NULL*.
.. cfunction:: json_is_number(const json_t *json)
.. function:: json_is_number(const json_t *json)
Returns true for values of types :const:`JSON_INTEGER` and
:const:`JSON_REAL`, and false for other types and for *NULL*.
Returns true for values of types ``JSON_INTEGER`` and
``JSON_REAL``, and false for other types and for *NULL*.
.. cfunction:: json_is_boolean(const json_t *json)
.. function:: json_is_boolean(const json_t *json)
Returns true for types :const:`JSON_TRUE` and :const:`JSON_FALSE`,
and false for values of other types and for *NULL*.
Returns true for types ``JSON_TRUE`` and ``JSON_FALSE``, and false
for values of other types and for *NULL*.
.. _apiref-reference-count:
@ -130,15 +129,15 @@ value can be destroyed.
The following functions are used to manipulate the reference count.
.. cfunction:: json_t *json_incref(json_t *json)
.. function:: json_t *json_incref(json_t *json)
Increment the reference count of *json* if it's not non-*NULL*.
Returns *json*.
.. cfunction:: void json_decref(json_t *json)
.. function:: void json_decref(json_t *json)
Decrement the reference count of *json*. As soon as a call to
:cfunc:`json_decref()` drops the reference count to zero, the value
:func:`json_decref()` drops the reference count to zero, the value
is destroyed and it can no longer be used.
Functions creating new JSON values set the reference count to 1. These
@ -146,14 +145,14 @@ functions are said to return a **new reference**. Other functions
returning (existing) JSON values do not normally increase the
reference count. These functions are said to return a **borrowed
reference**. So, if the user will hold a reference to a value returned
as a borrowed reference, he must call :cfunc:`json_incref`. As soon as
the value is no longer needed, :cfunc:`json_decref` should be called
as a borrowed reference, he must call :func:`json_incref`. As soon as
the value is no longer needed, :func:`json_decref` should be called
to release the reference.
Normally, all functions accepting a JSON value as an argument will
manage the reference, i.e. increase and decrease the reference count
as needed. However, some functions **steal** the reference, i.e. they
have the same result as if the user called :cfunc:`json_decref()` on
have the same result as if the user called :func:`json_decref()` on
the argument right after calling the function. These functions are
suffixed with ``_new`` or have ``_new_`` somewhere in their name.
@ -169,15 +168,15 @@ an integer to it::
json_decref(integer);
Note how the caller has to release the reference to the integer value
by calling :cfunc:`json_decref()`. By using a reference stealing
function :cfunc:`json_array_append_new()` instead of
:cfunc:`json_array_append()`, the code becomes much simpler::
by calling :func:`json_decref()`. By using a reference stealing
function :func:`json_array_append_new()` instead of
:func:`json_array_append()`, the code becomes much simpler::
json_t *array = json_array();
json_array_append_new(array, json_integer(42));
In this case, the user doesn't have to explicitly release the
reference to the integer value, as :cfunc:`json_array_append_new()`
reference to the integer value, as :func:`json_array_append_new()`
steals the reference when appending the value to the array.
In the following sections it is clearly documented whether a function
@ -195,7 +194,7 @@ simple::
json_t *obj = json_object();
json_object_set(obj, "foo", obj);
Jansson will refuse to do this, and :cfunc:`json_object_set()` (and
Jansson will refuse to do this, and :func:`json_object_set()` (and
all the other such functions for objects and arrays) will return with
an error status. The indirect case is the dangerous one::
@ -209,7 +208,7 @@ indirect circular references without a performance hit, so it's up to
the user to avoid them.
If a circular reference is created, the memory consumed by the values
cannot be freed by :cfunc:`json_decref()`. The reference counts never
cannot be freed by :func:`json_decref()`. The reference counts never
drops to zero because the values are keeping the references to each
other. Moreover, trying to encode the values with any of the encoding
functions will fail. The encoder detects circular references and
@ -222,19 +221,19 @@ True, False and Null
These values are implemented as singletons, so each of these functions
returns the same value each time.
.. cfunction:: json_t *json_true(void)
.. function:: json_t *json_true(void)
.. refcounting:: new
Returns the JSON true value.
.. cfunction:: json_t *json_false(void)
.. function:: json_t *json_false(void)
.. refcounting:: new
Returns the JSON false value.
.. cfunction:: json_t *json_null(void)
.. function:: json_t *json_null(void)
.. refcounting:: new
@ -250,29 +249,29 @@ terminated C strings are used, so JSON strings may not contain
embedded null characters. All other Unicode codepoints U+0001 through
U+10FFFF are allowed.
.. cfunction:: json_t *json_string(const char *value)
.. function:: json_t *json_string(const char *value)
.. refcounting:: new
Returns a new JSON string, or *NULL* on error. *value* must be a
valid UTF-8 encoded Unicode string.
.. cfunction:: json_t *json_string_nocheck(const char *value)
.. function:: json_t *json_string_nocheck(const char *value)
.. refcounting:: new
Like :cfunc:`json_string`, but doesn't check that *value* is valid
Like :func:`json_string`, but doesn't check that *value* is valid
UTF-8. Use this function only if you are certain that this really
is the case (e.g. you have already checked it by other means).
.. versionadded:: 1.2
.. cfunction:: const char *json_string_value(const json_t *string)
.. function:: const char *json_string_value(const json_t *string)
Returns the associated value of *string* as a null terminated UTF-8
encoded string, or *NULL* if *string* is not a JSON string.
.. cfunction:: int json_string_set(const json_t *string, const char *value)
.. function:: int json_string_set(const json_t *string, const char *value)
Sets the associated value of *string* to *value*. *value* must be a
valid UTF-8 encoded Unicode string. Returns 0 on success and -1 on
@ -280,9 +279,9 @@ U+10FFFF are allowed.
.. versionadded:: 1.1
.. cfunction:: int json_string_set_nocheck(const json_t *string, const char *value)
.. function:: int json_string_set_nocheck(const json_t *string, const char *value)
Like :cfunc:`json_string_set`, but doesn't check that *value* is
Like :func:`json_string_set`, but doesn't check that *value* is
valid UTF-8. Use this function only if you are certain that this
really is the case (e.g. you have already checked it by other
means).
@ -299,7 +298,7 @@ numbers, so for practical reasons Jansson also has distinct types for
the two. They are called "integer" and "real", respectively. For more
information, see :ref:`rfc-conformance`.
.. ctype:: json_int_t
.. type:: json_int_t
This is the C type that is used to store JSON integer values. It
represents the widest integer type available on your system. In
@ -314,7 +313,7 @@ information, see :ref:`rfc-conformance`.
``JSON_INTEGER_IS_LONG_LONG``
This is a preprocessor variable that holds the value 1 if
:ctype:`json_int_t` is ``long long``, and 0 if it's ``long``. It
:type:`json_int_t` is ``long long``, and 0 if it's ``long``. It
can be used as follows::
#if JSON_INTEGER_IS_LONG_LONG
@ -325,11 +324,11 @@ information, see :ref:`rfc-conformance`.
``JSON_INTEGER_FORMAT``
This is a macro that expands to a :cfunc:`printf()` conversion
specifier that corresponds to :ctype:`json_int_t`, without the
This is a macro that expands to a :func:`printf()` conversion
specifier that corresponds to :type:`json_int_t`, without the
leading ``%`` sign, i.e. either ``"lld"`` or ``"ld"``. This macro
is required because the actual type of :ctype:`json_int_t` can be
either ``long`` or ``long long``, and :cfunc:`printf()` reuiqres
is required because the actual type of :type:`json_int_t` can be
either ``long`` or ``long long``, and :func:`printf()` reuiqres
different length modifiers for the two.
Example::
@ -338,36 +337,36 @@ information, see :ref:`rfc-conformance`.
printf("x is %" JSON_INTEGER_FORMAT "\n", x);
.. cfunction:: json_t *json_integer(json_int_t value)
.. function:: json_t *json_integer(json_int_t value)
.. refcounting:: new
Returns a new JSON integer, or *NULL* on error.
.. cfunction:: json_int_t json_integer_value(const json_t *integer)
.. function:: json_int_t json_integer_value(const json_t *integer)
Returns the associated value of *integer*, or 0 if *json* is not a
JSON integer.
.. cfunction:: int json_integer_set(const json_t *integer, json_int_t value)
.. function:: int json_integer_set(const json_t *integer, json_int_t value)
Sets the associated value of *integer* to *value*. Returns 0 on
success and -1 if *integer* is not a JSON integer.
.. versionadded:: 1.1
.. cfunction:: json_t *json_real(double value)
.. function:: json_t *json_real(double value)
.. refcounting:: new
Returns a new JSON real, or *NULL* on error.
.. cfunction:: double json_real_value(const json_t *real)
.. function:: double json_real_value(const json_t *real)
Returns the associated value of *real*, or 0.0 if *real* is not a
JSON real.
.. cfunction:: int json_real_set(const json_t *real, double value)
.. function:: int json_real_set(const json_t *real, double value)
Sets the associated value of *real* to *value*. Returns 0 on
success and -1 if *real* is not a JSON real.
@ -377,7 +376,7 @@ information, see :ref:`rfc-conformance`.
In addition to the functions above, there's a common query function
for integers and reals:
.. cfunction:: double json_number_value(const json_t *json)
.. function:: double json_number_value(const json_t *json)
Returns the associated value of the JSON integer or JSON real
*json*, cast to double regardless of the actual type. If *json* is
@ -389,57 +388,57 @@ Array
A JSON array is an ordered collection of other JSON values.
.. cfunction:: json_t *json_array(void)
.. function:: json_t *json_array(void)
.. refcounting:: new
Returns a new JSON array, or *NULL* on error. Initially, the array
is empty.
.. cfunction:: size_t json_array_size(const json_t *array)
.. function:: size_t json_array_size(const json_t *array)
Returns the number of elements in *array*, or 0 if *array* is NULL
or not a JSON array.
.. cfunction:: json_t *json_array_get(const json_t *array, size_t index)
.. function:: json_t *json_array_get(const json_t *array, size_t index)
.. refcounting:: borrow
Returns the element in *array* at position *index*. The valid range
for *index* is from 0 to the return value of
:cfunc:`json_array_size()` minus 1. If *array* is not a JSON array,
:func:`json_array_size()` minus 1. If *array* is not a JSON array,
if *array* is *NULL*, or if *index* is out of range, *NULL* is
returned.
.. cfunction:: int json_array_set(json_t *array, size_t index, json_t *value)
.. function:: int json_array_set(json_t *array, size_t index, json_t *value)
Replaces the element in *array* at position *index* with *value*.
The valid range for *index* is from 0 to the return value of
:cfunc:`json_array_size()` minus 1. Returns 0 on success and -1 on
:func:`json_array_size()` minus 1. Returns 0 on success and -1 on
error.
.. cfunction:: int json_array_set_new(json_t *array, size_t index, json_t *value)
.. function:: int json_array_set_new(json_t *array, size_t index, json_t *value)
Like :cfunc:`json_array_set()` but steals the reference to *value*.
Like :func:`json_array_set()` but steals the reference to *value*.
This is useful when *value* is newly created and not used after
the call.
.. versionadded:: 1.1
.. cfunction:: int json_array_append(json_t *array, json_t *value)
.. function:: int json_array_append(json_t *array, json_t *value)
Appends *value* to the end of *array*, growing the size of *array*
by 1. Returns 0 on success and -1 on error.
.. cfunction:: int json_array_append_new(json_t *array, json_t *value)
.. function:: int json_array_append_new(json_t *array, json_t *value)
Like :cfunc:`json_array_append()` but steals the reference to
Like :func:`json_array_append()` but steals the reference to
*value*. This is useful when *value* is newly created and not used
after the call.
.. versionadded:: 1.1
.. cfunction:: int json_array_insert(json_t *array, size_t index, json_t *value)
.. function:: int json_array_insert(json_t *array, size_t index, json_t *value)
Inserts *value* to *array* at position *index*, shifting the
elements at *index* and after it one position towards the end of
@ -447,15 +446,15 @@ A JSON array is an ordered collection of other JSON values.
.. versionadded:: 1.1
.. cfunction:: int json_array_insert_new(json_t *array, size_t index, json_t *value)
.. function:: int json_array_insert_new(json_t *array, size_t index, json_t *value)
Like :cfunc:`json_array_insert()` but steals the reference to
Like :func:`json_array_insert()` but steals the reference to
*value*. This is useful when *value* is newly created and not used
after the call.
.. versionadded:: 1.1
.. cfunction:: int json_array_remove(json_t *array, size_t index)
.. function:: int json_array_remove(json_t *array, size_t index)
Removes the element in *array* at position *index*, shifting the
elements after *index* one position towards the start of the array.
@ -463,14 +462,14 @@ A JSON array is an ordered collection of other JSON values.
.. versionadded:: 1.1
.. cfunction:: int json_array_clear(json_t *array)
.. function:: int json_array_clear(json_t *array)
Removes all elements from *array*. Returns 0 on sucess and -1 on
error.
.. versionadded:: 1.1
.. cfunction:: int json_array_extend(json_t *array, json_t *other_array)
.. function:: int json_array_extend(json_t *array, json_t *other_array)
Appends all elements in *other_array* to the end of *array*.
Returns 0 on success and -1 on error.
@ -484,74 +483,74 @@ Object
A JSON object is a dictionary of key-value pairs, where the key is a
Unicode string and the value is any JSON value.
.. cfunction:: json_t *json_object(void)
.. function:: json_t *json_object(void)
.. refcounting:: new
Returns a new JSON object, or *NULL* on error. Initially, the
object is empty.
.. cfunction:: size_t json_object_size(const json_t *object)
.. function:: size_t json_object_size(const json_t *object)
Returns the number of elements in *object*, or 0 if *object* is not
a JSON object.
.. versionadded:: 1.1
.. cfunction:: json_t *json_object_get(const json_t *object, const char *key)
.. function:: json_t *json_object_get(const json_t *object, const char *key)
.. refcounting:: borrow
Get a value corresponding to *key* from *object*. Returns *NULL* if
*key* is not found and on error.
.. cfunction:: int json_object_set(json_t *object, const char *key, json_t *value)
.. function:: int json_object_set(json_t *object, const char *key, json_t *value)
Set the value of *key* to *value* in *object*. *key* must be a
valid null terminated UTF-8 encoded Unicode string. If there
already is a value for *key*, it is replaced by the new value.
Returns 0 on success and -1 on error.
.. cfunction:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
.. function:: int json_object_set_nocheck(json_t *object, const char *key, json_t *value)
Like :cfunc:`json_object_set`, but doesn't check that *key* is
Like :func:`json_object_set`, but doesn't check that *key* is
valid UTF-8. Use this function only if you are certain that this
really is the case (e.g. you have already checked it by other
means).
.. versionadded:: 1.2
.. cfunction:: int json_object_set_new(json_t *object, const char *key, json_t *value)
.. function:: int json_object_set_new(json_t *object, const char *key, json_t *value)
Like :cfunc:`json_object_set()` but steals the reference to
Like :func:`json_object_set()` but steals the reference to
*value*. This is useful when *value* is newly created and not used
after the call.
.. versionadded:: 1.1
.. cfunction:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
.. function:: int json_object_set_new_nocheck(json_t *object, const char *key, json_t *value)
Like :cfunc:`json_object_set_new`, but doesn't check that *key* is
Like :func:`json_object_set_new`, but doesn't check that *key* is
valid UTF-8. Use this function only if you are certain that this
really is the case (e.g. you have already checked it by other
means).
.. versionadded:: 1.2
.. cfunction:: int json_object_del(json_t *object, const char *key)
.. function:: int json_object_del(json_t *object, const char *key)
Delete *key* from *object* if it exists. Returns 0 on success, or
-1 if *key* was not found.
.. cfunction:: int json_object_clear(json_t *object)
.. function:: int json_object_clear(json_t *object)
Remove all elements from *object*. Returns 0 on success and -1 if
*object* is not a JSON object.
.. versionadded:: 1.1
.. cfunction:: int json_object_update(json_t *object, json_t *other)
.. function:: int json_object_update(json_t *object, json_t *other)
Update *object* with the key-value pairs from *other*, overwriting
existing keys. Returns 0 on success or -1 on error.
@ -561,14 +560,14 @@ Unicode string and the value is any JSON value.
The following functions implement an iteration protocol for objects:
.. cfunction:: void *json_object_iter(json_t *object)
.. function:: void *json_object_iter(json_t *object)
Returns an opaque iterator which can be used to iterate over all
key-value pairs in *object*, or *NULL* if *object* is empty.
.. cfunction:: void *json_object_iter_at(json_t *object, const char *key)
.. function:: void *json_object_iter_at(json_t *object, const char *key)
Like :cfunc:`json_object_iter()`, but returns an iterator to the
Like :func:`json_object_iter()`, but returns an iterator to the
key-value pair in *object* whose key is equal to *key*, or NULL if
*key* is not found in *object*. Iterating forward to the end of
*object* only yields all key-value pairs of the object if *key*
@ -576,32 +575,32 @@ The following functions implement an iteration protocol for objects:
.. versionadded:: 1.3
.. cfunction:: void *json_object_iter_next(json_t *object, void *iter)
.. function:: void *json_object_iter_next(json_t *object, void *iter)
Returns an iterator pointing to the next key-value pair in *object*
after *iter*, or *NULL* if the whole object has been iterated
through.
.. cfunction:: const char *json_object_iter_key(void *iter)
.. function:: const char *json_object_iter_key(void *iter)
Extract the associated key from *iter*.
.. cfunction:: json_t *json_object_iter_value(void *iter)
.. function:: json_t *json_object_iter_value(void *iter)
.. refcounting:: borrow
Extract the associated value from *iter*.
.. cfunction:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
.. function:: int json_object_iter_set(json_t *object, void *iter, json_t *value)
Set the value of the key-value pair in *object*, that is pointed to
by *iter*, to *value*.
.. versionadded:: 1.3
.. cfunction:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
.. function:: int json_object_iter_set_new(json_t *object, void *iter, json_t *value)
Like :cfunc:`json_object_iter_set()`, but steals the reference to
Like :func:`json_object_iter_set()`, but steals the reference to
*value*. This is useful when *value* is newly created and not used
after the call.
@ -679,13 +678,13 @@ can be ORed together to obtain *flags*.
The following functions perform the actual JSON encoding. The result
is in UTF-8.
.. cfunction:: char *json_dumps(const json_t *root, size_t flags)
.. function:: char *json_dumps(const json_t *root, size_t flags)
Returns the JSON representation of *root* as a string, or *NULL* on
error. *flags* is described above. The return value must be freed
by the caller using :cfunc:`free()`.
by the caller using :func:`free()`.
.. cfunction:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
.. function:: int json_dumpf(const json_t *root, FILE *output, size_t flags)
Write the JSON representation of *root* to the stream *output*.
*flags* is described above. Returns 0 on success and -1 on error.
@ -693,7 +692,7 @@ is in UTF-8.
*output*. In this case, the output is undefined and most likely not
valid JSON.
.. cfunction:: int json_dump_file(const json_t *json, const char *path, size_t flags)
.. function:: int json_dump_file(const json_t *json, const char *path, size_t flags)
Write the JSON representation of *root* to the file *path*. If
*path* already exists, it is overwritten. *flags* is described
@ -714,7 +713,7 @@ See :ref:`rfc-conformance` for a discussion on Jansson's conformance
to the JSON specification. It explains many design decisions that
affect especially the behavior of the decoder.
.. ctype:: json_error_t
.. type:: json_error_t
This data structure is used to return information on decoding
errors from the decoding functions. Its definition is repeated
@ -732,7 +731,7 @@ affect especially the behavior of the decoder.
message (in UTF-8), or an empty string if a message is not
available.
The normal usef of :ctype:`json_error_t` is to allocate it normally
The normal usef of :type:`json_error_t` is to allocate it normally
on the stack, and pass a pointer to a decoding function. Example::
int main() {
@ -750,12 +749,12 @@ affect especially the behavior of the decoder.
above example), the contents of ``error`` are unspecified.
All decoding functions also accept *NULL* as the
:ctype:`json_error_t` pointer, in which case no error information
:type:`json_error_t` pointer, in which case no error information
is returned to the caller.
The following functions perform the actual JSON decoding.
.. cfunction:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
.. function:: json_t *json_loads(const char *input, size_t flags, json_error_t *error)
.. refcounting:: new
@ -765,7 +764,7 @@ The following functions perform the actual JSON decoding.
*error* parameter. *flags* is currently unused, and should be set
to 0.
.. cfunction:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
.. function:: json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
.. refcounting:: new
@ -775,7 +774,7 @@ The following functions perform the actual JSON decoding.
on the *error* parameter. *flags* is currently unused, and should
be set to 0.
.. cfunction:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
.. function:: json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
.. refcounting:: new
@ -791,7 +790,7 @@ Equality
Testing for equality of two JSON values cannot, in general, be
achieved using the ``==`` operator. Equality in the terms of the
``==`` operator states that the two :ctype:`json_t` pointers point to
``==`` operator states that the two :type:`json_t` pointers point to
exactly the same JSON value. However, two JSON values can be equal not
only if they are exactly the same value, but also if they have equal
"contents":
@ -818,7 +817,7 @@ only if they are exactly the same value, but also if they have equal
The following function can be used to test whether two JSON values are
equal.
.. cfunction:: int json_equal(json_t *value1, json_t *value2)
.. function:: int json_equal(json_t *value1, json_t *value2)
Returns 1 if *value1* and *value2* are equal, as defined above.
Returns 0 if they are inequal or one or both of the pointers are
@ -842,7 +841,7 @@ the same child values in the copied value. Deep copying makes a fresh
copy of the child values, too. Moreover, all the child values are deep
copied in a recursive fashion.
.. cfunction:: json_t *json_copy(json_t *value)
.. function:: json_t *json_copy(json_t *value)
.. refcounting:: new
@ -850,7 +849,7 @@ copied in a recursive fashion.
.. versionadded:: 1.2
.. cfunction:: json_t *json_deep_copy(json_t *value)
.. function:: json_t *json_deep_copy(json_t *value)
.. refcounting:: new

View File

@ -1,13 +1,10 @@
# -*- coding: utf-8 -*-
#
# Jansson documentation build configuration file, created by
# sphinx-quickstart on Thu Jul 30 11:35:32 2009.
# sphinx-quickstart on Sun Sep 5 21:47:20 2010.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# The contents of this file are pickled, so don't put values in the namespace
# that aren't pickleable (module imports are okay, they're removed automatically).
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
@ -15,35 +12,36 @@
# serve to show the default.
import sys, os
sys.path.insert(0, os.path.abspath('ext'))
# If your extensions (or modules documented by autodoc) are in another directory,
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.append(os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('ext'))
# General configuration
# ---------------------
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['refcounting']
# Add any paths that contain templates here, relative to this directory.
templates_path = []
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8'
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'Jansson'
copyright = u'2009, 2010 Petri Lehtinen'
copyright = u'2010, Petri Lehtinen'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
@ -64,15 +62,13 @@ release = '2.0pre'
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of documents that shouldn't be included in the build.
#unused_docs = []
# List of directories, relative to source directory, that shouldn't be searched
# for source files.
exclude_trees = ['_build']
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
default_role = 'cfunc'
default_role = 'c:func'
primary_domain = 'c'
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
@ -88,14 +84,23 @@ default_role = 'cfunc'
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# Options for HTML output
# -----------------------
# The style sheet to use for HTML and HTML Help pages. A file of that name
# must exist either in Sphinx' static/ path, or in one of the custom paths
# given in html_static_path.
html_style = 'default.css'
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'haiku'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
@ -116,7 +121,7 @@ html_style = 'default.css'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = []
#html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
@ -134,7 +139,7 @@ html_static_path = []
#html_additional_pages = {}
# If false, no module index is generated.
#html_use_modindex = True
#html_domain_indices = True
# If false, no index is generated.
#html_use_index = True
@ -142,23 +147,28 @@ html_static_path = []
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, the reST sources are included in the HTML build as _sources/<name>.
#html_copy_source = True
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'Janssondoc'
# Options for LaTeX output
# ------------------------
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
@ -167,10 +177,10 @@ htmlhelp_basename = 'Janssondoc'
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, document class [howto/manual]).
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'Jansson.tex', ur'Jansson Documentation',
ur'Petri Lehtinen', 'manual'),
('index', 'Jansson.tex', u'Jansson Documentation',
u'Petri Lehtinen', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
@ -181,6 +191,12 @@ latex_documents = [
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
@ -188,4 +204,14 @@ latex_documents = [
#latex_appendices = []
# If false, no module index is generated.
#latex_use_modindex = True
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'jansson', u'Jansson Documentation',
[u'Petri Lehtinen'], 1)
]

View File

@ -149,7 +149,7 @@ If an error occurs, our function ``request`` prints the error and
returns *NULL*, so it's enough to just return 1 from the main
function.
Next we'll call :cfunc:`json_loads()` to decode the JSON text we got
Next we'll call :func:`json_loads()` to decode the JSON text we got
as a response::
root = json_loads(text, 0, &error);
@ -162,8 +162,8 @@ as a response::
}
We don't need the JSON text anymore, so we can free the ``text``
variable right after decoding it. If :cfunc:`json_loads()` fails, it
returns *NULL* and sets error information to the :ctype:`json_error_t`
variable right after decoding it. If :func:`json_loads()` fails, it
returns *NULL* and sets error information to the :type:`json_error_t`
structure given as the second parameter. In this case, our program
prints the error information out and returns 1 from the main function.
@ -182,8 +182,8 @@ First, we'll extract the ``commits`` array from the JSON response::
This is the array that contains objects describing latest commits in
the repository. We check that the returned value really is an array.
If the key ``commits`` doesn't exist, :cfunc:`json_object_get()`
returns *NULL*, but :cfunc:`json_is_array()` handles this case, too.
If the key ``commits`` doesn't exist, :func:`json_object_get()`
returns *NULL*, but :func:`json_is_array()` handles this case, too.
Then we proceed to loop over all the commits in the array::
@ -200,9 +200,9 @@ Then we proceed to loop over all the commits in the array::
}
...
The function :cfunc:`json_array_size()` returns the size of a JSON
The function :func:`json_array_size()` returns the size of a JSON
array. First, we again declare some variables and then extract the
i'th element of the ``commits`` array using :cfunc:`json_array_get()`.
i'th element of the ``commits`` array using :func:`json_array_get()`.
We also check that the resulting value is a JSON object.
Next we'll extract the commit ID and commit message, and check that
@ -225,7 +225,7 @@ they both are JSON strings::
And finally, we'll print the first 8 characters of the commit ID and
the first line of the commit message. A C-style string is extracted
from a JSON string using :cfunc:`json_string_value()`::
from a JSON string using :func:`json_string_value()`::
message_text = json_string_value(message);
printf("%.8s %.*s\n",
@ -235,9 +235,9 @@ from a JSON string using :cfunc:`json_string_value()`::
}
After sending the HTTP request, we decoded the JSON text using
:cfunc:`json_loads()`, remember? It returns a *new reference* to the
:func:`json_loads()`, remember? It returns a *new reference* to the
JSON value it decodes. When we're finished with the value, we'll need
to decrease the reference count using :cfunc:`json_decref()`. This way
to decrease the reference count using :func:`json_decref()`. This way
Jansson can release the resources::
json_decref(root);