GCpp general purpose C++ library  version 1.0
GString.hh
Go to the documentation of this file.
1 //======================================================================
2 /*! \file GString.hh
3  *
4  * Include file for the GString class
5  */
6 //======================================================================
7 
8 
9 #ifndef G_STRING_HH
10 #define G_STRING_HH
11 
12 #include "GGlobal.hh"
13 
14 //----------------------------------------------------------------------
15 
16 ///! Default separator characters
17 #define GSTRING_DEFAULT_SEPARATOR " ,;:.!?'[]{}()=+-*&%$#\n\t\r"
18 
19 ///! Default space separator characters
20 #define GSTRING_DEFAULT_SPACE " \n\t\r"
21 
22 ///! Default punctuation characters
23 #define GSTRING_DEFAULT_PUNCT ",;:.!?"
24 
25 ///! Lowercase letters with accent
26 #define GSTRING_ACCENT_LOWER "àâäéèêëîïôöùü"
27 
28 ///! Uppercase letters with accent
29 #define GSTRING_ACCENT_UPPER "ÀÂÄÉÈÊËÎÏÔÖÙÜ"
30 
31 ///! All letters with accent
32 #define GSTRING_ACCENT_LIST "àâäéèêëîïôöùüÀÂÄÉÈÊËÎÏÔÖÙÜ"
33 
34 ///! Letters without accent corresponding to letters with accent
35 #define GSTRING_NO_ACCENT_LIST "aaaeeeeiioouuAAAEEEEIIOOUU"
36 
37 //======================================================================
38 /*! \class GString
39  *
40  * Class deriving from the standard C++ \b string class, defining
41  * new functions.
42  */
43 
44 class GString : public string
45 {
46  //------------------------------------------------------------
47  /*! \object_doc */
49  //------------------------------------------------------------
50 
51  public:
52  //------------------------------------------------------------
53  // Constructor / Destructor / Affectation
54  GString ( );
55  GString ( const string & s );
56  GString ( const char * s );
57  GString ( const GString & s );
58 
59  GString & operator = ( const GString & s );
60  GString & operator = ( const string & s );
61  GString & operator = ( const char * s );
62 
63  virtual ~GString ();
64 
65  //------------------------------------------------------------
66  // General functions
67 
68  virtual GString ToLower ( ) const;
69  virtual GString ToUpper ( ) const;
70 
71  virtual GString NoAccent ( ) const;
72  virtual GString NoPunct ( const string &punct = GSTRING_DEFAULT_PUNCT, const char rep = ' ' ) const;
73 
74  virtual GString NoSpace ( const string &spc = GSTRING_DEFAULT_SPACE ) const;
75  virtual GString NoEndSpace ( const string &spc = GSTRING_DEFAULT_SPACE ) const;
76 
77  virtual GString Fill ( size_t len, const char c = ' ', bool trunc = false ) const;
78 
79  size_t FindFirstOf ( const string &s, size_t index = 0 );
80 
81  GString & ReplaceChar ( char c, char r, u_int n = 0 );
82  GString & ReplaceAll ( const GString & s, const GString & r );
83 
84 
85  // Comparison functions
86  virtual int Compare ( const GString & str ) const;
87  virtual int CompareDict ( const GString & str ) const;
88 
89  // Reading values
90  virtual int ReadInt ( int default_val = 0 ) const;
91  virtual float ReadFloat ( float default_val = 0. ) const;
92  virtual double ReadDouble ( double default_val = 0. ) const;
93 
94  virtual int ReadSubInt ( size_t & ifirst,
95  size_t & ilast,
96  size_t index = 0,
97  int default_val = 0,
98  const string & separ = GSTRING_DEFAULT_SPACE ) const;
99  virtual float ReadSubFloat ( size_t & ifirst,
100  size_t & ilast,
101  const size_t index = 0,
102  const float default_val = 0.,
103  const string & separ = GSTRING_DEFAULT_SPACE ) const;
104  virtual double ReadSubDouble ( size_t & ifirst,
105  size_t & ilast,
106  const size_t index = 0,
107  const double default_val = 0.,
108  const string & separ = GSTRING_DEFAULT_SPACE ) const;
109 
110  // extracting sub strings
111  virtual GString GetSubstring ( char first,
112  char last,
113  size_t & ifirst,
114  size_t & ilast,
115  size_t index = 0,
116  bool keep = true ) const;
117 
118  virtual GString GetSubstring ( char first,
119  char last,
120  size_t index = 0,
121  bool keep = true ) const;
122 
123  // extracting words
124  virtual GString GetWord ( size_t &ifirst, size_t &ilast, size_t index = 0,
125  const string &separ = GSTRING_DEFAULT_SEPARATOR ) const;
126 
127  virtual GString GetWord ( size_t index = 0,
128  const string &separ = GSTRING_DEFAULT_SEPARATOR ) const;
129 
130  virtual u_int CountWords ( const string &separ = GSTRING_DEFAULT_SEPARATOR ) const;
131  virtual u_int GetWords ( string * table, const string &separ = GSTRING_DEFAULT_SEPARATOR ) const;
132  virtual string * CreateWordsTable ( u_int &nw, const string &separ = GSTRING_DEFAULT_SEPARATOR ) const;
133 
134  // replacing formats %...X
135  virtual size_t FindFormat ( const char fmtc, size_t &fmtlen, size_t &len );
136  virtual size_t FindFormat ( const char fmtc, size_t &fmtlen );
137  virtual GString ReplaceFormat ( const char fmtc, const int val, const char spc = '0' );
138 
139 };
140 
141 //======================================================================
142 // INLINE FUNCTIONS
143 
144 /*! The function searches in the string for a format identifier.
145  * It should look like "%X" or "%nX", where \b n is an integer indicating
146  * the format size, and \b X is the identification character.
147  * The function returns the position where the format indication is found,
148  * or string::npos if the format is not present.
149  * \param fmtc letter (character) for the format
150  * \param fmtlen length of the format (as function output)
151  */
152 inline size_t GString::FindFormat ( const char fmtc, size_t &fmtlen )
153  { size_t len; return ( FindFormat (fmtc, fmtlen, len) ); }
154 
155 
156 //----------------------------------------------------------------------
157 // Inline functions
158 #include "icc/GString.icc"
159 
160 
161 //======================================================================
162 #endif
virtual double ReadSubDouble(size_t &ifirst, size_t &ilast, const size_t index=0, const double default_val=0., const string &separ=" \n\t\r") const
Definition: GString.cpp:498
virtual GString ToLower() const
Definition: GString.cpp:24
virtual string * CreateWordsTable(u_int &nw, const string &separ=" ,;:.!?'[]{}()=+-*&%$#\n\t\r") const
Definition: GString.cpp:762
virtual GString NoPunct(const string &punct=",;:.!?", const char rep= ' ') const
Definition: GString.cpp:94
virtual float ReadFloat(float default_val=0.) const
Definition: GString.cpp:412
#define GSTRING_DEFAULT_SEPARATOR
! Default separator characters
Definition: GString.hh:17
#define GSTRING_DEFAULT_PUNCT
! Default punctuation characters
Definition: GString.hh:23
#define GSTRING_DEFAULT_SPACE
! Default space separator characters
Definition: GString.hh:20
virtual int Compare(const GString &str) const
Definition: GString.cpp:237
virtual GString NoSpace(const string &spc=" \n\t\r") const
Definition: GString.cpp:118
virtual GString NoEndSpace(const string &spc=" \n\t\r") const
Definition: GString.cpp:137
size_t FindFirstOf(const string &s, size_t index=0)
Definition: GString.icc:67
virtual u_int CountWords(const string &separ=" ,;:.!?'[]{}()=+-*&%$#\n\t\r") const
Definition: GString.cpp:748
#define GObject(T)
Definition: GClassDefine.hh:65
virtual GString NoAccent() const
Definition: GString.cpp:71
GString & ReplaceChar(char c, char r, u_int n=0)
Definition: GString.cpp:195
virtual GString ReplaceFormat(const char fmtc, const int val, const char spc= '0')
Definition: GString.cpp:847
virtual u_int GetWords(string *table, const string &separ=" ,;:.!?'[]{}()=+-*&%$#\n\t\r") const
Definition: GString.cpp:674
virtual GString Fill(size_t len, const char c= ' ', bool trunc=false) const
Definition: GString.cpp:173
virtual int CompareDict(const GString &str) const
Definition: GString.cpp:286
virtual size_t FindFormat(const char fmtc, size_t &fmtlen, size_t &len)
Definition: GString.cpp:792
virtual GString GetWord(size_t &ifirst, size_t &ilast, size_t index=0, const string &separ=" ,;:.!?'[]{}()=+-*&%$#\n\t\r") const
Definition: GString.cpp:604
Definition: GString.hh:44
virtual int ReadSubInt(size_t &ifirst, size_t &ilast, size_t index=0, int default_val=0, const string &separ=" \n\t\r") const
Definition: GString.cpp:456
virtual GString GetSubstring(char first, char last, size_t &ifirst, size_t &ilast, size_t index=0, bool keep=true) const
Definition: GString.cpp:529
virtual GString ToUpper() const
Definition: GString.cpp:47
virtual float ReadSubFloat(size_t &ifirst, size_t &ilast, const size_t index=0, const float default_val=0., const string &separ=" \n\t\r") const
Definition: GString.cpp:477
unsigned int u_int
Definition: GTypes.hh:38
GString & ReplaceAll(const GString &s, const GString &r)
Definition: GString.cpp:216
virtual double ReadDouble(double default_val=0.) const
Definition: GString.cpp:429
virtual int ReadInt(int default_val=0) const
Definition: GString.cpp:395