1#if !defined(RESIP_HEADERS_HXX)
2#define RESIP_HEADERS_HXX
13class HeaderFieldValueList;
16#ifdef PARTIAL_TEMPLATE_SPECIALIZATION
44#define UnusedChecking(_enum) \
45 typedef TypeIf<Headers::_enum != Headers::UNKNOWN> TypeIfT; \
46 typedef TypeIfT::Resolve<Type> Resolver; \
47 typedef Resolver::Type UnknownReturn
49#define MultiUnusedChecking(_enum) \
50 typedef TypeIf<Headers::_enum != Headers::UNKNOWN> TypeIfT; \
51 typedef TypeIfT::Resolve< ParserContainer<Type> > Resolver; \
52 typedef Resolver::Type UnknownReturn
56#define UnusedChecking(_enum) typedef int _dummy
57#define MultiUnusedChecking(_enum) typedef int _dummy
78#define defineHeader(_enum, _name, _type, _rfc) \
79class H_##_enum : public HeaderBase \
82 RESIP_HeapCount(H_##_enum); \
83 enum {Single = true}; \
85 UnusedChecking(_enum); \
86 static Type& knownReturn(ParserContainerBase* container); \
87 virtual ParserContainerBase* makeContainer(HeaderFieldValueList* hfvs) const; \
88 virtual Headers::Type getTypeNum() const; \
89 virtual void merge(SipMessage&, const SipMessage&); \
92extern H_##_enum h_##_enum
94#define defineMultiHeader(_enum, _name, _type, _rfc) \
95class H_##_enum##s : public HeaderBase \
98 RESIP_HeapCount(H_##_enum##s); \
99 enum {Single = false}; \
100 typedef ParserContainer<_type> Type; \
101 typedef _type ContainedType; \
102 MultiUnusedChecking(_enum); \
103 static Type& knownReturn(ParserContainerBase* container); \
104 virtual ParserContainerBase* makeContainer(HeaderFieldValueList* hfvs) const; \
105 virtual Headers::Type getTypeNum() const; \
106 virtual void merge(SipMessage&, const SipMessage&); \
109extern H_##_enum##s h_##_enum##s
330#undef defineMultiHeader
Represents the "credentials" and "challenge" elements in the SIP grammar.
Represents a CSeq header field value (this doesn't have an official name in the RFC 3261 grammar).
Represents the "callid" element in the SIP grammar.
Represents the "SIP-date" element in the RFC 3261 grammar.
Represents the header field value for an Expires-type header.
Represents the "absoluteURI" element in the RFC 3261 grammar.
Represents an Identity header from RFC8824.
Represents the "media-type" element in the RFC 3261 grammar.
Represents the "name-addr" and the "addr-spec" elements in the RFC 3261 grammar.
Abstract Base class implemented in derived class ParserContainer.
Container class for ParserCategory, used by SipMessage to represent multi-valued headers (Contact,...
Represents the "token" element in the RFC 3261 grammar.
Represents the RAck header field value defined in the RFC 3262 grammar.
Represents a SIP message.
Represents the "header-value" element in the RFC 3261 grammar (ie, an unknown header field value).
Generically represents a token whose value can be wrapped and encoded using double quotes.
Represents the "token" element in the RFC 3261 grammar.
Represents a numeric-with-comment header field value.
Represents the "via-parm" element in the RFC 3261 grammar.
Represents the "warning-value" element in the RFC 3261 grammar.
dcm! – add UnusedChecking(_enum) below;
StatusLineType h_StatusLine
ParserContainer< Via > Vias
ParserContainer< Mime > Mimes
ParserContainer< GenericUri > GenericUris
ParserContainer< Token > Tokens
ParserContainer< IdentityCategory > IdentityCategories
ParserContainer< Auth > Auths
H_PPreferredIdentitys h_PPreferredIdentities
H_SecurityVerifys h_SecurityVerifies
H_PAssertedIdentitys h_PAssertedIdentities
ParserContainer< NameAddr > NameAddrs
RequestLineType h_RequestLine
ParserContainer< StringCategory > StringCategories
ParserContainer< UInt32Category > UInt32Categories
H_AllowEventss h_AllowEvents