Itasca C++ Interface
Loading...
Searching...
No Matches
ilinktype.h
Go to the documentation of this file.
1#pragma once
5
6namespace itascaxd {
11 template <class T>
12 struct LinkType {
16 LinkType(T *t,uint32 i) : pnt_(t),ind_(i) { }
18 template <class C> LinkType(const LinkType<C> &l) : pnt_(l.pnt_), ind_(l.ind_) { }
20 template <class C> const LinkType<T> &operator=(const LinkType<C> &l) { pnt_=l.pnt_; ind_=l.ind_; return *this; }
22 bool operator==(const LinkType &l) const { return pnt_==l.pnt_ && ind_==l.ind_; }
24 bool operator!=(const LinkType &l) const { return !operator==(l); }
26 T * operator->() { return pnt_; }
28 const T *operator->() const { return pnt_; }
30 uint32 ind() const { return ind_; }
32 T * pnt() { return pnt_; }
34 const T *pnt() const { return pnt_; }
35 T *ptr() { return pnt(); }
36 const T *ptr() const { return pnt(); }
37
39 T * pnt_ = nullptr;
41 uint32 ind_ = 0;
42 };
43
45 template <class T>
46 struct CLinkType {
50 CLinkType(const T *t,uint32 i) : pnt_(t),ind_(i) { }
52 CLinkType(const LinkType<T> &l) : pnt_(l.pnt_),ind_(l.ind_) { }
54 template <class C> CLinkType(const CLinkType<C> &l) : pnt_(l.pnt_), ind_(l.ind_) { }
56 template <class C> const CLinkType<T> &operator=(const CLinkType<C> &l) { pnt_=l.pnt_; ind_=l.ind_; return *this; }
58 const CLinkType<T> &operator=(const LinkType<T> &l) { pnt_=l.pnt_; ind_=l.ind_; return *this; }
60 bool operator==(const CLinkType &l) const { return pnt_==l.pnt_ && ind_==l.ind_; }
62 bool operator!=(const CLinkType &l) const { return !operator==(l); }
63
65 const T *operator->() const { return pnt_; }
67 uint32 ind() const { return ind_; }
69 const T *pnt() const { return pnt_; }
70 const T *ptr() const { return pnt(); }
71
73 const T *pnt_ = nullptr;
75 uint32 ind_ = 0;
76 };
77} // namespace itascaxd
78namespace module {
81}
82// EoF
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:4