Skip to content
Snippets Groups Projects
Commit 7fcc78f7 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

add relational operators to ZeroRunLengthEncoding class

parent 0906ec5c
No related branches found
No related tags found
No related merge requests found
...@@ -29,6 +29,17 @@ class ZeroRunLengthEncoding { ...@@ -29,6 +29,17 @@ class ZeroRunLengthEncoding {
struct element { struct element {
unsigned run; unsigned run;
unsigned word; unsigned word;
bool operator == ( const element & other ) const {
return run == other.run && word == other.word;
}
bool operator < ( const element & other ) const {
auto firstTie = std::tie ( run, word );
auto secondTie = std::tie ( other.run, other.word );
return firstTie < secondTie;
}
}; };
   
std::list < element > m_Data; std::list < element > m_Data;
...@@ -129,6 +140,37 @@ public: ...@@ -129,6 +140,37 @@ public:
packData ( ); packData ( );
} }
   
size_t size ( ) const {
return m_Size;
}
friend bool operator == ( const ZeroRunLengthEncoding & first, const ZeroRunLengthEncoding & second ) {
return first.m_Size == second.m_Size && first.m_Data == second.m_Data;
}
friend bool operator != ( const ZeroRunLengthEncoding & first, const ZeroRunLengthEncoding & second ) {
return ! ( first == second );
}
friend bool operator < ( const ZeroRunLengthEncoding & first, const ZeroRunLengthEncoding & second ) {
auto firstTie = std::tie ( first.m_Size, first.m_Data );
auto secondTie = std::tie ( second.m_Size, second.m_Data );
return firstTie < secondTie;
}
friend bool operator > ( const ZeroRunLengthEncoding & first, const ZeroRunLengthEncoding & second ) {
return second < first;
}
friend bool operator <= ( const ZeroRunLengthEncoding & first, const ZeroRunLengthEncoding & second ) {
return ! ( first > second );
}
friend bool operator >= ( const ZeroRunLengthEncoding & first, const ZeroRunLengthEncoding & second ) {
return ! ( first < second );
}
friend ZeroRunLengthEncoding & operator <<= ( ZeroRunLengthEncoding & A, size_t dist ) { friend ZeroRunLengthEncoding & operator <<= ( ZeroRunLengthEncoding & A, size_t dist ) {
if ( A.m_Size == 0 || dist == 0 ) if ( A.m_Size == 0 || dist == 0 )
return A; return A;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment