Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages   Examples  

CTBcstring.icc

Go to the documentation of this file.
00001 
00006 /*----------------------------------------------------------------------------*/
00007 /* C Tool Box: Designed and implemented by:                                   */
00008 /*    Walter F.J. Mueller   Gesellschaft fuer Schwerionenforschung (GSI)      */
00009 /*                          Planckstrasse 1, D-64291 Darmstadt, Germany       */
00010 /*                  Email:  W.F.J.Mueller@gsi.de                              */
00011 /*                  WWW:    http://www-kp3.gsi.de/www/kp3/people/mueller.html */
00012 /*------------------------------------------+---------------------------------*/
00013 
00014 #include <ctype.h>
00015 #include <string.h>
00016 
00017 #include "CTBnum.hxx"
00018 #include "CTBcstringBase.hxx"
00019 
00025 //------------------------------------------+-----------------------------------
00027 
00028 template <CTBint DIM>
00029 inline CTBcstring<DIM>::CTBcstring()
00030 {
00031   m_data[0] = 0;
00032 }
00033 
00034 //------------------------------------------+-----------------------------------
00036 
00037 template <CTBint DIM>
00038 inline CTBcstring<DIM>::CTBcstring(const char* c_src)
00039 {
00040   CTBcstringBase::Copy(m_data,DIM,c_src);
00041 }
00042 
00043 //------------------------------------------+-----------------------------------
00045 
00046 template <CTBint DIM>
00047 inline CTBcstring<DIM>::CTBcstring(const char* c_src, CTBint i_length)
00048 {
00049   CTBcstringBase::Copy(m_data,DIM,c_src,0,i_length);
00050 }
00051 
00052 //------------------------------------------+-----------------------------------
00054 
00055 template <CTBint DIM>
00056 inline CTBcstring<DIM>::CTBcstring(const CTBcstring<DIM>& rhs)
00057 {
00058   CTBcstringBase::Copy(m_data,DIM,rhs);
00059 }
00060 
00061 //------------------------------------------+-----------------------------------
00063 
00064 template <CTBint DIM>
00065 inline CTBint CTBcstring<DIM>::Size() const
00066 {
00067   return DIM;
00068 }
00069 
00070 //------------------------------------------+-----------------------------------
00072 
00073 template <CTBint DIM>
00074 inline CTBint CTBcstring<DIM>::Length() const
00075 {
00076   return strlen(m_data);
00077 }
00078 
00079 //------------------------------------------+-----------------------------------
00081 
00082 template <CTBint DIM>
00083 inline void CTBcstring<DIM>::Copy(const char* c_src, 
00084                                   CTBint i_offset, CTBint i_length)
00085 {
00086   CTBcstringBase::Copy(m_data,DIM,c_src,i_offset,i_length);
00087   return;
00088 }
00089 
00090 //------------------------------------------+-----------------------------------
00092 
00093 template <CTBint DIM>
00094 inline void CTBcstring<DIM>::Append(const char* c_src,
00095                                     CTBint i_offset, CTBint i_length)
00096 {
00097   CTBcstringBase::Append(m_data,DIM,c_src,i_offset,i_length);
00098   return;
00099 }
00100 
00101 //------------------------------------------+-----------------------------------
00103 
00104 template <CTBint DIM>
00105 inline void CTBcstring<DIM>::Trim()
00106 {
00107   CTBcstringBase::Trim(m_data,DIM);
00108   return;
00109 }
00110 
00111 //------------------------------------------+-----------------------------------
00113 
00114 template <CTBint DIM>
00115 inline void CTBcstring<DIM>::Toupper()
00116 {
00117   CTBcstringBase::Toupper(m_data,DIM);
00118   return;
00119 }
00120 
00121 //------------------------------------------+-----------------------------------
00123 
00124 template <CTBint DIM>
00125 inline void CTBcstring<DIM>::Tolower()
00126 {
00127   CTBcstringBase::Tolower(m_data,DIM);
00128   return;
00129 }
00130 
00131 //------------------------------------------+-----------------------------------
00133 
00134 template <CTBint DIM>
00135 inline bool CTBcstring<DIM>::Get(long& i_val, int i_base) const
00136 {
00137   return CTBcstringBase::Get(m_data,-1,i_val,i_base);
00138 }
00139 
00140 //------------------------------------------+-----------------------------------
00142 
00143 template <CTBint DIM>
00144 inline bool CTBcstring<DIM>::Get(unsigned long& i_val, int i_base) const
00145 {
00146   return CTBcstringBase::Get(m_data,-1,i_val,i_base);
00147 }
00148 
00149 //------------------------------------------+-----------------------------------
00151 
00152 template <CTBint DIM>
00153 inline bool CTBcstring<DIM>::Get(int& i_val, int i_base) const
00154 {
00155   return CTBcstringBase::Get(m_data,-1,i_val,i_base);
00156 }
00157 
00158 //------------------------------------------+-----------------------------------
00160 
00161 template <CTBint DIM>
00162 inline bool CTBcstring<DIM>::Get(unsigned int& i_val, int i_base) const
00163 {
00164   return CTBcstringBase::Get(m_data,-1,i_val,i_base);
00165 }
00166 
00167 //------------------------------------------+-----------------------------------
00169 
00170 template <CTBint DIM>
00171 inline bool CTBcstring<DIM>::Get(double& d_val) const
00172 {
00173   return CTBcstringBase::Get(m_data,-1,d_val);
00174 }
00175 
00176 //------------------------------------------+-----------------------------------
00178 
00179 template <CTBint DIM>
00180 inline bool CTBcstring<DIM>::Get(float& f_val) const
00181 {
00182   return CTBcstringBase::Get(m_data,-1,f_val);
00183 }
00184 
00185 //------------------------------------------+-----------------------------------
00187 
00188 template <CTBint DIM>
00189 inline CTBint CTBcstring<DIM>::Locate(char c_char) const
00190 {
00191   return CTBcstringBase::Locate(m_data,DIM,c_char);
00192 }
00193 
00194 //------------------------------------------+-----------------------------------
00196 
00197 template <CTBint DIM>
00198 inline int CTBcstring<DIM>::NField(const char* c_delim) const
00199 {
00200   return CTBcstringBase::NField(m_data,DIM,c_delim);
00201 }
00202 
00203 //------------------------------------------+-----------------------------------
00205 
00206 template <CTBint DIM>
00207 inline bool CTBcstring<DIM>::CopyField(const char* c_src,
00208     CTBint i_ind, const char* c_delim)
00209 {
00210   return CTBcstringBase::CopyField(m_data,DIM,c_src,i_ind,c_delim);
00211 }
00212 
00213 //------------------------------------------+-----------------------------------
00215 
00216 template <CTBint DIM>
00217 inline bool CTBcstring<DIM>::GetLine(istream& is)
00218 {
00219   return CTBcstringBase::GetLine(m_data,DIM,is);
00220 }
00221 
00222 //------------------------------------------+-----------------------------------
00224 
00225 template <CTBint DIM>
00226 inline bool CTBcstring<DIM>::FromStream(istream& is)
00227 {
00228   return CTBcstringBase::FromStream(m_data,DIM,is);
00229 }
00230 
00231 //------------------------------------------+-----------------------------------
00233 
00234 template <CTBint DIM>
00235 inline char& CTBcstring<DIM>::operator[](CTBint i_ind)
00236 {
00237   return m_data[i_ind];
00238 }
00239 
00240 //------------------------------------------+-----------------------------------
00242 
00243 template <CTBint DIM>
00244 inline const char& CTBcstring<DIM>::operator[](CTBint i_ind) const
00245 {
00246   return m_data[i_ind];
00247 }
00248 
00249 //------------------------------------------+-----------------------------------
00251 
00252 template <CTBint DIM>
00253 inline CTBcstring<DIM>::operator char*()
00254 {
00255   return m_data;
00256 }
00257 
00258 //------------------------------------------+-----------------------------------
00260 template <CTBint DIM>
00261 inline CTBcstring<DIM>::operator const char*() const
00262 {
00263   return m_data;
00264 }
00265 
00266 //------------------------------------------+-----------------------------------
00268 
00269 template <CTBint DIM>
00270 inline bool CTBcstring<DIM>::operator==(const char* c_src) const
00271 {
00272   return strcmp(m_data,c_src) == 0;
00273 }
00274 
00275 //------------------------------------------+-----------------------------------
00277 
00278 template <CTBint DIM>
00279 inline CTBcstring<DIM>& CTBcstring<DIM>::operator=(const char* c_src)
00280 {
00281   Copy(c_src);
00282   return *this;
00283 }
00284 
00285 //------------------------------------------+-----------------------------------
00287 
00288 template <CTBint DIM>
00289 inline CTBcstring<DIM>& CTBcstring<DIM>::operator+=(const char* c_src)
00290 {
00291   Append(c_src);
00292   return *this;
00293 }
00294 
00295 //------------------------------------------+-----------------------------------
00301 template <CTBint DIM>
00302 inline ostream& operator<<(ostream& os, const CTBcstring<DIM>& obj)
00303 {
00304   os << (const char*) obj;
00305   return os;
00306 }
00307 
00308 //------------------------------------------+-----------------------------------
00314 template <CTBint DIM>
00315 inline istream& operator>>(istream& is, CTBcstring<DIM>& obj)
00316 {
00317   if (DIM >= 2) {                           // space for at least 1 char + 0
00318     is >> obj[0];                           // skip white; read first char
00319     
00320     for (int i = 1; i < DIM; i++) {         // read rest of word
00321       obj[i] = is.get();
00322 
00323       if (is.eof() || !is) {                // quit if eof or error
00324         obj[i] = 0;
00325         break;
00326       }
00327 
00328       if (isspace(obj[i])) {                // quit of white space
00329         is.putback(obj[i]);
00330         obj[i] = 0;
00331         break;
00332       }
00333 
00334       if (i == DIM-1) {                     // set error if word doesn't fit
00335         is.setstate(ios::failbit);
00336         obj[i] = 0;
00337       }
00338     }
00339 
00340   } else {                                  // if DIM<2 no input possible
00341     obj[0] = 0;
00342     is.setstate(ios::failbit);
00343   }
00344 
00345   return is;
00346 }
00347 

Generated at Fri Oct 24 18:11:28 2003 for CTBbase by doxygen1.2.9-20010812 written by Dimitri van Heesch, © 1997-2001