ITK
4.3.0
Insight Segmentation and Registration Toolkit
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
ITK
Modules
Core
Common
include
itkNeighborhoodAllocator.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright Insight Software Consortium
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0.txt
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*=========================================================================*/
18
#ifndef __itkNeighborhoodAllocator_h
19
#define __itkNeighborhoodAllocator_h
20
#include <iostream>
21
22
namespace
itk
23
{
39
template
<
class
TPixel >
40
class
NeighborhoodAllocator
41
{
42
public
:
44
typedef
NeighborhoodAllocator
Self
;
45
50
typedef
TPixel *
iterator
;
51
typedef
const
TPixel *
const_iterator
;
52
54
NeighborhoodAllocator
():
m_ElementCount
(0),
m_Data
(0) {}
55
57
~NeighborhoodAllocator
()
58
{ this->
Deallocate
(); }
59
61
void
Allocate
(
unsigned
int
n)
62
{
63
m_Data
=
new
TPixel[n];
64
m_ElementCount
= n;
65
}
67
69
void
Deallocate
()
70
{
71
if
(
m_Data
) {
delete
[]
m_Data
; }
72
m_ElementCount
= 0;
73
}
75
77
NeighborhoodAllocator
(
const
Self
& other):
m_ElementCount
(0),
m_Data
(0)
78
{
79
this->
set_size
(other.
m_ElementCount
);
80
for
(
unsigned
int
i = 0; i < other.
m_ElementCount
; ++i )
81
{
82
this->
operator[]
(i) = other[i];
83
}
84
m_ElementCount
= other.
m_ElementCount
;
85
}
87
89
const
Self
&
operator=
(
const
Self
& other)
90
{
91
this->
set_size
(other.
m_ElementCount
);
92
for
(
unsigned
int
i = 0; i < other.
m_ElementCount
; ++i )
93
{
94
this->
operator[]
(i) = other[i];
95
}
96
m_ElementCount
= other.
m_ElementCount
;
97
return
*
this
;
98
}
100
102
bool
operator==
(
const
Self
& other)
const
103
{
104
return
(
m_Data
== other.
m_Data
);
105
}
106
108
bool
operator!=
(
const
Self
& other)
const
109
{
110
return
(
m_Data
!= other.
m_Data
);
111
}
112
114
iterator
begin
()
115
{
return
m_Data
; }
116
const_iterator
begin
()
const
117
{
return
m_Data
; }
118
iterator
end
()
119
{
return
(
m_Data
+
m_ElementCount
); }
120
const_iterator
end
()
const
121
{
return
(
m_Data
+
m_ElementCount
); }
122
unsigned
int
size
()
const
123
{
return
m_ElementCount
; }
125
127
const
TPixel &
operator[]
(
unsigned
int
i)
const
128
{
return
m_Data
[i]; }
129
TPixel &
operator[]
(
unsigned
int
i)
130
{
return
m_Data
[i]; }
132
134
void
set_size
(
unsigned
int
n)
135
{
136
if
(
m_Data
) {
Deallocate
(); }
137
this->
Allocate
(n);
138
}
140
141
protected
:
142
unsigned
int
m_ElementCount
;
143
TPixel *
m_Data
;
144
};
145
146
template
<
class
TPixel >
147
inline
std::ostream &
operator<<
(
148
std::ostream & o,
const
NeighborhoodAllocator< TPixel >
149
& a)
150
{
151
o <<
"NeighborhoodAllocator { this = "
<< &a <<
", begin = "
152
<<
static_cast<
const
void
*
>
( a.
begin
() )
153
<<
", size="
<< a.
size
()
154
<<
" }"
;
155
return
o;
156
}
157
}
// end namespace itk
158
#endif
159
Generated on Sun Dec 9 2012 01:20:43 for ITK by
1.8.2