FluSimpleString.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:6k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: FluSimpleString.h,v $
  4.  * PRODUCTION Revision 1000.0  2004/04/12 18:20:48  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*
  10.  * These files were imported into NCBI's CVS directly from FLU version 2.9.1.
  11.  * Modifications to the source are listed below.
  12.  *
  13.  * ==========================================================================
  14.  * $Log: FluSimpleString.h,v $
  15.  * Revision 1000.0  2004/04/12 18:20:48  gouriano
  16.  * PRODUCTION: IMPORTED [CATCHUP_003] Dev-tree R1.2
  17.  *
  18.  * Revision 1.2  2004/03/11 14:10:41  dicuccio
  19.  * Fixes for 64-bit compilation
  20.  *
  21.  * Revision 1.1  2004/03/11 13:51:54  dicuccio
  22.  * Imported FLU version 2.9.1.  Altered export specifiers to match NCBI layout.
  23.  * Altered include paths to match NCBI toolkit layout.
  24.  *
  25.  * ==========================================================================
  26.  */
  27. // $Id: FluSimpleString.h,v 1000.0 2004/04/12 18:20:48 gouriano Exp $
  28. /***************************************************************
  29.  *                FLU - FLTK Utility Widgets 
  30.  *  Copyright (C) 2002 Ohio Supercomputer Center, Ohio State University
  31.  *
  32.  * This file and its content is protected by a software license.
  33.  * You should have received a copy of this license with this file.
  34.  * If not, please contact the Ohio Supercomputer Center immediately:
  35.  * Attn: Jason Bryan Re: FLU 1224 Kinnear Rd, Columbus, Ohio 43212
  36.  * 
  37.  ***************************************************************/
  38. #ifndef _FLU_SIMPLE_STRING_H
  39. #define _FLU_SIMPLE_STRING_H
  40. #include <stdio.h>
  41. #include <string.h>
  42. #include <stdlib.h>
  43. #include <ctype.h>
  44. #include <gui/widgets/FLU/Flu_Enumerations.h>
  45. //! A simple string object that works a lot like the STL string object
  46. class NCBI_GUIWIDGETS_FLU_EXPORT FluSimpleString
  47. {
  48.  public:
  49.   //! Default constructor: sets to empty string ("")
  50.   FluSimpleString();
  51.   //! Allocates the string to be of length b len. Does not set the buffer to any initial value
  52.   FluSimpleString( unsigned int len );
  53.   //! String copy constructor
  54.   FluSimpleString( const char *s );
  55.   //! Copy constructor
  56.   FluSimpleString( const FluSimpleString& s );
  57.   //! Default destructor
  58.   ~FluSimpleString();
  59.   //! return a c-style nul terminated pointer to the string
  60.   inline const char* c_str() const { return str; }
  61.   //! return how long the string is
  62.   inline int size() const { return (int)strlen(str); }
  63.   //! Array operator
  64.   inline char& operator [](int i) { return str[i]; }
  65.   //! Array operator
  66.   inline char operator [](int i) const { return str[i]; }
  67.   //! return the indicated substring of this string
  68.   FluSimpleString substr( int pos, int len ) const;
  69.   //! Convert this string to uppercase
  70.   void upcase();
  71.   //! Convert this string to lowercase
  72.   void downcase();
  73.   //! return the first index of character b c in this string, or -1 if c is not in this string
  74.   int find( char c ) const;
  75.   //! return the last index of character b c in this string, or -1 if c is not in this string
  76.   int rfind( char c ) const;
  77.   //! 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 )
  78.   int compare( const FluSimpleString &s ) const;
  79.   //! Same as compare(), except ignores the case of the string
  80.   int casecompare( const FluSimpleString &s ) const;
  81.   //! 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 )
  82.   inline friend int compare( const FluSimpleString &s1, const FluSimpleString &s2 )
  83.     { return s1.compare( s2 ); }
  84.   //! Same as compare(), except ignores the case of the string
  85.   inline friend int casecompare( const FluSimpleString &s1, const FluSimpleString &s2 )
  86.     { return s1.casecompare( s2 ); }
  87.   //! Add character b c to the end of the string
  88.   inline void push_back( char c )
  89.     { char s[2] = { c, '' }; *this += s; }
  90.   //! Alias for the c = operator
  91.   inline void copy( const FluSimpleString& s )
  92.     { *this = s; }
  93.   //! Alias for the c = operator
  94.   inline void copy( const char *s )
  95.     { *this = s; }
  96.   //! Copy the substring of b s to this string
  97.   inline void copy( const FluSimpleString& s, unsigned int start, unsigned int len )
  98.     { copy( s.c_str(), start, len ); }
  99.   //! Copy the substring of b s to this string
  100.   void copy( const char *s, unsigned int start, unsigned int len );
  101.   //! Copy operator
  102.   FluSimpleString& operator =( const char *s );
  103.   //! Copy operator
  104.   inline FluSimpleString& operator =( FluSimpleString s ) { return( *this = s.str ); }
  105.   //! Less-than operator
  106.   inline bool operator <( const FluSimpleString& s ) const { return( strcmp( str, s.str ) < 0 ); }
  107.   //! Greater-than operator
  108.   inline bool operator >( const FluSimpleString& s ) const { return( strcmp( str, s.str ) > 0 ); }
  109.   //! Equality operator
  110.   inline bool operator ==( const FluSimpleString& s ) const { return( strcmp( str, s.str ) == 0 ); }
  111.   //! Inequality operator
  112.   inline bool operator !=( const FluSimpleString& s ) const { return( strcmp( str, s.str ) != 0 ); }
  113.   //! Concatenate operator
  114.   inline friend FluSimpleString operator +( const char *s1, FluSimpleString s2 ) { FluSimpleString s = s1; s += s2; return s; }
  115.   //! Concatenate operator
  116.   inline friend FluSimpleString operator +( FluSimpleString s1, const char *s2 ) { FluSimpleString s = s1; s += s2; return s; }
  117.   //! Concatenate operator
  118.   inline friend FluSimpleString operator +( FluSimpleString s1, FluSimpleString s2 ) { FluSimpleString s = s1; s += s2; return s; }
  119.   //! Concatenate assignment operator
  120.   inline FluSimpleString& operator +=( const FluSimpleString& s ) { *this += s.str; return *this; }
  121.   //! Concatenate assignment operator
  122.   FluSimpleString& operator +=( const char *s );
  123.  private:
  124.   char *str;
  125. };
  126. #endif