+let get_bool = function `BOOL x -> x | _ -> assert false
+let bool x = `BOOL x
+let get_uint = function `INT x -> x | _ -> assert false
+let uint x = `INT x
+let get_int = function `INT x -> x | _ -> assert false
+let int x = `INT x
+let get_gobject = function `OBJECT x -> x | _ -> assert false
+let gobject x = `OBJECT (Some x)
+
+(** {2 GtkSourceLanguage} *)
+
+class source_language_signals obj' =
+object (self)
+ inherit ['a] gobject_signals (obj' : [> Gtk_sourceview.source_language] obj)
+ inherit source_language_sigs
+end
+
+class source_language (obj: Gtk_sourceview.source_language obj) =
+object (self)
+ method as_source_language = obj
+ method connect = new source_language_signals obj
+ method misc = new gobject_ops obj
+ method get_name = SourceLanguage.get_name obj
+ method get_section = SourceLanguage.get_section obj
+ method get_escape_char = SourceLanguage.get_escape_char obj
+end
+
+(** {2 GtkSourceLanguagesManager} *)
+
+class source_languages_manager
+ (obj: Gtk_sourceview.source_languages_manager obj) =
+object (self)
+ method get_oid = Gobject.get_oid obj
+ method as_source_languages_manager = obj
+ method get_language_from_mime_type s =
+ match SourceLanguagesManager.get_language_from_mime_type obj s with
+ | None -> None
+ | Some obj -> Some (new source_language obj)
+ method lang_files_dirs = SourceLanguagesManager.get_lang_files_dirs obj
+end
+
+(* let source_languages_manager ?lang_files_dirs () =
+ let properties =
+ match lang_files_dirs with
+ | None -> []
+ | Some dirs ->
+ let list_obj = gslist_of_string_list dirs in
+ [Gobject.param
+ "lang-files-dirs"
+ (`OBJECT (Some list_obj))]
+ in
+ new source_languages_manager (SourceLanguagesManager.create properties) *)
+
+let source_languages_manager () =
+ new source_languages_manager (SourceLanguagesManager.create [])
+
+let source_language_from_file ?languages_manager fname =
+ let languages_manager =
+ match languages_manager with
+ | None -> source_languages_manager ()
+ | Some lm -> lm
+ in
+ let manager_obj = languages_manager#as_source_languages_manager in
+ match SourceLanguage.new_from_file fname manager_obj with
+ | None -> None
+ | Some lang_obj -> Some (new source_language lang_obj)