From 097bcc0b71d6ea87beacce8eb896bf39d6edfca2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com> Date: Wed, 3 Oct 2018 21:25:02 +0200 Subject: [PATCH] Tunning comments in String.h. --- src/TNL/String.h | 260 +++++++++++++++++++++++------------------------ 1 file changed, 127 insertions(+), 133 deletions(-) diff --git a/src/TNL/String.h b/src/TNL/String.h index e8859c996b..2d3d89af98 100644 --- a/src/TNL/String.h +++ b/src/TNL/String.h @@ -25,141 +25,135 @@ class String; template< typename T > String convertToString( const T& value ); -//! Class for managing strings +///// +// \brief Class for managing strings class String { - //! Pointer to char ended with zero - char* string; - - //! Length of the allocated piece of memory - int length; - -public: - //! Basic constructor - String(); - - //! Constructor from const char* - String( const char* str ); - - ////// - /// Constructor with char pointer - /// - /// @param prefix_cut_off says length of the prefix that is going to be omitted and - /// @param sufix_cut_off says the same about sufix. - String( const char* c, - int prefix_cut_off, - int sufix_cut_off = 0 ); - - //! Copy constructor - String( const String& str ); - - ////// - /// Templated constructor - /// - /// It must be explicit otherwise it is called recursively from inside of its - /// definition ( in operator << ). It leads to stack overflow and segmentation fault. - template< typename T > - explicit - String( const T& value ) - : string( nullptr ), length( 0 ) - { - std::stringstream str; - str << value; - setString( str.str().data() ); - } - - String( const bool b ); - - //! Destructor - ~String(); - - static String getType(); - - //! Return length of the string - int getLength() const; - int getSize() const; - - //! Return currently allocated size - int getAllocatedSize() const; - - //! Reserve space for given number of characters - void setSize( int size ); - - //! Set string from given char pointer - /*! @param prefix_cut_off says length of the prefix that is going to be omitted and - @param sufix_cut_off says the same about sufix. - */ - void setString( const char* c, - int prefix_cut_off = 0, - int sufix_cut_off = 0 ); - - //! Return pointer to data - const char* getString() const; - - //! Return pointer to data - char* getString(); - - //! Operator for accesing particular chars of the string - const char& operator[]( int i ) const; - - //! Operator for accesing particular chars of the string - char& operator[]( int i ); - - /**** - * Operators for C strings - */ - String& operator=( const char* str ); - String& operator+=( const char* str ); - String operator+( const char* str ) const; - bool operator==( const char* str ) const; - bool operator!=( const char* str ) const; - - /**** - * Operators for Strings - */ - String& operator=( const String& str ); - String& operator+=( const String& str ); - String operator+( const String& str ) const; - bool operator==( const String& str ) const; - bool operator!=( const String& str ) const; - - /**** - * Operators for single characters - */ - String& operator=( char str ); - String& operator+=( char str ); - String operator+( char str ) const; - bool operator==( char str ) const; - bool operator!=( char str ) const; - - //! Cast to bool operator - operator bool() const; - - //! Cast to bool with negation operator - bool operator!() const; - - String replace( const String& pattern, - const String& replaceWith, - int count = 0 ) const; - - String strip( char strip = ' ' ) const; - - //! Split the string into list of strings w.r.t. given separator. - int split( Containers::List< String >& list, const char separator = ' ' ) const; - - //! Write to a binary file - bool save( File& file ) const; - - //! Read from binary file - bool load( File& file ); - - //! Broadcast to other nodes in MPI cluster -// void MPIBcast( int root, MPI_Comm mpi_comm = MPI_COMM_WORLD ); - - //! Read one line from given stream. - bool getLine( std::istream& stream ); - - friend std::ostream& operator<<( std::ostream& stream, const String& str ); + public: + + ///// + /// \brief Basic constructor + String(); + + ///// + /// \brief Constructor with char pointer. + /// Constructor with char pointer. + /// @param prefix_cut_off says length of the prefix that is going to be omitted and + /// @param sufix_cut_off says the same about suffix. + String( const char* c, + int prefix_cut_off = 0, + int sufix_cut_off = 0 ); + + static String getType(); + + //! Copy constructor + String( const String& str ); + + //! Convert anything to a string + template< typename T > + explicit + String( T value ) + : string( nullptr ), length( 0 ) + { + setString( convertToString( value ).getString() ); + } + + //! Destructor + ~String(); + + //! Return length of the string + int getLength() const; + int getSize() const; + + //! Return currently allocated size + int getAllocatedSize() const; + + //! Reserve space for given number of characters + void setSize( int size ); + + //! Set string from given char pointer + /*! @param prefix_cut_off says length of the prefix that is going to be omitted and + @param sufix_cut_off says the same about sufix. + */ + void setString( const char* c, + int prefix_cut_off = 0, + int sufix_cut_off = 0 ); + + //! Return pointer to data + const char* getString() const; + + //! Return pointer to data + char* getString(); + + //! Operator for accesing particular chars of the string + const char& operator[]( int i ) const; + + //! Operator for accesing particular chars of the string + char& operator[]( int i ); + + /**** + * Operators for C strings + */ + String& operator=( const char* str ); + String& operator+=( const char* str ); + String operator+( const char* str ) const; + bool operator==( const char* str ) const; + bool operator!=( const char* str ) const; + + /**** + * Operators for Strings + */ + String& operator=( const String& str ); + String& operator+=( const String& str ); + String operator+( const String& str ) const; + bool operator==( const String& str ) const; + bool operator!=( const String& str ) const; + + /**** + * Operators for single characters + */ + String& operator=( char str ); + String& operator+=( char str ); + String operator+( char str ) const; + bool operator==( char str ) const; + bool operator!=( char str ) const; + + //! Cast to bool operator + operator bool() const; + + //! Cast to bool with negation operator + bool operator!() const; + + String replace( const String& pattern, + const String& replaceWith, + int count = 0 ) const; + + String strip( char strip = ' ' ) const; + + //! Split the string into list of strings w.r.t. given separator. + int split( Containers::List< String >& list, const char separator = ' ' ) const; + + //! Write to a binary file + bool save( File& file ) const; + + //! Read from binary file + bool load( File& file ); + + //! Broadcast to other nodes in MPI cluster + // void MPIBcast( int root, MPI_Comm mpi_comm = MPI_COMM_WORLD ); + + //! Read one line from given stream. + bool getLine( std::istream& stream ); + + friend std::ostream& operator<<( std::ostream& stream, const String& str ); + + protected: + //! Pointer to char ended with zero + char* string; + + //! Length of the allocated piece of memory + int length; + }; String operator+( char string1, const String& string2 ); -- GitLab