caml_named_value returns const value pointer in OCaml 4.09+
[ocaml-augeas.git] / augeas.ml
1 (* Augeas OCaml bindings
2  * Copyright (C) 2008 Red Hat Inc., Richard W.M. Jones
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * $Id: augeas.ml,v 1.2 2008/05/06 10:48:20 rjones Exp $
19  *)
20
21 type t
22
23 type flag =
24   | AugSaveBackup
25   | AugSaveNewFile
26   | AugTypeCheck
27   | AugNoStdinc
28   | AugSaveNoop
29   | AugNoLoad
30   | AugNoModlAutoload
31   | AugEnableSpan
32   | AugNoErrClose
33   | AugTraceModuleLoading
34
35 type error_code =
36   | AugErrInternal
37   | AugErrPathX
38   | AugErrNoMatch
39   | AugErrMMatch
40   | AugErrSyntax
41   | AugErrNoLens
42   | AugErrMXfm
43   | AugErrNoSpan
44   | AugErrMvDesc
45   | AugErrCmdRun
46   | AugErrBadArg
47   | AugErrLabel
48   | AugErrCpDesc
49   | AugErrUnknown of int
50
51 type transform_mode =
52   | Include
53   | Exclude
54
55 exception Error of error_code * string * string * string * string
56
57 type path = string
58
59 type value = string
60
61 external create : string -> string option -> flag list -> t
62   = "ocaml_augeas_create"
63 external close : t -> unit
64   = "ocaml_augeas_close"
65 external defnode : t -> string -> string -> string option -> int * bool
66   = "ocaml_augeas_defnode"
67 external defvar : t -> string -> string option -> int option
68   = "ocaml_augeas_defvar"
69 external get : t -> path -> value option
70   = "ocaml_augeas_get"
71 external exists : t -> path -> bool
72   = "ocaml_augeas_exists"
73 external insert : t -> ?before:bool -> path -> string -> unit
74   = "ocaml_augeas_insert"
75 external label : t -> path -> string option
76   = "ocaml_augeas_label"
77 external rm : t -> path -> int
78   = "ocaml_augeas_rm"
79 external matches : t -> path -> path list
80   = "ocaml_augeas_match"
81 external count_matches : t -> path -> int
82   = "ocaml_augeas_count_matches"
83 external save : t -> unit
84   = "ocaml_augeas_save"
85 external load : t -> unit
86   = "ocaml_augeas_load"
87 external mv : t -> path -> path -> unit
88   = "ocaml_augeas_mv"
89 external set : t -> path -> value option -> unit
90   = "ocaml_augeas_set"
91 external setm : t -> path -> string option -> value option -> int
92   = "ocaml_augeas_setm"
93 external transform : t -> string -> string -> transform_mode -> unit
94   = "ocaml_augeas_transform"
95 external source : t -> path -> path option
96   = "ocaml_augeas_source"
97
98 let () =
99   Callback.register_exception "Augeas.Error" (Error (AugErrInternal, "", "", "", ""))