yajl - JSON library working with the compiler. URL: http://lloyd.github.com/yajl/

Dependencies:   mbed

Committer:
rolf
Date:
Wed Nov 18 17:56:51 2009 +0000
Revision:
0:34f4a53d4ca3

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rolf 0:34f4a53d4ca3 1 /*
rolf 0:34f4a53d4ca3 2 * Copyright 2007-2009, Lloyd Hilaiel.
rolf 0:34f4a53d4ca3 3 *
rolf 0:34f4a53d4ca3 4 * Redistribution and use in source and binary forms, with or without
rolf 0:34f4a53d4ca3 5 * modification, are permitted provided that the following conditions are
rolf 0:34f4a53d4ca3 6 * met:
rolf 0:34f4a53d4ca3 7 *
rolf 0:34f4a53d4ca3 8 * 1. Redistributions of source code must retain the above copyright
rolf 0:34f4a53d4ca3 9 * notice, this list of conditions and the following disclaimer.
rolf 0:34f4a53d4ca3 10 *
rolf 0:34f4a53d4ca3 11 * 2. Redistributions in binary form must reproduce the above copyright
rolf 0:34f4a53d4ca3 12 * notice, this list of conditions and the following disclaimer in
rolf 0:34f4a53d4ca3 13 * the documentation and/or other materials provided with the
rolf 0:34f4a53d4ca3 14 * distribution.
rolf 0:34f4a53d4ca3 15 *
rolf 0:34f4a53d4ca3 16 * 3. Neither the name of Lloyd Hilaiel nor the names of its
rolf 0:34f4a53d4ca3 17 * contributors may be used to endorse or promote products derived
rolf 0:34f4a53d4ca3 18 * from this software without specific prior written permission.
rolf 0:34f4a53d4ca3 19 *
rolf 0:34f4a53d4ca3 20 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
rolf 0:34f4a53d4ca3 21 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
rolf 0:34f4a53d4ca3 22 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
rolf 0:34f4a53d4ca3 23 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
rolf 0:34f4a53d4ca3 24 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
rolf 0:34f4a53d4ca3 25 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
rolf 0:34f4a53d4ca3 26 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
rolf 0:34f4a53d4ca3 27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
rolf 0:34f4a53d4ca3 28 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
rolf 0:34f4a53d4ca3 29 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
rolf 0:34f4a53d4ca3 30 * POSSIBILITY OF SUCH DAMAGE.
rolf 0:34f4a53d4ca3 31 */
rolf 0:34f4a53d4ca3 32
rolf 0:34f4a53d4ca3 33 #ifndef __YAJL_COMMON_H__
rolf 0:34f4a53d4ca3 34 #define __YAJL_COMMON_H__
rolf 0:34f4a53d4ca3 35
rolf 0:34f4a53d4ca3 36 #ifdef __cplusplus
rolf 0:34f4a53d4ca3 37 extern "C" {
rolf 0:34f4a53d4ca3 38 #endif
rolf 0:34f4a53d4ca3 39
rolf 0:34f4a53d4ca3 40 #define YAJL_MAX_DEPTH 128
rolf 0:34f4a53d4ca3 41
rolf 0:34f4a53d4ca3 42 /* msft dll export gunk. To build a DLL on windows, you
rolf 0:34f4a53d4ca3 43 * must define WIN32, YAJL_SHARED, and YAJL_BUILD. To use a shared
rolf 0:34f4a53d4ca3 44 * DLL, you must define YAJL_SHARED and WIN32 */
rolf 0:34f4a53d4ca3 45 #if defined(WIN32) && defined(YAJL_SHARED)
rolf 0:34f4a53d4ca3 46 # ifdef YAJL_BUILD
rolf 0:34f4a53d4ca3 47 # define YAJL_API __declspec(dllexport)
rolf 0:34f4a53d4ca3 48 # else
rolf 0:34f4a53d4ca3 49 # define YAJL_API __declspec(dllimport)
rolf 0:34f4a53d4ca3 50 # endif
rolf 0:34f4a53d4ca3 51 #else
rolf 0:34f4a53d4ca3 52 # define YAJL_API
rolf 0:34f4a53d4ca3 53 #endif
rolf 0:34f4a53d4ca3 54
rolf 0:34f4a53d4ca3 55 /** pointer to a malloc function, supporting client overriding memory
rolf 0:34f4a53d4ca3 56 * allocation routines */
rolf 0:34f4a53d4ca3 57 typedef void * (*yajl_malloc_func)(void *ctx, unsigned int sz);
rolf 0:34f4a53d4ca3 58
rolf 0:34f4a53d4ca3 59 /** pointer to a free function, supporting client overriding memory
rolf 0:34f4a53d4ca3 60 * allocation routines */
rolf 0:34f4a53d4ca3 61 typedef void (*yajl_free_func)(void *ctx, void * ptr);
rolf 0:34f4a53d4ca3 62
rolf 0:34f4a53d4ca3 63 /** pointer to a realloc function which can resize an allocation. */
rolf 0:34f4a53d4ca3 64 typedef void * (*yajl_realloc_func)(void *ctx, void * ptr, unsigned int sz);
rolf 0:34f4a53d4ca3 65
rolf 0:34f4a53d4ca3 66 /** A structure which can be passed to yajl_*_alloc routines to allow the
rolf 0:34f4a53d4ca3 67 * client to specify memory allocation functions to be used. */
rolf 0:34f4a53d4ca3 68 typedef struct
rolf 0:34f4a53d4ca3 69 {
rolf 0:34f4a53d4ca3 70 /** pointer to a function that can allocate uninitialized memory */
rolf 0:34f4a53d4ca3 71 yajl_malloc_func malloc;
rolf 0:34f4a53d4ca3 72 /** pointer to a function that can resize memory allocations */
rolf 0:34f4a53d4ca3 73 yajl_realloc_func realloc;
rolf 0:34f4a53d4ca3 74 /** pointer to a function that can free memory allocated using
rolf 0:34f4a53d4ca3 75 * reallocFunction or mallocFunction */
rolf 0:34f4a53d4ca3 76 yajl_free_func free;
rolf 0:34f4a53d4ca3 77 /** a context pointer that will be passed to above allocation routines */
rolf 0:34f4a53d4ca3 78 void * ctx;
rolf 0:34f4a53d4ca3 79 } yajl_alloc_funcs;
rolf 0:34f4a53d4ca3 80
rolf 0:34f4a53d4ca3 81 #ifdef __cplusplus
rolf 0:34f4a53d4ca3 82 }
rolf 0:34f4a53d4ca3 83 #endif
rolf 0:34f4a53d4ca3 84
rolf 0:34f4a53d4ca3 85 #endif