| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- // $Id: FluSimpleString.h,v 1.12 2003/11/27 01:09:04 jbryan Exp $
- /***************************************************************
- * FLU - FLTK Utility Widgets
- * Copyright (C) 2002 Ohio Supercomputer Center, Ohio State University
- *
- * This file and its content is protected by a software license.
- * You should have received a copy of this license with this file.
- * If not, please contact the Ohio Supercomputer Center immediately:
- * Attn: Jason Bryan Re: FLU 1224 Kinnear Rd, Columbus, Ohio 43212
- *
- ***************************************************************/
- #ifndef _FLU_SIMPLE_STRING_H
- #define _FLU_SIMPLE_STRING_H
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include "FLU/Flu_Enumerations.H"
- //! A simple string object that works a lot like the STL string object
- class FLU_EXPORT FluSimpleString
- {
- public:
- //! Default constructor: sets to empty string ("")
- FluSimpleString();
- //! Allocates the string to be of length \b len. Does not set the buffer to any initial value
- FluSimpleString( unsigned int len );
- //! String copy constructor
- FluSimpleString( const char *s );
- //! Copy constructor
- FluSimpleString( const FluSimpleString& s );
- //! Default destructor
- ~FluSimpleString();
- //! \return a c-style nul terminated pointer to the string
- inline const char* c_str() const { return str; }
- //! \return how long the string is
- inline int size() const { return strlen(str); }
- //! Array operator
- inline char& operator [](int i) { return str[i]; }
- //! Array operator
- inline char operator [](int i) const { return str[i]; }
- //! \return the indicated substring of this string
- FluSimpleString substr( int pos, int len ) const;
- //! Convert this string to uppercase
- void upcase();
- //! Convert this string to lowercase
- void downcase();
- //! \return the first index of character \b c in this string, or -1 if \c is not in this string
- int find( char c ) const;
- //! \return the last index of character \b c in this string, or -1 if \c is not in this string
- int rfind( char c ) const;
- //! \return 0 if this string is equal to \b s, -1 if this string is lexigraphically less than \b s, 1 if this string is lexigraphically greater than \b s (uses c-std function \b strcmp )
- int compare( const FluSimpleString &s ) const;
- //! Same as compare(), except ignores the case of the string
- int casecompare( const FluSimpleString &s ) const;
- //! \return 0 if this string is equal to \b s, -1 if this string is lexigraphically less than \b s, 1 if this string is lexigraphically greater than \b s (uses c-std function \b strcmp )
- inline friend int compare( const FluSimpleString &s1, const FluSimpleString &s2 )
- { return s1.compare( s2 ); }
- //! Same as compare(), except ignores the case of the string
- inline friend int casecompare( const FluSimpleString &s1, const FluSimpleString &s2 )
- { return s1.casecompare( s2 ); }
- //! Add character \b c to the end of the string
- inline void push_back( char c )
- { char s[2] = { c, '\0' }; *this += s; }
- //! Alias for the \c = operator
- inline void copy( const FluSimpleString& s )
- { *this = s; }
- //! Alias for the \c = operator
- inline void copy( const char *s )
- { *this = s; }
- //! Copy the substring of \b s to this string
- inline void copy( const FluSimpleString& s, unsigned int start, unsigned int len )
- { copy( s.c_str(), start, len ); }
- //! Copy the substring of \b s to this string
- void copy( const char *s, unsigned int start, unsigned int len );
- //! Copy operator
- FluSimpleString& operator =( const char *s );
- //! Copy operator
- inline FluSimpleString& operator =( FluSimpleString s ) { return( *this = s.str ); }
- //! Less-than operator
- inline bool operator <( const FluSimpleString& s ) const { return( strcmp( str, s.str ) < 0 ); }
- //! Greater-than operator
- inline bool operator >( const FluSimpleString& s ) const { return( strcmp( str, s.str ) > 0 ); }
- //! Equality operator
- inline bool operator ==( const FluSimpleString& s ) const { return( strcmp( str, s.str ) == 0 ); }
- //! Inequality operator
- inline bool operator !=( const FluSimpleString& s ) const { return( strcmp( str, s.str ) != 0 ); }
- //! Concatenate operator
- inline friend FluSimpleString operator +( const char *s1, FluSimpleString s2 ) { FluSimpleString s = s1; s += s2; return s; }
- //! Concatenate operator
- inline friend FluSimpleString operator +( FluSimpleString s1, const char *s2 ) { FluSimpleString s = s1; s += s2; return s; }
- //! Concatenate operator
- inline friend FluSimpleString operator +( FluSimpleString s1, FluSimpleString s2 ) { FluSimpleString s = s1; s += s2; return s; }
- //! Concatenate assignment operator
- inline FluSimpleString& operator +=( const FluSimpleString& s ) { *this += s.str; return *this; }
- //! Concatenate assignment operator
- FluSimpleString& operator +=( const char *s );
- private:
- char *str;
- };
- #endif
|