69 static Reference
ref(Pointer_equivalent p) {
return *p; }
82 static Reference
ref(Pointer_equivalent p) {
return *p; }
95 static Reference
ref(Pointer_equivalent p) {
return **p; }
108 static Reference
ref(Pointer_equivalent p) {
return **p; }
122 static Reference
ref(Pointer_equivalent p) {
return **p; }
135 static Reference
ref(Pointer_equivalent p) {
return **p; }
159 return Traits::ref(reinterpret_cast<Pointer_equivalent>
160 (const_cast<Self*>(
this))+i);
163 return Traits::ref(reinterpret_cast<Pointer_equivalent>(
this)+(i&1));
167 int id()
const {
return static_cast<int>(
this); }
171 std::ostream&
print(std::ostream &os,
const char*
s)
const {
174 return os <<
v0 <<
' ' <<
v1;
176 return os <<
v0 <<
v1;
178 return os << s <<
"(" <<
v0 <<
' ' << v1 <<
' ' <<
")";
183 {
return reinterpret_cast<Const_self&
>(*this); }
192 {
v0+=t.
v0;
v1+=t.
v1;
return *
this; }
195 {
v0-=t.
v0;
v1-=t.
v1;
return *
this; }
201 {
v0*=t;
v1*=t;
return *
this; }
207 {
v0/=t;
v1/=t;
return *
this; }
225 std::ostream &operator<<(std::ostream &os, const Two_tuple<T> &
s)
227 return s.print(os,
"Two_tuple");
270 return Traits::ref(reinterpret_cast<Pointer_equivalent>
271 (const_cast<Self*>(
this))+i);
274 return Traits::ref(reinterpret_cast<Pointer_equivalent>(
this)+i);
277 int id()
const {
return static_cast<int>(
this); }
280 std::ostream&
print(std::ostream &os,
const char *
s)
const {
283 return os <<
v0 <<
' ' <<
v1 <<
' ' <<
v2;
285 return os <<
v0 <<
v1 <<
v2;
287 return os << s <<
"(" <<
v0 <<
' ' <<
v1
288 <<
' ' << v2 <<
' ' <<
")";
293 {
return reinterpret_cast<Const_self&
>(*this); }
311 {
v0*=t;
v1*=t;
v2*=t;
return *
this; }
317 {
v0/=t;
v1/=t;
v2/=t;
return *
this; }
336 std::ostream &operator<<(std::ostream &os, const Three_tuple<T> &
s)
338 return s.print(os,
"Three_tuple");
344 is >> s[0] >> s[1] >> s[2];
381 return Traits::ref(reinterpret_cast<Pointer_equivalent>
382 (const_cast<Self*>(
this))+i);
385 return Traits::ref(reinterpret_cast<Pointer_equivalent>(
this)+i);
388 int id()
const {
return static_cast<int>(
this); }
391 std::ostream&
print(std::ostream &os,
const char *
s)
const {
394 return os <<
v0 <<
' ' <<
v1 <<
' ' <<
v2 <<
' ' <<
v3;
398 return os << s <<
"(" <<
v0 <<
' ' <<
v1
399 <<
' ' <<
v2 <<
' ' << v3 <<
")";
404 {
return reinterpret_cast<Const_self&
>(*this); }
418 {
v0*=t;
v1*=t;
v2*=t;
v3*=t;
return *
this; }
424 {
v0/=t;
v1/=t;
v2/=t;
v3/=t;
return *
this; }
444 std::ostream &operator<<(std::ostream &os, const Four_tuple<T> &
s)
446 return s.print(os,
"Four_tuple");
452 is >> s[0] >> s[1] >> s[2] >> s[3];
464 #endif // RFC_TUPLE_H
Reference operator[](int i)
Traits::Value_opposite Value_opposite
Self operator-(const Self &t) const
Traits::Value_opposite Value_opposite
Self operator/(Const_reference t) const
Self operator+(const Self &t) const
Self multiply(const Self &b) const
Self operator-(const Self &t) const
A structure used to represent element faces.
Vector_3< T > operator*(T t, const Vector_3< T > &v)
std::ostream & print(std::ostream &os, const char *s) const
const T & Const_reference
bool operator!=(const Self &x) const
Traits::Const_reference Const_reference
Traits::Pointer_equivalent Pointer_equivalent
Self & operator*=(Const_reference t)
Const_reference operator[](int i) const
const T *& Const_reference
Self multiply(const Self &b) const
Self multiply(const Self &b) const
static Reference ref(Pointer_equivalent p)
Value operator*(const Self &t) const
const T & Const_reference
bool operator!=(const Self &x) const
const Two_tuple< Value_opposite > Const_self
Traits::Value_opposite Value_opposite
const T & Const_reference
const Two_tuple< Value_opposite > Const_self
static Reference ref(Pointer_equivalent p)
const T *const Const_pointer
Value operator*(const Self &t) const
Traits::Init_reference Init_reference
Self & operator+=(const Self &t)
static Reference ref(Pointer_equivalent p)
const Three_tuple< Value_opposite > Const_self
Self & operator-=(const Self &t)
Traits::Const_pointer Const_pointer
const T * Pointer_equivalent
Self operator-(const Self &t) const
const T **const Const_pointer
Traits::Const_reference Const_reference
#define RFC_END_NAME_SPACE
Two_tuple(Init_reference p, Init_reference q)
const T *& Const_reference
Traits::Reference Reference
Traits::Reference Reference
Reference operator[](int i)
Self operator/(Const_reference t) const
const T ** Pointer_equivalent
Self & operator/=(Const_reference t)
const T ** Pointer_equivalent
const T ** Pointer_equivalent
Self & operator+=(const Self &t)
static Reference ref(Pointer_equivalent p)
#define RFC_BEGIN_NAME_SPACE
Traits::Pointer_equivalent Pointer_equivalent
Traits::Init_reference Init_reference
Self & operator*=(Const_reference t)
bool operator==(const Self &x) const
Traits::Const_pointer Const_pointer
const T *& Const_reference
Traits::Const_reference Const_reference
Traits::Reference Reference
Two_tuple(Const_reference t)
Self & operator-=(const Self &t)
Traits::Pointer_equivalent Pointer_equivalent
static Reference ref(Pointer_equivalent p)
Four_tuple(Const_reference t)
bool operator!=(const Self &x) const
Self divide(const Self &b) const
Three_tuple(Init_reference p, Init_reference q, Init_reference r)
bool operator==(const Self &x) const
Three_tuple(Const_reference t)
const T *& Init_reference
Self & operator/=(Const_reference t)
Self operator+(const Self &t) const
Self divide(const Self &b) const
static Reference ref(Pointer_equivalent p)
const T **const Const_pointer
Const_reference operator[](int i) const
Self & operator*=(Const_reference t)
Four_tuple(Init_reference p, Init_reference q, Init_reference r, Init_reference s)
Value operator*(const Self &t) const
Traits::Init_reference Init_reference
Traits::Const_pointer Const_pointer
std::ostream & print(std::ostream &os, const char *s) const
static Reference ref(Pointer_equivalent p)
Self operator+(const Self &t) const
Self & operator-=(const Self &t)
const T *const Const_pointer
const T *& Value_opposite
Reference operator[](int i)
std::ostream & print(std::ostream &os, const char *s) const
Self & operator/=(Const_reference t)
const T & Const_reference
Self operator/(Const_reference t) const
Self & operator+=(const Self &t)
static Reference ref(Pointer_equivalent p)
Const_reference operator[](int i) const
const T *& Const_reference
bool operator==(const Self &x) const
Self divide(const Self &b) const