libzed 1.9.9
A general-purpose library for quick and simple data manipulation.
 
Loading...
Searching...
No Matches
sortedRefArray.hpp
1#pragma once
2
3#include <type_traits>
4
5#include "sortedArray.hpp"
6
7namespace z {
8namespace core {
25template <typename T>
26class sortedRefArray : public sortedArray<T> {
27private:
28 // only allow this class to work with pointers
29 static_assert(std::is_pointer<T>::value, "Template must be of pointer type.");
30
31protected:
44 virtual bool eq(const T &arg1, const T &arg2) const override {
45 return (arg1 == arg2) || (arg1 && arg2 && equals(*arg1, *arg2));
46 }
47
60 virtual bool gt(const T &arg1, const T &arg2) const override {
61 if (arg1 == arg2) {
62 return false;
63 } else if (arg1 && arg2) {
64 return greater(*arg1, *arg2);
65 } else {
66 return arg1;
67 }
68 }
69
82 virtual bool lt(const T &arg1, const T &arg2) const override {
83 if (arg1 == arg2) {
84 return false;
85 } else if (arg1 && arg2) {
86 return lesser(*arg1, *arg2);
87 } else {
88 return arg2;
89 }
90 }
91
92public:
95
106 template <typename... Args>
107 sortedRefArray(const T &arg1, const Args &...args) {
108 this->init(arg1, args...);
109 }
110
120 virtual bool operator()(const T &arg1, const T &arg2) const override {
121 return greater(*arg1, *arg2);
122 }
123};
124} // namespace core
125} // namespace z
A wrapper for std::vector.
Definition array.hpp:72
void init(const T &arg1)
Helper function for single object initialization.
Definition array.hpp:81
An extension of the core::array class which attempts to keep all data sorted.
Definition sortedArray.hpp:18
An extension of the core::sortedArray class, specialized for pointers.
Definition sortedRefArray.hpp:26
virtual bool eq(const T &arg1, const T &arg2) const override
Check if two objects are equal.
Definition sortedRefArray.hpp:44
virtual bool lt(const T &arg1, const T &arg2) const override
Check if one object is less than another.
Definition sortedRefArray.hpp:82
virtual bool operator()(const T &arg1, const T &arg2) const override
Callable operator.
Definition sortedRefArray.hpp:120
virtual bool gt(const T &arg1, const T &arg2) const override
Check if one object is greater than another.
Definition sortedRefArray.hpp:60
sortedRefArray(const T &arg1, const Args &...args)
List-initialized constructor.
Definition sortedRefArray.hpp:107
sortedRefArray()
Default constructor.
Definition sortedRefArray.hpp:94