annotate mcabber/mcabber/modules.h @ 1911:baa52ea32b47

Only print the ssl status as an integer if we don't understand it
author franky
date Fri, 14 May 2010 09:58:40 +0200
parents e6d355e50d7a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
1 #ifndef __MCABBER_MODULES_H__
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
2 #define __MCABBER_MODULES_H__ 1
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
3
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
4 #include <glib.h>
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
5 #include <gmodule.h>
1762
e7ce50fe19a9 Introduce mcabber/api.h
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1754
diff changeset
6 #include <mcabber/api.h> // MCABBER_BRANCH, MCABBER_API_VERSION
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
7
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
8 // Module loading process looks like this:
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
9 // check, if module is loaded
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
10 // load module (+ run g_module_check_init)
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
11 // check <modulename>_info variable
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
12 // check version
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
13 // load dependencies
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
14 // run initialization callback
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
15 // module loaded
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
16 // ...
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
17 // run uninitialization callback
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
18 // unload module (+ run g_module_unload)
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
19 // unload dependencies
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
20 // module unloaded
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
21
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
22 typedef void (*module_init_t)(void);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
23 typedef void (*module_uninit_t)(void);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
24
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
25 // Structure, that module should provide
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
26 typedef struct module_info_struct module_info_t;
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
27 struct module_info_struct {
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
28 const gchar *branch; // Contains mcabber branch name, that this module is written to work with
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
29 guint api; // Mcabber branch api version, that module is supposed to work with
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
30 const gchar *version; // Module version string. Optional.
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
31 const gchar *description; // Module description. Can contain multiple lines.
1754
d8442bcb33b7 Reorder fields in module info struct
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
32 const gchar **requires; // NULL-terminated list of module names, that must be loaded before this module
d8442bcb33b7 Reorder fields in module info struct
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
33 module_init_t init; // Initialization callback to be called after all dependencies will be loaded
d8442bcb33b7 Reorder fields in module info struct
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1749
diff changeset
34 module_uninit_t uninit; // Uninitialization callback to be called before module unloading
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
35 module_info_t *next; // If module supports multiple branches, it can provide several branch structs.
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
36 };
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
37
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
38 const gchar *module_load(const gchar *name, gboolean manual, gboolean force);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
39 const gchar *module_unload(const gchar *name, gboolean manual, gboolean force);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
40
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
41 // Grey zone (these symbols are semi-private and are exposed only for compatibility modules)
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
42
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
43 // Information about loaded module
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
44 typedef struct {
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
45 guint refcount; // Reference count
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
46 gboolean locked; // If true, one of references is manual
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
47 gchar *name; // Module name
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
48 GModule *module; // Module object
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
49 module_info_t *info; // Module information struct. May be NULL!
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
50 } loaded_module_t;
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
51
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
52 // Registry of loaded modules
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
53 extern GSList *loaded_modules;
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
54
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
55 // Should be considered mcabber private and not a part of api
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
56
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
57 void module_list_print(void);
1749
7ee390513463 Use api version for module checks
Myhailo Danylenko <isbear@ukrpost.net>
parents: 1735
diff changeset
58 void module_info_print(const gchar *name);
1735
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
59
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
60 void modules_init(void);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
61 void modules_deinit(void);
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
62
5093b5ca1572 New modules loading scheme
Myhailo Danylenko <isbear@ukrpost.net>
parents:
diff changeset
63 #endif
1811
e6d355e50d7a Update Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 1762
diff changeset
64
e6d355e50d7a Update Vim modelines
Mikael Berthe <mikael@lilotux.net>
parents: 1762
diff changeset
65 /* vim: set et cindent cinoptions=>2\:2(0 ts=2 sw=2: For Vim users... */