Main Page | Class Hierarchy | Class List | File List | Class Members

FluSimpleString.h

00001 // $Id: FluSimpleString.h,v 1.12 2003/11/27 01:09:04 jbryan Exp $
00002 
00003 /***************************************************************
00004  *                FLU - FLTK Utility Widgets 
00005  *  Copyright (C) 2002 Ohio Supercomputer Center, Ohio State University
00006  *
00007  * This file and its content is protected by a software license.
00008  * You should have received a copy of this license with this file.
00009  * If not, please contact the Ohio Supercomputer Center immediately:
00010  * Attn: Jason Bryan Re: FLU 1224 Kinnear Rd, Columbus, Ohio 43212
00011  * 
00012  ***************************************************************/
00013 
00014 
00015 
00016 #ifndef _FLU_SIMPLE_STRING_H
00017 #define _FLU_SIMPLE_STRING_H
00018 
00019 #include <stdio.h>
00020 #include <string.h>
00021 #include <stdlib.h>
00022 #include <ctype.h>
00023 
00024 #include "FLU/Flu_Enumerations.h"
00025 
00027 class FLU_EXPORT FluSimpleString
00028 {
00029 
00030  public:
00031 
00033   FluSimpleString();
00034 
00036   FluSimpleString( unsigned int len );
00037 
00039   FluSimpleString( const char *s );
00040 
00042   FluSimpleString( const FluSimpleString& s );
00043 
00045   ~FluSimpleString();
00046 
00048   inline const char* c_str() const { return str; }
00049 
00051   inline int size() const { return strlen(str); }
00052 
00054   inline char& operator [](int i) { return str[i]; }
00055 
00057   inline char operator [](int i) const { return str[i]; }
00058 
00060   FluSimpleString substr( int pos, int len ) const;
00061 
00063   void upcase();
00064 
00066   void downcase();
00067 
00069   int find( char c ) const;
00070 
00072   int rfind( char c ) const;
00073 
00075   int compare( const FluSimpleString &s ) const;
00076 
00078   int casecompare( const FluSimpleString &s ) const;
00079 
00081   inline friend int compare( const FluSimpleString &s1, const FluSimpleString &s2 )
00082     { return s1.compare( s2 ); }
00083 
00085   inline friend int casecompare( const FluSimpleString &s1, const FluSimpleString &s2 )
00086     { return s1.casecompare( s2 ); }
00087 
00089   inline void push_back( char c )
00090     { char s[2] = { c, '\0' }; *this += s; }
00091 
00093   inline void copy( const FluSimpleString& s )
00094     { *this = s; }
00095 
00097   inline void copy( const char *s )
00098     { *this = s; }
00099 
00101   inline void copy( const FluSimpleString& s, unsigned int start, unsigned int len )
00102     { copy( s.c_str(), start, len ); }
00103 
00105   void copy( const char *s, unsigned int start, unsigned int len );
00106 
00108   FluSimpleString& operator =( const char *s );
00109 
00111   inline FluSimpleString& operator =( FluSimpleString s ) { return( *this = s.str ); }
00112 
00114   inline bool operator <( const FluSimpleString& s ) const { return( strcmp( str, s.str ) < 0 ); }
00115 
00117   inline bool operator >( const FluSimpleString& s ) const { return( strcmp( str, s.str ) > 0 ); }
00118 
00120   inline bool operator ==( const FluSimpleString& s ) const { return( strcmp( str, s.str ) == 0 ); }
00121 
00123   inline bool operator !=( const FluSimpleString& s ) const { return( strcmp( str, s.str ) != 0 ); }
00124 
00126   inline friend FluSimpleString operator +( const char *s1, FluSimpleString s2 ) { FluSimpleString s = s1; s += s2; return s; }
00127 
00129   inline friend FluSimpleString operator +( FluSimpleString s1, const char *s2 ) { FluSimpleString s = s1; s += s2; return s; }
00130 
00132   inline friend FluSimpleString operator +( FluSimpleString s1, FluSimpleString s2 ) { FluSimpleString s = s1; s += s2; return s; }
00133 
00135   inline FluSimpleString& operator +=( const FluSimpleString& s ) { *this += s.str; return *this; }
00136 
00138   FluSimpleString& operator +=( const char *s );
00139 
00140  private:
00141 
00142   char *str;
00143 
00144 };
00145 
00146 #endif
00147 

Generated on Fri Nov 5 12:41:32 2004 for FLTK Utility Library and Widget Collection (FLU) by doxygen 1.3.5