Files

215 lines
5.9 KiB
C++

#if !defined (CHATENUM_H_)
#define CHATENUM_H_
#include <Unicode/Unicode.h>
#include <Unicode/UnicodeUtils.h>
#pragma warning ( disable : 4786 )
// Defining _chatdebug_
#ifdef _DEBUG
#ifdef WIN32
#define _chatdebug_ ::printf
#else
#define _chatdebug_ ::printf
#endif
#endif
#ifndef _DEBUG
#ifdef WIN32
#define _chatdebug_
#else
#define _chatdebug_
#endif
#endif
// END: "Defining _chatdebug_"
// Use AVATAR_PRIORITY_NOFORCELOGOUT on RequestAvatarLogin if you want to override the
// "last login wins" rule, switching that given avatar's session to use "first login wins"
#define AVATAR_PRIORITY_NOFORCELOGOUT ((int) 0x80000000) /*-2147483648*/
#define ASSERT_VALID_STRING_LENGTH(X) if (X ==0) return;
namespace ChatSystem
{
enum eResultCodes
{
CHATRESULT_SUCCESS,
CHATRESULT_TIMEOUT = 1,
CHATRESULT_DUPLICATELOGIN,
CHATRESULT_SRCAVATARDOESNTEXIST,
CHATRESULT_DESTAVATARDOESNTEXIST,
CHATRESULT_ADDRESSDOESNTEXIST, // 5
CHATRESULT_ADDRESSNOTROOM,
CHATRESULT_ADDRESSNOTAID,
CHATRESULT_FRIENDNOTFOUND,
CHATRESULT_ROOM_UNKNOWNFAILURE,
CHATRESULT_ROOM_SRCNOTINROOM, // 10
CHATRESULT_ROOM_DESTNOTINROOM,
CHATRESULT_ROOM_BANNEDAVATAR,
CHATRESULT_ROOM_PRIVATEROOM,
CHATRESULT_ROOM_MODERATEDROOM,
CHATRESULT_ROOM_NOTINROOM, // 15
CHATRESULT_ROOM_NOPRIVILEGES,
CHATRESULT_DATABASE,
CHATRESULT_CANNOTGETAVATARID,
CHATRESULT_CANNOTGETNODEID,
CHATRESULT_CANNOTGETPMSGID, // 20
CHATRESULT_PMSGNOTFOUND,
CHATRESULT_ROOMMAXAVATARSREACHED,
CHATRESULT_IGNORING,
CHATRESULT_ROOM_ALREADYEXISTS,
CHATRESULT_NOTHINGTOCONFIRM, // 25
CHATRESULT_DUPLICATEFRIEND,
CHATRESULT_IGNORENOTFOUND,
CHATRESULT_DUPLICATEIGNORE,
CHATRESULT_DBFAIL,
CHATRESULT_ROOM_DESTAVATARNOTMODERATOR, // 30
CHATRESULT_ROOM_DESTAVATARNOTINVITED,
CHATRESULT_ROOM_DESTAVATARNOTBANNED,
CHATRESULT_ROOM_DUPLICATEBAN,
CHATRESULT_ROOM_DUPLICATEMODERATOR,
CHATRESULT_ROOM_DUPLICATEINVITE, // 35
CHATRESULT_ROOM_ALREADYINROOM,
CHATRESULT_ROOM_PARENTNONPERSISTENT,
CHATRESULT_ROOM_PARENTBADNODETYPE,
CHATRESULT_NOFANCLUBHANDLE,
CHATRESULT_AIDALREADYEXISTS, // 40
CHATRESULT_UIDALREADYEXISTS,
CHATRESULT_WRONGCHATSERVERFORREQUEST,
CHATRESULT_SUCCESSBADDATA,
CHATRESULT_NULLNAMELOGIN,
CHATRESULT_SERVER_IDENTITY_EMPTY, // 45
CHATRESULT_SERVER_IDENTITY_TAKEN,
CHATRESULT_REMOTESERVERDOWN,
CHATRESULT_NODEIDCONFLICT,
CHATRESULT_INVALIDNODENAME,
CHATRESULT_INSUFFICIENTGMPRIVS, // 50
CHATRESULT_SNOOPALREADYADDED,
CHATRESULT_NOTSNOOPING,
CHATRESULT_ROOM_DESTAVATARNOTTEMPORARYMODERATOR,
CHATRESULT_ROOM_DESTAVATARNOTVOICE,
CHATRESULT_ROOM_DUPLICATETEMPORARYMODERATOR, // 55
CHATRESULT_ROOM_DUPLICATEVOICE,
CHATRESULT_AVATARMUSTBELOGGEDOUT,
CHATRESULT_NOTHINGTODO,
CHATRESULT_TRANSFERNAMENULL,
CHATRESULT_TRANSFERUSERIDZERO, // 60
CHATRESULT_TRANSFERADDRESSNULL,
CHATRESULT_OUTOFIDS,
CHATRESULT_ROOM_LOCALROOM,
CHATRESULT_ROOM_GAMEROOM,
CHATRESULT_ROOM_DESTAVATARNOTENTERING, // 65
CHATRESULT_INSUFFICIENTPRIORITY,
CHATRESULT_ROOM_WAITINGFORENTRY,
CHATRESULT_INBOXLIMITEXCEEDED,
CHATRESULT_DUPLICATEDESTINATION,
CHATRESULT_CATEGORYLIMITEXCEEDED, // 70
CHATRESULT_MESSAGE_FILTER_FAILURE,
CHATRESULT_INVALID_INPUT,
};
// Status for PersistentHeader objects as found in PersistentMessage.h
enum PersistentStatus
{
PERSISTENT_NEW = 1,
PERSISTENT_UNREAD,
PERSISTENT_READ,
PERSISTENT_TRASH,
PERSISTENT_DELETED
};
// Bit flags for persistent message alterations. These are used in RequestAlterPersistentMessage
enum PersistentAlterationTypes
{
ALTER_SENDER = 1,
ALTER_SUBJECT = 2,
ALTER_MSG = 4,
ALTER_OOB = 8,
ALTER_SENT_TIME = 16,
ALTER_CATEGORY = 32
};
// Types of Snoop messages for OnReceiveSnoopMessage() callback in ChatAPI.h
enum SnoopTypes
{
SNOOP_INSTANTMESSAGE,
SNOOP_ROOMMESSAGE,
SNOOP_PERSISTENTMESSAGE,
SNOOP_END
};
#define CHATUNICODESTRING_COMP_OPER_DECL(__oper__) \
inline bool operator __oper__(const ChatUnicodeString &src) const \
{ \
return (m_wideString __oper__ src.m_wideString); \
}
#define string_data data()
#define string_length length()
class ChatUnicodeString {
private:
Plat_Unicode::String m_wideString;
Plat_Unicode::String getEmptyString();
std::string m_cString;
// const unsigned short *string_data;
// unsigned string_length;
public:
ChatUnicodeString();
ChatUnicodeString(const unsigned short *data, unsigned length);
ChatUnicodeString(const char *nData, unsigned length);
ChatUnicodeString(const Plat_Unicode::String& src);
ChatUnicodeString(const std::string& nSrc);
ChatUnicodeString(const char *nStrSrc);
ChatUnicodeString(const ChatUnicodeString& src);
ChatUnicodeString& operator=(const std::string& nSrc);
ChatUnicodeString& operator=(const Plat_Unicode::String& src);
ChatUnicodeString& operator=(const char *nStrSrc);
ChatUnicodeString& operator=(const ChatUnicodeString& src);
ChatUnicodeString& operator+=(const ChatUnicodeString& src);
ChatUnicodeString operator+(const ChatUnicodeString& src);
CHATUNICODESTRING_COMP_OPER_DECL(<)
CHATUNICODESTRING_COMP_OPER_DECL(<=)
CHATUNICODESTRING_COMP_OPER_DECL(==)
CHATUNICODESTRING_COMP_OPER_DECL(!=)
CHATUNICODESTRING_COMP_OPER_DECL(>=)
CHATUNICODESTRING_COMP_OPER_DECL(>)
inline unsigned length() const { return (unsigned)m_wideString.length(); }
inline const unsigned short * data() const { return m_wideString.data(); }
const char * c_str() const;
};
// class for OnGetSnoopList() callback to summarize a name/address pair
class AvatarSnoopPair
{
public:
AvatarSnoopPair(const Plat_Unicode::String &name, const Plat_Unicode::String &address);
~AvatarSnoopPair() {}
const ChatUnicodeString &getAvatarName() const { return m_name; }
const ChatUnicodeString &getAvatarAddress() const { return m_address; }
private:
ChatUnicodeString m_name;
ChatUnicodeString m_address;
};
};
#endif