![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 #ifndef _ITAPS_iMesh
00002 #define _ITAPS_iMesh
00003
00004 #include "iBase.h"
00005 #include "iMesh_protos.h"
00006
00007 /***************************************************************************/ /**
00008 * \ingroup
00009 *VersionNumbers
00010 * \brief Compile time
00011 *version number
00012 *digits
00013 *
00014 * iMesh maintains a
00015 *major, minor and
00016 *patch digit in its
00017 *version number.
00018 * Technically
00019 *speaking, there is
00020 *not much practical
00021 *value in patch digit
00022 * for an interface
00023 *specification. A
00024 *patch release is
00025 *typically only used
00026 * for bug fix
00027 *releases. Although
00028 *it is rare,
00029 *sometimes a bug fix
00030 * necessitates an API
00031 *change. So, we
00032 *define a patch digit
00033 *for iMesh.
00034 ******************************************************************************/
00035 #define IMESH_VERSION_MAJOR ITAPS_VERSION_MAJOR
00036 #define IMESH_VERSION_MINOR ITAPS_VERSION_MINOR
00037 #define IMESH_VERSION_PATCH ITAPS_VERSION_PATCH
00038
00039 /***************************************************************************/ /**
00040 * \ingroup
00041 *VersionNumbers
00042 * \brief Maintain
00043 *backward
00044 *compatibility with
00045 *old version symbol
00046 *names
00047 ******************************************************************************/
00048 #define IMESH_MAJOR_VERSION IMESH_VERSION_MAJOR
00049 #define IMESH_MINOR_VERSION IMESH_VERSION_MINOR
00050 #define IMESH_PATCH_VERSION IMESH_VERSION_PATCH
00051
00052 /***************************************************************************/ /**
00053 * \ingroup
00054 *VersionNumbers
00055 * \brief Version
00056 *Comparison
00057 *
00058 * Evaluates to true
00059 *at CPP time if the
00060 *version of iMesh
00061 *currently being
00062 * compiled is greater
00063 *than or equal to the
00064 *version specified.
00065 ******************************************************************************/
00066 #define IMESH_VERSION_GE( Maj, Min, Pat ) ITAPS_VERSION_GE( Maj, Min, Pat )
00067
00068 /***************************************************************************/ /**
00069 * \ingroup
00070 *VersionNumbers
00071 * \brief Compose
00072 *string represention
00073 *of the iMesh version
00074 *number
00075 ******************************************************************************/
00076 #define IMESH_VERSION_STRING ITAPS_VERSION_STRING_( iMesh )
00077
00078 /***************************************************************************/ /**
00079 * \ingroup
00080 *VersionNumbers
00081 * \brief Compose a
00082 *symbol name derived
00083 *from the current
00084 *iMesh version
00085 *number.
00086 ******************************************************************************/
00087 #define IMESH_VERSION_TAG ITAPS_VERSION_TAG_( iMesh )
00088
00089 /***************************************************************************/ /**
00090 * \ingroup
00091 *VersionNumbers
00092 * \brief Define
00093 *iMesh_newMesh symbol
00094 *such that it depends
00095 *on version number.
00096 *
00097 * Note: We ran into
00098 *problems with this
00099 *as it influences or
00100 *is influenced by
00101 * fortran name
00102 *mangling and so
00103 *breaks fortran
00104 *compilation. So,
00105 *this is currently
00106 *disabled.
00107 ******************************************************************************/
00108 #define IMESH_NEW_MESH_NAME__( A, B, C ) A##_##B##_##C
00109 #define IMESH_NEW_MESH_NAME_( A, B, C ) IMESH_NEW_MESH_NAME__( A, B, C )
00110 #define IMESH_NEW_MESH_NAME( A ) IMESH_NEW_MESH_NAME_( A, IMESH_VERSION_MAJOR, IMESH_VERSION_MINOR )
00111 /*
00112 #undef iMesh_newMesh
00113 #define iMesh_newMesh IMESH_NEW_MESH_NAME(iMesh_newMesh)
00114 */
00115
00116 #ifdef __cplusplus
00117 extern "C" {
00118 #endif
00119
00120 /***************************************************************************/ /**
00121 * \ingroup Datatypes
00122 * \brief iMesh
00123 *instance
00124 ******************************************************************************/
00125 typedef struct iMesh_Instance_Private* iMesh_Instance;
00126
00127 /***************************************************************************/ /**
00128 * \ingroup Datatypes
00129 * \brief Entity
00130 *Topology
00131 ******************************************************************************/
00132 enum iMesh_EntityTopology
00133 {
00134 iMesh_EntityTopology_MIN = 0,
00135 /**< MIN symbol used to facilitate iteration over topologies */
00136 iMesh_POINT = iMesh_EntityTopology_MIN,
00137 /**< a 0D entity (e.g. a vertex) */
00138 iMesh_LINE_SEGMENT,
00139 /**< a 1D entity (e.g. an edge) */
00140 iMesh_POLYGON,
00141 /**< a general 2D entity */
00142 iMesh_TRIANGLE,
00143 /**< a specific 2D entity bounded by 3 edge entities */
00144 iMesh_QUADRILATERAL,
00145 /**< a specific 2D entity bounded by 4 edge entities */
00146 iMesh_POLYHEDRON,
00147 /**< a general 3D entity */
00148 iMesh_TETRAHEDRON,
00149 /**< a specific 3D entity bounded by 4 triangle entities */
00150 iMesh_HEXAHEDRON,
00151 /**< a specific 3D entity bounded by 6 quadrilateral entities */
00152 iMesh_PRISM,
00153 /**< a specific 3D entity bounded by a combination of 3 quadrilateral
00154 entities and 2 triangle entities */
00155 iMesh_PYRAMID,
00156 /**< a specific 3D entity bounded by a combination of 1 quadrilateral
00157 entity and 4 triangle entities */
00158 iMesh_SEPTAHEDRON,
00159 /**< a hexahedral entity with one collapsed edge */
00160 iMesh_ALL_TOPOLOGIES,
00161 /**< used only in queries to request information about all topologies */
00162 iMesh_EntityTopology_MAX = iMesh_ALL_TOPOLOGIES
00163 /**< MAX symbol used to facilitate iteration over topologies */
00164 };
00165
00166 /***************************************************************************/ /**
00167 * \ingroup
00168 *ErrorHandling \brief
00169 *Get the error type
00170 *returned from the
00171 *last iMesh function
00172 ******************************************************************************/
00173 void iMesh_getErrorType( iMesh_Instance instance,
00174 /**< [in] iMesh instance handle */
00175 int* error_type
00176 /**< [out] Error type returned from last iMesh function
00177 (see iBase_ErrorType) */
00178
00179 );
00180
00181 /***************************************************************************/ /**
00182 * \ingroup
00183 *ErrorHandling \brief
00184 *Get a description of
00185 *the error returned
00186 *from the last iMesh
00187 *function
00188 ******************************************************************************/
00189 void iMesh_getDescription( iMesh_Instance instance,
00190 /**< [in] iMesh instance handle */
00191 char* descr,
00192 /**< [in,out] Pointer to a character string to be filled with a
00193 description of the error from the last iMesh function */
00194 int descr_len
00195 /**< [in] Length of the character string pointed to by descr
00196 (\ref strlen) */
00197 );
00198
00199 /***************************************************************************/ /**
00200 * \ingroup
00201 *Initialization
00202 * \brief Construct a
00203 *new iMesh instance
00204 *
00205 ******************************************************************************/
00206
00207 void iMesh_newMesh( const char* options,
00208 /**< [in] Pointer to implementation-specific options string
00209 (\ref options) */
00210 iMesh_Instance* instance,
00211 /**< [in] iMesh instance handle */
00212 int* err,
00213 /**< [out] Returned Error status (see iBase_ErrorType) */
00214 int options_len
00215 /**< [in] Length of the character string pointed to by options
00216 (\ref strlen) */
00217 );
00218
00219 /***************************************************************************/ /**
00220 * \ingroup
00221 *Initialization
00222 * \brief Destroy an
00223 *iMesh instance
00224 *
00225 ******************************************************************************/
00226
00227 void iMesh_dtor( iMesh_Instance instance,
00228 /**< [in] iMesh instance handle */
00229 int* err
00230 /**< [out] Returned Error status (see iBase_ErrorType) */
00231 );
00232
00233 /***************************************************************************/ /**
00234 * \ingroup
00235 *Initialization
00236 * \brief Load a mesh
00237 *from a file
00238 *
00239 * Load a mesh from a
00240 *file. If entity set
00241 *is specified, loaded
00242 *mesh is added to
00243 *that set; specify
00244 *root set if that is
00245 *not desired.
00246 ******************************************************************************/
00247
00248 void iMesh_load( iMesh_Instance instance,
00249 /**< [in] iMesh instance handle */
00250 const iBase_EntitySetHandle entity_set_handle,
00251 /**< [in] Set to which loaded mesh will be added, otherwise root */
00252 const char* name,
00253 /**< [in] File name from which mesh is to be loaded */
00254 const char* options,
00255 /**< [in] Pointer to implementation-specific options string
00256 (\ref options) */
00257 int* err,
00258 /**< [out] Returned Error status (see iBase_ErrorType) */
00259 int name_len,
00260 /**< [in] Length of the file name character string
00261 (\ref strlen) */
00262 int options_len
00263 /**< [in] Length of the options character string
00264 (\ref strlen) */
00265 );
00266
00267 /***************************************************************************/ /**
00268 * \ingroup
00269 *Initialization
00270 * \brief Save a mesh
00271 *to a file
00272 *
00273 * Save a mesh to a
00274 *file. If entity set
00275 *is specified, save
00276 *only the mesh
00277 *contained in that
00278 *set.
00279 ******************************************************************************/
00280
00281 void iMesh_save( iMesh_Instance instance,
00282 /**< [in] iMesh instance handle */
00283 const iBase_EntitySetHandle entity_set_handle,
00284 /**< [in] Entity set being saved */
00285 const char* name,
00286 /**< [in] File name to which mesh is to be saved */
00287 const char* options,
00288 /**< [in] Pointer to implementation-specific options string
00289 (\ref options) */
00290 int* err,
00291 /**< [out] Returned Error status (see iBase_ErrorType) */
00292 const int name_len,
00293 /**< [in] Length of the file name character string
00294 (\ref strlen) */
00295 int options_len
00296 /**< [in] Length of the options character string
00297 (\ref strlen) */
00298 );
00299
00300 /***************************************************************************/ /**
00301 * \ingroup
00302 *Initialization
00303 * \brief Get handle
00304 *of the root set for
00305 *this instance
00306 *
00307 * Get handle of the
00308 *root set for this
00309 *instance. All mesh
00310 *entities in this
00311 *instance can be
00312 *accessed from this
00313 *set.
00314 ******************************************************************************/
00315
00316 void iMesh_getRootSet( iMesh_Instance instance,
00317 /**< [in] iMesh instance handle */
00318 iBase_EntitySetHandle* root_set,
00319 /**< [out] Pointer to set handle returned from function */
00320 int* err
00321 /**< [out] Returned Error status (see iBase_ErrorType) */
00322 );
00323
00324 /***************************************************************************/ /**
00325 * \ingroup
00326 *Initialization
00327 * \brief Get the
00328 *geometric dimension
00329 *of mesh represented
00330 *in this instance
00331 *
00332 ******************************************************************************/
00333
00334 void iMesh_getGeometricDimension( iMesh_Instance instance,
00335 /**< [in] iMesh instance handle */
00336 int* geom_dim,
00337 /**< [out] Pointer to dimension returned from this function */
00338 int* err
00339 /**< [out] Returned Error status (see iBase_ErrorType) */
00340 );
00341
00342 /***************************************************************************/ /**
00343 * \ingroup
00344 *Initialization
00345 * \brief Set
00346 *geometric dimension
00347 *of vertex
00348 *coordinates
00349 *
00350 * Set the geometric
00351 *dimension of the
00352 *mesh. Note: An
00353 *application should
00354 *not expect this
00355 *function to succeed
00356 *unless the mesh
00357 *instance is empty.
00358 *An empty mesh
00359 *instance is any mesh
00360 *instance in which
00361 *there are no vertex
00362 *entities.
00363 ******************************************************************************/
00364
00365 void iMesh_setGeometricDimension( iMesh_Instance instance,
00366 /**< [in] iMesh instance handle */
00367 int geom_dim,
00368 /**< [in] Requested geometric dimension. */
00369 int* err
00370 /**< [out] Returned Error status (see iBase_ErrorType) */
00371 );
00372
00373 /***************************************************************************/ /**
00374 * \ingroup
00375 *Initialization
00376 * \brief Get the
00377 *default storage
00378 *order used by this
00379 *implementation
00380 *
00381 * Get the default
00382 *storage order used
00383 *by this
00384 *implementation.
00385 *Value returned is a
00386 *member of the
00387 *iBase_StorageOrder
00388 *enumeration.
00389 ******************************************************************************/
00390
00391 void iMesh_getDfltStorage( iMesh_Instance instance,
00392 /**< [in] iMesh instance handle */
00393 int* order,
00394 /**< [out] Pointer to storage order returned from function
00395 (\sa iBase_StorageOrder) */
00396 int* err
00397 /**< [out] Returned Error status (see iBase_ErrorType) */
00398 );
00399
00400 /***************************************************************************/ /**
00401 * \ingroup
00402 *Adjacencies \brief
00403 *Get the adjacency
00404 *table for this
00405 *implementation
00406 *
00407 * Get the adjacency
00408 *table for this
00409 *implementation. This
00410 *table is a 4x4 array
00411 *whose entries
00412 *characterize how the
00413 *implementation
00414 * behaves when
00415 *adjacent and
00416 *intermediate
00417 *entities are
00418 *queried. Entry [i,j]
00419 *(i=row, j=col,
00420 *0-based indexing)
00421 *will have one of the
00422 *values in the
00423 *iBase_AdjacencyCost
00424 *enumeration.
00425 *Off-diagonal entres,
00426 *i!=j, represents the
00427 *relative cost of
00428 *retrieving entities
00429 *of dimension i
00430 *adjacent to entities
00431 *of dimension j.
00432 * Diagonal entries,
00433 *i==j, indicate
00434 *whether or not
00435 *handles to ALL
00436 * entities of that
00437 *dimension are
00438 *obtainable from
00439 *calls that return
00440 * entity handles.
00441 *This is always true
00442 *by definition for
00443 *i==j==0 as well as
00444 *for i==j==2 in a 2D
00445 *mesh and i==j==3 in
00446 *a 3D mesh. However,
00447 *diagonal entries
00448 *[1,1] for a 2D mesh
00449 *and both [1,1] and
00450 *[2,2] for a 3D mesh
00451 *indicate whether or
00452 *not handles to ALL
00453 * intermediate
00454 *dimensioned entities
00455 *(ALL edges in a 2D
00456 *mesh or ALL edges
00457 *and ALL faces in a
00458 *3D mesh) are
00459 *obtainable from
00460 *calls that return
00461 *entity handles. A
00462 *value of
00463 *iBase_AVAILABLE for
00464 *a diagonal entry
00465 *indicates that
00466 *handles are
00467 *obtainable for ALL
00468 * entities of that
00469 *dimension while a
00470 *value of
00471 *iBase_UNAVAILABLE
00472 * indicates that
00473 *handles are not
00474 *obtainable for ALL
00475 *entities of that
00476 * dimension.
00477 ******************************************************************************/
00478
00479 void iMesh_getAdjTable( iMesh_Instance instance,
00480 /**< [in] iMesh instance handle */
00481 int** adjacency_table,
00482 /**< [out] Pointer to array representing adjacency table
00483 \ref trio) */
00484 int* adjacency_table_allocated,
00485 /**< [in,out] Pointer to allocated size of adjacency_table */
00486 int* adjacency_table_size,
00487 /**< [out] Pointer to occupied size of adjacency_table */
00488 int* err
00489 /**< [out] Returned Error status (see iBase_ErrorType) */
00490 );
00491
00492 /***************************************************************************/ /**
00493 * \ingroup
00494 *Adjacencies \brief
00495 *Set the adjacency
00496 *table as requested
00497 *by the application
00498 *
00499 * Set the adjacency
00500 *table as requested
00501 *by the application.
00502 * See
00503 *iMesh_getAdjTable
00504 *for a description of
00505 *the meaning of the
00506 *entries in this
00507 *table. This call to
00508 *set the adjacency
00509 *table allows an
00510 *application to
00511 *request how it would
00512 *like an
00513 *implementation to
00514 *behave when adjacent
00515 * and/or intermediate
00516 *entities are
00517 *queried. If the
00518 *implementation is
00519 *not able to
00520 *accommodate the
00521 *requested query
00522 *behavior associated
00523 *with ANY entry in
00524 *the table, the call
00525 *will fail and return
00526 *an error of
00527 * iBase_NOT_SUPPORTED.
00528 *Otherwise, the
00529 *implementation is
00530 *able to accommodate
00531 * the requested query
00532 *behavior associated
00533 *with ALL table
00534 *entries and the call
00535 *will succeed. In
00536 *either case,
00537 *however, the
00538 *implementation will
00539 * over-write the
00540 *entries in the
00541 *adjacency_table
00542 *argument with the
00543 *same values that
00544 *would be obtained in
00545 *a succeeding call to
00546 *iMesh_getAdjTable.
00547 ******************************************************************************/
00548
00549 void iMesh_setAdjTable( iMesh_Instance instance,
00550 /**< [in] iMesh instance handle */
00551 int* adjacency_table,
00552 /**< [in,out] Array representing adjacency table requested by
00553 application */
00554 int adjacency_table_size,
00555 /**< [in] Size of adj table array */
00556 int* err
00557 /**< [out] Returned Error status (see iBase_ErrorType) */
00558 );
00559
00560 /***************************************************************************/ /**
00561 * \ingroup EntitySets
00562 * \brief Get the
00563 *number of entities
00564 *of specified type in
00565 *the instance or set
00566 *
00567 * Get the number of
00568 *entities with the
00569 *specified type in
00570 *the instance or set.
00571 *If entity set handle
00572 *is root set, return
00573 *information for
00574 *instance, otherwise
00575 *for set. Value of
00576 *entity type must be
00577 *from the
00578 * iBase_EntityType
00579 *enumeration. If
00580 *iBase_ALL_TYPES is
00581 *specified, total
00582 *number of entities
00583 *(excluding entity
00584 *sets) is returned.
00585 ******************************************************************************/
00586
00587 void iMesh_getNumOfType( iMesh_Instance instance,
00588 /**< [in] iMesh instance handle */
00589 const iBase_EntitySetHandle entity_set_handle,
00590 /**< [in] Entity set being queried */
00591 const int entity_type,
00592 /**< [in] Type of entity requested */
00593 int* num_type,
00594 /**< [out] Pointer to number of entities, returned from function */
00595 int* err
00596 /**< [out] Returned Error status (see iBase_ErrorType) */
00597 );
00598
00599 /***************************************************************************/ /**
00600 * \ingroup EntitySets
00601 * \brief Get the
00602 *number of entities
00603 *of specified
00604 *topology in instance
00605 *or set
00606 *
00607 * Get the number of
00608 *entities with the
00609 *specified topology
00610 *in the instance or
00611 *set. If entity set
00612 *handle is root set,
00613 *return information
00614 *for instance,
00615 * otherwise for set.
00616 *Value of entity
00617 *topology must be
00618 *from the
00619 * iMesh_EntityTopology
00620 *enumeration. If
00621 *iMesh_ALL_TOPOLOGIES
00622 *is specified, total
00623 *number of entities
00624 *(excluding entity
00625 *sets) is returned.
00626 ******************************************************************************/
00627
00628 void iMesh_getNumOfTopo( iMesh_Instance instance,
00629 /**< [in] iMesh instance handle */
00630 const iBase_EntitySetHandle entity_set_handle,
00631 /**< [in] Entity set being queried */
00632 const int entity_topology,
00633 /**< [in] Topology of entity requested */
00634 int* num_topo,
00635 /**< [out] Pointer to number of entities, returned from function */
00636 int* err
00637 /**< [out] Returned Error status (see iBase_ErrorType) */
00638 );
00639
00640 /***************************************************************************/ /**
00641 * \ingroup
00642 *MeshModification
00643 * \brief Permit
00644 *implementation to
00645 *'optimize' the mesh
00646 *instance
00647 *
00648 * Its concievable
00649 *that after a series
00650 *of operations
00651 *modifying the mesh
00652 * instance, the
00653 *implementation's
00654 *internal
00655 *representation of
00656 *the mesh may include
00657 *data and tie up
00658 *memory resources
00659 *that could be
00660 *'optimized' away.
00661 * For example, if the
00662 *implementation only
00663 *marks removed
00664 *entities for
00665 *deletion but does
00666 *not actually free up
00667 *memory resources
00668 *associated those
00669 *entities, a call to
00670 *this function gives
00671 *the implementation
00672 *the 'ok' to go ahead
00673 *and free up such
00674 *memory.
00675 *
00676 * Depending on the
00677 *implementation as
00678 *well as the amount
00679 *and kind of changes
00680 * to the mesh that
00681 *have been made prior
00682 *to calling it, this
00683 *call may be very
00684 *expensive in time
00685 *complexity. On the
00686 *other hand, it is
00687 *also perfectly
00688 * acceptable that an
00689 *implementation
00690 *basically treat this
00691 *operation as a
00692 *no-op.
00693 *
00694 * In any event, any
00695 *entity, entity set,
00696 *iterator or tag
00697 *handle obtained
00698 *prior to calling
00699 *this method will may
00700 *be invalidated as a
00701 *result of this call.
00702 *In that case, the
00703 *caller must
00704 *re-acquire handles
00705 *after making this
00706 *call. A return
00707 *argument indicates
00708 *if handles have been
00709 *invalidated.
00710 ******************************************************************************/
00711
00712 void iMesh_optimize( iMesh_Instance instance,
00713 /**< [in] iMesh instance handle */
00714 int* handles_invalidated,
00715 /**< [out] Returned flag indicating if any handles the caller held
00716 before calling this function have been invalidated as a result of
00717 this call. A value of non-zero returned here indicates that any
00718 handles the caller had prior to this call must not be trusted and
00719 must be re-acquired by caller. */
00720 int* err
00721 /**< [out] Returned Error status (see iBase_ErrorType) */
00722 );
00723
00724 /***************************************************************************/ /**
00725 * \ingroup Entities
00726 * \brief Get
00727 *entities of specific
00728 *type and/or topology
00729 *in set or instance
00730 *
00731 * Get entities of
00732 *specific type and/or
00733 *topology in set or
00734 *instance. All
00735 * entities of a given
00736 *type or topology are
00737 *requested by
00738 *specifying
00739 * iBase_ALL_TOPOLOGIES
00740 *or iBase_ALL_TYPES,
00741 *respectively.
00742 *Specified type or
00743 *topology must be a
00744 *value in the
00745 *iBase_EntityType or
00746 *iBase_EntityTopology
00747 * enumeration,
00748 *respectively.
00749 ******************************************************************************/
00750
00751 void iMesh_getEntities( iMesh_Instance instance,
00752 /**< [in] iMesh instance handle */
00753 const iBase_EntitySetHandle entity_set_handle,
00754 /**< [in] Entity set being queried */
00755 const int entity_type,
00756 /**< [in] Type of entities being requested */
00757 const int entity_topology,
00758 /**< [in] Topology of entities being requested */
00759 iBase_EntityHandle** entity_handles,
00760 /**< [in,out] Pointer to array of entity handles returned \ref trio) */
00761 int* entity_handles_allocated,
00762 /**< [in,out] Pointer to allocated size of entity_handles array */
00763 int* entity_handles_size,
00764 /**< [out] Pointer to occupied size of entity_handles array */
00765 int* err
00766 /**< [out] Returned Error status (see iBase_ErrorType) */
00767 );
00768
00769 /***************************************************************************/ /**
00770 * \ingroup
00771 *VertexEntities
00772 * \brief Get
00773 *coordinates of
00774 *specified vertices
00775 *
00776 * Get coordinates of
00777 *specified vertices.
00778 *Coordinates are
00779 *returned in the
00780 *storage order
00781 *indicated by the
00782 *storage_order
00783 *argument.
00784 ******************************************************************************/
00785
00786 void iMesh_getVtxArrCoords( iMesh_Instance instance,
00787 /**< [in] iMesh instance handle */
00788 const iBase_EntityHandle* vertex_handles,
00789 /**< [in] Array of mesh vertex handles whose coordinates are being
00790 requested */
00791 const int vertex_handles_size,
00792 /**< [in] Number of vertices in vertex_handles array */
00793 const int storage_order,
00794 /**< [in] Requested storage order of returned coordinates
00795 (see iBase_StorageOrder) */
00796 double** coords,
00797 /**< [in,out] Pointer to array of coordinates returned from function
00798 \ref trio) */
00799 int* coords_allocated,
00800 /**< [in,out] Pointer to allocated size of coords array */
00801 int* coords_size,
00802 /**< [out] Pointer to occupied size of coords array */
00803 int* err
00804 /**< [out] Returned Error status (see iBase_ErrorType) */
00805 );
00806
00807 /***************************************************************************/ /**
00808 * \ingroup
00809 *EntityIterators
00810 * \brief Initialize
00811 *an array iterator
00812 *over specified
00813 *entity type,
00814 *topology, and size
00815 *
00816 * Initialize an array
00817 *iterator over
00818 *specified entity
00819 *type, topology, and
00820 * size, for a
00821 *specified set or
00822 *instance. Iterator
00823 *returned can be used
00824 * as input to
00825 *functions returning
00826 *entities for the
00827 *iterator. If all
00828 * entities of a
00829 *specified type
00830 *and/or topology are
00831 *to be iterated,
00832 * specify
00833 *iBase_ALL_TYPES or
00834 *iMesh_ALL_TOPOLOGIES,
00835 *respectively.
00836 * Specified type or
00837 *topology must be a
00838 *value in the
00839 *iBase_EntityType or
00840 * iMesh_EntityTopology
00841 *enumerations,
00842 *respectively.
00843 ******************************************************************************/
00844
00845 void iMesh_initEntArrIter( iMesh_Instance instance,
00846 /**< [in] iMesh instance handle */
00847 const iBase_EntitySetHandle entity_set_handle,
00848 /**< [in] Entity set being iterated */
00849 const int requested_entity_type,
00850 /**< [in] Type of entity to iterate */
00851 const int requested_entity_topology,
00852 /**< [in] Topology of entity to iterate */
00853 const int requested_array_size,
00854 /**< [in] Size of chunks of handles returned for each value of the
00855 iterator */
00856 const int resilient,
00857 /**< [in] If zero, return a non-resilient iterator.
00858 Otherwise, a resilient iterator (\ref resilient) */
00859 iBase_EntityArrIterator* entArr_iterator,
00860 /**< [out] Pointer to iterator returned from function */
00861 int* err
00862 /**< [out] Returned Error status (see iBase_ErrorType) */
00863 );
00864
00865 /***************************************************************************/ /**
00866 * \ingroup
00867 *EntityIterators
00868 * \brief Get
00869 *entities contained
00870 *in array iterator
00871 *and increment
00872 *iterator
00873 *
00874 * Get the entities
00875 *corresponding to an
00876 *array iterator (e.g.
00877 *dereference the
00878 *array iterator), and
00879 *increment the
00880 *iterator. The
00881 *dereferenced
00882 * value(s) are
00883 *returned in
00884 *entity_handles. If
00885 *the iterator is at
00886 *the end of the
00887 *iteration, the
00888 *dereferenced
00889 *value(s) are
00890 *undefined and
00891 * has_data will be
00892 *returned with a
00893 *value of zero.
00894 *Otherwise, has_data
00895 * will be returned
00896 *with a non-zero
00897 *value.
00898 ******************************************************************************/
00899
00900 void iMesh_getNextEntArrIter( iMesh_Instance instance,
00901 /**< [in] iMesh instance handle */
00902 iBase_EntityArrIterator entArr_iterator,
00903 /**< [in] Iterator being queried */
00904 iBase_EntityHandle** entity_handles,
00905 /**< [in,out] Pointer to array of entity handles contained in current
00906 value of iterator \ref trio) */
00907 int* entity_handles_allocated,
00908 /**< [in,out] Pointer to allocated size of entity_handles */
00909 int* entity_handles_size,
00910 /**< [out] Pointer to occupied size of entity_handles */
00911 int* has_data,
00912 /**< [out] Pointer to a flag indicating if the value(s) returned
00913 in entity_handles are valid. A non-zero value indicates the value(s)
00914 are valid. A zero value indicates the value(s) are NOT valid. */
00915 int* err
00916 /**< [out] Returned Error status (see iBase_ErrorType) */
00917 );
00918
00919 /***************************************************************************/ /**
00920 * \ingroup
00921 *EntityIterators
00922 * \brief Reset the
00923 *array iterator
00924 *
00925 ******************************************************************************/
00926
00927 void iMesh_resetEntArrIter( iMesh_Instance instance,
00928 /**< [in] iMesh instance handle */
00929 iBase_EntityArrIterator entArr_iterator,
00930 /**< [in] Iterator to reset */
00931 int* err
00932 /**< [out] Returned Error status (see iBase_ErrorType) */
00933 );
00934
00935 /***************************************************************************/ /**
00936 * \ingroup
00937 *EntityIterators
00938 * \brief Destroy the
00939 *specified array
00940 *iterator
00941 *
00942 ******************************************************************************/
00943
00944 void iMesh_endEntArrIter( iMesh_Instance instance,
00945 /**< [in] iMesh instance handle */
00946 iBase_EntityArrIterator entArr_iterator,
00947 /**< [in] Iterator which gets destroyed */
00948 int* err
00949 /**< [out] Returned Error status (see iBase_ErrorType) */
00950 );
00951
00952 /***************************************************************************/ /**
00953 * \ingroup Entities
00954 * \brief Get the
00955 *entity topology for
00956 *the specified
00957 *entities
00958 *
00959 * Get the entity
00960 *topology for the
00961 *specified entities.
00962 *Topologies returned
00963 *are values in the
00964 *iMesh_EntityTopology
00965 *enumeration.
00966 ******************************************************************************/
00967
00968 void iMesh_getEntArrTopo( iMesh_Instance instance,
00969 /**< [in] iMesh instance handle */
00970 const iBase_EntityHandle* entity_handles,
00971 /**< [in] Array of entity handles being queried */
00972 const int entity_handles_size,
00973 /**< [in] Number of entities in entity_handles array */
00974 int** topology,
00975 /**< [in,out] Pointer to array of entity topologies returned
00976 \ref trio) */
00977 int* topology_allocated,
00978 /**< [in,out] Pointer to allocated size of topology array */
00979 int* topology_size,
00980 /**< [out] Pointer to occupied size of topology array */
00981 int* err
00982 /**< [out] Returned Error status (see iBase_ErrorType) */
00983 );
00984
00985 /***************************************************************************/ /**
00986 * \ingroup Entities
00987 * \brief Get the
00988 *entity type for the
00989 *specified entities
00990 *
00991 * Get the entity type
00992 *for the specified
00993 *entities. Types
00994 * returned are values
00995 *in the
00996 *iBase_EntityType
00997 *enumeration.
00998 ******************************************************************************/
00999
01000 void iMesh_getEntArrType( iMesh_Instance instance,
01001 /**< [in] iMesh instance handle */
01002 const iBase_EntityHandle* entity_handles,
01003 /**< [in] Array of entity handles being queried */
01004 const int entity_handles_size,
01005 /**< [in] Number of entities in entity_handles array */
01006 int** type,
01007 /**< [in,out] Pointer to array of types returned from function
01008 \ref trio) */
01009 int* type_allocated,
01010 /**< [in,out] Pointer to allocated size of type array */
01011 int* type_size,
01012 /**< [out] Pointer to occupied size of type array */
01013 int* err
01014 /**< [out] Returned Error status (see iBase_ErrorType) */
01015 );
01016
01017 /***************************************************************************/ /**
01018 * \ingroup
01019 *Adjacencies \brief
01020 *Get entities of
01021 *specified type
01022 *adjacent to entities
01023 *
01024 * Get entities of
01025 *specified type
01026 *adjacent to
01027 *entities. Specified
01028 *type must be value
01029 *in the
01030 *iBase_EntityType
01031 *enumeration. \em
01032 *offset(i) is index
01033 *of first entity in
01034 *adjacentEntityHandles
01035 *array adjacent to
01036 * entity_handles[i].
01037 *More precisely, the
01038 *entities adjacent to
01039 *the ith entity in
01040 *entity_handles are
01041 *found in
01042 *adjacentEntityHandles
01043 * running from
01044 *offset[i] to
01045 *offset[i+1] - 1.
01046 *This implies that
01047 *the offset_size will
01048 *be
01049 *entity_handles_size
01050 *+ 1.
01051 *
01052 * Note 1: Because
01053 *'adjacent' as
01054 *defined by the iMesh
01055 *data model refers to
01056 *those entities that
01057 *bound another, the
01058 *entities being
01059 *queried here (in
01060 *entity_handles arg)
01061 *are NEVER ALSO
01062 *returned in
01063 * adjacentEntityHandles
01064 *even if the
01065 *entity_type_requested
01066 * matches the
01067 *entity type(s) in
01068 *entity_handles.
01069 ******************************************************************************/
01070
01071 void iMesh_getEntArrAdj( iMesh_Instance instance,
01072 /**< [in] iMesh instance handle */
01073 const iBase_EntityHandle* entity_handles,
01074 /**< [in] Array of entity handles being queried */
01075 const int entity_handles_size,
01076 /**< [in] Number of entities in entity_handles array */
01077 const int entity_type_requested,
01078 /**< [in] Type of adjacent entities requested */
01079 iBase_EntityHandle** adjacentEntityHandles,
01080 /**< [in,out] Pointer to array of adjacentEntityHandles \ref trio)
01081 returned from function. Note that the implicit INTERLEAVED storage
01082 order rule applies (see iBase_StorageOrder) */
01083 int* adjacentEntityHandles_allocated,
01084 /**< [in,out] Pointer to allocated size of adjacentEntityHandles array */
01085 int* adj_entity_handles_size,
01086 /**< [out] Pointer to occupied size of adjacentEntityHandles array */
01087 int** offset,
01088 /**< [in,out] Pointer to array of offsets returned from function
01089 \ref trio) */
01090 int* offset_allocated,
01091 /**< [in,out] Pointer to allocated size of offset array */
01092 int* offset_size,
01093 /**< [out] Pointer to occupied size of offset array */
01094 int* err
01095 /**< [out] Returned Error status (see iBase_ErrorType) */
01096 );
01097
01098 /***************************************************************************/ /**
01099 * \ingroup
01100 *Adjacencies \brief
01101 *Get "2nd order"
01102 *adjacencies to an
01103 *array of entities
01104 *
01105 * Get "2nd order"
01106 *adjacencies to an
01107 *array of entities,
01108 *that is, from each
01109 * entity, through
01110 *other entities of a
01111 *specified "bridge"
01112 *dimension, to other
01113 * entities of another
01114 *specified "to"
01115 *dimension. Note 1:
01116 *If the "bridge"
01117 *dimension is the
01118 *same as the "to"
01119 *dimension, the
01120 *output will be empty
01121 *(and an error code
01122 *of
01123 * iBase_INVALID_ARGUMENT
01124 *returned). If the
01125 *type of a particular
01126 * entity matches
01127 *the "bridge"
01128 *dimension, there
01129 *will be no entities
01130 * returned for
01131 *that input entity.
01132 *This is consistent
01133 *with the definition
01134 *of adjacencies and
01135 *the behavior of
01136 *iMesh first
01137 * adjacency calls.
01138 * Note 2: An entity
01139 *will never be
01140 *returned as a second
01141 *adjacency of itself,
01142 *on the grounds that
01143 *this is the most
01144 *likely expectation
01145 *of applications, and
01146 *that it is easier
01147 *for an application
01148 *to add the original
01149 *entity to the
01150 *returned data than
01151 *to find and remove
01152 *it. Note 3: The
01153 *entities adjacent to
01154 *the ith entity in
01155 *entity_handles are
01156 * found in
01157 *adj_entity_handles
01158 *running from
01159 *offset[i] to
01160 * offset[i+1] - 1.
01161 *This implies that
01162 *the offset_size will
01163 *be
01164 * entity_handles_size
01165 *+ 1.
01166 ******************************************************************************/
01167
01168 void iMesh_getEntArr2ndAdj( iMesh_Instance instance,
01169 /**< [in] iMesh instance handle */
01170 iBase_EntityHandle const* entity_handles,
01171 /**< [in] Entities from which adjacencies are requested */
01172 int entity_handles_size,
01173 /**< [in] Number of entities whose adjacencies are requested */
01174 int bridge_entity_type,
01175 /**< [in] Type of bridge entity for 2nd order adjacencies */
01176 int requested_entity_type,
01177 /**< [in] Type of adjacent entities returned */
01178 iBase_EntityHandle** adj_entity_handles,
01179 /**< [in,out] Adjacent entities. Note that the implicit INTERLEAVED
01180 storage order rule applies (see iBase_StorageOrder)
01181 \ref trio) */
01182 int* adj_entity_handles_allocated,
01183 /**< [in,out] Allocated size of returned array */
01184 int* adj_entity_handles_size,
01185 /**< [out] Occupied size of returned array */
01186 int** offset,
01187 /**< [in,out] Offset[i] is offset into adj_entity_handles of 2nd order
01188 adjacencies of ith entity in entity_handles \ref trio) */
01189 int* offset_allocated,
01190 /**< [in,out] Allocated size of offset array */
01191 int* offset_size,
01192 /**< [out] Occupied size of offset array */
01193 int* err
01194 /**< [out] Returned Error status (see iBase_ErrorType) */
01195 );
01196
01197 /***************************************************************************/ /**
01198 * \ingroup
01199 *Adjacencies \brief
01200 *Get indexed
01201 *representation of
01202 *mesh or subset of
01203 *mesh
01204 *
01205 * Given an entity set
01206 *and optionally a
01207 *type or topology,
01208 *return:
01209 * - The entities in
01210 *the set of the
01211 *specified type or
01212 *topology
01213 * - The entities
01214 *adjacent to those
01215 *entities with a
01216 *specified type, as a
01217 *list of unique
01218 *handles.
01219 * - For each entity
01220 *in the first list,
01221 *the adjacent
01222 *entities, specified
01223 *as indices into the
01224 *second list.
01225 *
01226 * Note 1: Because
01227 *'adjacent' as
01228 *defined by the iMesh
01229 *data model refers to
01230 *those entities that
01231 *bound another, the
01232 *entities being
01233 *queried here (in
01234 *entity_set_handle
01235 *arg) are NEVER ALSO
01236 *returned in
01237 * adj_entity_handles
01238 *even if the
01239 *entity_type_requested
01240 * matches the
01241 *entity type(s) in
01242 *entity_set_handle.
01243 * Note 2: The
01244 *entities adjacent to
01245 *the ith entity in
01246 *entity_handles are
01247 * found in
01248 *adj_entity_handles
01249 *running from
01250 *offset[i] to
01251 * offset[i+1]
01252 *- 1. This implies
01253 *that the offset_size
01254 *will be
01255 *entity_handles_size
01256 *+ 1. Note 3: This
01257 *function will fail
01258 *and return an error
01259 *if the caller passes
01260 * a
01261 *combination of
01262 *entity_type and
01263 *entity_topology that
01264 *are not consistent.
01265 ******************************************************************************/
01266
01267 void iMesh_getAdjEntIndices( iMesh_Instance instance,
01268 /**< [in] iMesh instance handle */
01269 iBase_EntitySetHandle entity_set_handle,
01270 /**< [in] The set of entities from which to query */
01271 int entity_type_requester,
01272 /**< [in] If not iBase_ALL_TYPES, act only on the subset of entities
01273 contained in entity_set_handle of the specified type. */
01274 int entity_topology_requester,
01275 /**< [in] If not iMesh_ALL_TOPOLOGIES, act only on the subset of
01276 entities contained in entity_set_handle of specified topology. */
01277 int entity_type_requested,
01278 /**< [in] The type of the adjacent entities to return */
01279 iBase_EntityHandle** entity_handles,
01280 /**< [in,out] The handles of the (non-struct) subset of the entities
01281 contained in entity_set_handle indicated by the optional type and
01282 topology filtering arguments. \ref trio) */
01283 int* entity_handles_allocated,
01284 /**< [in,out] Allocated size of entity_handles array */
01285 int* entity_handles_size,
01286 /**< [out] Occupied size of entity_handles array */
01287 iBase_EntityHandle** adj_entity_handles,
01288 /**< [in,out] The union of the unique entities of type
01289 requested_entity_type adjacent to each entity in entity_handles.
01290 Note that the implicit INTERLEAVED storage order rule
01291 applies (see iBase_StorageOrder) \ref trio) */
01292 int* adj_entity_handles_allocated,
01293 /**< [in,out] Allocated size of adj_entity_handles array */
01294 int* adj_entity_handles_size,
01295 /**< [out] Occupied size of adj_entity_handles array */
01296 int** adj_entity_indices,
01297 /**< [in,out] For each entity in entity_handles, the adjacent
01298 entities of type entity_type_requested, specified as indices into
01299 adj_entity_handles. The values are concatenated into a single
01300 array in the order of the entity handles in entity_handles.
01301 \ref trio) */
01302 int* adj_entity_indices_allocated,
01303 /**< [in,out] Allocated size of adj_entity_indices array */
01304 int* adj_entity_indices_size,
01305 /**< [out] Occupied size of adj_entity_indices array */
01306 int** offset,
01307 /**< [in,out] For each entity in the corresponding position in
01308 entity_handles, the position in adj_entity_indices at which
01309 values for that entity are stored \ref trio) */
01310 int* offset_allocated,
01311 /**< [in,out] Allocated size of offset array */
01312 int* offset_size,
01313 /**< [out] Occipied size of offset array */
01314 int* err
01315 /**< [out] Returned Error status (see iBase_ErrorType) */
01316 );
01317
01318 /***************************************************************************/ /**
01319 * \ingroup EntitySets
01320 * \brief Create an
01321 *entity set
01322 *
01323 * Create an entity
01324 *set, either ordered
01325 *(isList=1) or
01326 *unordered
01327 *(isList=0).
01328 * Unordered entity
01329 *sets can contain a
01330 *given entity or set
01331 *only once.
01332 *
01333 * An entity set in
01334 *iMesh supports
01335 *managing its
01336 *contained members in
01337 *one of two modes.
01338 *When an entitiy set
01339 *is first created,
01340 *the caller is
01341 *required to indicate
01342 *which mode of
01343 *membership the set
01344 *will support. The
01345 *two modes that are
01346 *supported are a)
01347 *order-preserving
01348 *(isList=1) or b)
01349 *duplicate-preventing
01350 *(isList=0).
01351 *
01352 * For
01353 *order-preserving
01354 *membership, the
01355 *implementation will
01356 *permit duplicate
01357 * entities. However,
01358 *the implementation
01359 *will guarantee that
01360 *the order in which
01361 * entities are added
01362 *to the set will be
01363 *the same as the
01364 *order in which they
01365 *are queried by the
01366 *various methods that
01367 *return the entities
01368 *of a set. This order
01369 * preserving
01370 *guarantee holds
01371 *across removals.
01372 *However, it does not
01373 *hold across removals
01374 *followed by
01375 *re-additions of the
01376 *previously removed
01377 *entities. This kind
01378 *of an entity set
01379 *behaves like an STL
01380 *vector or STL list
01381 *and is created by
01382 *setting isList=1
01383 *when creating an
01384 *entity set.
01385 *
01386 * For
01387 *duplicate-preventing
01388 *membership, the
01389 *implementation will
01390 *guarantee that
01391 * duplicate entities
01392 *are prevented. Any
01393 *attempts to add
01394 *duplicate entities
01395 *to such a set will
01396 *be detected,
01397 *prevented and
01398 *silently ignored by
01399 *the implementation.
01400 *This kind of entity
01401 *set behaves like an
01402 *STL set and is
01403 *created by setting
01404 *isList=0 when
01405 *creating an entity
01406 *set.
01407 *
01408 * Finally, all of the
01409 *above comments apply
01410 *only to entity
01411 *members of an entity
01412 * set and do not
01413 *apply to the entity
01414 *set members.
01415 *Order-preserving and
01416 * duplicate
01417 *preventing behavior
01418 *for entity set
01419 *members is
01420 *unspecified. Each
01421 * implementation may
01422 *behave differently
01423 *for entity set
01424 *members. This design
01425 *was chosen because
01426 *we could not
01427 *identify any use
01428 *cases where
01429 * order-preserving
01430 *behavior for set
01431 *members was
01432 *necessary. However,
01433 *if users encounter
01434 *situations where
01435 *such behavior is
01436 *desirable or
01437 *necessary, then the
01438 *ITAPS development
01439 *team can certainly
01440 *consider adjusting
01441 *the interface
01442 * specification to
01443 *support it.
01444 ******************************************************************************/
01445
01446 void iMesh_createEntSet( iMesh_Instance instance,
01447 /**< [in] iMesh instance handle */
01448 const int isList,
01449 /**< [in] If non-zero, an ordered list is created, otherwise an
01450 unordered set is created. */
01451 iBase_EntitySetHandle* entity_set_created,
01452 /**< [out] Entity set created by function */
01453 int* err
01454 /**< [out] Returned Error status (see iBase_ErrorType) */
01455 );
01456
01457 /***************************************************************************/ /**
01458 * \ingroup EntitySets
01459 * \brief Destroy an
01460 *entity set
01461 *
01462 ******************************************************************************/
01463
01464 void iMesh_destroyEntSet( iMesh_Instance instance,
01465 /**< [in] iMesh instance handle */
01466 iBase_EntitySetHandle entity_set,
01467 /**< [in] Entity set to be destroyed */
01468 int* err
01469 /**< [out] Returned Error status (see iBase_ErrorType) */
01470 );
01471
01472 /***************************************************************************/ /**
01473 * \ingroup EntitySets
01474 * \brief Return
01475 *whether a specified
01476 *set is ordered or
01477 *unordered
01478 *
01479 * Return whether a
01480 *specified set is
01481 *ordered (*is_list=1)
01482 *or unordered
01483 *(*is_list=0)
01484 ******************************************************************************/
01485
01486 void iMesh_isList( iMesh_Instance instance,
01487 /**< [in] iMesh instance handle */
01488 const iBase_EntitySetHandle entity_set,
01489 /**< [in] Entity set being queried */
01490 int* is_list,
01491 /**< [out] Pointer to flag returned from function */
01492 int* err
01493 /**< [out] Returned Error status (see iBase_ErrorType) */
01494 );
01495
01496 /***************************************************************************/ /**
01497 * \ingroup EntitySets
01498 * \brief Get the
01499 *number of entity
01500 *sets contained in a
01501 *set or interface
01502 *
01503 * Get the number of
01504 *entity sets
01505 *contained in a set
01506 *or interface.
01507 ******************************************************************************/
01508
01509 void iMesh_getNumEntSets( iMesh_Instance instance,
01510 /**< [in] iMesh instance handle */
01511 const iBase_EntitySetHandle entity_set_handle,
01512 /**< [in] Entity set being queried */
01513 const int num_hops,
01514 /**< [in] Maximum hops from entity_set_handle to contained set, not
01515 inclusive of the contained set. \ref numhops) */
01516 int* num_sets,
01517 /**< [out] Pointer to the number of sets returned from function */
01518 int* err
01519 /**< [out] Returned Error status (see iBase_ErrorType) */
01520 );
01521
01522 /***************************************************************************/ /**
01523 * \ingroup EntitySets
01524 * \brief Get the
01525 *entity sets
01526 *contained in a set
01527 *or interface
01528 *
01529 * Get the entity sets
01530 *contained in a set
01531 *or interface.
01532 ******************************************************************************/
01533
01534 void iMesh_getEntSets( iMesh_Instance instance,
01535 /**< [in] iMesh instance handle */
01536 const iBase_EntitySetHandle entity_set_handle,
01537 /**< [in] Entity set being queried */
01538 const int num_hops,
01539 /**< [in] Maximum hops from entity_set_handle to contained set, not
01540 inclusive of the contained set \ref numhops) */
01541 iBase_EntitySetHandle** contained_set_handles,
01542 /**< [in,out] Pointer to array of set handles returned \ref trio) */
01543 int* contained_set_handles_allocated,
01544 /**< [in,out] Pointer to allocated length of */
01545 int* contained_set_handles_size,
01546 /**< [out] Pointer to occupied length of */
01547 int* err
01548 /**< [out] Returned Error status (see iBase_ErrorType) */
01549 );
01550
01551 /***************************************************************************/ /**
01552 * \ingroup EntitySets
01553 * \brief Add an
01554 *entity to a set
01555 *
01556 ******************************************************************************/
01557
01558 void iMesh_addEntToSet( iMesh_Instance instance,
01559 /**< [in] iMesh instance handle */
01560 iBase_EntityHandle entity_handle,
01561 /**< [in] The entity being added */
01562 iBase_EntitySetHandle entity_set,
01563 /**< [in] Pointer to the set being added to */
01564 int* err
01565 /**< [out] Returned Error status (see iBase_ErrorType) */
01566 );
01567
01568 /***************************************************************************/ /**
01569 * \ingroup EntitySets
01570 * \brief Remove an
01571 *entity from a set
01572 *
01573 ******************************************************************************/
01574
01575 void iMesh_rmvEntFromSet( iMesh_Instance instance,
01576 /**< [in] iMesh instance handle */
01577 iBase_EntityHandle entity_handle,
01578 /**< [in] The entity being removed */
01579 iBase_EntitySetHandle entity_set,
01580 /**< [in] Pointer to the set being removed from */
01581 int* err
01582 /**< [out] Returned Error status (see iBase_ErrorType) */
01583 );
01584
01585 /***************************************************************************/ /**
01586 * \ingroup EntitySets
01587 * \brief Add an
01588 *array of entities to
01589 *a set
01590 *
01591 ******************************************************************************/
01592
01593 void iMesh_addEntArrToSet( iMesh_Instance instance,
01594 /**< [in] iMesh instance handle */
01595 const iBase_EntityHandle* entity_handles,
01596 /**< [in] Array of entities being added */
01597 int entity_handles_size,
01598 /**< [in] Number of entities in entity_handles array */
01599 iBase_EntitySetHandle entity_set,
01600 /**< [in] Pointer to the set being added to */
01601 int* err
01602 /**< [out] Returned Error status (see iBase_ErrorType) */
01603 );
01604
01605 /***************************************************************************/ /**
01606 * \ingroup EntitySets
01607 * \brief Remove an
01608 *array of entities
01609 *from a set
01610 *
01611 ******************************************************************************/
01612
01613 void iMesh_rmvEntArrFromSet( iMesh_Instance instance,
01614 /**< [in] iMesh instance handle */
01615 const iBase_EntityHandle* entity_handles,
01616 /**< [in] Array of entities being remove */
01617 int entity_handles_size,
01618 /**< [in] Number of entities in entity_handles array */
01619 iBase_EntitySetHandle entity_set,
01620 /**< [in] Pointer to the set being removed from */
01621 int* err
01622 /**< [out] Returned Error status (see iBase_ErrorType) */
01623 );
01624
01625 /***************************************************************************/ /**
01626 * \ingroup EntitySets
01627 * \brief Add an
01628 *entity set to a set
01629 *
01630 * Add an entity set
01631 *to a set (\ref
01632 *cycles)
01633 ******************************************************************************/
01634
01635 void iMesh_addEntSet( iMesh_Instance instance,
01636 /**< [in] iMesh instance handle */
01637 iBase_EntitySetHandle entity_set_to_add,
01638 /**< [in] The entity set being added */
01639 iBase_EntitySetHandle entity_set_handle,
01640 /**< [in] Pointer to the set being added to */
01641 int* err
01642 /**< [out] Returned Error status (see iBase_ErrorType) */
01643 );
01644
01645 /***************************************************************************/ /**
01646 * \ingroup EntitySets
01647 * \brief Remove an
01648 *entity set from a
01649 *set
01650 *
01651 * Remove an entity
01652 *set from a set
01653 ******************************************************************************/
01654
01655 void iMesh_rmvEntSet( iMesh_Instance instance,
01656 /**< [in] iMesh instance handle */
01657 iBase_EntitySetHandle entity_set_to_remove,
01658 /**< [in] The entity set being removed */
01659 iBase_EntitySetHandle entity_set_handle,
01660 /**< [in] Pointer to the set being removed from */
01661 int* err
01662 /**< [out] Returned Error status (see iBase_ErrorType) */
01663 );
01664
01665 /***************************************************************************/ /**
01666 * \ingroup EntitySets
01667 * \brief Return
01668 *whether an entity is
01669 *contained in another
01670 *set
01671 *
01672 * Return whether an
01673 *entity is contained
01674 *(*is_contained=1) or
01675 *not contained
01676 *(*is_contained=0) in
01677 *another set
01678 ******************************************************************************/
01679
01680 void iMesh_isEntContained( iMesh_Instance instance,
01681 /**< [in] iMesh instance handle */
01682 iBase_EntitySetHandle containing_entity_set,
01683 /**< [in] Entity set being queried */
01684 iBase_EntityHandle contained_entity,
01685 /**< [in] Entity potentially contained in containing_entity_set */
01686 int* is_contained,
01687 /**< [out] Pointer to flag returned from function */
01688 int* err
01689 /**< [out] Returned Error status (see iBase_ErrorType) */
01690 );
01691
01692 /***************************************************************************/ /**
01693 * \ingroup EntitySets
01694 * \brief Return
01695 *whether entities are
01696 *contained in a set
01697 *
01698 ******************************************************************************/
01699
01700 void iMesh_isEntArrContained( iMesh_Instance instance,
01701 /**< [in] iMesh instance handle */
01702 iBase_EntitySetHandle containing_entity_set,
01703 /**< [in] Entity set being queried */
01704 const iBase_EntityHandle* entity_handles,
01705 /**< [in] List of entities for which to check containment. */
01706 int num_entity_handles,
01707 /**< [in] Size of entity_handles array of entities to be checked. */
01708 int** is_contained,
01709 /**< [in,out] One value for each input entity, 1 if contained in set,
01710 zero otherwise. \ref trio) */
01711 int* is_contained_allocated,
01712 /**< [in,out] Allocated size of is_contained array */
01713 int* is_contained_size,
01714 /**< [out] Occupied size of is_contained array */
01715 int* err
01716 /**< [out] Returned Error status (see iBase_ErrorType) */
01717 );
01718
01719 /***************************************************************************/ /**
01720 * \ingroup EntitySets
01721 * \brief Return
01722 *whether an entity
01723 *set is contained in
01724 *another set
01725 *
01726 * Return whether a
01727 *set is contained
01728 *(*is_contained=1) or
01729 *not contained
01730 * (*is_contained=0)
01731 *in another set
01732 ******************************************************************************/
01733
01734 void iMesh_isEntSetContained( iMesh_Instance instance,
01735 /**< [in] iMesh instance handle */
01736 const iBase_EntitySetHandle containing_entity_set,
01737 /**< [in] Entity set being queried */
01738 const iBase_EntitySetHandle contained_entity_set,
01739 /**< [in] Entity set potentially contained in containing_entity_set */
01740 int* is_contained,
01741 /**< [out] Pointer to flag returned from function */
01742 int* err
01743 /**< [out] Returned Error status (see iBase_ErrorType) */
01744 );
01745
01746 /***************************************************************************/ /**
01747 * \ingroup
01748 *ParentChildLinks
01749 * \brief Add
01750 *parent/child links
01751 *between two sets
01752 *
01753 * Add parent/child
01754 *links between two
01755 *sets. Makes parent
01756 *point to child and
01757 *child point to
01758 *parent. (\ref
01759 *cycles)
01760 ******************************************************************************/
01761
01762 void iMesh_addPrntChld( iMesh_Instance instance,
01763 /**< [in] iMesh instance handle */
01764 iBase_EntitySetHandle parent_entity_set,
01765 /**< [in] Pointer to parent set */
01766 iBase_EntitySetHandle child_entity_set,
01767 /**< [in] Pointer to child set */
01768 int* err
01769 /**< [out] Returned Error status (see iBase_ErrorType) */
01770 );
01771
01772 /***************************************************************************/ /**
01773 * \ingroup
01774 *ParentChildLinks
01775 * \brief Remove
01776 *parent/child links
01777 *between two sets
01778 *
01779 * Remove parent/child
01780 *links between two
01781 *sets.
01782 ******************************************************************************/
01783
01784 void iMesh_rmvPrntChld( iMesh_Instance instance,
01785 /**< [in] iMesh instance handle */
01786 iBase_EntitySetHandle parent_entity_set,
01787 /**< [in] Pointer to parent set */
01788 iBase_EntitySetHandle child_entity_set,
01789 /**< [in] Pointer to child set */
01790 int* err
01791 /**< [out] Returned Error status (see iBase_ErrorType) */
01792 );
01793
01794 /***************************************************************************/ /**
01795 * \ingroup
01796 *ParentChildLinks
01797 * \brief Return
01798 *whether two sets are
01799 *related by
01800 *parent/child links
01801 *
01802 * Return whether two
01803 *sets are related
01804 *(*is_child=1) or not
01805 *(*is_child=0) by
01806 *parent/child links
01807 ******************************************************************************/
01808
01809 void iMesh_isChildOf( iMesh_Instance instance,
01810 /**< [in] iMesh instance handle */
01811 const iBase_EntitySetHandle parent_entity_set,
01812 /**< [in] Pointer to parent set */
01813 const iBase_EntitySetHandle child_entity_set,
01814 /**< [in] Pointer to child set */
01815 int* is_child,
01816 /**< [out] Pointer to flag returned from function */
01817 int* err
01818 /**< [out] Returned Error status (see iBase_ErrorType) */
01819 );
01820
01821 /***************************************************************************/ /**
01822 * \ingroup
01823 *ParentChildLinks
01824 * \brief Get the
01825 *number of child sets
01826 *linked from a
01827 *specified set
01828 *
01829 * Get the number of
01830 *child sets linked
01831 *from a specified
01832 *set.
01833 ******************************************************************************/
01834
01835 void iMesh_getNumChld( iMesh_Instance instance,
01836 /**< [in] iMesh instance handle */
01837 const iBase_EntitySetHandle entity_set,
01838 /**< [in] Entity set being queried */
01839 const int num_hops,
01840 /**< [in] Maximum hops from entity_set_handle to child set, not
01841 inclusive of the child set. \ref numhops) */
01842 int* num_child,
01843 /**< [out] Pointer to number of children returned from function */
01844 int* err
01845 /**< [out] Returned Error status (see iBase_ErrorType) */
01846 );
01847
01848 /***************************************************************************/ /**
01849 * \ingroup
01850 *ParentChildLinks
01851 * \brief Get the
01852 *number of parent
01853 *sets linked from a
01854 *specified set
01855 *
01856 * Get the number of
01857 *parent sets linked
01858 *from a specified
01859 *set.
01860 ******************************************************************************/
01861
01862 void iMesh_getNumPrnt( iMesh_Instance instance,
01863 /**< [in] iMesh instance handle */
01864 const iBase_EntitySetHandle entity_set,
01865 /**< [in] Entity set being queried */
01866 const int num_hops,
01867 /**< [in] Maximum hops from entity_set_handle to parent set, not
01868 inclusive of the parent set. \ref numhops) */
01869 int* num_parent,
01870 /**< [out] Pointer to number of parents returned from function */
01871 int* err
01872 /**< [out] Returned Error status (see iBase_ErrorType) */
01873 );
01874
01875 /***************************************************************************/ /**
01876 * \ingroup
01877 *ParentChildLinks
01878 * \brief Get the
01879 *child sets linked
01880 *from a specified set
01881 *
01882 * Get the child sets
01883 *linked from a
01884 *specified set.
01885 ******************************************************************************/
01886
01887 void iMesh_getChldn( iMesh_Instance instance,
01888 /**< [in] iMesh instance handle */
01889 const iBase_EntitySetHandle from_entity_set,
01890 /**< [in] Entity set being queried */
01891 const int num_hops,
01892 /**< [in] Maximum hops from entity_set_handle to child set,
01893 \ref numhops) */
01894 iBase_EntitySetHandle** entity_set_handles,
01895 /**< [in,out] Pointer to array of child sets \ref trio) */
01896 int* entity_set_handles_allocated,
01897 /**< [in,out] Pointer to allocated size of */
01898 int* entity_set_handles_size,
01899 /**< [out] Pointer to occupied size of */
01900 int* err
01901 /**< [out] Returned Error status (see iBase_ErrorType) */
01902 );
01903
01904 /***************************************************************************/ /**
01905 * \ingroup
01906 *ParentChildLinks
01907 * \brief Get the
01908 *parent sets linked
01909 *from a specified set
01910 *
01911 * Get the parent sets
01912 *linked from a
01913 *specified set.
01914 ******************************************************************************/
01915
01916 void iMesh_getPrnts( iMesh_Instance instance,
01917 /**< [in] iMesh instance handle */
01918 const iBase_EntitySetHandle from_entity_set,
01919 /**< [in] Entity set being queried */
01920 const int num_hops,
01921 /**< [in] Maximum hops from entity_set_handle to parent set,
01922 \ref numhops) */
01923 iBase_EntitySetHandle** entity_set_handles,
01924 /**< [in,out] Pointer to array of parent sets \ref trio) */
01925 int* entity_set_handles_allocated,
01926 /**< [in,out] Pointer to allocated size of */
01927 int* entity_set_handles_size,
01928 /**< [out] Pointer to occupied size of */
01929 int* err
01930 /**< [out] Returned Error status (see iBase_ErrorType) */
01931 );
01932
01933 /***************************************************************************/ /**
01934 * \ingroup
01935 *VertexEntities
01936 * \brief Set
01937 *coordinates for an
01938 *array of vertices
01939 *
01940 * Set coordinates for
01941 *an array of
01942 *vertices. Specified
01943 *storage order must
01944 *be either
01945 *iBase_INTERLEAVED or
01946 *iBase_BLOCKED, and
01947 * indicates order of
01948 *x, y, and z
01949 *coordinates in
01950 *coordinate array.
01951 ******************************************************************************/
01952
01953 void iMesh_setVtxArrCoords( iMesh_Instance instance,
01954 /**< [in] iMesh instance handle */
01955 const iBase_EntityHandle* vertex_handles,
01956 /**< [in] Array of vertex handles */
01957 const int vertex_handles_size,
01958 /**< [in] Number of vertex handles in array */
01959 const int storage_order,
01960 /**< [in] Storage order of coordinates in coordinate array */
01961 const double* new_coords,
01962 /**< [in] Coordinate array */
01963 const int new_coords_size,
01964 /**< [in] Size of coordinate array; should be */
01965 int* err
01966 /**< [out] Returned Error status (see iBase_ErrorType) */
01967 );
01968
01969 /***************************************************************************/ /**
01970 * \ingroup
01971 *VertexEntities
01972 * \brief Create an
01973 *array of new
01974 *vertices at
01975 *specified
01976 *coordinates
01977 *
01978 * Create an array of
01979 *new vertices at
01980 *specified
01981 *coordinates. Value
01982 *of storage_order
01983 *must be either
01984 *iBase_INTERLEAVED or
01985 *iBase_BLOCKED.
01986 ******************************************************************************/
01987
01988 void iMesh_createVtxArr( iMesh_Instance instance,
01989 /**< [in] iMesh instance handle */
01990 const int num_verts,
01991 /**< [in] Number of new vertices to be created */
01992 const int storage_order,
01993 /**< [in] Storage order of coordinates in new_coords array
01994 (see iBase_StorageOrder) */
01995 const double* new_coords,
01996 /**< [in] Array of coordinates of new vertices. Should be G*num_verts
01997 in length where G is geometric dimension of the mesh. */
01998 const int new_coords_size,
01999 /**< [in] Number of coordinates in new_coords array, should */
02000 iBase_EntityHandle** new_vertex_handles,
02001 /**< [in,out] Pointer to array of new vertex handles \ref trio) */
02002 int* new_vertex_handles_allocated,
02003 /**< [in,out] Pointer to allocated size of */
02004 int* new_vertex_handles_size,
02005 /**< [out] Pointer to occupied size of */
02006 int* err
02007 /**< [out] Returned Error status (see iBase_ErrorType) */
02008 );
02009
02010 /***************************************************************************/ /**
02011 * \ingroup Entities
02012 * \brief Create an
02013 *array of new
02014 *entities with
02015 *specified
02016 *lower-order topology
02017 *
02018 * Create an array of
02019 *new entities with
02020 *specified
02021 *lower-order
02022 *topology. Specified
02023 *new_entity_topology
02024 *must be value in
02025 *iMesh_EntityTopology
02026 * enumeration. Values
02027 *return in status
02028 *array must be values
02029 *in the
02030 * iBase_CreationStatus
02031 *enumeration.
02032 ******************************************************************************/
02033
02034 void iMesh_createEntArr( iMesh_Instance instance,
02035 /**< [in] iMesh instance handle */
02036 const int new_entity_topology,
02037 /**< [in] Topology of created entity */
02038 const iBase_EntityHandle* lower_order_entity_handles,
02039 /**< [in] Array of lower order entity handles to be used to construct
02040 new entities */
02041 const int lower_order_entity_handles_size,
02042 /**< [in] Number of entities in lower_order_entity_handles array */
02043 iBase_EntityHandle** new_entity_handles,
02044 /**< [in,out] Pointer to array of new_entity_handles
02045 \ref trio) */
02046 int* new_entity_handles_allocated,
02047 /**< [in,out] Pointer to allocated size of */
02048 int* new_entity_handles_size,
02049 /**< [out] Pointer to occupied size of */
02050 int** status,
02051 /**< [in,out] Pointer to array of creation status returned from
02052 \ref trio) (see iBase_CreationStatus) */
02053 int* status_allocated,
02054 /**< [in,out] Pointer to allocated size of status array */
02055 int* status_size,
02056 /**< [out] Pointer to occupied size of status array */
02057 int* err
02058 /**< [out] Returned Error status (see iBase_ErrorType) */
02059 );
02060
02061 /***************************************************************************/ /**
02062 * \ingroup Entities
02063 * \brief Delete
02064 *specified entities
02065 *
02066 * Delete specified
02067 *entities
02068 ******************************************************************************/
02069
02070 void iMesh_deleteEntArr( iMesh_Instance instance,
02071 /**< [in] iMesh instance handle */
02072 const iBase_EntityHandle* entity_handles,
02073 /**< [in] Array of entity handles to be deleted */
02074 const int entity_handles_size,
02075 /**< [in] Number of entities in array to be deleted */
02076 int* err
02077 /**< [out] Returned Error status (see iBase_ErrorType) */
02078 );
02079
02080 /***************************************************************************/ /**
02081 * \ingroup Tags
02082 * \brief Create a
02083 *tag with specified
02084 *name, size, and type
02085 *
02086 * Create a tag with
02087 *specified name,
02088 *size, and type. Tag
02089 *size is in units of
02090 *size of tag_type
02091 *data types. Value
02092 *input for tag type
02093 *must be value in
02094 *iBase_TagType
02095 *enumeration.
02096 ******************************************************************************/
02097
02098 void iMesh_createTag( iMesh_Instance instance,
02099 /**< [in] iMesh instance handle */
02100 const char* tag_name,
02101 /**< [in] Character string indicating tag name */
02102 const int tag_size,
02103 /**< [in] Size of each tag value, in units of number of
02104 tag_type datums. */
02105 const int tag_type,
02106 /**< [in] Data type for data stored in this tag */
02107 iBase_TagHandle* tag_handle,
02108 /**< [out] Pointer to tag handle returned from function */
02109 int* err,
02110 /**< [out] Returned Error status (see iBase_ErrorType) */
02111 const int tag_name_len
02112 /**< [in] Length of tag name string (\ref strlen) */
02113 );
02114
02115 /***************************************************************************/ /**
02116 * \ingroup Tags
02117 * \brief Destroy a
02118 *tag
02119 *
02120 * Destroy a tag. If
02121 *forced is non-zero
02122 *and entities still
02123 *have values set for
02124 *this tag, tag is
02125 *deleted anyway and
02126 *those values
02127 *disappear, otherwise
02128 *tag is not deleted.
02129 ******************************************************************************/
02130
02131 void iMesh_destroyTag( iMesh_Instance instance,
02132 /**< [in] iMesh instance handle */
02133 iBase_TagHandle tag_handle,
02134 /**< [in] Handle of tag to be deleted */
02135 const int forced,
02136 /**< [in] If non-zero, delete the tag even if entities have values set
02137 for the tag. */
02138 int* err
02139 /**< [out] Returned Error status (see iBase_ErrorType) */
02140 );
02141
02142 /***************************************************************************/ /**
02143 * \ingroup Tags
02144 * \brief Get the
02145 *name for a given tag
02146 *handle
02147 *
02148 * Get the name for a
02149 *given tag handle
02150 ******************************************************************************/
02151
02152 void iMesh_getTagName( iMesh_Instance instance,
02153 /**< [in] iMesh instance handle */
02154 const iBase_TagHandle tag_handle,
02155 /**< [in] Tag handle being queried */
02156 char* name,
02157 /**< [in,out] Pointer to character string to store name returned from */
02158 int* err,
02159 /**< [out] Returned Error status (see iBase_ErrorType) */
02160 int name_len
02161 /**< [in] Length of character string input to function
02162 (\ref strlen) */
02163 );
02164
02165 /***************************************************************************/ /**
02166 * \ingroup Tags
02167 * \brief Get size of
02168 *a tag in units of
02169 *numbers of tag data
02170 *type
02171 *
02172 * Get size of a tag
02173 *in units of numbers
02174 *of tag data type
02175 ******************************************************************************/
02176
02177 void iMesh_getTagSizeValues( iMesh_Instance instance,
02178 /**< [in] iMesh instance handle */
02179 const iBase_TagHandle tag_handle,
02180 /**< [in] Handle of tag being queried */
02181 int* tag_size,
02182 /**< [out] Pointer to tag size returned from function */
02183 int* err
02184 /**< [out] Returned Error status (see iBase_ErrorType) */
02185 );
02186
02187 /***************************************************************************/ /**
02188 * \ingroup Tags
02189 * \brief Get size of
02190 *a tag in units of
02191 *bytes
02192 *
02193 * Get size of a tag
02194 *in units of bytes
02195 ******************************************************************************/
02196
02197 void iMesh_getTagSizeBytes( iMesh_Instance instance,
02198 /**< [in] iMesh instance handle */
02199 const iBase_TagHandle tag_handle,
02200 /**< [in] Handle of tag being queried */
02201 int* tag_size,
02202 /**< [out] Pointer to tag size returned from function */
02203 int* err
02204 /**< [out] Returned Error status (see iBase_ErrorType) */
02205 );
02206
02207 /***************************************************************************/ /**
02208 * \ingroup Tags
02209 * \brief Get a the
02210 *handle of an
02211 *existing tag with
02212 *the specified name
02213 *
02214 * Get a the handle of
02215 *an existing tag with
02216 *the specified name
02217 ******************************************************************************/
02218
02219 void iMesh_getTagHandle( iMesh_Instance instance,
02220 /**< [in] iMesh instance handle */
02221 const char* tag_name,
02222 /**< [in] Name of tag being queried */
02223 iBase_TagHandle* tag_handle,
02224 /**< [out] Pointer to tag handle returned from function */
02225 int* err,
02226 /**< [out] Returned Error status (see iBase_ErrorType) */
02227 int tag_name_len
02228 /**< [in] Length of tag name string (\ref strlen) */
02229 );
02230
02231 /***************************************************************************/ /**
02232 * \ingroup Tags
02233 * \brief Get the
02234 *data type of the
02235 *specified tag handle
02236 *
02237 * Get the data type
02238 *of the specified tag
02239 *handle. Tag type is
02240 *a value in the
02241 *iBase_TagType
02242 *enumeration.
02243 ******************************************************************************/
02244
02245 void iMesh_getTagType( iMesh_Instance instance,
02246 /**< [in] iMesh instance handle */
02247 const iBase_TagHandle tag_handle,
02248 /**< [in] Handle for the tag being queried */
02249 int* tag_type,
02250 /**< [out] Pointer to tag type returned from function */
02251 int* err
02252 /**< [out] Returned Error status (see iBase_ErrorType) */
02253 );
02254
02255 /***************************************************************************/ /**
02256 * \ingroup TagsOnSets
02257 * \brief Set a tag
02258 *value of arbitrary
02259 *type on an entity
02260 *set
02261 *
02262 * Set a tag value of
02263 *arbitrary type on an
02264 *entity set. The tag
02265 *data is passed as
02266 *void*.
02267 *tag_value_size
02268 *specifies the size
02269 *of the memory
02270 * pointed to by
02271 *tag_value in terms
02272 *of bytes.
02273 *Applications are
02274 *free to use this
02275 *function to set data
02276 *of any type, not
02277 *just iBase_BYTES.
02278 * However, in all
02279 *cases, the size
02280 *specified by
02281 *tag_value_size is
02282 * always in terms of
02283 *bytes.
02284 ******************************************************************************/
02285
02286 void iMesh_setEntSetData( iMesh_Instance instance,
02287 /**< [in] iMesh instance handle */
02288 iBase_EntitySetHandle entity_set_handle,
02289 /**< [in] Entity set on which tag is being set */
02290 const iBase_TagHandle tag_handle,
02291 /**< [in] Tag being set on an entity set */
02292 const void* tag_value,
02293 /**< [in] Pointer to tag data being set on entity set */
02294 const int tag_value_size,
02295 /**< [in] Size in bytes of tag data */
02296 int* err
02297 /**< [out] Returned Error status (see iBase_ErrorType) */
02298 );
02299
02300 /***************************************************************************/ /**
02301 * \ingroup TagsOnSets
02302 * \brief Set a tag
02303 *value of integer
02304 *type on an entity
02305 *set
02306 *
02307 * Set a tag value of
02308 *integer type on an
02309 *entity set.
02310 ******************************************************************************/
02311
02312 void iMesh_setEntSetIntData( iMesh_Instance instance,
02313 /**< [in] iMesh instance handle */
02314 iBase_EntitySetHandle entity_set,
02315 /**< [in] Entity set on which tag is being set */
02316 const iBase_TagHandle tag_handle,
02317 /**< [in] Tag being set on an entity set */
02318 const int tag_value,
02319 /**< [in] Tag value being set on entity set */
02320 int* err
02321 /**< [out] Returned Error status (see iBase_ErrorType) */
02322 );
02323
02324 /***************************************************************************/ /**
02325 * \ingroup TagsOnSets
02326 * \brief Set a tag
02327 *value of double type
02328 *on an entity set
02329 *
02330 * Set a tag value of
02331 *double type on an
02332 *entity set.
02333 ******************************************************************************/
02334
02335 void iMesh_setEntSetDblData( iMesh_Instance instance,
02336 /**< [in] iMesh instance handle */
02337 iBase_EntitySetHandle entity_set,
02338 /**< [in] Entity set on which tag is being set */
02339 const iBase_TagHandle tag_handle,
02340 /**< [in] Tag being set on an entity set */
02341 const double tag_value,
02342 /**< [in] Tag value being set on entity set */
02343 int* err
02344 /**< [out] Returned Error status (see iBase_ErrorType) */
02345 );
02346
02347 /***************************************************************************/ /**
02348 * \ingroup TagsOnSets
02349 * \brief Set a tag
02350 *value of entity
02351 *handle type on an
02352 *entity set
02353 *
02354 * Set a tag value of
02355 *entity handle type
02356 *on an entity set.
02357 ******************************************************************************/
02358
02359 void iMesh_setEntSetEHData( iMesh_Instance instance,
02360 /**< [in] iMesh instance handle */
02361 iBase_EntitySetHandle entity_set,
02362 /**< [in] Entity set on which tag is being set */
02363 const iBase_TagHandle tag_handle,
02364 /**< [in] Tag being set on an entity set */
02365 const iBase_EntityHandle tag_value,
02366 /**< [in] Tag value being set on entity set */
02367 int* err
02368 /**< [out] Returned Error status (see iBase_ErrorType) */
02369 );
02370
02371 /***************************************************************************/ /**
02372 * \ingroup TagsOnSets
02373 * \brief Set a tag
02374 *value of entity set
02375 *handle type on an
02376 *
02377 * entity set
02378 * Set a tag value of
02379 *entity set handle
02380 *type on an entity
02381 *set.
02382 ******************************************************************************/
02383
02384 void iMesh_setEntSetESHData( iMesh_Instance instance,
02385 /**< [in] iMesh instance handle */
02386 iBase_EntitySetHandle entity_set,
02387 /**< [in] Entity set on which tag is being set */
02388 const iBase_TagHandle tag_handle,
02389 /**< [in] Tag being set on an entity set */
02390 const iBase_EntitySetHandle tag_value,
02391 /**< [in] Tag value being set on entity set */
02392 int* err
02393 /**< [out] Returned Error status (see iBase_ErrorType) */
02394 );
02395
02396 /***************************************************************************/ /**
02397 * \ingroup TagsOnSets
02398 * \brief Get the
02399 *value of a tag of
02400 *arbitrary type on an
02401 *entity set
02402 *
02403 * Get the value of a
02404 *tag of arbitrary
02405 *type on an entity
02406 *set. Tag data is
02407 *returned back as
02408 *void*.
02409 *tag_value_size
02410 *specifies the size
02411 *of the memory
02412 *pointed to by
02413 *tag_value in terms
02414 *of bytes.
02415 *Applications may use
02416 *this function to get
02417 *data of any type,
02418 *not just
02419 *iBase_BYTES. However
02420 *because this
02421 *function supports
02422 *data of arbitrary
02423 *type, in all cases
02424 *the size specified
02425 *by tag_value_size is
02426 *always in terms of
02427 *bytes.
02428 ******************************************************************************/
02429
02430 void iMesh_getEntSetData( iMesh_Instance instance,
02431 /**< [in] iMesh instance handle */
02432 const iBase_EntitySetHandle entity_set_handle,
02433 /**< [in] Entity set on which tag is being set */
02434 const iBase_TagHandle tag_handle,
02435 /**< [in] Tag being set on an entity set */
02436 void* tag_value,
02437 /**< [in,out] Pointer to tag data array being queried
02438 \ref trio) */
02439 int* tag_value_allocated,
02440 /**< [in,out] Pointer allocated size, in bytes, of tag_value array. */
02441 int* tag_value_size,
02442 /**< [out] Pointer to occupied size, in bytes, of tag_value array. */
02443 int* err
02444 /**< [out] Returned Error status (see iBase_ErrorType) */
02445 );
02446
02447 /***************************************************************************/ /**
02448 * \ingroup TagsOnSets
02449 * \brief Get the
02450 *value of a tag of
02451 *integer type on an
02452 *entity set
02453 *
02454 * Get the value of a
02455 *tag of integer type
02456 *on an entity set.
02457 ******************************************************************************/
02458
02459 void iMesh_getEntSetIntData( iMesh_Instance instance,
02460 /**< [in] iMesh instance handle */
02461 const iBase_EntitySetHandle entity_set,
02462 /**< [in] Entity set on which tag is being set */
02463 const iBase_TagHandle tag_handle,
02464 /**< [in] Tag being set on an entity set */
02465 int* out_data,
02466 /**< [out] Pointer to tag value returned from function */
02467 int* err
02468 /**< [out] Returned Error status (see iBase_ErrorType) */
02469 );
02470
02471 /***************************************************************************/ /**
02472 * \ingroup TagsOnSets
02473 * \brief Get the
02474 *value of a tag of
02475 *double type on an
02476 *entity set
02477 *
02478 * Get the value of a
02479 *tag of double type
02480 *on an entity set.
02481 ******************************************************************************/
02482
02483 void iMesh_getEntSetDblData( iMesh_Instance instance,
02484 /**< [in] iMesh instance handle */
02485 const iBase_EntitySetHandle entity_set,
02486 /**< [in] Entity set on which tag is being set */
02487 const iBase_TagHandle tag_handle,
02488 /**< [in] Tag being set on an entity set */
02489 double* out_data,
02490 /**< [out] Pointer to tag value returned from function */
02491 int* err
02492 /**< [out] Returned Error status (see iBase_ErrorType) */
02493 );
02494
02495 /***************************************************************************/ /**
02496 * \ingroup TagsOnSets
02497 * \brief Get the
02498 *value of a tag of
02499 *entity handle type
02500 *on an entity set
02501 *
02502 * Get the value of a
02503 *tag of entity handle
02504 *type on an entity
02505 *set.
02506 ******************************************************************************/
02507
02508 void iMesh_getEntSetEHData( iMesh_Instance instance,
02509 /**< [in] iMesh instance handle */
02510 const iBase_EntitySetHandle entity_set,
02511 /**< [in] Entity set on which tag is being set */
02512 const iBase_TagHandle tag_handle,
02513 /**< [in] Tag being set on an entity set */
02514 iBase_EntityHandle* out_data,
02515 /**< [out] Pointer to tag value returned from function */
02516 int* err
02517 /**< [out] Returned Error status (see iBase_ErrorType) */
02518 );
02519
02520 /***************************************************************************/ /**
02521 * \ingroup TagsOnSets
02522 * \brief Get the
02523 *value of a tag of
02524 *entity set handle
02525 *type on an
02526 *
02527 * entity set
02528 * Get the value of a
02529 *tag of entity set
02530 *handle type on an
02531 *entity set.
02532 ******************************************************************************/
02533
02534 void iMesh_getEntSetESHData( iMesh_Instance instance,
02535 /**< [in] iMesh instance handle */
02536 const iBase_EntitySetHandle entity_set,
02537 /**< [in] Entity set on which tag is being set */
02538 const iBase_TagHandle tag_handle,
02539 /**< [in] Tag being set on an entity set */
02540 iBase_EntitySetHandle* out_data,
02541 /**< [out] Pointer to tag value returned from function */
02542 int* err
02543 /**< [out] Returned Error status (see iBase_ErrorType) */
02544 );
02545
02546 /***************************************************************************/ /**
02547 * \ingroup Tags
02548 * \brief Get all the
02549 *tags associated with
02550 *a specified entity
02551 *set
02552 *
02553 * Get all the tags
02554 *associated with a
02555 *specified entity set
02556 ******************************************************************************/
02557
02558 void iMesh_getAllEntSetTags( iMesh_Instance instance,
02559 /**< [in] iMesh instance handle */
02560 const iBase_EntitySetHandle entity_set_handle,
02561 /**< [in] Entity being queried */
02562 iBase_TagHandle** tag_handles,
02563 /**< [in,out] Pointer to array of tag_handles returned from
02564 \ref trio) */
02565 int* tag_handles_allocated,
02566 /**< [in,out] Pointer to allocated size of tag_handles */
02567 int* tag_handles_size,
02568 /**< [out] Pointer to occupied size of tag_handles array */
02569 int* err
02570 /**< [out] Returned Error status (see iBase_ErrorType) */
02571 );
02572
02573 /***************************************************************************/ /**
02574 * \ingroup Tags
02575 * \brief Remove a
02576 *tag value from an
02577 *entity set
02578 *
02579 * Remove a tag value
02580 *from an entity set
02581 ******************************************************************************/
02582
02583 void iMesh_rmvEntSetTag( iMesh_Instance instance,
02584 /**< [in] iMesh instance handle */
02585 iBase_EntitySetHandle entity_set_handle,
02586 /**< [in] Entity set from which tag is being removed */
02587 const iBase_TagHandle tag_handle,
02588 /**< [in] Tag handle of tag being removed */
02589 int* err
02590 /**< [out] Returned Error status (see iBase_ErrorType) */
02591 );
02592
02593 /***************************************************************************/ /**
02594 * \ingroup
02595 *VertexEntities
02596 * \brief Set
02597 *coordinates for a
02598 *vertex
02599 *
02600 * Set coordinates for
02601 *a vertex.
02602 ******************************************************************************/
02603
02604 void iMesh_setVtxCoord( iMesh_Instance instance,
02605 /**< [in] iMesh instance handle */
02606 iBase_EntityHandle vertex_handle,
02607 /**< [in] vertex handle being set */
02608 const double x,
02609 /**< [in] x coordinate being set */
02610 const double y,
02611 /**< [in] y coordinate being set */
02612 const double z,
02613 /**< [in] z coordinate being set */
02614 int* err
02615 /**< [out] Returned Error status (see iBase_ErrorType) */
02616 );
02617
02618 /***************************************************************************/ /**
02619 * \ingroup
02620 *VertexEntities
02621 * \brief Create a
02622 *new vertex at
02623 *specified
02624 *coordinates
02625 *
02626 * Create a new vertex
02627 *at specified
02628 *coordinates.
02629 ******************************************************************************/
02630
02631 void iMesh_createVtx( iMesh_Instance instance,
02632 /**< [in] iMesh instance handle */
02633 const double x,
02634 /**< [in] x coordinate of new vertex */
02635 const double y,
02636 /**< [in] y coordinate of new vertex */
02637 const double z,
02638 /**< [in] z coordinate of new vertex */
02639 iBase_EntityHandle* new_vertex_handle,
02640 /**< [out] Pointer to new vertex handles returned from */
02641 int* err
02642 /**< [out] Returned Error status (see iBase_ErrorType) */
02643 );
02644
02645 /***************************************************************************/ /**
02646 * \ingroup Entities
02647 * \brief Create a
02648 *new entity with
02649 *specified
02650 *lower-order topology
02651 *
02652 * Create a new entity
02653 *with specified
02654 *lower-order
02655 *topology. Specified
02656 *new_entity_topology
02657 *must be value in
02658 *iMesh_EntityTopology
02659 * enumeration. Value
02660 *returned as status
02661 *must be a value in
02662 *the
02663 * iBase_CreationStatus
02664 *enumeration.
02665 ******************************************************************************/
02666
02667 void iMesh_createEnt( iMesh_Instance instance,
02668 /**< [in] iMesh instance handle */
02669 const int new_entity_topology,
02670 /**< [in] Topology of created entity */
02671 const iBase_EntityHandle* lower_order_entity_handles,
02672 /**< [in] Array of lower order entity handles to be used to construct
02673 new entity. */
02674 const int lower_order_entity_handles_size,
02675 /**< [in] Number of entities in lower_order_entity_handles array */
02676 iBase_EntityHandle* new_entity_handle,
02677 /**< [out] Pointer to new entity handle returned from */
02678 int* status,
02679 /**< [out] Pointer to creation status returned from function
02680 (see iBase_CreationStatus) */
02681 int* err
02682 /**< [out] Returned Error status (see iBase_ErrorType) */
02683 );
02684
02685 /***************************************************************************/ /**
02686 * \ingroup Entities
02687 * \brief Delete
02688 *specified entity
02689 *
02690 * Delete specified
02691 *entity
02692 ******************************************************************************/
02693
02694 void iMesh_deleteEnt( iMesh_Instance instance,
02695 /**< [in] iMesh instance handle */
02696 iBase_EntityHandle entity_handle,
02697 /**< [in] Entity to be deleted */
02698 int* err
02699 /**< [out] Returned Error status (see iBase_ErrorType) */
02700 );
02701
02702 /***************************************************************************/ /**
02703 * \ingroup TagsOnArr
02704 * \brief Get tag
02705 *values of arbitrary
02706 *type for an array of
02707 *entities
02708 *
02709 * Get tag values of
02710 *arbitrary type for
02711 *an array of
02712 *entities. Tag data
02713 * is returned as
02714 *void*.
02715 *tag_values_size
02716 *specifies the size
02717 *of the memory
02718 *pointed to by
02719 *tag_values in terms
02720 *of bytes.
02721 *Applications may use
02722 *this function to get
02723 *data of any type,
02724 *not just
02725 *iBase_BYTES.
02726 * However, because
02727 *this function
02728 *supports data of
02729 *arbitrary type, in
02730 * all cases the size
02731 *specified by
02732 *tag_values_size
02733 *always in terms of
02734 * bytes.
02735 ******************************************************************************/
02736
02737 void iMesh_getArrData( iMesh_Instance instance,
02738 /**< [in] iMesh instance handle */
02739 const iBase_EntityHandle* entity_handles,
02740 /**< [in] Entity array on which tag is being set */
02741 const int entity_handles_size,
02742 /**< [in] Number of entities in array */
02743 const iBase_TagHandle tag_handle,
02744 /**< [in] Tag being set on an entity */
02745 void* tag_values,
02746 /**< [in,out] Pointer to tag data array being returned. Note that the
02747 implicit INTERLEAVED storage order rule applies
02748 (see iBase_StorageOrder) \ref trio) */
02749 int* tag_values_allocated,
02750 /**< [in,out] Pointer to allocated size of tag data array */
02751 int* tag_values_size,
02752 /**< [out] Pointer to occupied size in bytes of tag data */
02753 int* err
02754 /**< [out] Returned Error status (see iBase_ErrorType) */
02755 );
02756
02757 /***************************************************************************/ /**
02758 * \ingroup TagsOnArr
02759 * \brief Get tag
02760 *values of integer
02761 *type for an array of
02762 *entities
02763 *
02764 * Get tag values of
02765 *integer type for an
02766 *array of entities.
02767 ******************************************************************************/
02768
02769 void iMesh_getIntArrData( iMesh_Instance instance,
02770 /**< [in] iMesh instance handle */
02771 const iBase_EntityHandle* entity_handles,
02772 /**< [in] Entity array on which tag is being set */
02773 const int entity_handles_size,
02774 /**< [in] Number of entities in array */
02775 const iBase_TagHandle tag_handle,
02776 /**< [in] Tag being set on an entity */
02777 int** tag_values,
02778 /**< [in,out] Pointer to tag data array being returned. Note that the
02779 implicit INTERLEAVED storage order rule applies
02780 (see iBase_StorageOrder) \ref trio) */
02781 int* tag_values_allocated,
02782 /**< [in,out] Pointer to allocated size of tag data array */
02783 int* tag_values_size,
02784 /**< [out] Pointer to occupied size of tag data array */
02785 int* err
02786 /**< [out] Returned Error status (see iBase_ErrorType) */
02787 );
02788
02789 /***************************************************************************/ /**
02790 * \ingroup TagsOnArr
02791 * \brief Get tag
02792 *values of double
02793 *type for an array of
02794 *entities
02795 *
02796 * Get tag values of
02797 *double type for an
02798 *array of entities.
02799 ******************************************************************************/
02800
02801 void iMesh_getDblArrData( iMesh_Instance instance,
02802 /**< [in] iMesh instance handle */
02803 const iBase_EntityHandle* entity_handles,
02804 /**< [in] Entity array on which tag is being set */
02805 const int entity_handles_size,
02806 /**< [in] Number of entities in array */
02807 const iBase_TagHandle tag_handle,
02808 /**< [in] Tag being set on an entity */
02809 double** tag_values,
02810 /**< [in,out] Pointer to tag data array being returned. Note that the
02811 implicit INTERLEAVED storage order rule applies
02812 (see iBase_StorageOrder) \ref trio) */
02813 int* tag_values_allocated,
02814 /**< [in,out] Pointer to allocated size of tag data array */
02815 int* tag_values_size,
02816 /**< [out] Pointer to occupied size of tag data array */
02817 int* err
02818 /**< [out] Returned Error status (see iBase_ErrorType) */
02819 );
02820
02821 /***************************************************************************/ /**
02822 * \ingroup TagsOnArr
02823 * \brief Get tag
02824 *values of entity
02825 *handle type for an
02826 *array of entities
02827 *
02828 * Get tag values of
02829 *entity handle type
02830 *for an array of
02831 *entities.
02832 ******************************************************************************/
02833
02834 void iMesh_getEHArrData( iMesh_Instance instance,
02835 /**< [in] iMesh instance handle */
02836 const iBase_EntityHandle* entity_handles,
02837 /**< [in] Entity array on which tag is being set */
02838 const int entity_handles_size,
02839 /**< [in] Number of entities in array */
02840 const iBase_TagHandle tag_handle,
02841 /**< [in] Tag being set on an entity */
02842 iBase_EntityHandle** tag_value,
02843 /**< [in,out] Pointer to tag data array being returned. Note that the
02844 implicit INTERLEAVED storage order rule applies
02845 (see iBase_StorageOrder) \ref trio) */
02846 int* tag_value_allocated,
02847 /**< [in,out] Pointer to allocated size of tag data array */
02848 int* tag_value_size,
02849 /**< [out] Pointer to occupied size of tag data array */
02850 int* err
02851 /**< [out] Returned Error status (see iBase_ErrorType) */
02852 );
02853
02854 /***************************************************************************/ /**
02855 * \ingroup TagsOnArr
02856 * \brief Get tag
02857 *values of entity set
02858 *handle type for an
02859 *array of
02860 *
02861 * entities
02862 * Get tag values of
02863 *entity set handle
02864 *type for an array of
02865 *entities.
02866 ******************************************************************************/
02867
02868 void iMesh_getESHArrData( iMesh_Instance instance,
02869 /**< [in] iMesh instance handle */
02870 const iBase_EntityHandle* entity_handles,
02871 /**< [in] Entity array on which tag is being set */
02872 const int entity_handles_size,
02873 /**< [in] Number of entities in array */
02874 const iBase_TagHandle tag_handle,
02875 /**< [in] Tag being set on an entity */
02876 iBase_EntitySetHandle** tag_value,
02877 /**< [in,out] Pointer to tag data array being returned. Note that the
02878 implicit INTERLEAVED storage order rule applies
02879 (see iBase_StorageOrder) \ref trio) */
02880 int* tag_value_allocated,
02881 /**< [in,out] Pointer to allocated size of tag data array */
02882 int* tag_value_size,
02883 /**< [out] Pointer to occupied size of tag data array */
02884 int* err
02885 /**< [out] Returned Error status (see iBase_ErrorType) */
02886 );
02887
02888 /***************************************************************************/ /**
02889 * \ingroup TagsOnArr
02890 * \brief Set tag
02891 *values of arbitrary
02892 *type on an array of
02893 *entities
02894 *
02895 * Set tag values of
02896 *arbitrary type on an
02897 *array of entities.
02898 *Tag data is passed
02899 *as void*.
02900 *tag_values_size
02901 *specifies the size
02902 *of the memory
02903 *pointed to by
02904 *tag_values in terms
02905 *of bytes.
02906 *Applications may use
02907 *this function to set
02908 *data of any type,
02909 *not just
02910 *iBase_BYTES.
02911 * However, because
02912 *this function
02913 *supports data of
02914 *arbitrary type, in
02915 *all cases the size
02916 *specified by
02917 *tag_values_size is
02918 *always in terms of
02919 * bytes.
02920 ******************************************************************************/
02921
02922 void iMesh_setArrData( iMesh_Instance instance,
02923 /**< [in] iMesh instance handle */
02924 const iBase_EntityHandle* entity_handles,
02925 /**< [in] Entity array on which tag is being set */
02926 const int entity_handles_size,
02927 /**< [in] Number of entities in array */
02928 const iBase_TagHandle tag_handle,
02929 /**< [in] Tag being set on an entity */
02930 const void* tag_values,
02931 /**< [in] Pointer to tag data being set on entity. Note that the
02932 implicit INTERLEAVED storage order rule applies
02933 (see iBase_StorageOrder) */
02934 const int tag_values_size,
02935 /**< [in] Size in bytes of tag data */
02936 int* err
02937 /**< [out] Returned Error status (see iBase_ErrorType) */
02938 );
02939
02940 /***************************************************************************/ /**
02941 * \ingroup TagsOnArr
02942 * \brief Set tag
02943 *values of integer
02944 *type on an array of
02945 *entities
02946 *
02947 * Set tag values of
02948 *integer type on an
02949 *array of entities.
02950 ******************************************************************************/
02951
02952 void iMesh_setIntArrData( iMesh_Instance instance,
02953 /**< [in] iMesh instance handle */
02954 const iBase_EntityHandle* entity_handles,
02955 /**< [in] Entity array on which tag is being set */
02956 const int entity_handles_size,
02957 /**< [in] Number of entities in array */
02958 const iBase_TagHandle tag_handle,
02959 /**< [in] Tag being set on an entity */
02960 const int* tag_values,
02961 /**< [in] Pointer to tag data being set on entities. Note that the
02962 implicit INTERLEAVED storage order rule applies
02963 (see iBase_StorageOrder) */
02964 const int tag_values_size,
02965 /**< [in] Size in total number of integers of tag data */
02966 int* err
02967 /**< [out] Returned Error status (see iBase_ErrorType) */
02968 );
02969
02970 /***************************************************************************/ /**
02971 * \ingroup TagsOnArr
02972 * \brief Set tag
02973 *values of double
02974 *type on an array of
02975 *entities
02976 *
02977 * Set tag values of
02978 *double type on an
02979 *array of entities.
02980 ******************************************************************************/
02981
02982 void iMesh_setDblArrData( iMesh_Instance instance,
02983 /**< [in] iMesh instance handle */
02984 const iBase_EntityHandle* entity_handles,
02985 /**< [in] Entity array on which tag is being set */
02986 const int entity_handles_size,
02987 /**< [in] Number of entities in array */
02988 const iBase_TagHandle tag_handle,
02989 /**< [in] Tag being set on an entity */
02990 const double* tag_values,
02991 /**< [in] Pointer to tag data being set on entities. Note that the
02992 implicit INTERLEAVED storage order rule applies
02993 (see iBase_StorageOrder) */
02994 const int tag_values_size,
02995 /**< [in] Size in total number of doubles of tag data */
02996 int* err
02997 /**< [out] Returned Error status (see iBase_ErrorType) */
02998 );
02999
03000 /***************************************************************************/ /**
03001 * \ingroup TagsOnArr
03002 * \brief Set tag
03003 *values of entity
03004 *handle type on an
03005 *array of entities
03006 *
03007 * Set tag values of
03008 *entity handle type
03009 *on an array of
03010 *entities.
03011 ******************************************************************************/
03012
03013 void iMesh_setEHArrData( iMesh_Instance instance,
03014 /**< [in] iMesh instance handle */
03015 const iBase_EntityHandle* entity_handles,
03016 /**< [in] Entity array on which tag is being set */
03017 const int entity_handles_size,
03018 /**< [in] Number of entities in array */
03019 const iBase_TagHandle tag_handle,
03020 /**< [in] Tag being set on an entity */
03021 const iBase_EntityHandle* tag_values,
03022 /**< [in] Pointer to tag data being set on entities. Note that the
03023 implicit INTERLEAVED storage order rule applies
03024 (see iBase_StorageOrder) */
03025 const int tag_values_size,
03026 /**< [in] Size in total number of entity handles of tag */
03027 int* err
03028 /**< [out] Returned Error status (see iBase_ErrorType) */
03029 );
03030
03031 /***************************************************************************/ /**
03032 * \ingroup TagsOnArr
03033 * \brief Set tag
03034 *values of entity set
03035 *handle type on an
03036 *array of
03037 *
03038 * entities
03039 * Set tag values of
03040 *entity set handle
03041 *type on an array of
03042 *entities.
03043 ******************************************************************************/
03044
03045 void iMesh_setESHArrData( iMesh_Instance instance,
03046 /**< [in] iMesh instance handle */
03047 const iBase_EntityHandle* entity_handles,
03048 /**< [in] Entity array on which tag is being set */
03049 const int entity_handles_size,
03050 /**< [in] Number of entities in array */
03051 const iBase_TagHandle tag_handle,
03052 /**< [in] Tag being set on an entity */
03053 const iBase_EntitySetHandle* tag_values,
03054 /**< [in] Pointer to tag data being set on entities. Note that the
03055 implicit INTERLEAVED storage order rule applies
03056 (see iBase_StorageOrder) */
03057 const int tag_values_size,
03058 /**< [in] Size in total number of entity handles of tag */
03059 int* err
03060 /**< [out] Returned Error status (see iBase_ErrorType) */
03061 );
03062
03063 /***************************************************************************/ /**
03064 * \ingroup Tags
03065 * \brief Remove a
03066 *tag value from an
03067 *array of entities
03068 *
03069 * Remove a tag value
03070 *from an array of
03071 *entities
03072 ******************************************************************************/
03073
03074 void iMesh_rmvArrTag( iMesh_Instance instance,
03075 /**< [in] iMesh instance handle */
03076 const iBase_EntityHandle* entity_handles,
03077 /**< [in] Entity from which tag is being removed */
03078 const int entity_handles_size,
03079 /**< [in] Number of entities in entity array */
03080 const iBase_TagHandle tag_handle,
03081 /**< [in] Tag handle of tag being removed */
03082 int* err
03083 /**< [out] Returned Error status (see iBase_ErrorType) */
03084 );
03085
03086 /***************************************************************************/ /**
03087 * \ingroup TagsOnEnts
03088 * \brief Get the
03089 *value of a tag of
03090 *arbitrary type on an
03091 *entity
03092 *
03093 * Get the value of a
03094 *tag of arbitrary
03095 *type on an entity.
03096 *Tag data is passed
03097 *back as void*.
03098 *tag_value_size
03099 *specifies the size
03100 *of the memory
03101 *pointed to by
03102 *tag_value in terms
03103 *of bytes.
03104 *Applications may use
03105 *this function to get
03106 *data of any type,
03107 *not just
03108 *iBase_BYTES.
03109 * However, because
03110 *this function
03111 *supports arbitrary
03112 *type, in all cases
03113 *the size specified
03114 *by tag_value_size is
03115 *always in terms of
03116 * bytes.
03117 ******************************************************************************/
03118
03119 void iMesh_getData( iMesh_Instance instance,
03120 /**< [in] iMesh instance handle */
03121 const iBase_EntityHandle entity_handle,
03122 /**< [in] Entity on which tag is being set */
03123 const iBase_TagHandle tag_handle,
03124 /**< [in] Tag being set on an entity */
03125 void* tag_value,
03126 /**< [in,out] Pointer to tag data array being queried
03127 \ref trio) */
03128 int* tag_value_allocated,
03129 /**< [in,out] Pointer to tag data array allocated size */
03130 int* tag_value_size,
03131 /**< [out] Pointer to occupied size in bytes of tag data */
03132 int* err
03133 /**< [out] Returned Error status (see iBase_ErrorType) */
03134 );
03135
03136 /***************************************************************************/ /**
03137 * \ingroup TagsOnEnts
03138 * \brief Get the
03139 *value of a tag of
03140 *integer type on an
03141 *entity
03142 *
03143 * Get the value of a
03144 *tag of integer type
03145 *on an entity.
03146 ******************************************************************************/
03147
03148 void iMesh_getIntData( iMesh_Instance instance,
03149 /**< [in] iMesh instance handle */
03150 const iBase_EntityHandle entity_handle,
03151 /**< [in] Entity on which tag is being set */
03152 const iBase_TagHandle tag_handle,
03153 /**< [in] Tag being set on an entity */
03154 int* out_data,
03155 /**< [out] Pointer to tag value returned from function */
03156 int* err
03157 /**< [out] Returned Error status (see iBase_ErrorType) */
03158 );
03159
03160 /***************************************************************************/ /**
03161 * \ingroup TagsOnEnts
03162 * \brief Get the
03163 *value of a tag of
03164 *double type on an
03165 *entity
03166 *
03167 * Get the value of a
03168 *tag of double type
03169 *on an entity.
03170 ******************************************************************************/
03171
03172 void iMesh_getDblData( iMesh_Instance instance,
03173 /**< [in] iMesh instance handle */
03174 const iBase_EntityHandle entity_handle,
03175 /**< [in] Entity on which tag is being set */
03176 const iBase_TagHandle tag_handle,
03177 /**< [in] Tag being set on an entity */
03178 double* out_data,
03179 /**< [out] Pointer to tag value returned from function */
03180 int* err
03181 /**< [out] Returned Error status (see iBase_ErrorType) */
03182 );
03183
03184 /***************************************************************************/ /**
03185 * \ingroup TagsOnEnts
03186 * \brief Get the
03187 *value of a tag of
03188 *entity handle type
03189 *on an entity
03190 *
03191 * Get the value of a
03192 *tag of entity handle
03193 *type on an entity.
03194 ******************************************************************************/
03195
03196 void iMesh_getEHData( iMesh_Instance instance,
03197 /**< [in] iMesh instance handle */
03198 const iBase_EntityHandle entity_handle,
03199 /**< [in] Entity on which tag is being set */
03200 const iBase_TagHandle tag_handle,
03201 /**< [in] Tag being set on an entity */
03202 iBase_EntityHandle* out_data,
03203 /**< [out] Pointer to tag value returned from function */
03204 int* err
03205 /**< [out] Returned Error status (see iBase_ErrorType) */
03206 );
03207
03208 /***************************************************************************/ /**
03209 * \ingroup TagsOnEnts
03210 * \brief Get the
03211 *value of a tag of
03212 *entity set handle
03213 *type on an
03214 *
03215 * entity
03216 * Get the value of a
03217 *tag of entity set
03218 *handle type on an
03219 *entity.
03220 ******************************************************************************/
03221
03222 void iMesh_getESHData( iMesh_Instance instance,
03223 /**< [in] iMesh instance handle */
03224 const iBase_EntityHandle entity_handle,
03225 /**< [in] Entity on which tag is being set */
03226 const iBase_TagHandle tag_handle,
03227 /**< [in] Tag being set on an entity */
03228 iBase_EntitySetHandle* out_data,
03229 /**< [out] Pointer to tag value returned from function */
03230 int* err
03231 /**< [out] Returned Error status (see iBase_ErrorType) */
03232 );
03233
03234 /***************************************************************************/ /**
03235 * \ingroup TagsOnEnts
03236 * \brief Set a tag
03237 *value of arbitrary
03238 *type on an entity
03239 *
03240 * Set a tag value of
03241 *arbitrary type on an
03242 *entity. Tag data is
03243 *passed as void*.
03244 *tag_value_size
03245 *specifies the size
03246 *of the memory
03247 *pointed to by
03248 *tag_value in terms
03249 *of bytes.
03250 *Applications may use
03251 *this function to set
03252 *data of any type,
03253 *not just
03254 *iBase_BYTES.
03255 * However, because
03256 *this function
03257 *supports data of
03258 *arbitrary type, in
03259 * all cases the size
03260 *specified by
03261 *tag_value_size is
03262 *always in terms of
03263 *bytes.
03264 ******************************************************************************/
03265
03266 void iMesh_setData( iMesh_Instance instance,
03267 /**< [in] iMesh instance handle */
03268 iBase_EntityHandle entity_handle,
03269 /**< [in] Entity on which tag is being set */
03270 const iBase_TagHandle tag_handle,
03271 /**< [in] Tag being set on an entity */
03272 const void* tag_value,
03273 /**< [in] Pointer to tag data being set on entity */
03274 const int tag_value_size,
03275 /**< [in] Size in bytes of tag data */
03276 int* err
03277 /**< [out] Returned Error status (see iBase_ErrorType) */
03278 );
03279
03280 /***************************************************************************/ /**
03281 * \ingroup TagsOnEnts
03282 * \brief Set a tag
03283 *value of integer
03284 *type on an entity
03285 *
03286 * Set a tag value of
03287 *integer type on an
03288 *entity.
03289 ******************************************************************************/
03290
03291 void iMesh_setIntData( iMesh_Instance instance,
03292 /**< [in] iMesh instance handle */
03293 iBase_EntityHandle entity_handle,
03294 /**< [in] Entity on which tag is being set */
03295 const iBase_TagHandle tag_handle,
03296 /**< [in] Tag being set on an entity */
03297 const int tag_value,
03298 /**< [in] Tag value being set on entity */
03299 int* err
03300 /**< [out] Returned Error status (see iBase_ErrorType) */
03301 );
03302
03303 /***************************************************************************/ /**
03304 * \ingroup TagsOnEnts
03305 * \brief Set a tag
03306 *value of double type
03307 *on an entity
03308 *
03309 * Set a tag value of
03310 *double type on an
03311 *entity.
03312 ******************************************************************************/
03313
03314 void iMesh_setDblData( iMesh_Instance instance,
03315 /**< [in] iMesh instance handle */
03316 iBase_EntityHandle entity_handle,
03317 /**< [in] Entity on which tag is being set */
03318 const iBase_TagHandle tag_handle,
03319 /**< [in] Tag being set on an entity */
03320 const double tag_value,
03321 /**< [in] Tag value being set on entity */
03322 int* err
03323 /**< [out] Returned Error status (see iBase_ErrorType) */
03324 );
03325
03326 /***************************************************************************/ /**
03327 * \ingroup TagsOnEnts
03328 * \brief Set a tag
03329 *value of entity
03330 *handle type on an
03331 *entity
03332 *
03333 * Set a tag value of
03334 *entity handle type
03335 *on an entity.
03336 ******************************************************************************/
03337
03338 void iMesh_setEHData( iMesh_Instance instance,
03339 /**< [in] iMesh instance handle */
03340 iBase_EntityHandle entity_handle,
03341 /**< [in] Entity on which tag is being set */
03342 const iBase_TagHandle tag_handle,
03343 /**< [in] Tag being set on an entity */
03344 const iBase_EntityHandle tag_value,
03345 /**< [in] Tag value being set on entity */
03346 int* err
03347 /**< [out] Returned Error status (see iBase_ErrorType) */
03348 );
03349
03350 /***************************************************************************/ /**
03351 * \ingroup TagsOnEnts
03352 * \brief Set a tag
03353 *value of entity set
03354 *handle type on an
03355 *entity
03356 *
03357 * Set a tag value of
03358 *entity set handle
03359 *type on an entity.
03360 ******************************************************************************/
03361
03362 void iMesh_setESHData( iMesh_Instance instance,
03363 /**< [in] iMesh instance handle */
03364 iBase_EntityHandle entity_handle,
03365 /**< [in] Entity on which tag is being set */
03366 const iBase_TagHandle tag_handle,
03367 /**< [in] Tag being set on an entity */
03368 const iBase_EntitySetHandle tag_value,
03369 /**< [in] Tag value being set on entity */
03370 int* err
03371 /**< [out] Returned Error status (see iBase_ErrorType) */
03372 );
03373
03374 /***************************************************************************/ /**
03375 * \ingroup Tags
03376 * \brief Get all the
03377 *tags associated with
03378 *a specified entity
03379 *handle
03380 *
03381 * Get all the tags
03382 *associated with a
03383 *specified entity
03384 *handle
03385 ******************************************************************************/
03386
03387 void iMesh_getAllTags( iMesh_Instance instance,
03388 /**< [in] iMesh instance handle */
03389 const iBase_EntityHandle entity_handle,
03390 /**< [in] Entity being queried */
03391 iBase_TagHandle** tag_handles,
03392 /**< [in,out] Pointer to array of tag_handles returned from
03393 \ref trio) */
03394 int* tag_handles_allocated,
03395 /**< [in,out] Pointer to allocated size of tag_handles */
03396 int* tag_handles_size,
03397 /**< [out] Pointer to occupied size of tag_handles array */
03398 int* err
03399 /**< [out] Returned Error status (see iBase_ErrorType) */
03400 );
03401
03402 /***************************************************************************/ /**
03403 * \ingroup Tags
03404 * \brief Remove a
03405 *tag value from an
03406 *entity
03407 *
03408 * Remove a tag value
03409 *from an entity
03410 ******************************************************************************/
03411
03412 void iMesh_rmvTag( iMesh_Instance instance,
03413 /**< [in] iMesh instance handle */
03414 iBase_EntityHandle entity_handle,
03415 /**< [in] Entity from which tag is being removed */
03416 const iBase_TagHandle tag_handle,
03417 /**< [in] Tag handle of tag being removed */
03418 int* err
03419 /**< [out] Returned Error status (see iBase_ErrorType) */
03420 );
03421
03422 /***************************************************************************/ /**
03423 * \ingroup
03424 *EntityIterators
03425 * \brief Initialize
03426 *an iterator over
03427 *specified entity
03428 *type, topology, and
03429 *size
03430 *
03431 * Initialize an
03432 *iterator over
03433 *specified entity
03434 *type, topology, and
03435 *size, for a
03436 *specified set or
03437 *instance. Iterator
03438 *returned can be used
03439 *as input to
03440 *functions returning
03441 *the entity for the
03442 *iterator. If all
03443 *entities of a
03444 *specified type
03445 *and/or topology are
03446 *to be iterated,
03447 *specify
03448 * iBase_ALL_TYPES or
03449 *iMesh_ALL_TOPOLOGIES,
03450 *respectively.
03451 *Specified type or
03452 *topology must be a
03453 *value in the
03454 *iBase_EntityType or
03455 * iMesh_EntityTopology
03456 *enumerations,
03457 *respectively.
03458 *
03459 * Note: This function
03460 *will fail and return
03461 *an error if the
03462 *caller passes a
03463 * combination of
03464 *entity_type and
03465 *entity_topology that
03466 *are not consistent.
03467 ******************************************************************************/
03468
03469 void iMesh_initEntIter( iMesh_Instance instance,
03470 /**< [in] iMesh instance handle */
03471 const iBase_EntitySetHandle entity_set_handle,
03472 /**< [in] Entity set being iterated */
03473 const int requested_entity_type,
03474 /**< [in] Type of entity to iterate */
03475 const int requested_entity_topology,
03476 /**< [in] Topology of entity to iterate */
03477 const int resilient,
03478 /**< [in] If zero, return a non-resilient iterator.
03479 Otherwise, a resilient iterator (\ref resilient) */
03480 iBase_EntityIterator* entity_iterator,
03481 /**< [out] Pointer to iterator returned from function */
03482 int* err
03483 /**< [out] Returned Error status (see iBase_ErrorType) */
03484 );
03485
03486 /***************************************************************************/ /**
03487 * \ingroup
03488 *EntityIterators
03489 * \brief Get entity
03490 *corresponding to an
03491 *iterator and
03492 *increment iterator
03493 *
03494 * Get the entity
03495 *corresponding to an
03496 *iterator (that is,
03497 *dereference the
03498 *iterator), and
03499 *increment the
03500 *iterator. The
03501 *dereferenced value
03502 * is returned in
03503 *'entity_handle'. If
03504 *the iterator is at
03505 *the end of the
03506 * iteration, the
03507 *dereferenced value
03508 *will be undefined
03509 *and 'has_data' will
03510 *have a value of
03511 *zero. Otherwise,
03512 *'has_data' will have
03513 *a non-zero value.
03514 ******************************************************************************/
03515
03516 void iMesh_getNextEntIter( iMesh_Instance instance,
03517 /**< [in] iMesh instance handle */
03518 iBase_EntityIterator entity_iterator,
03519 /**< [in] Iterator being queried */
03520 iBase_EntityHandle* entity_handle,
03521 /**< [out] Pointer to an entity handle corresponding to the current
03522 value of iterator just prior to the call. */
03523 int* has_data,
03524 /**< [out] Pointer to a flag indicating if the value returned in
03525 entity_handle is valid. A non-zero value indicates the value is
03526 valid. A zero value indicates the value is NOT valid. */
03527 int* err
03528 /**< [out] Returned Error status (see iBase_ErrorType) */
03529 );
03530
03531 /***************************************************************************/ /**
03532 * \ingroup
03533 *EntityIterators
03534 * \brief Reset the
03535 *iterator
03536 *
03537 * Reset the iterator
03538 ******************************************************************************/
03539
03540 void iMesh_resetEntIter( iMesh_Instance instance,
03541 /**< [in] iMesh instance handle */
03542 iBase_EntityIterator entity_iterator,
03543 /**< [in] Iterator to reset */
03544 int* err
03545 /**< [out] Returned Error status (see iBase_ErrorType) */
03546 );
03547
03548 /***************************************************************************/ /**
03549 * \ingroup
03550 *EntityIterators
03551 * \brief Destroy the
03552 *specified iterator
03553 *
03554 * Destroy the
03555 *specified iterator
03556 ******************************************************************************/
03557
03558 void iMesh_endEntIter( iMesh_Instance instance,
03559 /**< [in] iMesh instance handle */
03560 iBase_EntityIterator entity_iterator,
03561 /**< [in] Iterator which gets destroyed */
03562 int* err
03563 /**< [out] Returned Error status (see iBase_ErrorType) */
03564 );
03565
03566 /***************************************************************************/ /**
03567 * \ingroup Entities
03568 * \brief Get the
03569 *entity topology for
03570 *the specified entity
03571 *
03572 * Get the entity
03573 *topology for the
03574 *specified entity.
03575 *Topology returned is
03576 *a value in the
03577 *iMesh_EntityTopology
03578 *enumeration.
03579 ******************************************************************************/
03580
03581 void iMesh_getEntTopo( iMesh_Instance instance,
03582 /**< [in] iMesh instance handle */
03583 const iBase_EntityHandle entity_handle,
03584 /**< [in] Entity handle being queried */
03585 int* out_topo,
03586 /**< [out] Pointer to entity topology returned from function */
03587 int* err
03588 /**< [out] Returned Error status (see iBase_ErrorType) */
03589 );
03590
03591 /***************************************************************************/ /**
03592 * \ingroup Entities
03593 * \brief Get the
03594 *entity type for the
03595 *specified entity
03596 *
03597 * Get the entity type
03598 *for the specified
03599 *entity. Type
03600 *returned is a value
03601 * in the
03602 *iBase_EntityType
03603 *enumeration.
03604 ******************************************************************************/
03605
03606 void iMesh_getEntType( iMesh_Instance instance,
03607 /**< [in] iMesh instance handle */
03608 const iBase_EntityHandle entity_handle,
03609 /**< [in] Entity handle being queried */
03610 int* out_type,
03611 /**< [out] Pointer to entity type returned from function */
03612 int* err
03613 /**< [out] Returned Error status (see iBase_ErrorType) */
03614 );
03615
03616 /***************************************************************************/ /**
03617 * \ingroup
03618 *VertexEntities
03619 * \brief Get
03620 *coordinates of
03621 *specified vertex
03622 *
03623 * Get coordinates of
03624 *specified vertex.
03625 ******************************************************************************/
03626
03627 void iMesh_getVtxCoord( iMesh_Instance instance,
03628 /**< [in] iMesh instance handle */
03629 const iBase_EntityHandle vertex_handle,
03630 /**< [in] Mesh vertex being queried */
03631 double* x,
03632 /**< [out] Pointer to x coordinate returned from function */
03633 double* y,
03634 /**< [out] Pointer to y coordinate returned from function */
03635 double* z,
03636 /**< [out] Pointer to z coordinate returned from function */
03637 int* err
03638 /**< [out] Returned Error status (see iBase_ErrorType) */
03639 );
03640
03641 /***************************************************************************/ /**
03642 * \ingroup
03643 *Adjacencies \brief
03644 *Get entities of
03645 *specified type
03646 *adjacent to an
03647 *entity
03648 *
03649 * Get entities of
03650 *specified type
03651 *adjacent to an
03652 *entity. Specified
03653 *type must be value
03654 *in the
03655 *iBase_EntityType
03656 *enumeration.
03657 *
03658 * Note 1: Because
03659 *'adjacent' as
03660 *defined by the iMesh
03661 *data model refers to
03662 *those entities that
03663 *bound another, the
03664 *entity being queried
03665 * here (in
03666 *entity_handle arg)
03667 *is NEVER ALSO
03668 *returned in
03669 * adj_entity_handles
03670 *even if the
03671 *entity_type_requested
03672 * matches the
03673 *entity type in
03674 *entity_handle.
03675 ******************************************************************************/
03676
03677 void iMesh_getEntAdj( iMesh_Instance instance,
03678 /**< [in] iMesh instance handle */
03679 const iBase_EntityHandle entity_handle,
03680 /**< [in] Entity handle being queried */
03681 const int entity_type_requested,
03682 /**< [in] Type of adjacent entities requested */
03683 iBase_EntityHandle** adj_entity_handles,
03684 /**< [in,out] Pointer to array of adjacent entities \ref trio) */
03685 int* adj_entity_handles_allocated,
03686 /**< [in,out] Pointer to allocated size of adj_entity_handles */
03687 int* adj_entity_handles_size,
03688 /**< [out] Pointer to occupied size of adj_entity_handles */
03689 int* err
03690 /**< [out] Returned Error status (see iBase_ErrorType) */
03691 );
03692
03693 /***************************************************************************/ /**
03694 * \ingroup
03695 *Adjacencies \brief
03696 *Get "2nd order"
03697 *adjacencies to an
03698 *entity
03699 *
03700 * Get "2nd order"
03701 *adjacencies to an
03702 *entity, that is,
03703 *from an entity,
03704 *through other
03705 *entities of a
03706 *specified "bridge"
03707 *dimension, to other
03708 *entities of another
03709 *specified "to"
03710 *dimension. Note 1:
03711 *If the "bridge"
03712 *dimension is the
03713 *same as the "to"
03714 *dimension or the
03715 *dimension of the
03716 *input entity, the
03717 *output will be empty
03718 * (and an error
03719 *code of
03720 *iBase_INVALID_ARGUMENT
03721 *returned). This is
03722 * consistent with
03723 *the definition of
03724 *adjacencies and the
03725 *behavior of iMesh
03726 *first adjacency
03727 *calls. Note 2: An
03728 *entity will never be
03729 *returned as a second
03730 *adjacency of itself,
03731 *on the grounds that
03732 *this is the most
03733 *likely expectation
03734 *of applications, and
03735 *that it is easier
03736 *for an application
03737 *to add the original
03738 *entity to the
03739 *returned data than
03740 *to find and remove
03741 *it.
03742 ******************************************************************************/
03743
03744 void iMesh_getEnt2ndAdj( iMesh_Instance instance,
03745 /**< [in] iMesh instance handle */
03746 iBase_EntityHandle entity_handle,
03747 /**< [in] Entity from which adjacencies are requested */
03748 int bridge_entity_type,
03749 /**< [in] Type of bridge entity for 2nd order adjacencies */
03750 int requested_entity_type,
03751 /**< [in] Type of adjacent entities returned */
03752 iBase_EntityHandle** adjacent_entities,
03753 /**< [in,out] Adjacent entities \ref trio) */
03754 int* adjacent_entities_allocated,
03755 /**< [in,out] Allocated size of returned array */
03756 int* adjacent_entities_size,
03757 /**< [out] Occupied size of returned array */
03758 int* err
03759 /**< [out] Returned Error status (see iBase_ErrorType) */
03760 );
03761
03762 /***************************************************************************/ /**
03763 * \ingroup
03764 *EntitySetOperators
03765 * \brief Subtract
03766 *contents of one
03767 *entity set from
03768 *another
03769 *
03770 * Subtract contents
03771 *of one entity set
03772 *from another
03773 ******************************************************************************/
03774
03775 void iMesh_subtract( iMesh_Instance instance,
03776 /**< [in] iMesh instance handle */
03777 const iBase_EntitySetHandle entity_set_1,
03778 /**< [in] Entity set from which other set is being subtracted */
03779 const iBase_EntitySetHandle entity_set_2,
03780 /**< [in] Entity set being subtracted from other set */
03781 iBase_EntitySetHandle* result_entity_set,
03782 /**< [out] Pointer to entity set returned from function */
03783 int* err
03784 /**< [out] Returned Error status (see iBase_ErrorType) */
03785 );
03786
03787 /***************************************************************************/ /**
03788 * \ingroup
03789 *EntitySetOperators
03790 * \brief Intersect
03791 *contents of one
03792 *entity set with
03793 *another
03794 *
03795 * Intersect contents
03796 *of one entity set
03797 *with another
03798 ******************************************************************************/
03799
03800 void iMesh_intersect( iMesh_Instance instance,
03801 /**< [in] iMesh instance handle */
03802 const iBase_EntitySetHandle entity_set_1,
03803 /**< [in] Entity set being intersected with another */
03804 const iBase_EntitySetHandle entity_set_2,
03805 /**< [in] Entity set being intersected with another */
03806 iBase_EntitySetHandle* result_entity_set,
03807 /**< [out] Pointer to entity set returned from function */
03808 int* err
03809 /**< [out] Returned Error status (see iBase_ErrorType) */
03810 );
03811
03812 /***************************************************************************/ /**
03813 * \ingroup
03814 *EntitySetOperators
03815 * \brief Unite
03816 *contents of one
03817 *entity set with
03818 *another
03819 *
03820 ******************************************************************************/
03821
03822 void iMesh_unite( iMesh_Instance instance,
03823 /**< [in] iMesh instance handle */
03824 const iBase_EntitySetHandle entity_set_1,
03825 /**< [in] Entity set being united with another */
03826 const iBase_EntitySetHandle entity_set_2,
03827 /**< [in] Entity set being united with another */
03828 iBase_EntitySetHandle* result_entity_set,
03829 /**< [out] Pointer to entity set returned from function */
03830 int* err
03831 /**< [out] Returned Error status (see iBase_ErrorType) */
03832 );
03833
03834 /***************************************************************************/ /**
03835 * \page imesh iMesh:
03836 *ITAPS Serial Mesh
03837 *Interface
03838 *
03839 * The ITAPS Mesh
03840 *Interface iMesh
03841 *provides a common
03842 *interface for
03843 * accessing mesh and
03844 *data associated with
03845 *a mesh. Applications
03846 *written to use this
03847 *interface can use a
03848 *variety of
03849 *implementations,
03850 *choosing the one
03851 *that best meets its
03852 *needs. They can
03853 *also use tools
03854 *written to this
03855 *interface, for
03856 *example mesh
03857 *smoothing, adaptive
03858 *mesh refinement, and
03859 *parallel mesh
03860 *support.
03861 *
03862 * The ITAPS
03863 *interfaces use a
03864 *data model composed
03865 *of four basic data
03866 *types: /Entity/:
03867 *basic topological
03868 *entities in a mesh,
03869 *e.g. vertices,
03870 * triangles,
03871 *hexahedra. /Entity
03872 *Set/: arbitrary
03873 *grouping of other
03874 *entities and sets.
03875 * Entity sets also
03876 *support parent/child
03877 *relations with other
03878 *sets which are
03879 *distinct from
03880 *entities contained
03881 *in those sets.
03882 *Parent/child links
03883 * can be used to
03884 *embed graph
03885 *relationships
03886 *between sets, e.g.
03887 *to represent
03888 *topological
03889 *relationships
03890 *between the sets.
03891 * /Interface/: the
03892 *object with which
03893 *mesh is associated
03894 *and on which
03895 * functions in iMesh
03896 *are called. /Tag/:
03897 *application data
03898 *associated with
03899 *objects of any of
03900 *the other data
03901 *types. Each tag has
03902 *a designated name,
03903 *size, and data type.
03904 *
03905 * ITAPS Entity Type,
03906 *Topology Each entity
03907 *has a specific
03908 *Entity Type and
03909 *Entity Topology. The
03910 *Entity Type is one
03911 *of VERTEX, EDGE,
03912 *FACE, and REGION,
03913 *and is synonymous
03914 *with the topological
03915 *dimension of the
03916 *entity. The Entity
03917 *Topology denotes the
03918 *specific shape, for
03919 *example TRIANGLE,
03920 *QUADRILATERAL,
03921 *TETRAHEDRON, and
03922 *HEXAHEDRON. Entity
03923 *Type and Entity
03924 *Topology exist as
03925 *enumerated types,
03926 *Entity Type in the
03927 *iBase_EntityType
03928 *enumeration, and
03929 * Entity Topology in
03930 *the
03931 *iMesh_EntityTopology
03932 *enumeration.
03933 *
03934 * ITAPS Entity-,
03935 *Array-, and
03936 *Iterator-Based
03937 *Access The iMesh
03938 *interface provides
03939 *functions for
03940 *accessing entities
03941 * individually, as
03942 *arrays of entities,
03943 *or using iterators.
03944 *These access methods
03945 *have different
03946 *memory versus
03947 *execution time
03948 *tradeoffs, depending
03949 *on the
03950 *implementation.
03951 *
03952 * \image html
03953 *example_pic.jpeg
03954 *
03955 * \subpage cycles
03956 *
03957 * \page cycles Cycles
03958 *in Set-Inclusion and
03959 *Parent-Child
03960 *structures.
03961 *
03962 * There are two
03963 *graph-like
03964 *structures in the
03965 *iMesh interface and
03966 *data model; the
03967 *set-inclusion
03968 *structure and the
03969 *parent-child link
03970 *structure. Whether
03971 *these structures
03972 *support cycles is
03973 *relevant to
03974 *implementors.
03975 *
03976 * Over the evolution
03977 *of the iMesh data
03978 *model and API, both
03979 *of these structures
03980 *have been viewed
03981 *more or less like a
03982 *tree and so cycles
03983 *seem incompatible
03984 *with that notion.
03985 *
03986 * Allowing a cycle in
03987 *the set inclusion
03988 *structure implies
03989 *all entity sets in
03990 *the cycle are all
03991 *equal to each other.
03992 *That is the only
03993 *rational,
03994 * model-level view
03995 *that would allow
03996 *them all to be
03997 *(improper) subsets
03998 *of each other. On
03999 *the other hand if
04000 *the iMesh
04001 *specification
04002 *excludes cycles from
04003 *the set inclusion
04004 *structure, the time
04005 *complexity
04006 *(performance) as a
04007 * function of the
04008 *number of entity
04009 *sets may be
04010 *prohibitive for
04011 * implementations to
04012 *detect and prevent
04013 *them.
04014 *
04015 * Allowing a cycle in
04016 *the parent-child
04017 *link structure seems
04018 *likewise hard to
04019 *justify. However,
04020 *when the
04021 *parent-child
04022 *structure is viewed
04023 *more like a general
04024 *graph (a view that
04025 *the current API
04026 *itself supports even
04027 *if the function
04028 *names themselves do
04029 *not suggest that)
04030 *than specifically a
04031 *tree, the admission
04032 *of cycles there is
04033 *potentially more
04034 *natural and useful.
04035 *
04036 * Implementations are
04037 *required to support
04038 *cycles in the
04039 *Parent-Child
04040 * structure.
04041 *Implementations are
04042 *neither required to
04043 *support nor required
04044 * to explicitly
04045 *prevent cycles in
04046 *the Set-Inclusion
04047 *structure. Portable
04048 * applications should
04049 *NOT rely on
04050 *implementations
04051 *support for cycles
04052 * in the
04053 *set-inclusion
04054 *structure.
04055 ******************************************************************************/
04056
04057 /***************************************************************************/ /**
04058 * \defgroup iMesh
04059 *iMesh
04060 ******************************************************************************/
04061
04062 /***************************************************************************/ /**
04063 * \defgroup
04064 *Initialization
04065 *Initialization
04066 * \ingroup iMesh
04067 ******************************************************************************/
04068
04069 /***************************************************************************/ /**
04070 * \defgroup Entities
04071 *Entities \ingroup
04072 *iMesh
04073 ******************************************************************************/
04074
04075 /***************************************************************************/ /**
04076 * \defgroup
04077 *VertexEntities
04078 *Vertex Entities
04079 * \ingroup Entities
04080 ******************************************************************************/
04081
04082 /***************************************************************************/ /**
04083 * \defgroup
04084 *EntitySets Entity
04085 *Sets \ingroup iMesh
04086 ******************************************************************************/
04087
04088 /***************************************************************************/ /**
04089 * \defgroup
04090 *EntitySetOperators
04091 *Entity Set Operators
04092 * \ingroup EntitySets
04093 ******************************************************************************/
04094
04095 /***************************************************************************/ /**
04096 * \defgroup
04097 *Adjacencies
04098 *Adjacencies \ingroup
04099 *iMesh
04100 ******************************************************************************/
04101
04102 /***************************************************************************/ /**
04103 * \defgroup
04104 *EntityIterators
04105 *Entity Iterators
04106 * \ingroup iMesh
04107 ******************************************************************************/
04108
04109 /***************************************************************************/ /**
04110 * \defgroup Tags Tags
04111 * \ingroup iMesh
04112 ******************************************************************************/
04113
04114 /***************************************************************************/ /**
04115 * \defgroup TagData
04116 *Tag Data \ingroup
04117 *iMesh
04118 ******************************************************************************/
04119
04120 /***************************************************************************/ /**
04121 * \defgroup
04122 *TagsOnEnts Tag Data
04123 *On Entities \ingroup
04124 *TagData
04125 ******************************************************************************/
04126
04127 /***************************************************************************/ /**
04128 * \defgroup
04129 *TagsOnSets Tag Data
04130 *On Entity Sets
04131 * \ingroup TagData
04132 ******************************************************************************/
04133
04134 /***************************************************************************/ /**
04135 * \defgroup TagsOnArr
04136 *Tag Data On Arrays
04137 *of Entities \ingroup
04138 *TagData
04139 ******************************************************************************/
04140
04141 /***************************************************************************/ /**
04142 * \defgroup
04143 *MeshModification
04144 *Mesh Modification
04145 * \ingroup iMesh
04146 ******************************************************************************/
04147
04148 /***************************************************************************/ /**
04149 * \defgroup
04150 *ParentChildLinks
04151 *Parent Child Links
04152 * \ingroup iMesh
04153 ******************************************************************************/
04154
04155 /***************************************************************************/ /**
04156 * \defgroup Datatypes
04157 *Datatypes \ingroup
04158 *iMesh
04159 ******************************************************************************/
04160
04161 #ifdef __cplusplus
04162 } /* extern "C" */
04163 #endif
04164
04165 #endif /* ifndef _ITAPS_iMesh */