// Copyright (C) 2003 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #undef DLIB_SEQUENCE_COMPARe_ABSTRACT_ #ifdef DLIB_SEQUENCE_COMPARe_ABSTRACT_ #include "sequence_kernel_abstract.h" #include "../algs.h" namespace dlib { template < typename seq_base > class sequence_compare : public seq_base { /*! REQUIREMENTS ON T T must implement operator< for its type and T must implement operator== for its type REQUIREMENTS ON SEQUENCE_BASE must be an implementation of sequence/sequence_kernel_abstract.h POINTERS AND REFERENCES TO INTERNAL DATA operator== and operator< do not invalidate pointers or references to data members WHAT THIS EXTENSION DOES FOR sequence This gives a sequence the ability to compare itself to other sequences using the < and == operators. !*/ public: bool operator< ( const sequence_compare& rhs ) const; /*! ensures - returns true if there exists an integer j such that 0 <= j < size() and for all integers i such that 0 <= i < j where it is true that (*this)[i] <= rhs[i] and (*this)[j] < rhs[j] - returns false if there is no j that will satisfy the above conditions !*/ bool operator== ( const sequence_compare& rhs ) const; /*! ensures - returns true if for all i: (*this)[i] == rhs[i] else returns false !*/ }; template < typename seq_base > inline void swap ( sequence_compare<seq_base>& a, sequence_compare<seq_base>& b ) { a.swap(b); } /*! provides a global swap function !*/ } #endif // DLIB_SEQUENCE_COMPARe_ABSTRACT_