SNAP Library, User Reference  2012-10-02 12:56:23
SNAP, a general purpose network analysis and graph mining library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
unicodestring.h
Go to the documentation of this file.
00001 
00002 // Unicode-Definition
00003 class TUnicodeDef{
00004 private:
00005   static TUnicodeDef UnicodeDef;
00006 private:
00007   TUnicode* Unicode;
00008   UndefCopyAssign(TUnicodeDef);
00009 public:
00010   TUnicodeDef(): Unicode(NULL){}
00011   ~TUnicodeDef(){if (Unicode!=NULL){delete Unicode;} Unicode=NULL;}
00012 
00013   // files
00014   static TStr GetDfFNm();
00015   static void Load(){
00016     Load(GetDfFNm());}
00017   static void Load(const TStr& FNm){
00018     UnicodeDef.Unicode=new TUnicode(FNm);}
00019 
00020   // status
00021   static bool IsDef(){
00022     return UnicodeDef.Unicode!=NULL;}
00023   static TUnicode* GetDef(){
00024     Assert(UnicodeDef.Unicode!=NULL); return UnicodeDef.Unicode;}
00025 };
00026 
00028 // Unicode-String
00029 class TUStr;
00030 typedef TVec<TUStr> TUStrV;
00031 
00032 class TUStr{
00033 private:
00034   TIntV UniChV;
00035   static void AssertUnicodeDefOk(){
00036     EAssertR(TUnicodeDef::IsDef(), "Unicode-Definition-File not loaded!");}
00037 public:
00038   TUStr(): UniChV(){AssertUnicodeDefOk();}
00039   TUStr(const TUStr& UStr): UniChV(UStr.UniChV){AssertUnicodeDefOk();}
00040   TUStr(const TIntV& _UniChV): UniChV(_UniChV){AssertUnicodeDefOk();}
00041   TUStr(const TStr& Str);
00042   ~TUStr(){}
00043   TUStr(TSIn& SIn): UniChV(SIn){AssertUnicodeDefOk();}
00044   void Save(TSOut& SOut) const {UniChV.Save(SOut);}
00045   void LoadXml(const PXmlTok& XmlTok, const TStr& Nm);
00046   void SaveXml(TSOut& SOut, const TStr& Nm) const;
00047 
00048   TUStr& operator=(const TUStr& UStr){
00049     if (this!=&UStr){UniChV=UStr.UniChV;} return *this;}
00050   bool operator==(const TUStr& UStr) const {return UniChV==UStr.UniChV;}
00051 
00052   TUStr& operator+=(const TUStr& UStr){UniChV.AddV(UStr.UniChV); return *this;}
00053   int operator[](const int& UniChN) const {return UniChV[UniChN];}
00054 
00055   // basic operations
00056   void Clr(){UniChV.Clr();}
00057   int Len() const {return UniChV.Len();}
00058   bool Empty() const {return UniChV.Empty();}
00059 
00060   // transformations
00061   void ToLowerCase();
00062   void ToUpperCase();
00063   void ToStarterCase();
00064 
00065   // word boundaries
00066   void GetWordBoundPV(TBoolV& WordBoundPV);
00067   void GetWordUStrV(TUStrV& UStrV);
00068 
00069   // conversions to string
00070   TStr GetStr() const;
00071   TStr GetStarterStr() const;
00072   TStr GetStarterLowerCaseStr() const;
00073 
00074   // scripts
00075   static int GetScriptId(const TStr& ScriptNm);
00076   static TStr GetScriptNm(const int& ScriptId);
00077   static int GetChScriptId(const int& UniCh);
00078   static TStr GetChScriptNm(const int& UniCh);
00079 
00080   // characters
00081   static TStr GetChNm(const int& UniCh);
00082   static TStr GetChTypeStr(const int& UniCh);
00083   static bool IsCase(const int& UniCh);
00084   static bool IsUpperCase(const int& UniCh);
00085   static bool IsLowerCase(const int& UniCh);
00086   static bool IsAlphabetic(const int& UniCh);
00087   static bool IsMath(const int& UniCh);
00088 
00089   // converstions to/from UTF8
00090   static TStr EncodeUtf8(const int& UniCh);
00091 };