From 91698c5484e60e6d76cc02fab904dd62af605d83 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Mon, 5 Dec 2016 10:04:43 +0100 Subject: [PATCH] ease requirements on SymbolType in some places --- .../src/alphabet/NonlinearVariableSymbol.h | 4 +++- .../src/regexp/formal/FormalRegExpSymbol.h | 20 +++------------- .../regexp/unbounded/UnboundedRegExpSymbol.h | 20 +++------------- alib2data/test-src/regexp/RegExpTest.cpp | 24 +++++++++---------- 4 files changed, 21 insertions(+), 47 deletions(-) diff --git a/alib2data/src/alphabet/NonlinearVariableSymbol.h b/alib2data/src/alphabet/NonlinearVariableSymbol.h index 13a8fb9bca..08a93a59e5 100644 --- a/alib2data/src/alphabet/NonlinearVariableSymbol.h +++ b/alib2data/src/alphabet/NonlinearVariableSymbol.h @@ -101,7 +101,9 @@ const SymbolType& NonlinearVariableSymbol < SymbolType >::getSymbol() const { template < class SymbolType > int NonlinearVariableSymbol < SymbolType >::compare ( const NonlinearVariableSymbol & other ) const { - return this->m_symbol.getData ( ).compare ( other.m_symbol.getData ( ) ); + std::compare < decltype ( m_symbol ) > comp; + + return comp ( m_symbol, other.m_symbol ); } template < class SymbolType > diff --git a/alib2data/src/regexp/formal/FormalRegExpSymbol.h b/alib2data/src/regexp/formal/FormalRegExpSymbol.h index 25b2528750..c48c6a97d7 100644 --- a/alib2data/src/regexp/formal/FormalRegExpSymbol.h +++ b/alib2data/src/regexp/formal/FormalRegExpSymbol.h @@ -26,10 +26,6 @@ public: visitor.visit ( * this ); } - explicit FormalRegExpSymbol ( int number ); // TODO remove these - explicit FormalRegExpSymbol ( char character ); - explicit FormalRegExpSymbol ( const std::string & label ); - explicit FormalRegExpSymbol ( SymbolType symbol ); /** @@ -89,18 +85,6 @@ public: namespace regexp { -template < class SymbolType > -FormalRegExpSymbol < SymbolType >::FormalRegExpSymbol ( int number ) : m_symbol ( alphabet::symbolFrom ( number ) ) { -} - -template < class SymbolType > -FormalRegExpSymbol < SymbolType >::FormalRegExpSymbol ( char character ) : m_symbol ( alphabet::symbolFrom ( character ) ) { -} - -template < class SymbolType > -FormalRegExpSymbol < SymbolType >::FormalRegExpSymbol ( const std::string & label ) : m_symbol ( alphabet::symbolFrom ( label ) ) { -} - template < class SymbolType > FormalRegExpSymbol < SymbolType >::FormalRegExpSymbol ( SymbolType symbol ) : m_symbol ( std::move ( symbol ) ) { } @@ -122,7 +106,9 @@ std::smart_ptr < UnboundedRegExpElement < SymbolType > > FormalRegExpSymbol < Sy template < class SymbolType > int FormalRegExpSymbol < SymbolType >::compare ( const FormalRegExpSymbol & other ) const { - return m_symbol.getData ( ).compare ( other.m_symbol.getData ( ) ); + std::compare < decltype ( m_symbol ) > comp; + + return comp ( m_symbol, other.m_symbol ); } template < class SymbolType > diff --git a/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h b/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h index a21e8bf342..c1ada6f4ec 100644 --- a/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h +++ b/alib2data/src/regexp/unbounded/UnboundedRegExpSymbol.h @@ -26,10 +26,6 @@ public: visitor.visit ( * this ); } - explicit UnboundedRegExpSymbol ( int number ); - explicit UnboundedRegExpSymbol ( char character ); - explicit UnboundedRegExpSymbol ( const std::string & label ); - explicit UnboundedRegExpSymbol ( SymbolType symbol ); /** @@ -91,18 +87,6 @@ public: namespace regexp { -template < class SymbolType > -UnboundedRegExpSymbol < SymbolType >::UnboundedRegExpSymbol ( int number ) : m_symbol ( alphabet::symbolFrom ( number ) ) { -} - -template < class SymbolType > -UnboundedRegExpSymbol < SymbolType >::UnboundedRegExpSymbol ( char character ) : m_symbol ( alphabet::symbolFrom ( character ) ) { -} - -template < class SymbolType > -UnboundedRegExpSymbol < SymbolType >::UnboundedRegExpSymbol ( const std::string & label ) : m_symbol ( alphabet::symbolFrom ( label ) ) { -} - template < class SymbolType > UnboundedRegExpSymbol < SymbolType >::UnboundedRegExpSymbol ( SymbolType symbol ) : m_symbol ( std::move ( symbol ) ) { } @@ -124,7 +108,9 @@ std::smart_ptr < FormalRegExpElement < SymbolType > > UnboundedRegExpSymbol < Sy template < class SymbolType > int UnboundedRegExpSymbol < SymbolType >::compare ( const UnboundedRegExpSymbol & other ) const { - return m_symbol.getData ( ).compare ( other.m_symbol.getData ( ) ); + std::compare < decltype ( m_symbol ) > comp; + + return comp ( m_symbol, other.m_symbol ); } template < class SymbolType > diff --git a/alib2data/test-src/regexp/RegExpTest.cpp b/alib2data/test-src/regexp/RegExpTest.cpp index 52d806644c..7b3e3cbc20 100644 --- a/alib2data/test-src/regexp/RegExpTest.cpp +++ b/alib2data/test-src/regexp/RegExpTest.cpp @@ -27,8 +27,8 @@ void RegExpTest::tearDown() { void RegExpTest::testCopyConstruct() { { - regexp::UnboundedRegExpSymbol < alphabet::Symbol > l1 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >("1"); - regexp::UnboundedRegExpSymbol < alphabet::Symbol > l2 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >("2"); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > l1 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "1" ) ); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > l2 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "2" ) ); regexp::UnboundedRegExpConcatenation < alphabet::Symbol > con = regexp::UnboundedRegExpConcatenation < alphabet::Symbol >(); con.appendElement(l1); @@ -51,8 +51,8 @@ void RegExpTest::testCopyConstruct() { CPPUNIT_ASSERT( regexp2 == regexp3 ); } { - regexp::FormalRegExpSymbol < alphabet::Symbol > l1 = regexp::FormalRegExpSymbol < alphabet::Symbol >("1"); - regexp::FormalRegExpSymbol < alphabet::Symbol > l2 = regexp::FormalRegExpSymbol < alphabet::Symbol >("2"); + regexp::FormalRegExpSymbol < alphabet::Symbol > l1 = regexp::FormalRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "1" ) ); + regexp::FormalRegExpSymbol < alphabet::Symbol > l2 = regexp::FormalRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "2" ) ); regexp::FormalRegExpConcatenation < alphabet::Symbol > con = regexp::FormalRegExpConcatenation < alphabet::Symbol >(l1, l2); @@ -71,8 +71,8 @@ void RegExpTest::testCopyConstruct() { CPPUNIT_ASSERT( regexp2 == regexp3 ); } { - regexp::FormalRegExpSymbol < alphabet::Symbol > l1 = regexp::FormalRegExpSymbol < alphabet::Symbol >("1"); - regexp::FormalRegExpSymbol < alphabet::Symbol > l2 = regexp::FormalRegExpSymbol < alphabet::Symbol >("2"); + regexp::FormalRegExpSymbol < alphabet::Symbol > l1 = regexp::FormalRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "1" ) ); + regexp::FormalRegExpSymbol < alphabet::Symbol > l2 = regexp::FormalRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "2" ) ); regexp::FormalRegExpConcatenation < alphabet::Symbol > con = regexp::FormalRegExpConcatenation < alphabet::Symbol >(l1, l2); @@ -91,8 +91,8 @@ void RegExpTest::testCopyConstruct() { void RegExpTest::testXMLParser() { - regexp::UnboundedRegExpSymbol < alphabet::Symbol > l1 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >("1"); - regexp::UnboundedRegExpSymbol < alphabet::Symbol > l2 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >("2"); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > l1 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "1" ) ); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > l2 = regexp::UnboundedRegExpSymbol < alphabet::Symbol >( alphabet::symbolFrom ( "2" ) ); regexp::UnboundedRegExpConcatenation < alphabet::Symbol > con = regexp::UnboundedRegExpConcatenation < alphabet::Symbol >(); con.appendElement(l1); @@ -128,7 +128,7 @@ void RegExpTest::testXMLParser() { } void RegExpTest::testOrder() { - regexp::UnboundedRegExpSymbol < alphabet::Symbol > s1("1"); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > s1( alphabet::symbolFrom ( "1" ) ); regexp::UnboundedRegExpEmpty < alphabet::Symbol > e1; regexp::UnboundedRegExpEpsilon < alphabet::Symbol > e2; regexp::UnboundedRegExpIteration < alphabet::Symbol > i1(s1); @@ -328,9 +328,9 @@ void RegExpTest::testOrder() { } void RegExpTest::testOrder2() { - regexp::UnboundedRegExpSymbol < alphabet::Symbol > s1("1"); - regexp::UnboundedRegExpSymbol < alphabet::Symbol > s2("2"); - regexp::UnboundedRegExpSymbol < alphabet::Symbol > s3("3"); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > s1( alphabet::symbolFrom ( "1" ) ); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > s2( alphabet::symbolFrom ( "2" ) ); + regexp::UnboundedRegExpSymbol < alphabet::Symbol > s3( alphabet::symbolFrom ( "3" ) ); regexp::UnboundedRegExpEmpty < alphabet::Symbol > e1; regexp::UnboundedRegExpEpsilon < alphabet::Symbol > e2; -- GitLab