Itasca C++ Interface
ilinktype.h
Go to the documentation of this file.
1 #pragma once
5 
6 namespace itascaxd {
11  template <class T>
12  struct LinkType {
14  LinkType() : pnt_(0), ind_(0) { }
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_;
41  uint32 ind_;
42  };
43 
45  template <class T>
46  struct CLinkType {
48  CLinkType() : pnt_(0), ind_(0) { }
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_;
75  uint32 ind_;
76  };
77 } // namespace itascaxd
78 namespace module {
79  using itascaxd::LinkType;
80  using itascaxd::CLinkType;
81 }
82 // EoF
Itasca Library standard namespace, specific to 2D or 3D.
Definition: icontactmodule.h:4