summaryrefslogtreecommitdiffstats
path: root/contrib/libucl/src/ucl_internal.h
diff options
context:
space:
mode:
authorbapt <bapt@FreeBSD.org>2014-11-29 00:45:09 +0000
committerbapt <bapt@FreeBSD.org>2014-11-29 00:45:09 +0000
commit7d08b91413fa16522ce2fe9052df826886fe42e4 (patch)
treeda7419ce979eaeb23133fbdfa13129abcde1cfc9 /contrib/libucl/src/ucl_internal.h
parent2aa5fef0aaa6b189fbabb79e67c84c76a4a40d3b (diff)
parent040f7be2fc3d89695611d460fd55d9b018fd7aa2 (diff)
downloadFreeBSD-src-7d08b91413fa16522ce2fe9052df826886fe42e4.zip
FreeBSD-src-7d08b91413fa16522ce2fe9052df826886fe42e4.tar.gz
Update libucl to latest version
While here correctly link libucl to libm and register the dependency on libm for static building
Diffstat (limited to 'contrib/libucl/src/ucl_internal.h')
-rw-r--r--contrib/libucl/src/ucl_internal.h40
1 files changed, 34 insertions, 6 deletions
diff --git a/contrib/libucl/src/ucl_internal.h b/contrib/libucl/src/ucl_internal.h
index 0ac8de8..2f75872 100644
--- a/contrib/libucl/src/ucl_internal.h
+++ b/contrib/libucl/src/ucl_internal.h
@@ -163,6 +163,7 @@ struct ucl_chunk {
size_t remain;
unsigned int line;
unsigned int column;
+ unsigned priority;
struct ucl_chunk *next;
};
@@ -182,7 +183,7 @@ struct ucl_variable {
char *value;
size_t var_len;
size_t value_len;
- struct ucl_variable *next;
+ struct ucl_variable *prev, *next;
};
struct ucl_parser {
@@ -192,6 +193,7 @@ struct ucl_parser {
int flags;
ucl_object_t *top_obj;
ucl_object_t *cur_obj;
+ char *cur_file;
struct ucl_macro *macroes;
struct ucl_stack *stack;
struct ucl_chunk *chunks;
@@ -202,6 +204,12 @@ struct ucl_parser {
UT_string *err;
};
+struct ucl_object_userdata {
+ ucl_object_t obj;
+ ucl_userdata_dtor dtor;
+ ucl_userdata_emitter emitter;
+};
+
/**
* Unescape json string inplace
* @param str
@@ -216,9 +224,11 @@ size_t ucl_unescape_json_string (char *str, size_t len);
* @param err error ptr
* @return
*/
-bool ucl_include_handler (const unsigned char *data, size_t len, void* ud);
+bool ucl_include_handler (const unsigned char *data, size_t len,
+ const ucl_object_t *args, void* ud);
-bool ucl_try_include_handler (const unsigned char *data, size_t len, void* ud);
+bool ucl_try_include_handler (const unsigned char *data, size_t len,
+ const ucl_object_t *args, void* ud);
/**
* Handle includes macro
@@ -228,7 +238,8 @@ bool ucl_try_include_handler (const unsigned char *data, size_t len, void* ud);
* @param err error ptr
* @return
*/
-bool ucl_includes_handler (const unsigned char *data, size_t len, void* ud);
+bool ucl_includes_handler (const unsigned char *data, size_t len,
+ const ucl_object_t *args, void* ud);
size_t ucl_strlcpy (char *dst, const char *src, size_t siz);
size_t ucl_strlcpy_unsafe (char *dst, const char *src, size_t siz);
@@ -264,7 +275,7 @@ ucl_create_err (UT_string **err, const char *fmt, ...)
static inline bool
ucl_maybe_parse_boolean (ucl_object_t *obj, const unsigned char *start, size_t len)
{
- const unsigned char *p = start;
+ const char *p = (const char *)start;
bool ret = false, val = false;
if (len == 5) {
@@ -351,7 +362,7 @@ const struct ucl_emitter_context *
ucl_emit_get_standard_context (enum ucl_emitter emit_type);
/**
- * Serialise string
+ * Serialize string as JSON string
* @param str string to emit
* @param buf target buffer
*/
@@ -359,10 +370,27 @@ void ucl_elt_string_write_json (const char *str, size_t size,
struct ucl_emitter_context *ctx);
/**
+ * Write multiline string using `EOD` as string terminator
+ * @param str
+ * @param size
+ * @param ctx
+ */
+void ucl_elt_string_write_multiline (const char *str, size_t size,
+ struct ucl_emitter_context *ctx);
+
+/**
* Emit a single object to string
* @param obj
* @return
*/
unsigned char * ucl_object_emit_single_json (const ucl_object_t *obj);
+/**
+ * Check whether a specified string is long and should be likely printed in
+ * multiline mode
+ * @param obj
+ * @return
+ */
+bool ucl_maybe_long_string (const ucl_object_t *obj);
+
#endif /* UCL_INTERNAL_H_ */
OpenPOWER on IntegriCloud