summaryrefslogtreecommitdiff
path: root/src/core/chat-protocols.h
blob: 3f614a50e2c3cff0f25415f0ed578cd1007b95c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef __CHAT_PROTOCOLS_H
#define __CHAT_PROTOCOLS_H

typedef struct {
	int id;

	char *name;
	char *fullname;
	char *chatnet;
} CHAT_PROTOCOL_REC;

extern GSList *chat_protocols;

#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(CHAT_PROTOCOL_REC *rec);

/* Unregister chat protocol. */
void chat_protocol_unregister(const char *name);

/* Find functions */
int chat_protocol_lookup(const char *name);
CHAT_PROTOCOL_REC *chat_protocol_find(const char *name);
CHAT_PROTOCOL_REC *chat_protocol_find_id(int id);

void chat_protocols_init(void);
void chat_protocols_deinit(void);

#endif