6 #ifndef MYRAMATH_JOBGRAPH_JOBID_H 7 #define MYRAMATH_JOBGRAPH_JOBID_H 14 #include <myramath/MYRAMATH_EXPORT.h> 15 #include <myramath/utility/detail/ssize.h> 30 MYRAMATH_EXPORT
bool operator < (JobID a, JobID b);
32 MYRAMATH_EXPORT
bool operator > (JobID a, JobID b);
33 MYRAMATH_EXPORT
bool operator <= (JobID a, JobID b);
34 MYRAMATH_EXPORT
bool operator >= (JobID a, JobID b);
35 MYRAMATH_EXPORT
bool operator == (JobID a, JobID b);
36 MYRAMATH_EXPORT
bool operator != (JobID a, JobID b);
40 MYRAMATH_EXPORT
bool operator < (JobID a, uint64_t b);
41 MYRAMATH_EXPORT
bool operator > (JobID a, uint64_t b);
42 MYRAMATH_EXPORT
bool operator <= (JobID a, uint64_t b);
43 MYRAMATH_EXPORT
bool operator >= (JobID a, uint64_t b);
44 MYRAMATH_EXPORT
bool operator == (JobID a, uint64_t b);
45 MYRAMATH_EXPORT
bool operator != (JobID a, uint64_t b);
48 MYRAMATH_EXPORT std::ostream& operator << (std::ostream& out, JobID j);
53 #ifdef MYRAMATH_ENABLE_CPP11 54 namespace std {
template<>
struct hash<
myra::JobID>; }
76 uint64_t
unpack()
const {
return data; }
77 int unpack(
const Pack<int,1>& size,
int index)
const;
78 int unpack(
const Pack<int,2>& size,
int index)
const;
79 int unpack(
const Pack<int,3>& size,
int index)
const;
80 int unpack(
const Pack<int,4>& size,
int index)
const;
81 int unpack(
const Pack<int,5>& size,
int index)
const;
82 int unpack(
const Pack<int,6>& size,
int index)
const;
85 void operator+= (uint64_t offset);
86 void operator-= (uint64_t offset);
97 template<
int N>
int unpack_template(
const Pack<int,N>& size,
int index)
const;
100 friend MYRAMATH_EXPORT
bool operator < (
JobID a,
JobID b);
101 friend MYRAMATH_EXPORT
bool operator > (
JobID a,
JobID b);
102 friend MYRAMATH_EXPORT
bool operator <=(
JobID a,
JobID b);
103 friend MYRAMATH_EXPORT
bool operator >=(
JobID a,
JobID b);
104 friend MYRAMATH_EXPORT
bool operator ==(
JobID a,
JobID b);
105 friend MYRAMATH_EXPORT
bool operator !=(
JobID a,
JobID b);
106 friend MYRAMATH_EXPORT
bool operator < (
JobID a, uint64_t b);
107 friend MYRAMATH_EXPORT
bool operator > (
JobID a, uint64_t b);
108 friend MYRAMATH_EXPORT
bool operator <=(
JobID a, uint64_t b);
109 friend MYRAMATH_EXPORT
bool operator >=(
JobID a, uint64_t b);
110 friend MYRAMATH_EXPORT
bool operator ==(
JobID a, uint64_t b);
111 friend MYRAMATH_EXPORT
bool operator !=(
JobID a, uint64_t b);
112 friend MYRAMATH_EXPORT std::ostream& operator << (std::ostream& out,
JobID j);
113 friend struct std::hash<JobID>;
125 for (
int n = 0; n < N; ++n)
131 JobID operator+ (JobID j, uint64_t offset);
132 JobID operator- (JobID j, uint64_t offset);
136 #ifdef MYRAMATH_ENABLE_CPP11 139 template<>
struct hash <
myra::JobID>
142 {
return std::hash<uint64_t>()(
id.data); }
uint64_t product(const Pack< int, N > &p)
Returns the product of all entries of a Pack<int,N>
Definition: JobID.h:122
A std::hash for JobID, so it can be in a std::unordered_set / std::unordered_map. ...
Definition: hashes.h:30
uint64_t unpack() const
Given a size[] sequence, unpacks the i'th component.
Definition: JobID.h:76
JobID(uint64_t j)
Constructor, copies some integer primitive.
Definition: JobID.h:65
Hash functions to allow user-defined-types to be used as std::unordered_map keys. ...
Key type used to identify the Job's of a JobGraph.
Definition: JobID.h:60
std::vector< JobID > JobIDs
Useful typedef.
Definition: JobID.h:118
Wraps a fixed size C-array. Think std::array, but before C++11.