53 virtual void ReadFrom(istream & strm) = 0;
54 virtual void PrintOn(ostream & strm)
const = 0;
58 void operator=(
const Base &);
67 class Object :
public Base,
public std::map<std::string, Base *>
73 virtual void ReadFrom(istream & strm);
74 virtual void PrintOn(ostream & strm)
const;
79 template <
class T>
const T *
Get(
const PString & name)
const
81 const_iterator it = find(name);
82 return it != end() ?
dynamic_cast<const T *
>(it->second) : NULL;
86 iterator it = find(name);
87 return it != end() ?
dynamic_cast<T *
>(it->second) : NULL;
115 void operator=(
const Object &) { }
124 virtual void ReadFrom(istream & strm);
125 virtual void PrintOn(ostream & strm)
const;
130 template <
class T>
const T *
Get(
size_t index)
const {
return index < size() ? dynamic_cast<const T *>(at(index)) : NULL; }
131 template <
class T> T *
Get(
size_t index) {
return index < size() ? dynamic_cast< T *>(at(index)) : NULL; }
154 bool Remove(
size_t index);
158 void operator=(
const Array &) { }
166 virtual void ReadFrom(istream & strm);
167 virtual void PrintOn(ostream & strm)
const;
180 virtual void ReadFrom(istream & strm);
181 virtual void PrintOn(ostream & strm)
const;
193 explicit Boolean(
bool value =
false);
195 virtual void ReadFrom(istream & strm);
196 virtual void PrintOn(ostream & strm)
const;
207 virtual void ReadFrom(istream & strm);
208 virtual void PrintOn(ostream & strm)
const;
221 virtual void ReadFrom(istream & strm);
222 virtual void PrintOn(ostream & strm)
const;
229 std::streamsize initialIndent = 0,
230 std::streamsize subsequentIndent = 0)
const;
262 class PJWT :
public PJSON
290 const Algorithm algorithm = HS256
301 void SetIssuer(
const PString & str);
303 void SetSubject(
const PString & str);
305 void SetAudience(
const PString & str);
307 void SetExpiration(
const PTime & when);
308 PTime GetExpiration()
const;
309 void SetNotBefore(
const PTime & when);
310 PTime GetNotBefore()
const;
311 void SetIssuedAt(
const PTime & when);
312 PTime GetIssuedAt()
const;
313 void SetTokenId(
const PString & str);
322 #endif // PTLIB_PJSON_H
virtual bool IsType(Types type) const
bool Set(const PString &name, Types type)
Number(NumberType value=0)
const Array & GetArray(size_t index) const
Definition: pjson.h:134
virtual bool IsType(Types type) const
unsigned GetUnsigned(size_t index) const
virtual void PrintOn(ostream &strm) const
Output the string to the specified stream.
PString & operator=(const PString &str)
Assign the string to the current object.
Object & GetObject(const PString &name)
Definition: pjson.h:90
Base * m_root
Definition: pjson.h:252
const Number & GetNumber() const
Definition: pjson.h:246
Object & GetObject(size_t index)
Definition: pjson.h:133
bool GetBoolean(size_t index) const
virtual bool IsType(Types type) const
#define PCLASSINFO(cls, par)
Declare all the standard PTLib class information.
Definition: object.h:2164
String(const char *str=NULL)
Definition: pjson.h:164
const Object & GetObject(const PString &name) const
Definition: pjson.h:89
String & operator=(const PString &str)
Definition: pjson.h:170
bool SetNumber(const PString &name, NumberType value)
bool SetBoolean(const PString &name, bool value)
PJSON & operator=(const PJSON &other)
NumberType m_value
Definition: pjson.h:176
This class defines an absolute time and date.
Definition: ptime.h:49
uint64_t GetUnsigned64(size_t index) const
bool Remove(size_t index)
virtual void PrintOn(ostream &strm) const
virtual Base * DeepClone() const
virtual void ReadFrom(istream &strm)
virtual void ReadFrom(istream &strm)
virtual Base * DeepClone() const
Array & GetArray(size_t index)
Definition: pjson.h:135
Boolean & operator=(bool value)
Definition: pjson.h:198
long double NumberType
Definition: pjson.h:63
int GetInteger(const PString &name) const
virtual void PrintOn(ostream &strm) const
PString AsString(std::streamsize initialIndent=0, std::streamsize subsequentIndent=0) const
virtual Base * DeepClone() const
const T * Get(size_t index) const
Definition: pjson.h:130
bool GetBoolean(const PString &name) const
bool FromString(const PString &str)
virtual void PrintOn(ostream &strm) const
const Object & GetObject() const
Definition: pjson.h:240
unsigned GetUnsigned(const PString &name) const
PString GetString(size_t index) const
Base()
Definition: pjson.h:50
virtual void ReadFrom(istream &strm)
virtual void ReadFrom(istream &strm)
virtual bool IsType(Types type) const
virtual Base * DeepClone() const
Boolean & GetBoolean()
Definition: pjson.h:249
virtual void ReadFrom(istream &strm)=0
Array()
Definition: pjson.h:121
NumberType GetNumber(const PString &name) const
virtual void ReadFrom(istream &strm)
~PJSON()
Definition: pjson.h:219
bool Remove(const PString &name)
int GetInteger(size_t index) const
const T & GetAs() const
Definition: pjson.h:238
virtual bool IsType(Types type) const =0
Array & GetArray(const PString &name)
Definition: pjson.h:92
virtual bool IsType(Types type) const
void AppendNumber(NumberType value)
bool GetValue() const
Definition: pjson.h:200
Boolean(bool value=false)
virtual void PrintOn(ostream &strm) const =0
const Array & GetArray() const
Definition: pjson.h:242
T * Get(size_t index)
Definition: pjson.h:131
#define PAssertNULL(ptr)
This macro is used to assert that a pointer must be non-null.
Definition: object.h:428
Number & GetNumber()
Definition: pjson.h:247
Constructor.
Definition: pjson.h:203
virtual void PrintOn(ostream &strm) const
virtual Base * DeepClone() const
uint64_t GetUnsigned64(const PString &name) const
virtual bool IsType(Types type) const
virtual void ReadFrom(istream &strm)
Input the string from the specified stream.
String & GetString()
Definition: pjson.h:245
virtual Base * DeepClone() const =0
#define P_DECLARE_STREAMABLE_ENUM(name, first,...)
This declares a standard enumeration using P_DECLARE_ENUM() and adds the text names so can be streame...
Definition: object.h:326
Array & GetArray()
Definition: pjson.h:243
T & GetAs()
Definition: pjson.h:239
The character string class.
Definition: pstring.h:108
int64_t GetInteger64(const PString &name) const
const Object & GetObject(size_t index) const
Definition: pjson.h:132
int64_t GetInteger64(size_t index) const
virtual void PrintOn(ostream &strm) const
virtual void ReadFrom(istream &strm)
virtual Base * DeepClone() const
virtual ~Base()
Definition: pjson.h:51
void AppendBoolean(bool value)
bool m_value
Definition: pjson.h:191
bool m_valid
Definition: pjson.h:253
void AppendString(const PString &value)
static const PString & Empty()
Return an empty string.
String & operator=(const char *str)
Definition: pjson.h:169
Number & operator=(NumberType value)
Definition: pjson.h:183
Object & SetObject(const PString &name)
void SetValue(NumberType value)
Definition: pjson.h:184
friend ostream & operator<<(ostream &s, const Base &b)
Definition: pjson.h:60
const Array & GetArray(const PString &name) const
Definition: pjson.h:91
bool SetString(const PString &name, const PString &value)
NumberType GetNumber(size_t index) const
PString GetString(const PString &name) const
Array & SetArray(const PString &name)
Object & GetObject()
Definition: pjson.h:241
const T * Get(const PString &name) const
Definition: pjson.h:79
const String & GetString() const
Definition: pjson.h:244
NumberType GetValue() const
Definition: pjson.h:185
const Boolean & GetBoolean() const
Definition: pjson.h:248
void SetValue(bool value)
Definition: pjson.h:199
virtual void PrintOn(ostream &strm) const
bool IsValid() const
Definition: pjson.h:232
Types
Definition: pjson.h:37
Ultimate parent class for all objects in the class library.
Definition: object.h:2204
T * Get(const PString &name)
Definition: pjson.h:84
bool IsType(Types type) const
Definition: pjson.h:234
Object()
Definition: pjson.h:70