--- /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 <fabien@tzone.org>
+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