jsonsax.h
changeset 1 ef7abb48573b
parent 0 d187e7fc9970
--- /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