SNAP Library , Developer Reference  2013-01-07 14:03:36
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 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 };