summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/set/set_compare_1.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/set/set_compare_1.h')
-rw-r--r--ml/dlib/dlib/set/set_compare_1.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/ml/dlib/dlib/set/set_compare_1.h b/ml/dlib/dlib/set/set_compare_1.h
new file mode 100644
index 000000000..d4b5e76ca
--- /dev/null
+++ b/ml/dlib/dlib/set/set_compare_1.h
@@ -0,0 +1,122 @@
+// 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_
+