RConstOptString cannot return an error in the C api. This makes it a special
case for the GObject api, as all other return types have a corresponding GError
**err argument to return an error. This change removes this special case, and
includes the possibility of an error return in the API. An error is indicated by
setting *err to a non-NULL value.
This change is in preparation for adding a close api. An attempt to call any
api, even RConstOptString, on a closed handle must return an error.
---
generator/generator_gobject.ml | 8 ++------
1 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/generator/generator_gobject.ml b/generator/generator_gobject.ml
index 4779f23..2b88274 100644
--- a/generator/generator_gobject.ml
+++ b/generator/generator_gobject.ml
@@ -37,10 +37,6 @@ let camel_of_name flags name =
a ^ String.uppercase (Str.first_chars b 1) ^ Str.string_after b 1
) "" (Str.split (regexp "_") name)
-let returns_error = function
- | RConstOptString _ -> false
- | _ -> true
-
let generate_gobject_proto name ?(single_line = true)
(ret, args, optargs) flags =
let spacer = if single_line then " " else "\n" in
@@ -109,7 +105,7 @@ let generate_gobject_proto name ?(single_line = true)
| _ -> ());
if List.exists (function Cancellable -> true | _ -> false) flags then
pr ", GCancellable *cancellable";
- if returns_error ret then pr ", GError **err";
+ pr ", GError **err";
pr ")"
let generate_gobject_header_static () =
@@ -780,7 +776,7 @@ let generate_gobject_c_methods () =
(* Check return, throw error if necessary, marshall return value *)
- if returns_error ret then (
+ if match ret with RConstOptString _ -> false | _ -> true then (
pr " if (ret == %s) {\n"
(match ret with
| RErr | RInt _ | RInt64 _ | RBool _ ->
--
1.7.7.5