16#include "../common/gsCommon.h"
56#define CHAT_UNIQUENICK_EXPIRED 3
57#define CHAT_NO_UNIQUENICK 4
58#define CHAT_INVALID_UNIQUENICK 5
59#define CHAT_NICK_TOO_LONG 6
63#define CHAT_DISCONNECTED 0
64#define CHAT_NICK_ERROR 1
65#define CHAT_LOGIN_FAILED 2
72typedef enum { CHATFalse, CHATTrue } CHATBool;
86 CHATBool NoExternalMessages;
87 CHATBool OnlyOpsChangeTopic;
88 CHATBool OpsObeyChannelLimit;
100 CHATInviteOnlyChannel,
101 CHATBannedFromChannel,
102 CHATBadChannelPassword,
112#define chatConnect chatConnectA
113#define chatConnectSpecial chatConnectSpecialA
114#define chatConnectSecure chatConnectSecureA
115#define chatConnectLogin chatConnectLoginA
116#define chatConnectPreAuth chatConnectPreAuthA
117#define chatRetryWithNick chatRetryWithNickA
118#define chatRegisterUniqueNick chatRegisterUniqueNickA
119#define chatSendRaw chatSendRawA
120#define chatChangeNick chatChangeNickA
121#define chatFixNick chatFixNickA
122#define chatTranslateNick chatTranslateNickA
123#define chatAuthenticateCDKey chatAuthenticateCDKeyA
124#define chatEnumChannels chatEnumChannelsA
125#define chatEnterChannel chatEnterChannelA
126#define chatLeaveChannel chatLeaveChannelA
127#define chatSendChannelMessage chatSendChannelMessageA
128#define chatSetChannelTopic chatSetChannelTopicA
129#define chatGetChannelTopic chatGetChannelTopicA
130#define chatSetChannelMode chatSetChannelModeA
131#define chatGetChannelMode chatGetChannelModeA
132#define chatSetChannelPassword chatSetChannelPasswordA
133#define chatGetChannelPassword chatGetChannelPasswordA
134#define chatSetChannelLimit chatSetChannelLimitA
135#define chatEnumChannelBans chatEnumChannelBansA
136#define chatAddChannelBan chatAddChannelBanA
137#define chatRemoveChannelBan chatRemoveChannelBanA
138#define chatSetChannelGroup chatSetChannelGroupA
139#define chatGetChannelNumUsers chatGetChannelNumUsersA
140#define chatInChannel chatInChannelA
141#define chatEnumUsers chatEnumUsersA
142#define chatSendUserMessage chatSendUserMessageA
143#define chatGetUserInfo chatGetUserInfoA
144#define chatGetBasicUserInfo chatGetBasicUserInfoA
145#define chatGetBasicUserInfoNoWait chatGetBasicUserInfoNoWaitA
146#define chatGetChannelBasicUserInfo chatGetChannelBasicUserInfoA
147#define chatInviteUser chatInviteUserA
148#define chatKickUser chatKickUserA
149#define chatBanUser chatBanUserA
150#define chatSetUserMode chatSetUserModeA
151#define chatGetUserMode chatGetUserModeA
152#define chatGetUserModeNoWait chatGetUserModeNoWaitA
153#define chatSetGlobalKeys chatSetGlobalKeysA
154#define chatSetChannelKeys chatSetChannelKeysA
155#define chatGetGlobalKeys chatGetGlobalKeysA
156#define chatGetChannelKeys chatGetChannelKeysA
157#define chatGetNick chatGetNickA
158#define chatGetUdpRelay chatGetUdpRelayA
160#define chatConnect chatConnectW
161#define chatConnectSpecial chatConnectSpecialW
162#define chatConnectSecure chatConnectSecureW
163#define chatConnectLogin chatConnectLoginW
164#define chatConnectPreAuth chatConnectPreAuthW
165#define chatRetryWithNick chatRetryWithNickW
166#define chatRegisterUniqueNick chatRegisterUniqueNickW
167#define chatSendRaw chatSendRawW
168#define chatChangeNick chatChangeNickW
169#define chatFixNick chatFixNickW
170#define chatTranslateNick chatTranslateNickW
171#define chatAuthenticateCDKey chatAuthenticateCDKeyW
172#define chatEnumChannels chatEnumChannelsW
173#define chatEnterChannel chatEnterChannelW
174#define chatLeaveChannel chatLeaveChannelW
175#define chatSendChannelMessage chatSendChannelMessageW
176#define chatSetChannelTopic chatSetChannelTopicW
177#define chatGetChannelTopic chatGetChannelTopicW
178#define chatSetChannelMode chatSetChannelModeW
179#define chatGetChannelMode chatGetChannelModeW
180#define chatSetChannelPassword chatSetChannelPasswordW
181#define chatGetChannelPassword chatGetChannelPasswordW
182#define chatSetChannelLimit chatSetChannelLimitW
183#define chatEnumChannelBans chatEnumChannelBansW
184#define chatAddChannelBan chatAddChannelBanW
185#define chatRemoveChannelBan chatRemoveChannelBanW
186#define chatSetChannelGroup chatSetChannelGroupW
187#define chatGetChannelNumUsers chatGetChannelNumUsersW
188#define chatInChannel chatInChannelW
189#define chatEnumUsers chatEnumUsersW
190#define chatSendUserMessage chatSendUserMessageW
191#define chatGetUserInfo chatGetUserInfoW
192#define chatGetBasicUserInfo chatGetBasicUserInfoW
193#define chatGetBasicUserInfoNoWait chatGetBasicUserInfoNoWaitW
194#define chatGetChannelBasicUserInfo chatGetChannelBasicUserInfoW
195#define chatInviteUser chatInviteUserW
196#define chatKickUser chatKickUserW
197#define chatBanUser chatBanUserW
198#define chatSetUserMode chatSetUserModeW
199#define chatGetUserMode chatGetUserModeW
200#define chatGetUserModeNoWait chatGetUserModeNoWaitW
201#define chatSetGlobalKeys chatSetGlobalKeysW
202#define chatSetChannelKeys chatSetChannelKeysW
203#define chatGetGlobalKeys chatGetGlobalKeysW
204#define chatGetChannelKeys chatGetChannelKeysW
205#define chatGetNick chatGetNickW
206#define chatGetUdpRelay chatGetUdpRelayW
217typedef void (* chatRaw)(CHAT chat,
218 const gsi_char * raw,
223typedef void (* chatDisconnected)(CHAT chat,
224 const gsi_char * reason,
230typedef void (* chatPrivateMessage)(CHAT chat,
231 const gsi_char * user,
232 const gsi_char * message,
238typedef void (* chatInvited)(CHAT chat,
239 const gsi_char * channel,
240 const gsi_char * user,
248 chatDisconnected disconnected;
249 chatPrivateMessage privateMessage;
259typedef void (* chatChannelMessage)(CHAT chat,
260 const gsi_char * channel,
261 const gsi_char * user,
262 const gsi_char * message,
268typedef void (* chatKicked)(CHAT chat,
269 const gsi_char * channel,
270 const gsi_char * user,
271 const gsi_char * reason,
276typedef void (* chatUserJoined)(CHAT chat,
277 const gsi_char * channel,
278 const gsi_char * user,
284typedef void (* chatUserParted)(CHAT chat,
285 const gsi_char * channel,
286 const gsi_char * user,
288 const gsi_char * reason,
289 const gsi_char * kicker,
294typedef void (* chatUserChangedNick)(CHAT chat,
295 const gsi_char * channel,
296 const gsi_char * oldNick,
297 const gsi_char * newNick,
302typedef void (* chatTopicChanged)(CHAT chat,
303 const gsi_char * channel,
304 const gsi_char * topic,
309typedef void (* chatChannelModeChanged)(CHAT chat,
310 const gsi_char * channel,
316typedef void (* chatUserModeChanged)(CHAT chat,
317 const gsi_char * channel,
318 const gsi_char * user,
324typedef void (* chatUserListUpdated)(CHAT chat,
325 const gsi_char * channel,
330typedef void (* chatNewUserList)(CHAT chat,
331 const gsi_char * channel,
333 const gsi_char ** users,
339typedef void (* chatBroadcastKeyChanged)(CHAT chat,
340 const gsi_char * channel,
341 const gsi_char * user,
342 const gsi_char * key,
343 const gsi_char * value,
350 chatChannelMessage channelMessage;
352 chatUserJoined userJoined;
353 chatUserParted userParted;
354 chatUserChangedNick userChangedNick;
355 chatTopicChanged topicChanged;
356 chatChannelModeChanged channelModeChanged;
357 chatUserModeChanged userModeChanged;
358 chatUserListUpdated userListUpdated;
359 chatNewUserList newUserList;
360 chatBroadcastKeyChanged broadcastKeyChanged;
370typedef void (* chatConnectCallback)(CHAT chat,
379typedef void (* chatNickErrorCallback)(CHAT chat,
381 const gsi_char * nick,
382 int numSuggestedNicks,
383 const gsi_char ** suggestedNicks,
385typedef void (* chatFillInUserCallback)(CHAT chat,
391CHAT chatConnect(
const gsi_char * serverAddress,
393 const gsi_char * nick,
394 const gsi_char * user,
395 const gsi_char * name,
397 chatNickErrorCallback nickErrorCallback,
398 chatConnectCallback connectCallback,
401CHAT chatConnectSpecial(
const gsi_char * serverAddress,
403 const gsi_char * nick,
404 const gsi_char * name,
406 chatNickErrorCallback nickErrorCallback,
407 chatFillInUserCallback fillInUserCallback,
408 chatConnectCallback connectCallback,
411CHAT chatConnectSecure(
const gsi_char * serverAddress,
413 const gsi_char * nick,
414 const gsi_char * name,
415 const gsi_char * gamename,
416 const gsi_char * secretKey,
418 chatNickErrorCallback nickErrorCallback,
419 chatFillInUserCallback fillInUserCallback,
420 chatConnectCallback connectCallback,
423CHAT chatConnectLogin(
const gsi_char * serverAddress,
426 const gsi_char * email,
427 const gsi_char * profilenick,
428 const gsi_char * uniquenick,
429 const gsi_char * password,
430 const gsi_char * name,
431 const gsi_char * gamename,
432 const gsi_char * secretKey,
434 chatNickErrorCallback nickErrorCallback,
435 chatFillInUserCallback fillInUserCallback,
436 chatConnectCallback connectCallback,
439CHAT chatConnectPreAuth(
const gsi_char * serverAddress,
441 const gsi_char * authtoken,
442 const gsi_char * partnerchallenge,
443 const gsi_char * name,
444 const gsi_char * gamename,
445 const gsi_char * secretKey,
447 chatNickErrorCallback nickErrorCallback,
448 chatFillInUserCallback fillInUserCallback,
449 chatConnectCallback connectCallback,
458void chatRetryWithNick(CHAT chat,
459 const gsi_char * nick);
466void chatRegisterUniqueNick(CHAT chat,
468 const gsi_char * uniquenick,
469 const gsi_char * cdkey);
473void chatDisconnect(CHAT chat);
477void chatThink(CHAT chat);
481void chatSendRaw(CHAT chat,
482 const gsi_char * command);
486typedef void (* chatChangeNickCallback)(CHAT chat,
488 const gsi_char * oldNick,
489 const gsi_char * newNick,
493void chatChangeNick(CHAT chat,
494 const gsi_char * newNick,
495 chatChangeNickCallback callback,
501const gsi_char * chatGetNick(CHAT chat);
505void chatFixNick(gsi_char * newNick,
506 const gsi_char * oldNick);
510const gsi_char * chatTranslateNick(gsi_char * nick,
511 const gsi_char * extension);
516int chatGetUserID(CHAT chat);
521int chatGetProfileID(CHAT chat);
525void chatSetQuietMode(CHAT chat,
530typedef void (* chatAuthenticateCDKeyCallback)(CHAT chat,
532 const gsi_char * message,
537void chatAuthenticateCDKey(CHAT chat,
538 const gsi_char * cdkey,
539 chatAuthenticateCDKeyCallback callback,
548typedef void (* chatEnumChannelsCallbackEach)(CHAT chat,
551 const gsi_char * channel,
552 const gsi_char * topic,
557typedef void (* chatEnumChannelsCallbackAll)(CHAT chat,
560 const gsi_char ** channels,
561 const gsi_char ** topics,
566void chatEnumChannels(CHAT chat,
567 const gsi_char * filter,
568 chatEnumChannelsCallbackEach callbackEach,
569 chatEnumChannelsCallbackAll callbackAll,
575typedef void (* chatEnumJoinedChannelsCallback)(CHAT chat,
577 const gsi_char * channel,
582void chatEnumJoinedChannels(CHAT chat,
583 chatEnumJoinedChannelsCallback callback,
590typedef void (* chatEnterChannelCallback)(CHAT chat,
592 CHATEnterResult result,
593 const gsi_char * channel,
597void chatEnterChannel(CHAT chat,
598 const gsi_char * channel,
599 const gsi_char * password,
601 chatEnterChannelCallback callback,
607void chatLeaveChannel(CHAT chat,
608 const gsi_char * channel,
609 const gsi_char * reason);
613void chatSendChannelMessage(CHAT chat,
614 const gsi_char * channel,
615 const gsi_char * message,
620void chatSetChannelTopic(CHAT chat,
621 const gsi_char * channel,
622 const gsi_char * topic);
626typedef void (* chatGetChannelTopicCallback)(CHAT chat,
628 const gsi_char * channel,
629 const gsi_char * topic,
633void chatGetChannelTopic(CHAT chat,
634 const gsi_char * channel,
635 chatGetChannelTopicCallback callback,
641void chatSetChannelMode(CHAT chat,
642 const gsi_char * channel,
647typedef void (* chatGetChannelModeCallback)(CHAT chat,
649 const gsi_char * channel,
654void chatGetChannelMode(CHAT chat,
655 const gsi_char * channel,
656 chatGetChannelModeCallback callback,
662void chatSetChannelPassword(CHAT chat,
663 const gsi_char * channel,
665 const gsi_char * password);
669typedef void (* chatGetChannelPasswordCallback)(CHAT chat,
671 const gsi_char * channel,
673 const gsi_char * password,
677void chatGetChannelPassword(CHAT chat,
678 const gsi_char * channel,
679 chatGetChannelPasswordCallback callback,
685void chatSetChannelLimit(CHAT chat,
686 const gsi_char * channel,
691typedef void (* chatEnumChannelBansCallback)(CHAT chat,
693 const gsi_char * channel,
695 const gsi_char ** bans,
699void chatEnumChannelBans(CHAT chat,
700 const gsi_char * channel,
701 chatEnumChannelBansCallback callback,
707void chatAddChannelBan(CHAT chat,
708 const gsi_char * channel,
709 const gsi_char * ban);
713void chatRemoveChannelBan(CHAT chat,
714 const gsi_char * channel,
715 const gsi_char * ban);
719void chatSetChannelGroup(CHAT chat,
720 const gsi_char * channel,
721 const gsi_char * group);
726int chatGetChannelNumUsers(CHAT chat,
727 const gsi_char * channel);
732CHATBool chatInChannel(CHAT chat,
733 const gsi_char * channel);
741typedef void (* chatEnumUsersCallback)(CHAT chat,
743 const gsi_char * channel,
745 const gsi_char ** users,
750void chatEnumUsers(CHAT chat,
751 const gsi_char * channel,
752 chatEnumUsersCallback callback,
758void chatSendUserMessage(CHAT chat,
759 const gsi_char * user,
760 const gsi_char * message,
765typedef void (* chatGetUserInfoCallback)(CHAT chat,
767 const gsi_char * nick,
768 const gsi_char * user,
769 const gsi_char * name,
770 const gsi_char * address,
772 const gsi_char ** channels,
776void chatGetUserInfo(CHAT chat,
777 const gsi_char * user,
778 chatGetUserInfoCallback callback,
784typedef void (* chatGetBasicUserInfoCallback)(CHAT chat,
786 const gsi_char * nick,
787 const gsi_char * user,
788 const gsi_char * address,
794void chatGetBasicUserInfo(CHAT chat,
795 const gsi_char * user,
796 chatGetBasicUserInfoCallback callback,
803CHATBool chatGetBasicUserInfoNoWait(CHAT chat,
804 const gsi_char * nick,
805 const gsi_char ** user,
806 const gsi_char ** address);
811typedef void (* chatGetChannelBasicUserInfoCallback)(CHAT chat,
813 const gsi_char * channel,
814 const gsi_char * nick,
815 const gsi_char * user,
816 const gsi_char * address,
822void chatGetChannelBasicUserInfo(CHAT chat,
823 const gsi_char * channel,
824 chatGetChannelBasicUserInfoCallback callback,
830void chatInviteUser(CHAT chat,
831 const gsi_char * channel,
832 const gsi_char * user);
836void chatKickUser(CHAT chat,
837 const gsi_char * channel,
838 const gsi_char * user,
839 const gsi_char * reason);
843void chatBanUser(CHAT chat,
844 const gsi_char * channel,
845 const gsi_char * user);
849void chatSetUserMode(CHAT chat,
850 const gsi_char * channel,
851 const gsi_char * user,
856typedef void (* chatGetUserModeCallback)(CHAT chat,
858 const gsi_char * channel,
859 const gsi_char * user,
864void chatGetUserMode(CHAT chat,
865 const gsi_char * channel,
866 const gsi_char * user,
867 chatGetUserModeCallback callback,
873CHATBool chatGetUserModeNoWait(CHAT chat,
874 const gsi_char * channel,
875 const gsi_char * user,
881typedef void (* chatGetUdpRelayCallback)(CHAT chat,
882 const gsi_char * channel,
883 const gsi_char * udpIp,
884 unsigned short udpPort,
890void chatGetUdpRelay(CHAT chat,
891 const gsi_char * channel,
892 chatGetUdpRelayCallback callback,
903void chatSetGlobalKeys(CHAT chat,
905 const gsi_char ** keys,
906 const gsi_char ** values);
912typedef void (* chatGetGlobalKeysCallback)(CHAT chat,
914 const gsi_char * user,
916 const gsi_char ** keys,
917 const gsi_char ** values,
924void chatGetGlobalKeys(CHAT chat,
925 const gsi_char * target,
927 const gsi_char ** keys,
928 chatGetGlobalKeysCallback callback,
938void chatSetChannelKeys(CHAT chat,
939 const gsi_char * channel,
940 const gsi_char * user,
942 const gsi_char ** keys,
943 const gsi_char ** values);
949typedef void (* chatGetChannelKeysCallback)(CHAT chat,
951 const gsi_char * channel,
952 const gsi_char * user,
954 const gsi_char ** keys,
955 const gsi_char ** values,
962void chatGetChannelKeys(CHAT chat,
963 const gsi_char * channel,
964 const gsi_char * user,
966 const gsi_char ** keys,
967 chatGetChannelKeysCallback callback,
976CHATBool chatGetBasicUserInfoNoWaitA(CHAT chat,
979 const char ** address);