78 Format fmt = e_Standard
89 virtual void PrintOn(ostream & strm)
const;
90 virtual void ReadFrom(istream & strm);
95 class Separator :
public PObject
98 Separator(
char c =
'\0') : m_separator(c) { }
99 virtual void PrintOn(ostream & strm)
const;
100 virtual void ReadFrom(istream & strm);
101 bool operator==(
char c)
const {
return m_separator == c; }
102 bool operator!=(
char c)
const {
return m_separator != c; }
107 class ParamValue :
public PString
110 ParamValue(
const char * str = NULL) :
PString(str) { }
112 virtual void PrintOn(ostream & strm)
const;
113 virtual void ReadFrom(istream & strm);
116 class ParamValues :
public PArray<ParamValue>
119 virtual void PrintOn(ostream & strm)
const;
120 virtual void ReadFrom(istream & strm);
123 typedef std::map<Token, ParamValues> ParamMap;
125 class TypeValues :
public ParamValues
129 TypeValues(
const ParamValues & values) : ParamValues(values) { }
130 virtual void PrintOn(ostream & strm)
const;
134 class TextValue :
public PString
137 TextValue(
const char * str = NULL) :
PString(str) { }
139 virtual void PrintOn(ostream & strm)
const;
140 virtual void ReadFrom(istream & strm);
144 class TextValues :
public PArray<TextValue>
147 virtual void PrintOn(ostream & strm)
const;
148 virtual void ReadFrom(istream & strm);
151 class URIValue :
public PURL
154 URIValue(
const char * str = NULL) :
PURL(str) { }
156 virtual void PrintOn(ostream & strm)
const;
157 virtual void ReadFrom(istream & strm);
161 class InlineValue :
public URIValue
164 InlineValue(
const char * str = NULL) : URIValue(str), m_params(NULL) { }
165 InlineValue(
const PString & str) : URIValue(str), m_params(NULL) { }
166 virtual void PrintOn(ostream & strm)
const;
167 virtual void ReadFrom(istream & strm);
168 InlineValue & ReadFromParam(
const ParamMap & params);
170 const ParamMap * m_params;
174 TextValue m_fullName;
177 TextValue m_familyName;
178 TextValue m_givenName;
179 TextValues m_additionalNames;
180 TextValue m_honorificPrefixes;
181 TextValue m_honorificSuffixes;
182 TextValues m_nickNames;
183 TextValue m_sortString;
189 TextValue m_timeZone;
197 TextValue m_organisationName;
198 TextValue m_organisationUnit;
201 TextValues m_categories;
204 TextValue m_productId;
206 TextValue m_revision;
208 TextValue m_publicKey;
210 struct MultiValue :
public PObject {
212 MultiValue(
const PString & type) { m_types.Append(
new ParamValue(type)); }
215 void SetTypes(
const ParamMap & params);
218 struct Address :
public MultiValue {
219 Address(
bool label =
false) : m_label(label) { }
220 virtual void PrintOn(ostream & strm)
const;
221 virtual void ReadFrom(istream & strm);
224 TextValue m_postOfficeBox;
225 TextValue m_extendedAddress;
227 TextValue m_locality;
229 TextValue m_postCode;
235 struct Telephone :
public MultiValue {
241 virtual void PrintOn(ostream & strm)
const;
247 struct EMail :
public MultiValue {
253 virtual void PrintOn(ostream & strm)
const;
258 struct ExtendedType {
259 ParamMap m_parameters;
263 typedef std::map<Token, ExtendedType> ExtendedTypeMap;
264 ExtendedTypeMap m_extensions;
270 #endif // PTLIB_VCARD_H