;; -*- scheme -*-
; object definitions ...
(define-object Manager
  (in-module "Ethos")
  (parent "GObject")
  (c-name "EthosManager")
  (gtype-id "ETHOS_TYPE_MANAGER")
)

(define-object Plugin
  (in-module "Ethos")
  (parent "GObject")
  (c-name "EthosPlugin")
  (gtype-id "ETHOS_TYPE_PLUGIN")
)

(define-object PluginInfo
  (in-module "Ethos")
  (parent "GObject")
  (c-name "EthosPluginInfo")
  (gtype-id "ETHOS_TYPE_PLUGIN_INFO")
)

;; Enumerations and flags ...

(define-enum Error
  (in-module "Ethos")
  (c-name "EthosError")
  (gtype-id "ETHOS_TYPE_ERROR")
  (values
    '("file-not-found" "ETHOS_ERROR_FILE_NOT_FOUND")
    '("invalid-key-file" "ETHOS_ERROR_INVALID_KEY_FILE")
    '("plugin" "ETHOS_ERROR_PLUGIN")
  )
)


;; From ethos.h



;; From ethos-manager.h

(define-function ethos_manager_get_type
  (c-name "ethos_manager_get_type")
  (return-type "GType")
)

(define-function ethos_manager_new
  (c-name "ethos_manager_new")
  (is-constructor-of "EthosManager")
  (return-type "EthosManager*")
)

(define-function ethos_manager_new_full
  (c-name "ethos_manager_new_full")
  (return-type "EthosManager*")
  (parameters
    '("const-gchar*" "app_name")
    '("const-gchar**" "plugin_dirs")
  )
)

(define-method initialize
  (of-object "EthosManager")
  (c-name "ethos_manager_initialize")
  (return-type "none")
)

(define-method unload
  (of-object "EthosManager")
  (c-name "ethos_manager_unload")
  (return-type "none")
)

(define-method load_plugin
  (of-object "EthosManager")
  (c-name "ethos_manager_load_plugin")
  (return-type "gboolean")
  (parameters
    '("EthosPluginInfo*" "plugin_info")
    '("GError**" "error")
  )
)

(define-method unload_plugin
  (of-object "EthosManager")
  (c-name "ethos_manager_unload_plugin")
  (return-type "gboolean")
  (parameters
    '("EthosPluginInfo*" "plugin_info")
    '("GError**" "error")
  )
)

(define-method get_plugin_info
  (of-object "EthosManager")
  (c-name "ethos_manager_get_plugin_info")
  (return-type "GList*")
)

(define-method get_plugin
  (of-object "EthosManager")
  (c-name "ethos_manager_get_plugin")
  (return-type "EthosPlugin*")
  (parameters
    '("EthosPluginInfo*" "plugin_info")
  )
)

(define-method get_plugin_loaders
  (of-object "EthosManager")
  (c-name "ethos_manager_get_plugin_loaders")
  (return-type "GList*")
)

(define-method get_plugin_dirs
  (of-object "EthosManager")
  (c-name "ethos_manager_get_plugin_dirs")
  (return-type "const-gchar**")
)

(define-method set_plugin_dirs
  (of-object "EthosManager")
  (c-name "ethos_manager_set_plugin_dirs")
  (return-type "none")
  (parameters
    '("const-gchar**" "plugin_dirs")
  )
)

(define-method get_app_name
  (of-object "EthosManager")
  (c-name "ethos_manager_get_app_name")
  (return-type "const-gchar*")
)

(define-method set_app_name
  (of-object "EthosManager")
  (c-name "ethos_manager_set_app_name")
  (return-type "none")
  (parameters
    '("const-gchar*" "app_name")
  )
)



;; From ethos-plugin-info.h

(define-function ethos_plugin_info_get_type
  (c-name "ethos_plugin_info_get_type")
  (return-type "GType")
)

(define-function ethos_plugin_info_new
  (c-name "ethos_plugin_info_new")
  (is-constructor-of "EthosPluginInfo")
  (return-type "EthosPluginInfo*")
)

