103 lines
2.5 KiB
C++
103 lines
2.5 KiB
C++
// Copyright (C) 2003 Davis E. King (davis@dlib.net)
|
|
// License: Boost Software License See LICENSE.txt for the full license.
|
|
#ifndef DLIB_SEQUENCE_COMPARe_1_
|
|
#define DLIB_SEQUENCE_COMPARe_1_
|
|
|
|
#include "sequence_compare_abstract.h"
|
|
|
|
#include "../algs.h"
|
|
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
class sequence_compare_1 : public seq_base
|
|
{
|
|
typedef typename seq_base::type T;
|
|
|
|
public:
|
|
|
|
bool operator< (
|
|
const sequence_compare_1& rhs
|
|
) const;
|
|
|
|
bool operator== (
|
|
const sequence_compare_1& rhs
|
|
) const;
|
|
|
|
};
|
|
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
inline void swap (
|
|
sequence_compare_1<seq_base>& a,
|
|
sequence_compare_1<seq_base>& b
|
|
) { a.swap(b); }
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
// ----------------------------------------------------------------------------------------
|
|
// member function definitions
|
|
// ----------------------------------------------------------------------------------------
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
bool sequence_compare_1<seq_base>::
|
|
operator< (
|
|
const sequence_compare_1<seq_base>& rhs
|
|
) const
|
|
{
|
|
unsigned int length;
|
|
if (this->size() < rhs.size())
|
|
length = this->size();
|
|
else
|
|
length = rhs.size();
|
|
|
|
for (unsigned long i = 0; i < length; ++i)
|
|
{
|
|
if ((*this)[i] < rhs[i])
|
|
return true;
|
|
else if ( !((*this)[i] == rhs[i]) )
|
|
return false;
|
|
}
|
|
// they are equal so far
|
|
if (this->size() < rhs.size())
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
template <
|
|
typename seq_base
|
|
>
|
|
bool sequence_compare_1<seq_base>::
|
|
operator== (
|
|
const sequence_compare_1<seq_base>& rhs
|
|
) const
|
|
{
|
|
if (this->size() != rhs.size())
|
|
return false;
|
|
|
|
for (unsigned long i = 0; i < this->size(); ++i)
|
|
{
|
|
if (!((*this)[i] == rhs[i]))
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------------------
|
|
|
|
}
|
|
|
|
#endif // DLIB_SEQUENCE_COMPARe_1_
|
|
|