diff options
author | Timo Sirainen <cras@irssi.org> | 2000-12-06 01:07:21 +0000 |
---|---|---|
committer | cras <cras@dbcabf3a-b0e7-0310-adc4-f8d773084564> | 2000-12-06 01:07:21 +0000 |
commit | a99e93ef5d8dd4002580532ee25316c3860c1e4a (patch) | |
tree | 4be2a82c3f853c821ffe7f157acba7e03eec7de1 | |
parent | 809fa17d824c6cf297e6c462fe0b5f904c076d4a (diff) | |
download | irssi-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.am | 1 | ||||
-rw-r--r-- | src/core/nick-rec.h | 23 | ||||
-rw-r--r-- | src/core/nicklist.c | 6 | ||||
-rw-r--r-- | src/core/nicklist.h | 24 |
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 */ |