You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
concurrentqueue/benchmarks/dlib/set/set_compare_1.h

123 lines
2.8 KiB
C++

// Copyright (C) 2005 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_SET_COMPARe_1_
#define DLIB_SET_COMPARe_1_
#include "set_compare_abstract.h"
#include "../algs.h"
namespace dlib
{
template <
typename set_base
>
class set_compare_1 : public set_base
{
public:
bool operator< (
const set_compare_1& rhs
) const;
bool operator== (
const set_compare_1& rhs
) const;
};
template <
typename set_base
>
inline void swap (
set_compare_1<set_base>& a,
set_compare_1<set_base>& b
) { a.swap(b); }
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// member function definitions
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template <
typename set_base
>
bool set_compare_1<set_base>::
operator< (
const set_compare_1<set_base>& rhs
) const
{
bool result = false;
if (set_base::size() < rhs.size())
result = true;
if (set_base::size() == rhs.size())
{
rhs.reset();
set_base::reset();
while (rhs.move_next())
{
set_base::move_next();
if (set_base::element() < rhs.element())
{
result = true;
break;
}
else if (rhs.element() < set_base::element())
{
break;
}
}
}
set_base::reset();
rhs.reset();
return result;
}
// ----------------------------------------------------------------------------------------
template <
typename set_base
>
bool set_compare_1<set_base>::
operator== (
const set_compare_1<set_base>& rhs
) const
{
bool result = true;
if (set_base::size() != rhs.size())
result = false;
rhs.reset();
set_base::reset();
while (rhs.move_next() && set_base::move_next())
{
if (!(rhs.element() == set_base::element()))
{
result = false;
break;
}
}
set_base::reset();
rhs.reset();
return result;
}
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_SET_COMPARe_1_