summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Sirainen <cras@irssi.org>2000-12-06 01:07:21 +0000
committercras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564>2000-12-06 01:07:21 +0000
commita99e93ef5d8dd4002580532ee25316c3860c1e4a (patch)
tree4be2a82c3f853c821ffe7f157acba7e03eec7de1
parent809fa17d824c6cf297e6c462fe0b5f904c076d4a (diff)
downloadirssi-a99e93ef5d8dd4002580532ee25316c3860c1e4a.zip
NICK_REC can be now inherited
git-svn-id: http://svn.irssi.org/repos/irssi/trunk@971 dbcabf3a-b0e7-0310-adc4-f8d773084564
-rw-r--r--src/core/Makefile.am1
-rw-r--r--src/core/nick-rec.h23
-rw-r--r--src/core/nicklist.c6
-rw-r--r--src/core/nicklist.h24
4 files changed, 38 insertions, 16 deletions
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index ebe0b95f..1c206581 100644
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -79,6 +79,7 @@ noinst_HEADERS = \
net-nonblock.h \
net-sendbuffer.h \
network.h \
+ nick-rec.h \
nicklist.h \
pidwait.h \
queries.h \
diff --git a/src/core/nick-rec.h b/src/core/nick-rec.h
new file mode 100644
index 00000000..e9817e0c
--- /dev/null
+++ b/src/core/nick-rec.h
@@ -0,0 +1,23 @@
+/* NICK_REC definition, used for inheritance */
+
+int type; /* module_get_uniq_id("NICK", 0) */
+int chat_type; /* chat_protocol_lookup(xx) */
+
+time_t last_check; /* last time gone was checked */
+
+char *nick;
+char *host;
+char *realname;
+int hops;
+
+/* status in server */
+unsigned int gone:1;
+unsigned int serverop:1;
+
+/* status in channel */
+unsigned int send_massjoin:1; /* Waiting to be sent in massjoin signal */
+unsigned int op:1;
+unsigned int halfop:1;
+unsigned int voice:1;
+
+GHashTable *module_data;
diff --git a/src/core/nicklist.c b/src/core/nicklist.c
index 0cb19123..a54b005b 100644
--- a/src/core/nicklist.c
+++ b/src/core/nicklist.c
@@ -39,6 +39,10 @@ NICK_REC *nicklist_insert(CHANNEL_REC *channel, const char *nick,
rec = g_new0(NICK_REC, 1);
+ MODULE_DATA_INIT(rec);
+ rec->type = module_get_uniq_id("NICK", 0);
+ rec->chat_type = channel->chat_type;
+
if (op) rec->op = TRUE;
if (voice) rec->voice = TRUE;
@@ -310,4 +314,6 @@ void nicklist_deinit(void)
{
signal_remove("channel created", (SIGNAL_FUNC) sig_channel_created);
signal_remove("channel destroyed", (SIGNAL_FUNC) sig_channel_destroyed);
+
+ module_uniq_destroy("NICK");
}
diff --git a/src/core/nicklist.h b/src/core/nicklist.h
index 3f7a272b..90cdece6 100644
--- a/src/core/nicklist.h
+++ b/src/core/nicklist.h
@@ -4,23 +4,15 @@
#include "servers.h"
#include "channels.h"
+/* Returns NICK_REC if it's nick, NULL if it isn't. */
+#define NICK(server) \
+ MODULE_CHECK_CAST(server, NICK_REC, type, "NICK")
+
+#define IS_NICK(server) \
+ (NICK(server) ? TRUE : FALSE)
+
typedef struct {
- time_t last_check; /* last time gone was checked */
-
- char *nick;
- char *host;
- char *realname;
- int hops;
-
- /* status in server */
- unsigned int gone:1;
- unsigned int serverop:1;
-
- /* status in channel */
- unsigned int send_massjoin:1; /* Waiting to be sent in massjoin signal */
- unsigned int op:1;
- unsigned int halfop:1;
- unsigned int voice:1;
+#include "nick-rec.h"
} NICK_REC;
/* Add new nick to list */