gloox  1.0.22
stanzaextension.h
1 /*
2  Copyright (c) 2006-2017 by Jakob Schröter <js@camaya.net>
3  This file is part of the gloox library. http://camaya.net/gloox
4 
5  This software is distributed under a license. The full license
6  agreement can be found in the file LICENSE in this distribution.
7  This software may not be copied, modified, sold or distributed
8  other than expressed in the named license agreement.
9 
10  This software is distributed without any warranty.
11 */
12 
13 
14 #ifndef STANZAEXTENSION_H__
15 #define STANZAEXTENSION_H__
16 
17 #include "macros.h"
18 
19 #include <string>
20 
21 namespace gloox
22 {
23 
24  class Tag;
25  class Stanza;
26 
31  {
35  ExtOOB,
37  ExtGPGSigned,
41  ExtReceipt,
43  ExtDelay,
45  ExtAMP,
48  ExtCaps,
56  ExtVersion,
58  ExtXHtmlIM,
92  ExtIOData,
94  ExtUser
97  };
98 
203  class GLOOX_API StanzaExtension
204  {
205  public:
211  StanzaExtension( int type ) : m_valid( false ), m_extensionType( type ) {}
212 
216  virtual ~StanzaExtension() {}
217 
224  virtual Stanza* embeddedStanza() const { return 0; }
225 
232  virtual Tag* embeddedTag() const { return 0; }
233 
240  virtual const std::string& filterString() const = 0;
241 
253  virtual StanzaExtension* newInstance( const Tag* tag ) const = 0;
254 
259  virtual Tag* tag() const = 0;
260 
265  virtual StanzaExtension* clone() const = 0;
266 
271  int extensionType() const { return m_extensionType; }
272 
273  protected:
274  bool m_valid;
275 
276  private:
277  int m_extensionType;
278 
279  };
280 
281 }
282 
283 #endif // STANZAEXTENSION_H__
gloox::ExtMUC
@ ExtMUC
Definition: stanzaextension.h:69
gloox::Stanza
This is the base class for XMPP stanza abstractions.
Definition: stanza.h:34
gloox::ExtVersion
@ ExtVersion
Definition: stanzaextension.h:56
gloox::StanzaExtension
This class abstracts a stanza extension, which is usually an XML child element in a specific namespac...
Definition: stanzaextension.h:204
gloox::ExtChatState
@ ExtChatState
Definition: stanzaextension.h:50
gloox::ExtResourceBind
@ ExtResourceBind
Definition: stanzaextension.h:54
gloox::ExtCaps
@ ExtCaps
Definition: stanzaextension.h:48
gloox::ExtPubSubEvent
@ ExtPubSubEvent
Definition: stanzaextension.h:86
gloox::ExtVCard
@ ExtVCard
Definition: stanzaextension.h:78
gloox::StanzaExtension::StanzaExtension
StanzaExtension(int type)
Definition: stanzaextension.h:211
gloox::ExtRoster
@ ExtRoster
Definition: stanzaextension.h:64
gloox::ExtForward
@ ExtForward
Definition: stanzaextension.h:90
gloox::ExtNonSaslAuth
@ ExtNonSaslAuth
Definition: stanzaextension.h:68
gloox::StanzaExtension::extensionType
int extensionType() const
Definition: stanzaextension.h:271
gloox::ExtError
@ ExtError
Definition: stanzaextension.h:47
gloox::ExtXHtmlIM
@ ExtXHtmlIM
Definition: stanzaextension.h:58
gloox::StanzaExtension::~StanzaExtension
virtual ~StanzaExtension()
Definition: stanzaextension.h:216
gloox::ExtFlexOffline
@ ExtFlexOffline
Definition: stanzaextension.h:81
gloox::ExtReceipt
@ ExtReceipt
Definition: stanzaextension.h:41
gloox::ExtMUCOwner
@ ExtMUCOwner
Definition: stanzaextension.h:70
gloox::ExtAdhocCommand
@ ExtAdhocCommand
Definition: stanzaextension.h:62
gloox::StanzaExtension::embeddedStanza
virtual Stanza * embeddedStanza() const
Definition: stanzaextension.h:224
gloox::ExtUser
@ ExtUser
Definition: stanzaextension.h:94
gloox::ExtSI
@ ExtSI
Definition: stanzaextension.h:82
gloox::ExtPing
@ ExtPing
Definition: stanzaextension.h:74
gloox::StanzaExtension::embeddedTag
virtual Tag * embeddedTag() const
Definition: stanzaextension.h:232
gloox::ExtSHIM
@ ExtSHIM
Definition: stanzaextension.h:88
gloox::ExtLastActivity
@ ExtLastActivity
Definition: stanzaextension.h:80
gloox::ExtDelay
@ ExtDelay
Definition: stanzaextension.h:43
gloox::ExtPubSubOwner
@ ExtPubSubOwner
Definition: stanzaextension.h:85
gloox::ExtPubSub
@ ExtPubSub
Definition: stanzaextension.h:84
gloox::ExtNickname
@ ExtNickname
Definition: stanzaextension.h:53
gloox::ExtPrivacy
@ ExtPrivacy
Definition: stanzaextension.h:79
gloox::StanzaExtension::newInstance
virtual StanzaExtension * newInstance(const Tag *tag) const =0
gloox::ExtMUCAdmin
@ ExtMUCAdmin
Definition: stanzaextension.h:71
gloox::StanzaExtension::clone
virtual StanzaExtension * clone() const =0
gloox::ExtAttention
@ ExtAttention
Definition: stanzaextension.h:89
gloox::ExtIOData
@ ExtIOData
Definition: stanzaextension.h:92
gloox
The namespace for the gloox library.
Definition: adhoc.cpp:28
gloox::ExtSearch
@ ExtSearch
Definition: stanzaextension.h:75
gloox::ExtPrivateXML
@ ExtPrivateXML
Definition: stanzaextension.h:63
gloox::ExtJingle
@ ExtJingle
Definition: stanzaextension.h:77
gloox::StanzaExtension::filterString
virtual const std::string & filterString() const =0
gloox::Tag
This is an abstraction of an XML element.
Definition: tag.h:47
gloox::ExtSessionCreation
@ ExtSessionCreation
Definition: stanzaextension.h:55
gloox::StanzaExtensionType
StanzaExtensionType
Definition: stanzaextension.h:31
gloox::ExtMUCUser
@ ExtMUCUser
Definition: stanzaextension.h:72
gloox::ExtDiscoItems
@ ExtDiscoItems
Definition: stanzaextension.h:61
gloox::ExtIBB
@ ExtIBB
Definition: stanzaextension.h:67
gloox::ExtDiscoInfo
@ ExtDiscoInfo
Definition: stanzaextension.h:60
gloox::ExtCarbons
@ ExtCarbons
Definition: stanzaextension.h:91
gloox::ExtNone
@ ExtNone
Definition: stanzaextension.h:32
gloox::ExtRegistration
@ ExtRegistration
Definition: stanzaextension.h:76
gloox::ExtOOB
@ ExtOOB
Definition: stanzaextension.h:35
gloox::ExtMUCUnique
@ ExtMUCUnique
Definition: stanzaextension.h:73
gloox::ExtGPGSigned
@ ExtGPGSigned
Definition: stanzaextension.h:37
gloox::ExtVCardUpdate
@ ExtVCardUpdate
Definition: stanzaextension.h:33
gloox::ExtAMP
@ ExtAMP
Definition: stanzaextension.h:45
gloox::StanzaExtension::tag
virtual Tag * tag() const =0
gloox::ExtMessageEvent
@ ExtMessageEvent
Definition: stanzaextension.h:51
gloox::ExtS5BQuery
@ ExtS5BQuery
Definition: stanzaextension.h:83
gloox::ExtFeatureNeg
@ ExtFeatureNeg
Definition: stanzaextension.h:65
gloox::ExtGPGEncrypted
@ ExtGPGEncrypted
Definition: stanzaextension.h:39
gloox::ExtDataForm
@ ExtDataForm
Definition: stanzaextension.h:52