* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*)
+open Wrappi_types
+open Wrappi_utils
open Wrappi_pr
open Wrappi_boilerplate
+open Printf
+
+let c_of_any_type = function
+ | TFilePerm -> "int"
+ | TInt32 -> "int32_t"
+ | TInt64 -> "int64_t"
+ | TPathname -> "const char *"
+ | TUInt32 -> "uint32_t"
+ | TUInt64 -> "uint64_t"
+
+let c_of_return_type = function
+ | RErr -> "int"
+ | Return t -> c_of_any_type t
+
let generate_lib_wrappi_h api =
generate_header CStyle LGPLv2plus;
pr "\
+/* Please read the wrappi(1) man page for full documentation. If you
+ * are not familiar with man pages or don't have the documentation
+ * installed, it is also available online at http://wrappi.org/
+ */
+
#ifndef WRAPPI_H_
#define WRAPPI_H_
extern \"C\" {
#endif
-";
+#include <stdint.h>
+
+/* The handle. */
+typedef struct wrap_h wrap_h;
+/* Connection management. */
+extern wrap_h *wrap_create (void);
+extern void wrap_close (wrap_h *w);
+/* API entry points. */
+";
+ List.iter (
+ fun ep ->
+ pr "extern %s wrap_%s (wrap_h *w, %s);\n"
+ (c_of_return_type ep.ep_return)
+ ep.ep_name
+ (String.concat ", "
+ (List.map (
+ fun (name, t) ->
+ let t = c_of_any_type t in
+ let last_char = t.[String.length t - 1] in
+ let sep = if isalnum last_char then " " else "" in
+ sprintf "%s%s%s" t sep name
+ ) ep.ep_params))
+ ) api.api_entry_points;
pr "\