diff -r d187e7fc9970 -r ef7abb48573b jsonsax.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jsonsax.h Sun Oct 07 14:30:52 2012 -0400 @@ -0,0 +1,65 @@ +/* +Copyright (c) Fabien Ninoles +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. +*/ + +#ifndef _JSONSAX_H_ +#define _JSONSAX_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif + +enum EJSONSAX_TYPE { + EJSONSAX_OBJECT, + EJSONSAX_ARRAY, + EJSONSAX_STRING, + EJSONSAX_NUMBER, + EJSONSAX_NULL, + EJSONSAX_TRUE, + EJSONSAX_FALSE +}; + +struct jsonsax_backend +{ + int (*m_getchar)(void* data); + int (*m_onstart)(void* data, enum EJSONSAX_TYPE type); + int (*m_onstop)(void* data, enum EJSONSAX_TYPE type); + void (*m_onerror)(void* data, int error); +}; + +// Note: the structure members would be copied before +// being used. You cannot change the functions called after +// it. +int jsonsax_parse(struct jsonsax_backend* backend, void* data); + +#ifdef __cplusplus +} +#endif + +#endif