summaryrefslogtreecommitdiff
path: root/src/core/chat-protocols.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/chat-protocols.h')
-rw-r--r--src/core/chat-protocols.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/core/chat-protocols.h b/src/core/chat-protocols.h
new file mode 100644
index 00000000..42b413cf
--- /dev/null
+++ b/src/core/chat-protocols.h
@@ -0,0 +1,29 @@
+#ifndef __CHAT_PROTOCOLS_H
+#define __CHAT_PROTOCOLS_H
+
+#define PROTO_CHECK_CAST(object, cast, type_field, id) \
+ ((cast *) chat_protocol_check_cast(object, \
+ offsetof(cast, type_field), id))
+void *chat_protocol_check_cast(void *object, int type_pos, const char *id);
+
+/* Register new chat protocol. */
+void chat_protocol_register(const char *name,
+ const char *fullname,
+ const char *chatnet);
+
+/* Unregister chat protocol. */
+void chat_protocol_unregister(const char *name);
+
+/* Return the ID for the specified chat protocol. */
+int chat_protocol_lookup(const char *name);
+/* Return the name for the specified chat protocol ID. */
+const char *chat_protocol_get_name(int id);
+/* Return the full name for the specified chat protocol ID. */
+const char *chat_protocol_get_fullname(int id);
+/* Return the chatnet identifier name for the specified chat protocol ID. */
+const char *chat_protocol_get_chatnet(int id);
+
+void chat_protocols_init(void);
+void chat_protocols_deinit(void);
+
+#endif