SNAP Library, Developer Reference
2012-10-02 12:56:23
SNAP, a general purpose network analysis and graph mining library
|
Go to the source code of this file.
Enumerations | |
enum | TJsonValType { jvtUndef, jvtNull, jvtBool, jvtNum, jvtStr, jvtArr, jvtObj } |
Functions | |
UndefCopyAssign (TJsonVal) | |
TJsonVal () | |
static PJsonVal | New () |
TJsonVal (TSIn &SIn) | |
static PJsonVal | Load (TSIn &SIn) |
void | Save (TSOut &SOut) const |
void | PutNull () |
void | PutBool (const bool &_Bool) |
void | PutNum (const double &_Num) |
void | PutStr (const TStr &_Str) |
void | PutArr () |
void | AddToArr (const PJsonVal &Val) |
void | PutObj () |
void | AddToObj (const TStr &KeyNm, const PJsonVal &Val) |
void | AddToObj (const TStr &KeyNm, const int &Val) |
void | AddToObj (const TStr &KeyNm, const double &Val) |
void | AddToObj (const TStr &KeyNm, const TStr &Val) |
void | AddToObj (const TStr &KeyNm, const char *Val) |
void | AddToObj (const TStr &KeyNm, const bool &Val) |
void | AddToObj (const TStr &KeyNm, const TJsonValV &ValV) |
static PJsonVal | NewNull () |
static PJsonVal | NewBool (const bool &Bool) |
static PJsonVal | NewNum (const double &Num) |
static PJsonVal | NewStr (const TStr &Str) |
static PJsonVal | NewArr () |
static PJsonVal | NewArr (const TJsonValV &ValV) |
static PJsonVal | NewArr (const TStrV &StrV) |
static PJsonVal | NewObj () |
static PJsonVal | NewObj (const TStr &KeyNm, const PJsonVal &ObjVal) |
static PJsonVal | NewObj (const TStr &KeyNm, const int &ObjVal) |
static PJsonVal | NewObj (const TStr &KeyNm, const double &ObjVal) |
static PJsonVal | NewObj (const TStr &KeyNm, const TStr &ObjVal) |
static PJsonVal | NewObj (const TStr &KeyNm, const bool &ObjVal) |
TJsonValType | GetJsonValType () const |
bool | IsNull () const |
bool | IsBool () const |
bool | IsNum () const |
bool | IsStr () const |
bool | IsArr () const |
bool | IsObj () const |
bool | GetBool () const |
double | GetNum () const |
TStr | GetStr () const |
int | GetArrVals () const |
PJsonVal | GetArrVal (const int &ValN) const |
int | GetObjKeys () const |
void | GetObjKeyVal (const int &KeyValN, TStr &Key, PJsonVal &Val) const |
bool | IsObjKey (const TStr &Key) const |
bool | IsObjKey (const char *Key) const |
PJsonVal | GetObjKey (const TStr &Key) const |
PJsonVal | GetObjKey (const char *Key) const |
bool | GetObjBool (const TStr &Key) const |
bool | GetObjBool (const char *Key) const |
double | GetObjNum (const TStr &Key) const |
double | GetObjNum (const char *Key) const |
TStr | GetObjStr (const TStr &Key) const |
TStr | GetObjStr (const char *Key) const |
bool | GetObjBool (const TStr &Key, const bool &DefBool) const |
bool | GetObjBool (const char *Key, const bool &DefBool) const |
double | GetObjNum (const TStr &Key, const double &DefNum) const |
double | GetObjNum (const char *Key, const double &DefNum) const |
TStr | GetObjStr (const TStr &Key, const TStr &DefStr) const |
TStr | GetObjStr (const char *Key, const TStr &DefStr) const |
static PJsonVal | GetValFromLx (TILx &Lx) |
static PJsonVal | GetValFromStr (const TStr &JsonStr) |
static void | AddEscapeChAFromStr (const TStr &Str, TChA &ChA) |
static TStr | AddEscapeStrFromStr (const TStr &Str) |
static void | AddQChAFromStr (const TStr &Str, TChA &ChA) |
static void | GetChAFromVal (const PJsonVal &Val, TChA &ChA) |
static TStr | GetStrFromVal (const PJsonVal &Val) |
Variables | |
ClassTPV(TJsonVal, PJsonVal, TJsonValV) private TBool | Bool |
TFlt | Num |
TStr | Str |
TJsonValV | ValV |
THash< TStr, PJsonVal > | KeyValH |
enum TJsonValType |
void TJsonVal::AddEscapeChAFromStr | ( | const TStr & | Str, |
TChA & | ChA | ||
) | [static] |
Definition at line 122 of file json.cpp.
References TChA::AddCh(), TUnicode::DecodeUtf8(), TStr::Fmt(), TUnicodeDef::GetDef(), TUnicodeDef::IsDef(), TVec< TVal >::Len(), and TStr::Len().
Referenced by AddEscapeStrFromStr(), and AddQChAFromStr().
{ if (TUnicodeDef::IsDef()) { // parse the UTF8 string (old: TUStr InUStr(InStr);) TIntV UStr; TUnicodeDef::GetDef()->DecodeUtf8(Str, UStr); // escape the string for (int ChN = 0; ChN < UStr.Len(); ChN++) { const int UCh = UStr[ChN]; if (UCh < 0x80) { // 7-bit ascii const char Ch = (char)UCh; switch (Ch) { case '"' : ChA.AddCh('\\'); ChA.AddCh('"'); break; case '\\' : ChA.AddCh('\\'); ChA.AddCh('\\'); break; case '/' : ChA.AddCh('\\'); ChA.AddCh('/'); break; case '\b' : ChA.AddCh('\\'); ChA.AddCh('b'); break; case '\f' : ChA.AddCh('\\'); ChA.AddCh('f'); break; case '\n' : ChA.AddCh('\\'); ChA.AddCh('n'); break; case '\r' : ChA.AddCh('\\'); ChA.AddCh('r'); break; case '\t' : ChA.AddCh('\\'); ChA.AddCh('t'); break; default : ChA.AddCh(Ch); } } else { // escape ChA += "\\u"; ChA += TStr::Fmt("%04x", UCh); } } } else { // escape the string for (int ChN = 0; ChN < Str.Len(); ChN++) { const char Ch = Str[ChN]; if ((Ch & 0x80) == 0) { // 7-bit ascii switch (Ch) { case '"' : ChA.AddCh('\\'); ChA.AddCh('"'); break; case '\\' : ChA.AddCh('\\'); ChA.AddCh('\\'); break; case '/' : ChA.AddCh('\\'); ChA.AddCh('/'); break; case '\b' : ChA.AddCh('\\'); ChA.AddCh('b'); break; case '\f' : ChA.AddCh('\\'); ChA.AddCh('f'); break; case '\n' : ChA.AddCh('\\'); ChA.AddCh('n'); break; case '\r' : ChA.AddCh('\\'); ChA.AddCh('r'); break; case '\t' : ChA.AddCh('\\'); ChA.AddCh('t'); break; default : ChA.AddCh(Ch); } } else { // escape ChA += "\\u"; ChA += TStr::Fmt("%02x", (int)Ch); } } } }
static TStr AddEscapeStrFromStr | ( | const TStr & | Str | ) | [static] |
Definition at line 101 of file json.h.
References AddEscapeChAFromStr().
{ TChA ChA; AddEscapeChAFromStr(Str, ChA); return ChA; }
void TJsonVal::AddQChAFromStr | ( | const TStr & | Str, |
TChA & | ChA | ||
) | [static] |
Definition at line 176 of file json.cpp.
References AddEscapeChAFromStr().
Referenced by GetChAFromVal().
{ ChA+="\""; AddEscapeChAFromStr(Str, ChA); ChA+="\""; }
void AddToArr | ( | const PJsonVal & | Val | ) |
PJsonVal GetArrVal | ( | const int & | ValN | ) | const |
int GetArrVals | ( | ) | const |
bool GetBool | ( | ) | const |
void TJsonVal::GetChAFromVal | ( | const PJsonVal & | Val, |
TChA & | ChA | ||
) | [static] |
Definition at line 182 of file json.cpp.
References AddQChAFromStr(), TStr::Fmt(), jvtArr, jvtBool, jvtNull, jvtNum, jvtObj, jvtStr, and Throw().
Referenced by GetStrFromVal().
{ switch (Val->GetJsonValType()){ case jvtNull: ChA+="null"; break; case jvtBool: if (Val->GetBool()){ChA+="true";} else {ChA+="false";} break; case jvtNum: ChA+=TStr::Fmt("%g", Val->GetNum()); break; case jvtStr: AddQChAFromStr(Val->GetStr(), ChA); break; case jvtArr: ChA+="["; for (int ArrValN=0; ArrValN<Val->GetArrVals(); ArrValN++){ if (ArrValN>0){ChA+=", ";} GetChAFromVal(Val->GetArrVal(ArrValN), ChA); } ChA+="]"; break; case jvtObj: ChA+="{"; for (int ObjKeyN=0; ObjKeyN<Val->GetObjKeys(); ObjKeyN++){ if (ObjKeyN>0){ChA+=", ";} TStr ObjKey; PJsonVal ObjVal; Val->GetObjKeyVal(ObjKeyN, ObjKey, ObjVal); AddQChAFromStr(ObjKey, ChA); ChA+=":"; GetChAFromVal(ObjVal, ChA); } ChA+="}"; break; default: TExcept::Throw("Error parsing json"); } }
TJsonValType GetJsonValType | ( | ) | const |
double GetNum | ( | ) | const |
Definition at line 73 of file json.h.
References EAssert, IsNum(), and Num.
Referenced by TXmlLx::GetPlainStrFromXmlStr(), TXmlParser::GetPlainStrFromXmlStr(), TXmlLx::GetReference(), TStr::IsInt(), TStr::IsInt64(), TStr::IsUInt(), and TStr::IsUInt64().
bool GetObjBool | ( | const TStr & | Key | ) | const |
Definition at line 84 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetBool(); }
bool GetObjBool | ( | const char * | Key | ) | const |
Definition at line 85 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetBool(); }
bool TJsonVal::GetObjBool | ( | const TStr & | Key, |
const bool & | DefBool | ||
) | const |
bool TJsonVal::GetObjBool | ( | const char * | Key, |
const bool & | DefBool | ||
) | const |
PJsonVal TJsonVal::GetObjKey | ( | const TStr & | Key | ) | const |
Definition at line 19 of file json.cpp.
References EAssert, IsObj(), IsObjKey(), and KeyValH.
Referenced by GetObjBool(), GetObjNum(), and GetObjStr().
PJsonVal TJsonVal::GetObjKey | ( | const char * | Key | ) | const |
int GetObjKeys | ( | ) | const |
void GetObjKeyVal | ( | const int & | KeyValN, |
TStr & | Key, | ||
PJsonVal & | Val | ||
) | const |
Definition at line 86 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetNum(); }
double GetObjNum | ( | const char * | Key | ) | const |
Definition at line 87 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetNum(); }
double TJsonVal::GetObjNum | ( | const TStr & | Key, |
const double & | DefNum | ||
) | const |
double TJsonVal::GetObjNum | ( | const char * | Key, |
const double & | DefNum | ||
) | const |
Definition at line 88 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetStr(); }
Definition at line 89 of file json.h.
References GetObjKey().
{ return GetObjKey(Key)->GetStr(); }
TStr TJsonVal::GetObjStr | ( | const TStr & | Key, |
const TStr & | DefStr | ||
) | const |
TStr TJsonVal::GetObjStr | ( | const char * | Key, |
const TStr & | DefStr | ||
) | const |
TStr TJsonVal::GetStrFromVal | ( | const PJsonVal & | Val | ) | [static] |
Definition at line 215 of file json.cpp.
References GetChAFromVal().
{ TChA ChA; GetChAFromVal(Val, ChA); return ChA; }
PJsonVal TJsonVal::GetValFromLx | ( | TILx & | Lx | ) | [static] |
Definition at line 61 of file json.cpp.
References TILx::Flt, forever, TILx::GetSym(), New(), TILx::Str, syColon, syComma, syFlt, syIdStr, syLBrace, syLBracket, TILx::Sym, syQStr, syRBrace, syRBracket, and Throw().
{ static TFSet ValExpect=TFSet()|syIdStr|syFlt|syQStr|syLBracket|syLBrace; PJsonVal Val=TJsonVal::New(); if ((Lx.Sym==syIdStr)&&(Lx.Str=="null")){ Val->PutNull(); Lx.GetSym(); } else if ((Lx.Sym==syIdStr)&&(Lx.Str=="true")){ Val->PutBool(true); Lx.GetSym(); } else if ((Lx.Sym==syIdStr)&&(Lx.Str=="false")){ Val->PutBool(false); Lx.GetSym(); } else if (Lx.Sym==syFlt){ Val->PutNum(Lx.Flt); Lx.GetSym(); } else if (Lx.Sym==syQStr){ Val->PutStr(Lx.Str); Lx.GetSym(); } else if ((Lx.Sym==syLBracket)){ Val->PutArr(); Lx.GetSym(ValExpect); // added ValExpect to correctyl parse arrays of floats if (Lx.Sym!=syRBracket){ forever{ PJsonVal SubVal=TJsonVal::GetValFromLx(Lx); Val->AddToArr(SubVal); if (Lx.Sym==syComma){Lx.GetSym(ValExpect);} else if (Lx.Sym==syRBracket){break;} else {TExcept::Throw("JSON Array not properly formed.");} } } Lx.GetSym(); } else if ((Lx.Sym==syLBrace)){ Val->PutObj(); Lx.GetSym(TFSet()|syRBrace|syQStr); if (Lx.Sym!=syRBrace){ forever{ TStr SubKey=Lx.Str; Lx.GetSym(syColon); Lx.GetSym(ValExpect); PJsonVal SubVal=TJsonVal::GetValFromLx(Lx); Val->AddToObj(SubKey, SubVal); if (Lx.Sym==syComma){Lx.GetSym(TFSet()|syQStr);} else if (Lx.Sym==syRBrace){break;} else {TExcept::Throw("JSON Object not properly formed.");} } } Lx.GetSym(); } else { TExcept::Throw("Unexpected JSON symbol."); } return Val; }
static PJsonVal GetValFromStr | ( | const TStr & | JsonStr | ) | [static] |
Referenced by TEnv::GetIfArgPrefixBool(), and TILx::GetSym().
bool IsArr | ( | ) | const |
Definition at line 68 of file json.h.
References jvtArr.
Referenced by GetArrVals().
{return JsonValType==jvtArr;}
bool IsBool | ( | ) | const |
bool IsNull | ( | ) | const |
Definition at line 64 of file json.h.
References jvtNull.
Referenced by TPt< TRec >::TPt().
{return JsonValType==jvtNull;}
bool IsNum | ( | ) | const |
bool IsObj | ( | ) | const |
Definition at line 69 of file json.h.
References jvtObj.
Referenced by GetObjBool(), GetObjKey(), GetObjKeys(), GetObjKeyVal(), GetObjNum(), GetObjStr(), and IsObjKey().
{return JsonValType==jvtObj;}
Definition at line 80 of file json.h.
References EAssert, IsObj(), and KeyValH.
Referenced by GetObjBool(), GetObjKey(), GetObjNum(), and GetObjStr().
bool IsObjKey | ( | const char * | Key | ) | const |
bool IsStr | ( | ) | const |
Definition at line 21 of file json.h.
References TJsonVal().
{return new TJsonVal(SIn);}
static PJsonVal New | ( | ) | [static] |
static PJsonVal NewArr | ( | ) | [static] |
Definition at line 47 of file json.h.
References New().
Referenced by AddToObj().
{ PJsonVal Val = TJsonVal::New(); Val->PutArr(); return Val; }
static PJsonVal NewArr | ( | const TJsonValV & | ValV | ) | [static] |
static PJsonVal NewBool | ( | const bool & | Bool | ) | [static] |
Definition at line 44 of file json.h.
References New().
Referenced by AddToObj().
{ PJsonVal Val = TJsonVal::New(); Val->PutBool(Bool); return Val; }
static PJsonVal NewNull | ( | ) | [static] |
Definition at line 43 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutNull(); return Val; }
static PJsonVal NewNum | ( | const double & | Num | ) | [static] |
Definition at line 45 of file json.h.
References New().
Referenced by AddToObj().
{ PJsonVal Val = TJsonVal::New(); Val->PutNum(Num); return Val; }
static PJsonVal NewObj | ( | ) | [static] |
Definition at line 50 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); return Val; }
Definition at line 51 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 53 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 55 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 57 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 59 of file json.h.
References New().
{ PJsonVal Val = TJsonVal::New(); Val->PutObj(); Val->AddToObj(KeyNm, ObjVal); return Val; }
Definition at line 46 of file json.h.
References New().
Referenced by AddToObj(), and TStr::InsStr().
{ PJsonVal Val = TJsonVal::New(); Val->PutStr(Str); return Val; }
void PutBool | ( | const bool & | _Bool | ) |
void PutNum | ( | const double & | _Num | ) |
TJsonVal | ( | ) |
Definition at line 14 of file json.h.
Referenced by AddToObj(), GetObjBool(), GetObjKey(), GetObjKeys(), GetObjKeyVal(), GetObjNum(), GetObjStr(), and IsObjKey().