00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef STANZAEXTENSION_H__
00015 #define STANZAEXTENSION_H__
00016
00017 #include "macros.h"
00018
00019 #include <string>
00020
00021 namespace gloox
00022 {
00023
00024 class Tag;
00025
00029 enum StanzaExtensionType
00030 {
00031 ExtNone,
00032 ExtVCardUpdate,
00034 ExtOOB,
00036 ExtGPGSigned,
00038 ExtGPGEncrypted,
00040 ExtReceipt,
00042 ExtDelay,
00044 ExtAMP,
00046 ExtError,
00047 ExtCaps,
00049 ExtChatState,
00050 ExtMessageEvent,
00051 ExtDataForm,
00052 ExtNickname,
00053 ExtResourceBind,
00054 ExtSessionCreation,
00055 ExtVersion,
00057 ExtXHtmlIM,
00059 ExtDiscoInfo,
00060 ExtDiscoItems,
00061 ExtAdhocCommand,
00062 ExtPrivateXML,
00063 ExtRoster,
00064 ExtFeatureNeg,
00066 ExtIBB,
00067 ExtNonSaslAuth,
00068 ExtMUC,
00069 ExtMUCOwner,
00070 ExtMUCAdmin,
00071 ExtMUCUser,
00072 ExtMUCUnique,
00073 ExtPing,
00074 ExtSearch,
00075 ExtRegistration,
00076 ExtJingle,
00077 ExtVCard,
00078 ExtPrivacy,
00079 ExtLastActivity,
00080 ExtFlexOffline,
00081 ExtSI,
00082 ExtS5BQuery,
00083 ExtPubSub,
00084 ExtPubSubOwner,
00085 ExtPubSubEvent,
00087 ExtSHIM,
00088 ExtAttention,
00089 ExtUser
00092 };
00093
00177 class GLOOX_API StanzaExtension
00178 {
00179 public:
00185 StanzaExtension( int type ) : m_valid( false ), m_extensionType( type ) {}
00186
00190 virtual ~StanzaExtension() {}
00191
00198 virtual const std::string& filterString() const = 0;
00199
00211 virtual StanzaExtension* newInstance( const Tag* tag ) const = 0;
00212
00217 virtual Tag* tag() const = 0;
00218
00223 virtual StanzaExtension* clone() const = 0;
00224
00229 int extensionType() const { return m_extensionType; }
00230
00231 protected:
00232 bool m_valid;
00233
00234 private:
00235 int m_extensionType;
00236
00237 };
00238
00239 }
00240
00241 #endif // STANZAEXTENSION_H__