Code

Added missing includes identified by strict standard checks.
[libjunos.git] / src / junos.h
index 5f31e917de5140306ad4fbaa92498b4736171318..31cd7cb511bb6afabe54463f4cee9819d379bf20 100644 (file)
 #ifndef JUNOS_H
 #define JUNOS_H 1
 
+#ifdef HAVE_CONFIG_H
+#      include "config.h"
+#endif
+
 #include <stdio.h>
 
 #include <libxml/tree.h>
@@ -52,6 +56,27 @@ extern "C" {
 
 typedef struct junos junos_t;
 
+/* method invocation */
+
+enum {
+       JUNOS_NO_ARGS = 0,
+       JUNOS_ARG_TOGGLE,
+       JUNOS_ARG_TOGGLE_NO,
+       JUNOS_ARG_STRING,
+       JUNOS_ARG_INTEGER,
+       JUNOS_ARG_DOUBLE,
+       JUNOS_ARG_DOM,
+       JUNOS_ATTR_STRING,
+       JUNOS_ATTR_INTEGER,
+       JUNOS_ATTR_DOUBLE,
+};
+
+/* string buffer */
+
+typedef struct junos_strbuf junos_strbuf_t;
+
+/* netrc */
+
 typedef struct {
        char *machine;
        char *login;
@@ -104,7 +129,10 @@ int
 junos_connect(junos_t *junos);
 
 xmlDocPtr
-junos_simple_method(junos_t *junos, const char *name);
+junos_invoke_method(junos_t *junos, const char *name, ...);
+
+#define junos_simple_method(junos, name) \
+       junos_invoke_method((junos), (name), JUNOS_NO_ARGS)
 
 int
 junos_disconnect(junos_t *junos);
@@ -112,6 +140,28 @@ junos_disconnect(junos_t *junos);
 void
 junos_free(junos_t *junos);
 
+/*
+ * string buffer
+ */
+
+junos_strbuf_t *
+junos_strbuf_new(size_t size);
+
+void
+junos_strbuf_free(junos_strbuf_t *strbuf);
+
+ssize_t
+junos_strbuf_sprintf(junos_strbuf_t *strbuf, const char *fmt, ...);
+
+ssize_t
+junos_strbuf_vsprintf(junos_strbuf_t *strbuf, const char *fmt, va_list ap);
+
+char *
+junos_strbuf_string(junos_strbuf_t *strbuf);
+
+size_t
+junos_strbuf_len(junos_strbuf_t *strbuf);
+
 /*
  * netrc
  */