From ad50cfaf3c7c773fa99d2d6ad1602803e4658c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Oberhuber?= <oberhuber.tomas@gmail.com> Date: Fri, 28 Sep 2018 12:39:07 +0200 Subject: [PATCH] Fixing templated constructor of String, make it explicit + other fixes in String. --- src/Benchmarks/BLAS/tnl-benchmark-blas.h | 10 +++++----- src/TNL/String.cpp | 4 ++-- src/TNL/String.h | 21 +++++++++++---------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/Benchmarks/BLAS/tnl-benchmark-blas.h b/src/Benchmarks/BLAS/tnl-benchmark-blas.h index 4f6d63022d..6419087a93 100644 --- a/src/Benchmarks/BLAS/tnl-benchmark-blas.h +++ b/src/Benchmarks/BLAS/tnl-benchmark-blas.h @@ -43,7 +43,7 @@ runBlasBenchmarks( Benchmark & benchmark, metadata ); for( std::size_t size = minSize; size <= maxSize; size *= 2 ) { benchmark.setMetadataColumns( Benchmark::MetadataColumns({ - {"size", size}, + {"size", String( size ) }, } )); benchmarkArrayOperations< Real >( benchmark, loops, size ); } @@ -53,7 +53,7 @@ runBlasBenchmarks( Benchmark & benchmark, metadata ); for( std::size_t size = minSize; size <= maxSize; size *= sizeStepFactor ) { benchmark.setMetadataColumns( Benchmark::MetadataColumns({ - {"size", size}, + { "size", String( size ) }, } )); benchmarkVectorOperations< Real >( benchmark, loops, size ); } @@ -63,9 +63,9 @@ runBlasBenchmarks( Benchmark & benchmark, metadata ); for( std::size_t size = minSize; size <= maxSize; size *= 2 ) { benchmark.setMetadataColumns( Benchmark::MetadataColumns({ - {"rows", size}, - {"columns", size}, - {"elements per row", elementsPerRow}, + {"rows", String( size ) }, + {"columns", String( size ) }, + {"elements per row", String( elementsPerRow ) }, } )); benchmarkSpmvSynthetic< Real >( benchmark, loops, size, elementsPerRow ); } diff --git a/src/TNL/String.cpp b/src/TNL/String.cpp index 3f733526d9..40e36bbde0 100644 --- a/src/TNL/String.cpp +++ b/src/TNL/String.cpp @@ -29,10 +29,10 @@ String::String() setString( nullptr ); } -String::String( char* c, int prefix_cut_off, int sufix_cut_off ) +String::String( const char* str ) : string( nullptr ), length( 0 ) { - setString( c, prefix_cut_off, sufix_cut_off ); + setString( str ); } String::String( const char* c, int prefix_cut_off, int sufix_cut_off ) diff --git a/src/TNL/String.h b/src/TNL/String.h index 0868ac44a4..5b153fb267 100644 --- a/src/TNL/String.h +++ b/src/TNL/String.h @@ -37,35 +37,36 @@ class String 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 = 0, - int sufix_cut_off = 0 ); - - String( char* c, - int prefix_cut_off = 0, + int prefix_cut_off, 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() ); + std::stringstream str; + str << value; + setString( str.str().data() ); } //! Destructor ~String(); + + static String getType(); //! Return length of the string int getLength() const; -- GitLab