cJSON.h
author Ryan C. Gordon <icculus@icculus.org>
Fri, 23 Jun 2017 17:28:03 -0400
changeset 58 1390348facc7
permissions -rw-r--r--
Command line tool that decrypts an OPVault keychain and dumps it to stdout. To compile: gcc -o opvault opvault.c cJSON.c -lcrypto Usage: ./opvault </path/to/mykeychain.opvault> <password> This is just a proof of concept; I'll be recycling this into proper OPVault support in 1pass later and deleting this tool. This uses OpenSSL's libcrypto for the math instead of all the homegrown crypto this project is otherwise using. I'll probably migrate the rest in this direction, too, since this wasn't as bad as I expected to use and gets you all the package-manager mojo of automatic bug fixes and security patches and shared code, etc. cJSON parses JSON in C. That is from https://github.com/DaveGamble/cJSON An example OPVault keychain from AgileBits is available here: https://cache.agilebits.com/security-kb/
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     1
/*
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     2
  Copyright (c) 2009-2017 Dave Gamble and cJSON contributors
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     3
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     4
  Permission is hereby granted, free of charge, to any person obtaining a copy
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     5
  of this software and associated documentation files (the "Software"), to deal
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     6
  in the Software without restriction, including without limitation the rights
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     7
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     8
  copies of the Software, and to permit persons to whom the Software is
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
     9
  furnished to do so, subject to the following conditions:
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    10
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    11
  The above copyright notice and this permission notice shall be included in
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    12
  all copies or substantial portions of the Software.
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    13
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    14
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    15
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    16
  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    17
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    18
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    19
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    20
  THE SOFTWARE.
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    21
*/
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    22
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    23
#ifndef cJSON__h
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    24
#define cJSON__h
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    25
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    26
#ifdef __cplusplus
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    27
extern "C"
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    28
{
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    29
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    30
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    31
/* project version */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    32
#define CJSON_VERSION_MAJOR 1
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    33
#define CJSON_VERSION_MINOR 5
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    34
#define CJSON_VERSION_PATCH 5
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    35
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    36
#include <stddef.h>
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    37
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    38
/* cJSON Types: */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    39
#define cJSON_Invalid (0)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    40
#define cJSON_False  (1 << 0)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    41
#define cJSON_True   (1 << 1)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    42
#define cJSON_NULL   (1 << 2)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    43
#define cJSON_Number (1 << 3)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    44
#define cJSON_String (1 << 4)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    45
#define cJSON_Array  (1 << 5)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    46
#define cJSON_Object (1 << 6)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    47
#define cJSON_Raw    (1 << 7) /* raw json */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    48
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    49
#define cJSON_IsReference 256
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    50
#define cJSON_StringIsConst 512
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    51
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    52
/* The cJSON structure: */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    53
typedef struct cJSON
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    54
{
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    55
    /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    56
    struct cJSON *next;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    57
    struct cJSON *prev;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    58
    /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    59
    struct cJSON *child;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    60
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    61
    /* The type of the item, as above. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    62
    int type;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    63
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    64
    /* The item's string, if type==cJSON_String  and type == cJSON_Raw */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    65
    char *valuestring;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    66
    /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    67
    int valueint;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    68
    /* The item's number, if type==cJSON_Number */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    69
    double valuedouble;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    70
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    71
    /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    72
    char *string;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    73
} cJSON;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    74
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    75
typedef struct cJSON_Hooks
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    76
{
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    77
      void *(*malloc_fn)(size_t sz);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    78
      void (*free_fn)(void *ptr);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    79
} cJSON_Hooks;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    80
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    81
typedef int cJSON_bool;
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    82
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    83
#if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    84
#define __WINDOWS__
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    85
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    86
#ifdef __WINDOWS__
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    87
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    88
/* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention.  For windows you have 2 define options:
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    89
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    90
CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    91
CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    92
CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    93
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    94
For *nix builds that support visibility attribute, you can define similar behavior by
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    95
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    96
setting default visibility to hidden by adding
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    97
-fvisibility=hidden (for gcc)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    98
or
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
    99
-xldscope=hidden (for sun cc)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   100
to CFLAGS
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   101
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   102
then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   103
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   104
*/
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   105
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   106
/* export symbols by default, this is necessary for copy pasting the C and header file */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   107
#if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   108
#define CJSON_EXPORT_SYMBOLS
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   109
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   110
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   111
#if defined(CJSON_HIDE_SYMBOLS)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   112
#define CJSON_PUBLIC(type)   type __stdcall
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   113
#elif defined(CJSON_EXPORT_SYMBOLS)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   114
#define CJSON_PUBLIC(type)   __declspec(dllexport) type __stdcall
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   115
#elif defined(CJSON_IMPORT_SYMBOLS)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   116
#define CJSON_PUBLIC(type)   __declspec(dllimport) type __stdcall
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   117
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   118
#else /* !WIN32 */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   119
#if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   120
#define CJSON_PUBLIC(type)   __attribute__((visibility("default"))) type
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   121
#else
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   122
#define CJSON_PUBLIC(type) type
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   123
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   124
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   125
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   126
/* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them.
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   127
 * This is to prevent stack overflows. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   128
#ifndef CJSON_NESTING_LIMIT
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   129
#define CJSON_NESTING_LIMIT 1000
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   130
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   131
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   132
/* returns the version of cJSON as a string */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   133
CJSON_PUBLIC(const char*) cJSON_Version(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   134
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   135
/* Supply malloc, realloc and free functions to cJSON */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   136
CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   137
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   138
/* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   139
/* Supply a block of JSON, and this returns a cJSON object you can interrogate. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   140
CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   141
/* Render a cJSON entity to text for transfer/storage. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   142
CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   143
/* Render a cJSON entity to text for transfer/storage without any formatting. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   144
CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   145
/* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   146
CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   147
/* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   148
/* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   149
CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   150
/* Delete a cJSON entity and all subentities. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   151
CJSON_PUBLIC(void) cJSON_Delete(cJSON *c);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   152
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   153
/* Returns the number of items in an array (or object). */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   154
CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   155
/* Retrieve item number "item" from array "array". Returns NULL if unsuccessful. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   156
CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   157
/* Get item "string" from object. Case insensitive. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   158
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   159
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   160
CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   161
/* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   162
CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   163
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   164
/* These functions check the type of an item */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   165
CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   166
CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   167
CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   168
CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   169
CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   170
CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   171
CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   172
CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   173
CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   174
CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   175
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   176
/* These calls create a cJSON item of the appropriate type. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   177
CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   178
CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   179
CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   180
CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   181
CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   182
CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   183
/* raw json */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   184
CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   185
CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   186
CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   187
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   188
/* These utilities create an Array of count items. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   189
CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   190
CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   191
CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   192
CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char **strings, int count);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   193
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   194
/* Append item to the specified array/object. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   195
CJSON_PUBLIC(void) cJSON_AddItemToArray(cJSON *array, cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   196
CJSON_PUBLIC(void) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   197
/* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object.
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   198
 * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   199
 * writing to `item->string` */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   200
CJSON_PUBLIC(void) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   201
/* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   202
CJSON_PUBLIC(void) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   203
CJSON_PUBLIC(void) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   204
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   205
/* Remove/Detatch items from Arrays/Objects. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   206
CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   207
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   208
CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   209
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   210
CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   211
CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   212
CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   213
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   214
/* Update array items. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   215
CJSON_PUBLIC(void) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   216
CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   217
CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   218
CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   219
CJSON_PUBLIC(void) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   220
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   221
/* Duplicate a cJSON item */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   222
CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   223
/* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   224
need to be released. With recurse!=0, it will duplicate any children connected to the item.
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   225
The item->next and ->prev pointers are always zero on return from Duplicate. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   226
/* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal.
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   227
 * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   228
CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   229
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   230
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   231
/* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   232
/* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error. If not, then cJSON_GetErrorPtr() does the job. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   233
CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   234
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   235
CJSON_PUBLIC(void) cJSON_Minify(char *json);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   236
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   237
/* Macros for creating things quickly. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   238
#define cJSON_AddNullToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateNull())
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   239
#define cJSON_AddTrueToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateTrue())
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   240
#define cJSON_AddFalseToObject(object,name) cJSON_AddItemToObject(object, name, cJSON_CreateFalse())
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   241
#define cJSON_AddBoolToObject(object,name,b) cJSON_AddItemToObject(object, name, cJSON_CreateBool(b))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   242
#define cJSON_AddNumberToObject(object,name,n) cJSON_AddItemToObject(object, name, cJSON_CreateNumber(n))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   243
#define cJSON_AddStringToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateString(s))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   244
#define cJSON_AddRawToObject(object,name,s) cJSON_AddItemToObject(object, name, cJSON_CreateRaw(s))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   245
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   246
/* When assigning an integer value, it needs to be propagated to valuedouble too. */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   247
#define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   248
/* helper for the cJSON_SetNumberValue macro */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   249
CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   250
#define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number))
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   251
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   252
/* Macro for iterating over an array or object */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   253
#define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next)
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   254
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   255
/* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   256
CJSON_PUBLIC(void *) cJSON_malloc(size_t size);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   257
CJSON_PUBLIC(void) cJSON_free(void *object);
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   258
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   259
#ifdef __cplusplus
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   260
}
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   261
#endif
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   262
1390348facc7 Command line tool that decrypts an OPVault keychain and dumps it to stdout.
Ryan C. Gordon <icculus@icculus.org>
parents:
diff changeset
   263
#endif