diff --git a/include/ebcl/SRDData.hh b/include/ebcl/SRDData.hh index f3d8efb..77efaed 100644 --- a/include/ebcl/SRDData.hh +++ b/include/ebcl/SRDData.hh @@ -116,20 +116,28 @@ M_LSHIFT_OP( T_StringBuilder , T_SRDLocation const& ) noexcept; /*= ERRORS ===================================================================*/ -// An error that occurred during SRD processing +// Type of an error record +enum class E_SRDErrorType { + ERROR , + WARNING , + NOTE +}; + +// An error that occurred during SRD processing. Also includes warnings and +// notes. class T_SRDError { private: T_String error_; T_SRDLocation location_; - bool isDetails_; + E_SRDErrorType type_; public: T_SRDError( ) = delete; T_SRDError( T_String error , T_SRDLocation location , - bool details = false ) noexcept; + E_SRDErrorType type = E_SRDErrorType::ERROR ) noexcept; T_SRDError( T_SRDError const& other ) noexcept; T_SRDError& operator= ( T_SRDError const& other ) noexcept; @@ -143,7 +151,7 @@ class T_SRDError T_String const& error( ) const noexcept; T_SRDLocation const& location( ) const noexcept; - bool isDetails( ) const noexcept; + E_SRDErrorType type( ) const noexcept; }; M_DECLARE_SWAP( T_SRDError ); diff --git a/include/ebcl/inline/SRDData.hh b/include/ebcl/inline/SRDData.hh index cc384b8..0275254 100644 --- a/include/ebcl/inline/SRDData.hh +++ b/include/ebcl/inline/SRDData.hh @@ -117,10 +117,10 @@ inline T_SRDLocationChaining const& T_SRDLocation::chaining( ) const noexcept inline T_SRDError::T_SRDError( T_String error , T_SRDLocation location , - const bool details ) noexcept + const E_SRDErrorType type ) noexcept : error_( std::move( error ) ) , location_( std::move( location ) ) , - isDetails_( details ) + type_( type ) { } /*----------------------------------------------------------------------------*/ @@ -129,7 +129,7 @@ inline T_SRDError::T_SRDError( T_SRDError const& other ) noexcept : error_( other.error_ ) , location_( other.location_ ) , - isDetails_( other.isDetails_ ) + type_( other.type_ ) { } inline T_SRDError& T_SRDError::operator= ( @@ -137,7 +137,7 @@ inline T_SRDError& T_SRDError::operator= ( { error_ = other.error_; location_ = other.location_; - isDetails_ = other.isDetails_; + type_ = other.type_; return *this; } @@ -164,7 +164,7 @@ inline M_DECLARE_SWAP( T_SRDError ) using std::swap; swap( lhs.error_ , rhs.error_ ); swap( lhs.location_ , rhs.location_ ); - swap( lhs.isDetails_ , rhs.isDetails_ ); + swap( lhs.type_ , rhs.type_ ); } /*----------------------------------------------------------------------------*/ @@ -179,9 +179,9 @@ inline T_SRDLocation const& T_SRDError::location( ) const noexcept return location_; } -inline bool T_SRDError::isDetails( ) const noexcept +inline E_SRDErrorType T_SRDError::type( ) const noexcept { - return isDetails_; + return type_; } diff --git a/src/SRDData.cc b/src/SRDData.cc index fce6c3b..cca94a9 100644 --- a/src/SRDData.cc +++ b/src/SRDData.cc @@ -104,7 +104,8 @@ T_StringBuilder& ebcl::operator<< ( void T_SRDErrors::checkAdded( T_SRDError const& last ) { - if ( last.isDetails( ) || errCount_ >= MAX_ERRORS ) { + if ( last.type( ) != E_SRDErrorType::ERROR + || errCount_ >= MAX_ERRORS ) { return; } errCount_ ++; @@ -128,7 +129,7 @@ void T_SRDErrors::addAll( RPC_SRDLocation lastLocation = nullptr; for ( uint32_t i = 0 ; i < nErrors ; i ++ ) { errors_.add( source[ i ] ); - if ( !source[ i ].isDetails( ) ) { + if ( source[ i ].type( ) == E_SRDErrorType::ERROR ) { lastLocation = &source[ i ].location( ); } }