Make json_write_wrbuf available
[yaz-moved-to-github.git] / include / yaz / json.h
index 4f42d92..5c53d70 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data.
+ * Copyright (C) 1995-2011 Index Data.
  * All rights reserved.
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are met:
@@ -93,6 +93,15 @@ struct json_node *json_parser_parse(json_parser_t p, const char *json_str);
 YAZ_EXPORT
 const char *json_parser_get_errmsg(json_parser_t p);
 
+/** \brief returns parser position
+    \param p JSON parser handle
+    \returns number of bytes read from parser
+
+    This function should be called if json_parser_parse returns NULL .
+*/
+YAZ_EXPORT
+size_t json_parser_get_position(json_parser_t p);
+
 /** \brief parses JSON string
     \param json_str JSON string
     \param errmsg pointer to error message string
@@ -104,6 +113,19 @@ const char *json_parser_get_errmsg(json_parser_t p);
 YAZ_EXPORT
 struct json_node *json_parse(const char *json_str, const char **errmsg);
 
+/** \brief parses JSON string
+    \param json_str JSON string
+    \param errmsg pointer to error message string
+    \param pos position of parser stop (probably error)
+    \returns JSON tree or NULL if parse error occurred.
+
+    The resulting tree should be removed with a call to json_remove_node.
+    The errmsg may be NULL in which case the error message is not returned.
+*/
+YAZ_EXPORT
+struct json_node *json_parse2(const char *json_str, const char **errmsg,
+                              size_t *pos);
+
 /** \brief destroys JSON tree node and its children
     \param n JSON node
 */
@@ -165,6 +187,13 @@ void json_parser_subst(json_parser_t p, int idx, struct json_node *n);
 YAZ_EXPORT
 void json_write_wrbuf(struct json_node *node, WRBUF result);
 
+/** \brief writes JSON text to WRBUF with escaping
+    \param b result
+    \param str input string to be encoded
+*/
+YAZ_EXPORT
+void wrbuf_json_puts(WRBUF b, const char *str);
+
 YAZ_END_CDECL
 
 #endif