(define-method load_from_file
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_load_from_file")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group")
    '("const-gchar*" "filename")
    '("GError**" "error")
  )
)

(define-method load_from_key_file
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_load_from_key_file")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group")
    '("GKeyFile*" "key_file")
    '("GError**" "error")
  )
)

(define-method load_from_data
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_load_from_data")
  (return-type "gboolean")
  (parameters
    '("const-gchar*" "group")
    '("const-gchar*" "data")
    '("gsize" "length")
    '("GError**" "error")
  )
)

(define-method get_id
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_id")
  (return-type "const-gchar*")
)

(define-method set_id
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_set_id")
  (return-type "none")
  (parameters
    '("const-gchar*" "id")
  )
)

(define-method get_filename
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_filename")
  (return-type "const-gchar*")
)

(define-method set_filename
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_set_filename")
  (return-type "none")
  (parameters
    '("const-gchar*" "filename")
  )
)

(define-method get_name
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_name")
  (return-type "const-gchar*")
)

(define-method get_module
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_module")
  (return-type "const-gchar*")
)

(define-method get_loader
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_loader")
  (return-type "const-gchar*")
)

(define-method get_authors
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_authors")
  (return-type "gchar**")
)

(define-method get_description
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_description")
  (return-type "const-gchar*")
)

(define-method get_copyright
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_copyright")
  (return-type "const-gchar*")
)

(define-method get_website
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_website")
  (return-type "const-gchar*")
)

(define-method get_version
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_version")
  (return-type "const-gchar*")
)

(define-method get_dependencies
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_dependencies")
  (return-type "const-gchar*")
)

(define-method get_icon_name
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_icon_name")
  (return-type "const-gchar*")
)

(define-method get_active
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_active")
  (return-type "gboolean")
)

(define-method get_iage
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_iage")
  (return-type "guint")
)

(define-method has_errors
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_has_errors")
  (return-type "gboolean")
)

(define-method get_errors
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_get_errors")
  (return-type "GList*")
)



;; From ethos-plugin-loader.h

(define-function ethos_plugin_loader_get_type
  (c-name "ethos_plugin_loader_get_type")
  (return-type "GType")
)

(define-method get_name
  (of-object "EthosPluginLoader")
  (c-name "ethos_plugin_loader_get_name")
  (return-type "const-gchar*")
)

(define-method initialize
  (of-object "EthosPluginLoader")
  (c-name "ethos_plugin_loader_initialize")
  (return-type "none")
)

(define-method unload
  (of-object "EthosPluginLoader")
  (c-name "ethos_plugin_loader_unload")
  (return-type "none")
)

(define-method load
  (of-object "EthosPluginLoader")
  (c-name "ethos_plugin_loader_load")
  (return-type "EthosPlugin*")
  (parameters
    '("EthosPluginInfo*" "plugin_info")
    '("GError**" "error")
  )
)

(define-method gc
  (of-object "EthosPluginLoader")
  (c-name "ethos_plugin_loader_gc")
  (return-type "none")
)



;; From ethos-plugin.h

(define-function ethos_plugin_get_type
  (c-name "ethos_plugin_get_type")
  (return-type "GType")
)

(define-method activate
  (of-object "EthosPlugin")
  (c-name "ethos_plugin_activate")
  (return-type "none")
)

(define-method deactivate
  (of-object "EthosPlugin")
  (c-name "ethos_plugin_deactivate")
  (return-type "none")
)



;; From ethos-version.h



;; From ethos-plugin-info-private.h

(define-method add_error
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_add_error")
  (return-type "none")
  (parameters
    '("const-GError*" "error")
  )
)

(define-method set_active
  (of-object "EthosPluginInfo")
  (c-name "ethos_plugin_info_set_active")
  (return-type "none")
  (parameters
    '("gboolean" "active")
  )
)



;; From ethos-error.h

(define-function ethos_error_quark
  (c-name "ethos_error_quark")
  (return-type "GQuark")
)


