DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ImageContainerBySTLMap.ih
1 
34 
35 // IMPLEMENTATION of inline methods.
37 
39 #include <cstdlib>
41 
42 template <typename TDomain, typename TValue>
43 inline
45 ::ImageContainerBySTLMap(const Domain& aDomain, const Value& aValue)
46  : myDomainPtr( new Domain(aDomain) ), myDefaultValue( aValue )
47 {
48 }
49 
50 //------------------------------------------------------------------------------
51 template <typename TDomain, typename TValue>
52 inline
55  : Parent(other),
56  myDomainPtr(other.myDomainPtr), myDefaultValue(other.myDefaultValue)
57 {
58 }
59 //------------------------------------------------------------------------------
60 template <typename TDomain, typename TValue>
61 inline
65 {
66  if (this != &other)
67  {
68  Parent::operator=(other);
69  myDomainPtr = other.myDomainPtr;
70  myDefaultValue = other.myDefaultValue;
71  }
72  return *this;
73 }
74 //------------------------------------------------------------------------------
75 template <typename TDomain, typename TValue>
76 inline
78 {
79 }
80 
81 //------------------------------------------------------------------------------
82 template <typename TDomain, typename TValue>
83 inline
86 {
87  ASSERT( this->domain().isInside( aPoint ) );
88  ConstIterator it = this->find( aPoint );
89  if ( it == this->end() )
90  return myDefaultValue;
91  else
92  return it->second;
93 }
94 
95 //------------------------------------------------------------------------------
96 template <typename TDomain, typename TValue>
97 inline
98 void
100 {
101  ASSERT( this->domain().isInside( aPoint ) );
102  std::pair<typename std::map<Point,Value>::iterator, bool>
103  res = this->insert( std::pair<Point,Value>(aPoint, aValue) );
104  if (res.second == false)
105  res.first->second = aValue;
106 }
107 
108 //------------------------------------------------------------------------------
109 template <typename TDomain, typename TValue>
110 inline
113 {
114  return *myDomainPtr;
115 }
116 
117 //------------------------------------------------------------------------------
118 template <typename TDomain, typename TValue>
119 inline
122 {
123  return ConstRange( *this );
124 }
125 
126 //------------------------------------------------------------------------------
127 template <typename TDomain, typename TValue>
128 inline
131 {
132  return Range( *this );
133 }
134 //------------------------------------------------------------------------------
135 template <typename TDomain, typename TValue>
136 inline
139 {
140  return OutputIterator( *this );
141 }
142 
143 
144 //------------------------------------------------------------------------------
145 template <typename TDomain, typename TValue>
146 inline
147 bool
149 {
150  return (this != NULL);
151 }
152 
153 //------------------------------------------------------------------------------
154 template <typename TDomain, typename TValue>
155 inline
156 void
158 {
159  out << "[Image - STLMap] size=" << this->size() << " valuetype="
160  << sizeof(TValue) << "bytes Domain=" << *myDomainPtr;
161 }
162 
163 //------------------------------------------------------------------------------
164 template <typename TDomain, typename TValue>
165 inline
166 std::string
168 {
169  return "ImageContainerBySTLMap";
170 }