Mesh Oriented datABase
(version 5.5.1)
An array-based unstructured mesh library
MeshTag.hpp
Go to the documentation of this file.
1
/** \file MeshTag.hpp
2
* \author Jason Kraftcheck
3
* \date 2010-12-14
4
*/
5
6
#ifndef MESH_TAG_HPP
7
#define MESH_TAG_HPP
8
9
#include "
TagInfo.hpp
"
10
11
namespace
moab
12
{
13
14
/**\brief Tag with only a global/mesh value
15
*
16
* Trivial tag implementation. No per-entity values. Only
17
* the global mesh value which is handled by the \c TagInfo
18
* base class.
19
*/
20
class
MeshTag
:
public
TagInfo
21
{
22
public
:
23
//! constructor that takes all parameters
24
MeshTag
(
const
char
* name,
int
size
,
DataType
type,
const
void
* default_value,
int
default_value_size );
25
26
virtual
~MeshTag
();
27
28
virtual
TagType
get_storage_type
()
const
;
29
30
/**\brief Remove/clear tag data for all entities
31
*
32
* Remove tag values from entities.
33
*
34
*\param delete_pending If true, then release any global
35
* data associated with the tag in preparation for deleting
36
* the tag itself.
37
*
38
*\Note Invalidates tag if \c tag_delete_pending is true. The only
39
* valid method that can be invoked that is is the destructor.
40
*
41
*\param seqman Pointer to mesh entity database
42
*/
43
virtual
ErrorCode
release_all_data
(
SequenceManager
* seqman,
Error
* error_handler,
bool
delete_pending );
44
45
/**\brief Get tag value for passed entities
46
*
47
* Get tag values for specified entities.
48
*
49
*\Note Will fail for variable-length data.
50
*\param seqman Pointer to mesh entity database
51
*\param entities Entity handles for which to retrieve tag data
52
*\param num_entities Length of \c entities array
53
*\param data Pointer to memory in which to store consecutive tag values,
54
* one for each passed entity.
55
*/
56
virtual
ErrorCode
get_data
(
const
SequenceManager
* seqman,
57
Error
* error_handler,
58
const
EntityHandle
*
entities
,
59
size_t
num_entities,
60
void
* data )
const
;
61
62
/**\brief Get tag value for passed entities
63
*
64
* Get tag values for specified entities.
65
*
66
*\Note Will fail for variable-length data.
67
*\param seqman Pointer to mesh entity database
68
*\param entities Entity handles for which to retrieve tag data
69
*\param data Pointer to memory in which to store consecutive tag values,
70
* one for each passed entity.
71
*/
72
virtual
ErrorCode
get_data
(
const
SequenceManager
* seqman,
73
Error
* error_handler,
74
const
Range
&
entities
,
75
void
* data )
const
;
76
77
/**\brief Get tag value for passed entities
78
*
79
* Get tag values for specified entities.
80
*
81
*\param seqman Pointer to mesh entity database
82
*\param entities Entity handles for which to retrieve tag data
83
*\param num_entities Length of \c entities array
84
*\param data_ptrs Array of pointers to tag values, one pointer
85
* for each passed entity.
86
*\param data_lengths One value for each entity specifying the
87
* length of the tag value for the corresponding
88
* entity.
89
*/
90
virtual
ErrorCode
get_data
(
const
SequenceManager
* seqman,
91
Error
* error_handler,
92
const
EntityHandle
*
entities
,
93
size_t
num_entities,
94
const
void
** data_ptrs,
95
int
* data_lengths )
const
;
96
97
/**\brief Get tag value for passed entities
98
*
99
* Get tag values for specified entities.
100
*
101
*\param seqman Pointer to mesh entity database
102
*\param entities Entity handles for which to retrieve tag data
103
*\param data_ptrs Array of pointers to tag values, one pointer
104
* for each passed entity.
105
*\param data_lengths One value for each entity specifying the
106
* length of the tag value for the corresponding
107
* entity.
108
*/
109
virtual
ErrorCode
get_data
(
const
SequenceManager
* seqman,
110
Error
* error_handler,
111
const
Range
&
entities
,
112
const
void
** data_ptrs,
113
int
* data_lengths )
const
;
114
115
/**\brief Set tag value for passed entities
116
*
117
* Store tag data or update stored tag values
118
*\Note Will fail for variable-length data.
119
*\param seqman Pointer to mesh entity database
120
*\param entities Entity handles for which to store tag data
121
*\param num_entities Length of \c entities array
122
*\param data Pointer to memory holding consecutive tag values,
123
* one for each passed entity.
124
*/
125
virtual
ErrorCode
set_data
(
SequenceManager
* seqman,
126
Error
* error_handler,
127
const
EntityHandle
*
entities
,
128
size_t
num_entities,
129
const
void
* data );
130
131
/**\brief Set tag value for passed entities
132
*
133
* Store tag data or update stored tag values
134
*\Note Will fail for variable-length data.
135
*\param seqman Pointer to mesh entity database
136
*\param entities Entity handles for which to store tag data
137
*\param data Pointer to memory holding consecutive tag values,
138
* one for each passed entity.
139
*/
140
virtual
ErrorCode
set_data
(
SequenceManager
* seqman,
141
Error
* error_handler,
142
const
Range
&
entities
,
143
const
void
* data );
144
145
/**\brief Set tag value for passed entities
146
*
147
* Store tag data or update stored tag values
148
*
149
*\param seqman Pointer to mesh entity database
150
*\param entities Entity handles for which to store tag data
151
*\param num_entities Length of \c entities array
152
*\param data_ptrs Array of pointers to tag values, one pointer
153
* for each passed entity.
154
*\param data_lengths One value for each entity specifying the
155
* length of the tag value for the corresponding
156
* entity. Array is required for variable-length
157
* tags and is ignored for fixed-length tags.
158
*/
159
virtual
ErrorCode
set_data
(
SequenceManager
* seqman,
160
Error
* error_handler,
161
const
EntityHandle
*
entities
,
162
size_t
num_entities,
163
void
const
*
const
* data_ptrs,
164
const
int
* data_lengths );
165
166
/**\brief Set tag value for passed entities
167
*
168
* Store tag data or update stored tag values
169
*
170
*\param seqman Pointer to mesh entity database
171
*\param entities Entity handles for which to store tag data
172
*\param data_ptrs Array of pointers to tag values, one pointer
173
* for each passed entity.
174
*\param data_lengths One value for each entity specifying the
175
* length of the tag value for the corresponding
176
* entity. Array is required for variable-length
177
* tags and is ignored for fixed-length tags.
178
*/
179
virtual
ErrorCode
set_data
(
SequenceManager
* seqman,
180
Error
* error_handler,
181
const
Range
&
entities
,
182
void
const
*
const
* data_ptrs,
183
const
int
* data_lengths );
184
185
/**\brief Set tag value for passed entities
186
*
187
* Store tag data or update stored tag values.
188
*
189
*\param seqman Pointer to mesh entity database
190
*\param entities Entity handles for which to store tag data
191
*\param num_entities Length of \c entities array
192
*\param value_ptr Pointer to a single tag value which is to be
193
* stored for each of the passed entities.
194
*\param value_len Length of tag value in bytes. Ignored for
195
* fixed-length tags. Required for variable-
196
* length tags.
197
*/
198
virtual
ErrorCode
clear_data
(
SequenceManager
* seqman,
199
Error
* error_handler,
200
const
EntityHandle
*
entities
,
201
size_t
num_entities,
202
const
void
* value_ptr,
203
int
value_len = 0 );
204
205
/**\brief Set tag value for passed entities
206
*
207
* Store tag data or update stored tag values.
208
*
209
*\param seqman Pointer to mesh entity database
210
*\param entities Entity handles for which to store tag data
211
*\param value_ptr Pointer to a single tag value which is to be
212
* stored for each of the passed entities.
213
*\param value_len Length of tag value in bytes. Ignored for
214
* fixed-length tags. Required for variable-
215
* length tags.
216
*/
217
virtual
ErrorCode
clear_data
(
SequenceManager
* seqman,
218
Error
* error_handler,
219
const
Range
&
entities
,
220
const
void
* value_ptr,
221
int
value_len = 0 );
222
223
/**\brief Remove/clear tag data for entities
224
*
225
* Remove tag values from entities.
226
*
227
*\param seqman Pointer to mesh entity database
228
*\param entities Entity handles for which to store tag data
229
*\param num_entities Length of \c entities array
230
*/
231
virtual
ErrorCode
remove_data
(
SequenceManager
* seqman,
232
Error
* error_handler,
233
const
EntityHandle
*
entities
,
234
size_t
num_entities );
235
236
/**\brief Remove/clear tag data for entities
237
*
238
* Remove tag values from entities.
239
*
240
*\param seqman Pointer to mesh entity database
241
*\param entities Entity handles for which to store tag data
242
*/
243
virtual
ErrorCode
remove_data
(
SequenceManager
* seqman,
Error
* error_handler,
const
Range
&
entities
);
244
245
/**\brief Access tag data via direct pointer into contiguous blocks
246
*
247
* Iteratively obtain direct access to contiguous blocks of tag
248
* storage. This function cannot be used with bit tags because
249
* of the compressed bit storage. This function cannot be used
250
* with variable length tags because it does not provide a mechanism
251
* to determine the length of the value for each entity. This
252
* function may be used with sparse tags, but if it is used, it
253
* will return data for a single entity at a time.
254
*
255
*\param iter As input, the first entity for which to return
256
* data. As output, one past the last entity for
257
* which data was returned.
258
*\param end One past the last entity for which data is desired
259
*\param data_ptr Output: pointer to tag storage.
260
*\param allocate If true, allocate space for this tag as part of this call, else don't
261
*
262
*\Note If this function is called for entities for which no tag value
263
* has been set, but for which a default value exists, it will
264
* force the allocation of explicit storage for each such entity
265
* even though MOAB would normally not explicitly store tag values
266
* for such entities.
267
*/
268
virtual
ErrorCode
tag_iterate
(
SequenceManager
* seqman,
269
Error
* error_handler,
270
Range::iterator
& iter,
271
const
Range::iterator
& end,
272
void
*& data_ptr,
273
bool
allocate =
true
);
274
275
/**\brief Get all tagged entities
276
*
277
* Get the list of entities for which the a tag value has been set,
278
* or a close approximation if the tag storage scheme cannot
279
* accurately determine exactly which entities have explicit values.
280
*
281
*\param seqman Pointer to entity storage database
282
*\param output_entities Results *appended* to this range
283
*\param type Optional entity type. If specified, search is
284
* limited to entities of specified type.
285
*\param intersect Optional intersect list. If specified,
286
* search is restricted to entities in this list.
287
*/
288
virtual
ErrorCode
get_tagged_entities
(
const
SequenceManager
* seqman,
289
Range
& output_entities,
290
EntityType type =
MBMAXTYPE
,
291
const
Range
*
intersect
= 0 )
const
;
292
293
/**\brief Count all tagged entities
294
*
295
* Count the entities for which the a tag value has been set,
296
* or a close approximation if the tag storage scheme cannot
297
* accurately determine exactly which entities have explicit values.
298
*
299
*\param seqman Pointer to entity storage database
300
*\param output_count This is *incremented* for each detected entity.
301
*\param type Optional entity type. If specified, search is
302
* limited to entities of specified type.
303
*\param intersect Optional intersect list. If specified,
304
* search is restricted to entities in this list.
305
*/
306
virtual
ErrorCode
num_tagged_entities
(
const
SequenceManager
* seqman,
307
size_t
& output_count,
308
EntityType type =
MBMAXTYPE
,
309
const
Range
*
intersect
= 0 )
const
;
310
311
/**\brief Get all tagged entities with tag value
312
*
313
* Get the list of entities which have the specified tag value.
314
*
315
*\param seqman Pointer to entity storage database
316
*\param output_entities Results *appended* to this range
317
*\param value Pointer to tag value
318
*\param value_bytes Size of tag value in bytes.
319
*\param type Optional entity type. If specified, search is
320
* limited to entities of specified type.
321
*\param intersect_entities Optional intersect list. If specified,
322
* search is restricted to entities in this list.
323
*/
324
virtual
ErrorCode
find_entities_with_value
(
const
SequenceManager
* seqman,
325
Error
* error_handler,
326
Range
& output_entities,
327
const
void
* value,
328
int
value_bytes = 0,
329
EntityType type =
MBMAXTYPE
,
330
const
Range
* intersect_entities = 0 )
const
;
331
332
/**\brief Check if entity is tagged */
333
virtual
bool
is_tagged
(
const
SequenceManager
*,
EntityHandle
h )
const
;
334
335
/**\brief Get memory use for tag data.
336
*
337
*/
338
virtual
ErrorCode
get_memory_use
(
const
SequenceManager
* seqman,
339
unsigned
long
& total,
340
unsigned
long
& per_entity )
const
;
341
342
private
:
343
MeshTag
(
const
MeshTag
& );
344
MeshTag
&
operator=
(
const
MeshTag
& );
345
std::vector< unsigned char >
mValue
;
346
};
347
348
}
// namespace moab
349
350
#endif
// MESH_TAG_HPP
src
MeshTag.hpp
Generated on Tue Oct 29 2024 02:05:44 for Mesh Oriented datABase by
1.9.1.