itaps-parallel [Fwd: iMesh_getAdjEntities (yet another proposed iMesh change)]
Mark Miller
miller86 at llnl.gov
Thu Mar 12 13:19:46 CDT 2009
On the surface of it, I think I generally agree with Jason's rationale
for suggesting these and other changes. On the other hand, there is a
cost-benefit question to consider as well. So, my response isn't so much
on the topic of the changes itself. Its more on the topic of managing
changes to the API.
My impression is that we are all trying to press ahead on various high
priority issues. Whenever we have had any time to discuss in detail
different corners of any of the APIs, there is always some good argument
for doing something one way or another. Much of this kind of design
iteration is behind us. However, I think much is also ahead, even on the
relatively mature iMesh interface. So, I think we need to accept that
our APIs will probably need to change from time to time and instead
decide on a policy for managing that change.
In my world, every time iMesh.h changes and I am trying to build VisIt
against 3 different implementations, each one being in flux relative to
iMesh, it becomes quite a challenge to arrive at a stable build again.
Such a challenge that I am unlikely to want to 'update' it for a long
while once I get it stable Hence, iMeshIO release is built against stuff
that is 3-4 months old. At the same time, I get VisIt/MOAB customers
asking about the latest MOAB/iMesh implementation and whether VisIt will
build with it.
So, I think we should decide to NOT change iMesh.h until some date
certain in the future (well apart from any SciDAC or other such
Conference). I think we should queue up all the proposed changes and
rationals and then decide to discuss them all at once, make the agreed
upon changes and then agree NOT to touch it again for another long
interval of time.
So, while I have no issue with why Jason would like to make these
changes, I would nonetheless like to suggest that we do not make these
changes now and instead decide on some interval of time from now that
we'll keep iMesh.h fixed.
Mark
On Thu, 2009-03-12 at 07:50, Lori A. Diachin wrote:
> Here's the second outstanding issue that Jason brought up for
> discussion. I've also attached the latest iMesh.h and iBase.h to this
> email from the repository - I believe those are up to date with all the
> other changes we've agreed to..
>
> Lori
>
> -------- Original Message --------
> Subject: iMesh_getAdjEntities (yet another proposed iMesh change)
> Date: Wed, 04 Feb 2009 11:33:26 -0600
> From: Jason Kraftcheck <kraftche at cae.wisc.edu>
> To: TSTT Interface <tstt-interface at mcs.anl.gov>
>
>
>
> I think that we should either drop the iMesh_getAdjEntities function
> entirely, or if not, then remove the 'offset' argument. This function
> returns entities of the "requested" type, but not the entities of the
> "requestor" type/topology.
>
> For the "offset" information to be useful, one must also have the entities
> of the "requestor" type/topology in the appropriate order. Presumably to
> get that list the application must call iMesh_getEntities with the implicit
> assumption that the order will be correct. But if the application has the
> ordered "requestor" list, then it could just as easily call
> iMesh_getEntAdjArr to get the adjacent entities without needing to make any
> assumptions about functions returning entities in a consistent order.
>
> The only case where that might be inefficient is if one wanted something
> like the list of vertices adjacent to all of the entities in a set but
> didn't care about the entities. But for this use case, presumably the
> application would rather have a single list of unique vertex handles and
> would have no use for the offset list.
>
> - jason
>
>
>
>
> ______________________________________________________________________
> #ifndef IMESH_CBIND_H__
> #define IMESH_CBIND_H__
>
> #define IMESH_MAJOR_VERSION 0
> #define IMESH_MINOR_VERSION 8
>
> /** \mainpage The ITAPS Mesh Interface iMesh
> *
> * The ITAPS Mesh Interface iMesh provides a common interface for
> * accessing mesh and data associated with a mesh. Applications written
> * to use this interface can use a variety of implementations, choosing
> * the one that best meets its needs. They can also use tools written
> * to this interface, for example mesh smoothing, adaptive mesh refinement,
> * and parallel mesh support.
> *
> * \section ITAPS Data Model
> *
> * The ITAPS interfaces use a data model composed of four basic data types: \n
> * \em Entity: basic topological entities in a mesh, e.g. vertices,
> * triangles, hexahedra. \n
> * \em Entity \em Set: arbitrary grouping of other entities and sets.
> * Entity sets also support parent/child relations with other sets which
> * are distinct from entities contained in those sets. Parent/child links
> * can be used to embed graph relationships between sets, e.g. to
> * represent topological relationships between the sets. \n
> * \em Interface: the object with which mesh is associated and on which
> * functions in iMesh are called. \n
> * \em Tag: application data associated with objects of any of the other
> * data types. Each tag has a designated name, size, and data type.
> *
> * \section JTAPS Entity Type, Topology
> * Each entity has a specific Entity Type and Entity Topology. The Entity
> * Type is one of VERTEX, EDGE, FACE, and REGION, and is synonymous with
> * the topological dimension of the entity. The Entity Topology denotes
> * the specific shape, for example TRIANGLE, QUADRILATERAL, TETRAHEDRON,
> * and HEXAHEDRON. Entity Type and Entity Topology exist as enumerated
> * types, Entity Type in the iBase_EntityType enumeration, and
> * Entity Topology in the iMesh_EntityTopology enumeration.
> *
> * \section KTAPS Entity-, Array-, and Iterator-Based Access
> *
> * The iMesh interface provides functions for accessing entities
> * individually, as arrays of entities, or using iterators. These access
> * methods have different memory versus execution time tradeoffs,
> * depending on the implementation.
> *
> * \section LTAPS Lists Passed Through Interface
> *
> * Many of the functions in iMesh have arguments corresponding to lists of
> * objects. In-type arguments for lists consist of a pointer to an array and
> * a list size. Lists returned from functions are passed in three arguments,
> * a pointer to the array representing the list, and pointers to the
> * allocated and occupied lengths of the array. These three arguments are
> * inout-type arguments, because they can be allocated by the application and
> * passed into the interface to hold the results of the function. Lists
> * which are pre-allocated must be large enough to hold the results of the
> * function; if this is not the case, an error is generated. Otherwise, the
> * occupied size is changed to the size output from the function. If a list
> * argument is unallocated (the list pointer points to a NULL value) or if
> * the incoming value of the allocated size is zero, the list storage will be
> * allocated by the implementation. IN ALL CASES, MEMORY ALLOCATED BY ITAPS
> * INTERFACE IMPLEMENTATIONS IS DONE USING THE C MALLOC FUNCTION, AND CAN BE
> * DE-ALLOCATED USING THE C FREE FUNCTION.
> *
> */
>
> #ifndef ITAPS
> #define ITAPS
> #endif
>
> #include "iBase.h"
> #include "iMesh_protos.h"
>
> #ifdef __cplusplus
> extern "C" {
> #endif
>
> /**\brief Type used to store iMesh interface handle
> *
> * Type used to store iMesh interface handle
> */
> typedef struct iMesh_Instance_Private* iMesh_Instance;
>
> /**\brief Type used to store an iterator returned by iMesh
> *
> * Type used to store an iterator returned by iMesh
> */
> typedef struct iMesh_EntityIterator_Private* iMesh_EntityIterator;
>
> /**\brief Type used to store an array iterator returned by iMesh
> *
> * Type used to store an array iterator returned by iMesh
> */
> typedef struct iMesh_EntityArrIterator_Private* iMesh_EntityArrIterator;
>
> /**\brief Enumerator specifying entity topology
> *
> * Enumerator specifying entity topology.
> */
> enum iMesh_EntityTopology {
> iMesh_POINT = 0, /**< a general zero-dimensional entity */
> iMesh_LINE_SEGMENT, /**< a general one-dimensional entity */
> iMesh_POLYGON, /**< a general two-dimensional element */
> iMesh_TRIANGLE, /**< a three-sided, two-dimensional element */
> iMesh_QUADRILATERAL, /**< a four-sided, two-dimensional element */
> iMesh_POLYHEDRON, /**< a general three-dimensional element */
> iMesh_TETRAHEDRON, /**< a four-sided, three-dimensional element whose
> * faces are triangles */
> iMesh_HEXAHEDRON, /**< a six-sided, three-dimensional element whose
> * faces are quadrilaterals */
> iMesh_PRISM, /**< a five-sided, three-dimensional element which
> * has three quadrilateral faces and two
> * triangular faces */
> iMesh_PYRAMID, /**< a five-sided, three-dimensional element
> * which has one quadrilateral face and four
> * triangular faces */
> iMesh_SEPTAHEDRON, /**< a hexahedral entity with one collapsed edge */
> iMesh_ALL_TOPOLOGIES /**< allows the user to request information
> * about all the topology types */
> };
>
> /**\brief Get the error type returned from the last iMesh function
> *
> * Get the error type returned from the last iMesh function. Value
> * returned is a member of the iBase_ErrorType enumeration.
> * \param instance iMesh instance handle
> * \param *error_type Error type returned from last iMesh function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getErrorType(iMesh_Instance instance,
> /*out*/ int *error_type,
> int *err);
>
> /**\brief Get a description of the error returned from the last iMesh function
> *
> * Get a description of the error returned from the last iMesh function
> * \param instance iMesh instance handle
> * \param descr Pointer to a character string to be filled with a
> * description of the error from the last iMesh function
> * \param *err Pointer to error type returned from function
> * \param descr_len Length of the character string pointed to by descr
> */
> void iMesh_getDescription(iMesh_Instance instance,
> /*inout*/ char *descr,
> int *err,
> /*in*/ int descr_len);
>
> /**\brief Construct a new iMesh instance
> *
> * Construct a new iMesh instance, using implementation-specific
> * options
> * \param options Pointer to implementation-specific options string
> * \param instance Pointer to iMesh instance handle returned from function
> * \param *err Pointer to error type returned from function
> * \param options_len Length of the character string pointed to by options
> */
> void iMesh_newMesh(const char *options,
> /*out*/ iMesh_Instance *instance,
> /*out*/ int *err,
> /*in*/ int options_len);
>
> /**\brief Destroy an iMesh instance
> *
> * Destroy an iMesh instance
> * \param instance iMesh instance to be destroyed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_dtor(iMesh_Instance instance,
> /*out*/ int *err);
>
> /**\brief Load a mesh from a file
> *
> * Load a mesh from a file. If entity set is specified, loaded mesh
> * is added to that set; specify root set if that is not desired.
> * \param instance iMesh instance handle
> * \param entity_set_handle Set to which loaded mesh will be added,
> * root set if not desired
> * \param name File name from which mesh is to be loaded
> * \param options Pointer to implementation-specific options string
> * \param *err Pointer to error type returned from function
> * \param name_len Length of the file name character string
> * \param options_len Length of the options character string
> */
> void iMesh_load(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const char *name,
> /*in*/ const char *options,
> /*out*/ int *err,
> /*in*/ int name_len,
> /*in*/ int options_len);
>
> /**\brief Save a mesh to a file
> *
> * Save a mesh to a file. If entity set is specified, save only the
> * mesh contained in that set.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being saved
> * \param name File name to which mesh is to be saved
> * \param options Pointer to implementation-specific options string
> * \param *err Pointer to error type returned from function
> * \param name_len Length of the file name character string
> * \param options_len Length of the options character string
> */
> void iMesh_save(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const char *name,
> /*in*/ const char *options,
> /*out*/ int *err,
> /*in*/ const int name_len,
> /*in*/ int options_len);
>
> /**\brief Get handle of the root set for this instance
> *
> * Get handle of the root set for this instance. All mesh in
> * this instance can be accessed from this set.
> * \param instance iMesh instance handle
> * \param root_set Pointer to set handle returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getRootSet(iMesh_Instance instance,
> /*out*/ iBase_EntitySetHandle *root_set,
> /*out*/ int *err);
>
> /**\brief Get the geometric dimension of mesh represented in this instance
> *
> * Get the geometric dimension of mesh represented in this instance
> * \param instance iMesh instance handle
> * \param geom_dim Pointer to dimension returned from this function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getGeometricDimension(iMesh_Instance instance,
> /*out*/ int *geom_dim,
> /*out*/ int *err);
>
> /**\brief Set geometric dimension of vertex coordinates
> *
> * Set the geometric dimension of the mesh. Notes: An application
> * should not expect this function to succeed unless the mesh database
> * is empty (no vertices created, no files read, etc.)
> *\param instance Mesh database from which to request change.
> *\param geom_dim Requested geometric dimension.
> */
> void iMesh_setGeometricDimension( iMesh_Instance instance,
> /*in*/ int geom_dim,
> /*out*/ int* err );
>
> /**\brief Get the default storage order used by this implementation
> *
> * Get the default storage order used by this implementation. Value
> * returned is a member of the iBase_StorageOrder enumeration.
> * \param instance iMesh instance handle
> * \param order Pointer to storage order returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getDfltStorage(iMesh_Instance instance,
> /*out*/ int *order,
> /*out*/ int *err);
>
> /**\brief Get the adjacency table for this implementation
> *
> * Get the adjacency table for this implementation. This table
> * is a 4x4 array, with indices 0-based, where A(i,j) (i=row, j=column)
> * represents the relative cost of retrieving adjacencies between
> * entities of dimension i to entities of dimension j
> * \param instance iMesh instance handle
> * \param *adjacency_table Pointer to array representing adjacency table
> * returned from function
> * \param adjacency_table_allocated Pointer to allocated size of
> * adjacency table
> * \param adjacency_table_size Pointer to occupied size of
> * adjacency table
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getAdjTable (iMesh_Instance instance,
> /*out*/ int** adjacency_table,
> /*inout*/ int* adjacency_table_allocated,
> /*out*/ int* adjacency_table_size,
> /*out*/ int *err);
>
> /**\brief Get the number of entities with the specified type in the instance or set
> *
> * Get the number of entities with the specified type in the instance
> * or set. If entity set handle is root set, return information for instance,
> * otherwise for set. Value of entity type must be from the
> * iBase_EntityType enumeration. If iBase_ALL_TYPES is specified,
> * total number of entities (excluding entity sets) is returned.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being queried
> * \param entity_type Type of entity requested
> * \param num_type Pointer to number of entities, returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNumOfType(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int entity_type,
> /*out*/ int *num_type,
> /*out*/ int *err);
>
> /**\brief Get the number of entities with the specified topology in the instance or set
> *
> * Get the number of entities with the specified topology in the instance
> * or set. If entity set handle is root set, return information for instance,
> * otherwise for set. Value of entity topology must be from the
> * iMesh_EntityTopology enumeration. If iMesh_ALL_TOPOLOGIES is specified,
> * total number of entities (excluding entity sets) is returned.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being queried
> * \param entity_topology Topology of entity requested
> * \param num_topo Pointer to number of entities, returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNumOfTopo(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int entity_topology,
> /*out*/ int *num_topo,
> /*out*/ int *err);
>
> /**\brief Return whether entity handles have changed since last reset or since
> * instance construction
> *
> * Return whether entity handles have changed since last reset or since
> * instance construction. If non-zero value is returned, it is not
> * guaranteed that a handle from before the last call to this function
> * represents the same entity as the same handle value does now. If
> * doReset is non-zero, resets the starting point for this function.
> * \param instance iMesh instance handle
> * \param doReset Perform a reset on the starting point after which handles
> * are invariant.
> * \param areHandlesInvariant Pointer to invariant flag returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_areEHValid(iMesh_Instance instance,
> /*in*/ int doReset,
> /*out*/ int *areHandlesInvariant,
> /*out*/ int *err);
>
>
> /**\brief Get entities of specific type and/or topology in set or instance
> *
> * Get entities of specific type and/or topology in set or instance. All
> * entities of a given type or topology are requested by specifying
> * iBase_ALL_TOPOLOGIES or iBase_ALL_TYPES, respectively. Specified type
> * or topology must be a value in the iBase_EntityType or iBase_EntityTopology
> * enumeration, respectively.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being queried
> * \param entity_type Type of entities being requested
> * \param entity_topology Topology of entities being requested
> * \param *entity_handles Pointer to array of entity handles returned
> * from function
> * \param *entity_handles_allocated Pointer to allocated size of
> * entity_handles array
> * \param *entity_handles_size Pointer to occupied size of entity_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntities(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int entity_type,
> /*in*/ const int entity_topology,
> /*out*/ iBase_EntityHandle** entity_handles,
> /*out*/ int* entity_handles_allocated,
> /*out*/ int* entity_handles_size,
> /*out*/ int *err);
>
> /**\brief Get coordinates of specified vertices
> *
> * Get coordinates of specified vertices. If storage order is passed in
> * with a value other than iBase_UNDETERMINED, coordinates are returned
> * in the specified storage order, otherwise storage order is that native
> * to the implementation. Storage order of returned coordinates is also
> * returned.
> * \param instance iMesh instance handle
> * \param vertex_handles Array of mesh vertex handles whose coordinates are
> * being requested
> * \param vertex_handles_size Number of vertices in vertex_handles array
> * \param storage_order Pointer to storage order requested/returned from
> * function
> * \param *coords Pointer to array of coordinates returned from function
> * \param *coords_allocated Pointer to allocated size of coords array
> * \param *coords_size Pointer to occupied size of coords array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getVtxArrCoords(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* vertex_handles,
> /*in*/ const int vertex_handles_size,
> /*inout*/ int* storage_order,
> /*inout*/ double** coords,
> /*inout*/ int* coords_allocated,
> /*out*/ int* coords_size,
> /*out*/ int *err);
>
>
> /**\brief Get entities adjacent to those of requested type/topology in set or instance
> *
> * Get entities adjacent to those of requested type/topology in set or
> * instance.
> *
> * If adjacencies for all entities of specified type or
> * topology are desired, specify iMesh_ALL_TOPOLOGIES or iBase_ALL_TYPES,
> * respectively. Types and topologies input to this function must be values
> * in the iBase_EntityType or iBase_EntityTopology enumerations, respectively.
> * \em offset[i] stores index of first adjacent entity to entity \em i from
> * mesh or set.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set whose adjacent entities are requested
> * (root set indicates whole mesh)
> * \param entity_type_requestor Return entities adjacent to entities of this
> * type
> * \param entity_topology_requestor Return entities adjacent to entities of
> * this topology
> * \param entity_type_requested Return adjacent entities of this type
> * \param *adj_entity_handles Pointer to array of adjacent entity handles
> * returned from function
> * \param *adj_entity_handles_allocated Pointer to allocated size of
> * adj_entity_handles array
> * \param *adj_entity_handles_size Pointer to occupied size of
> * adj_entity_handles array
> * \param *offset Pointer to array of offsets returned from function
> * \param *offset_allocated Pointer to allocated size of offset array
> * \param *offset_size Pointer to occupied size of offset array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getAdjEntities(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int entity_type_requestor,
> /*in*/ const int entity_topology_requestor,
> /*in*/ const int entity_type_requested,
> /*inout*/ iBase_EntityHandle** adj_entity_handles,
> /*inout*/ int* adj_entity_handles_allocated,
> /*out*/ int* adj_entity_handles_size,
> /*inout*/ int** offset,
> /*inout*/ int* offset_allocated,
> /*out*/ int* offset_size,
> /*out*/ int *err);
>
> /**\brief Initialize an array iterator over specified entity type, topology, and
> * size
> *
> * Initialize an array iterator over specified entity type, topology, and
> * size, for a specified set or instance. Iterator returned can be used
> * as input to functions returning entities for the iterator. If all
> * entities of a specified type and/or topology are to be iterated,
> * specify iBase_ALL_TYPES or iMesh_ALL_TOPOLOGIES, respectively.
> * Specified type or topology must be a value in the iBase_EntityType or
> * iMesh_EntityTopology enumerations, respectively.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being iterated
> * \param requested_entity_type Type of entity to iterate
> * \param requested_entity_topology Topology of entity to iterate
> * \param requested_array_size Size of chunks of handles returned for each
> * value of the iterator
> * \param entArr_iterator Pointer to iterator returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_initEntArrIter(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int requested_entity_type,
> /*in*/ const int requested_entity_topology,
> /*in*/ const int requested_array_size,
> /*out*/ iMesh_EntityArrIterator* entArr_iterator,
> /*out*/ int *err);
>
> /**\brief Get entities contained in array iterator and increment iterator
> *
> * Get the entities contained in an array iterator, and increment the
> * iterator. Also return whether the next value of the iterator has
> * any entities (if non-zero, next iterator value is the end of the
> * iteration).
> * \param instance iMesh instance handle
> * \param entArr_iterator Iterator being queried
> * \param *entity_handles Pointer to array of entity handles contained in
> * current value of iterator
> * \param *entity_handles_allocated Pointer to allocated size of
> * entity_handles array
> * \param *entity_handles_size Pointer to occupied size of entity_handles
> * array
> * \param has_data Pointer to flag; if returned non-zero, next iterator
> * has a non-zero number of entities
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNextEntArrIter(iMesh_Instance instance,
> /*in*/ iMesh_EntityArrIterator entArr_iterator,
> /*inout*/ iBase_EntityHandle** entity_handles,
> /*inout*/ int* entity_handles_allocated,
> /*out*/ int* entity_handles_size,
> /*out*/ int *has_data,
> /*out*/ int *err);
>
>
> /**\brief Reset the array iterator
> *
> * Reset the array iterator
> * \param instance iMesh instance handle
> * \param entArr_iterator Iterator to reset
> * \param *err Pointer to error type returned from function
> */
> void iMesh_resetEntArrIter(iMesh_Instance instance,
> /*in*/ iMesh_EntityArrIterator entArr_iterator,
> /*out*/ int *err);
>
>
> /**\brief Destroy the specified array iterator
> *
> * Destroy the specified array iterator
> * \param instance iMesh instance handle
> * \param entArr_iterator Iterator which gets destroyed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_endEntArrIter(iMesh_Instance instance,
> /*in*/ iMesh_EntityArrIterator entArr_iterator,
> /*out*/ int *err);
>
> /**\brief Get the entity topology for the specified entities
> *
> * Get the entity topology for the specified entities. Topologies
> * returned are values in the iMesh_EntityTopology enumeration.
> * \param instance iMesh instance handle
> * \param entity_handles Array of entity handles being queried
> * \param entity_handles_size Number of entities in entity_handles array
> * \param *topology Pointer to array of entity topologies returned
> * from function
> * \param *topology_allocated Pointer to allocated size of topology array
> * \param *topology_size Pointer to occupied size of topology array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntArrTopo(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*inout*/ int** topology,
> /*inout*/ int* topology_allocated,
> /*out*/ int* topology_size,
> /*out*/ int *err);
>
>
> /**\brief Get the entity type for the specified entities
> *
> * Get the entity type for the specified entities. Types
> * returned are values in the iBase_EntityType enumeration.
> * \param instance iMesh instance handle
> * \param entity_handles Array of entity handles being queried
> * \param entity_handles_size Number of entities in entity_handles array
> * \param *type Pointer to array of types returned from function
> * \param *type_allocated Pointer to allocated size of type array
> * \param *type_size Pointer to occupied size of type array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntArrType(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*inout*/ int** type,
> /*inout*/ int* type_allocated,
> /*out*/ int* type_size,
> /*out*/ int *err);
>
>
> /**\brief Get entities of specified type adjacent to entities
> *
> * Get entities of specified type adjacent to entities. Specified type
> * must be value in the iBase_EntityType enumeration. \em offset(i) is
> * index of first entity in adjacentEntityHandles array adjacent to
> * entity_handles[i].
> * \param instance iMesh instance handle
> * \param entity_handles Array of entity handles being queried
> * \param entity_handles_size Number of entities in entity_handles array
> * \param entity_type_requested Type of adjacent entities requested
> * \param *adjacentEntityHandles Pointer to array of adjacentEntityHandles
> * returned from function
> * \param *adjacentEntityHandles_allocated Pointer to allocated size of
> * adjacentEntityHandles array
> * \param *adj_entity_handles_size Pointer to occupied size of
> * adjacentEntityHandles array
> * \param *offset Pointer to array of offsets returned from function
> * \param *offset_allocated Pointer to allocated size of offset array
> * \param *offset_size Pointer to occupied size of offset array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntArrAdj(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const int entity_type_requested,
> /*inout*/ iBase_EntityHandle** adjacentEntityHandles,
> /*inout*/ int* adjacentEntityHandles_allocated,
> /*out*/ int* adj_entity_handles_size,
> /*inout*/ int** offset,
> /*inout*/ int* offset_allocated,
> /*out*/ int* offset_size,
> /*out*/ int *err);
>
> /**\brief Get "2nd order" adjacencies to an array of entities
> * Get "2nd order" adjacencies to an array of entities, that is, from each
> * entity, through other entities of a specified "bridge" dimension, to other
> * entities of another specified "to" dimension.
> *
> * \param instance iMesh instance for this call
> * \param entity_handles Entities from which adjacencies are requested
> * \param entity_handles_size Number of entities whose adjacencies are requested
> * \param bridge_entity_type Type of bridge entity for 2nd order adjacencies
> * \param requested_entity_type Type of adjacent entities returned
> * \param adj_entity_handles Adjacent entities
> * \param adj_entity_handles_allocated Allocated size of returned array
> * \param adj_entity_handles_size Occupied size of returned array
> * \param offset Offset[i] is offset into adj_entity_handles of 2nd order
> * adjacencies of ith entity in entity_handles
> * \param offset_allocated Allocated size of offset array
> * \param offset_size Occupied size of offset array
> * \param err
> */
> void iMesh_getEntArr2ndAdj( iMesh_Instance instance,
> iBase_EntityHandle const* entity_handles,
> int entity_handles_size,
> int bridge_entity_type,
> int requested_entity_type,
> iBase_EntityHandle** adj_entity_handles,
> int* adj_entity_handles_allocated,
> int* adj_entity_handles_size,
> int** offset,
> int* offset_allocated,
> int* offset_size,
> int* err );
>
> /**\brief Get indexed representation of mesh or subset of mesh
> *
> * Given an entity set and optionally a type or topology, return:
> * - The entities in the set of the specified type or topology
> * - The entities adjacent to those entities with a specified
> * type, as a list of unique handles.
> * - For each entity in the first list, the adjacent entities,
> * specified as indices into the second list.
> *
> *\param entity_set_handle The set of entities from which to query
> *\param entity_type_requestor If not iBase_ALL_TYPES, act only on
> * the subset of 'entity_set_handle' of the
> * specified type.
> *\param entity_topology_requestor If not iMesh_ALL_TOPOLOGIES, act only
> * on the subset of 'entity_set_handle' with
> * the specified topology.
> *\param entity_type_requested The type of the adjacent entities to
> * return.
> *\param entity_handles The handles of the (non-struct) subset of
> * the entity set indicated by
> * 'entity_set_handle' and the optional type
> * and topology filtering arguments.
> *\param adj_entity_handles The union of the entities of type
> * 'requested_entity_type' adjacent to each
> * entity in 'entity_handles'.
> *\param adj_entity_indices For each entity in 'entity_handles', the
> * adjacent entities of type
> * 'entity_type_requested', specified as
> * indices into 'adj_entity_handles'. The
> * values are concatenated into a single
> * array in the order of the entity handles
> * in 'entity_handles'.
> *\param offset For each entity in the corresponding
> * position in 'entity_handles', the position
> * in 'adj_entity_indices' at which values
> * for that entity are stored.
> */
> void iMesh_getAdjEntIndices(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set_handle,
> /*in*/ int entity_type_requestor,
> /*in*/ int entity_topology_requestor,
> /*in*/ int entity_type_requested,
> /*inout*/ iBase_EntityHandle** entity_handles,
> /*inout*/ int* entity_handles_allocated,
> /*out*/ int* entity_handles_size,
> /*inout*/ iBase_EntityHandle** adj_entity_handles,
> /*inout*/ int* adj_entity_handles_allocated,
> /*out*/ int* adj_entity_handles_size,
> /*inout*/ int** adj_entity_indices,
> /*inout*/ int* adj_entity_indices_allocated,
> /*out*/ int* adj_entity_indices_size,
> /*inout*/ int** offset,
> /*inout*/ int* offset_allocated,
> /*out*/ int* offset_size,
> /*out*/ int *err);
>
> /**\brief Create an entity set
> *
> * Create an entity set, either ordered (isList=1) or unordered
> * (isList=0). Unordered entity sets can contain a given entity or
> * set only once.
> * \param instance iMesh instance handle
> * \param isList If non-zero, an ordered list is created, otherwise an
> * unordered set is created.
> * \param entity_set_created Entity set created by function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_createEntSet(iMesh_Instance instance,
> /*in*/ const int isList,
> /*out*/ iBase_EntitySetHandle* entity_set_created,
> /*out*/ int *err);
>
> /**\brief Destroy an entity set
> *
> * Destroy an entity set
> * \param instance iMesh instance handle
> * \param entity_set Entity set to be destroyed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_destroyEntSet(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*out*/ int *err);
>
> /**\brief Return whether a specified set is ordered or unordered
> *
> * Return whether a specified set is ordered (*is_list=1) or
> * unordered (*is_list=0)
> * \param instance iMesh instance handle
> * \param entity_set Entity set being queried
> * \param is_list Pointer to flag returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_isList(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set,
> /*out*/ int *is_list,
> /*out*/ int *err);
>
> /**\brief Get the number of entity sets contained in a set or interface
> *
> * Get the number of entity sets contained in a set or interface. If
> * a set is input which is not the root set, num_hops indicates the
> * maximum number of contained sets from entity_set_handle to one of the
> * contained sets, inclusive of the contained set.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being queried
> * \param num_hops Maximum hops from entity_set_handle to contained set,
> * inclusive of the contained set
> * \param num_sets Pointer to the number of sets returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNumEntSets(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int num_hops,
> /*out*/ int *num_sets,
> /*out*/ int *err);
>
>
> /**\brief Get the entity sets contained in a set or interface
> *
> * Get the entity sets contained in a set or interface. If
> * a set is input which is not the root set, num_hops indicates the
> * maximum number of contained sets from entity_set_handle to one of the
> * contained sets, inclusive of the contained set.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being queried
> * \param num_hops Maximum hops from entity_set_handle to contained set,
> * inclusive of the contained set
> * \param *contained_set_handles Pointer to array of set handles returned
> * from function
> * \param contained_set_handles_allocated Pointer to allocated length of
> * contained_set_handles array
> * \param contained_set_handles_size Pointer to occupied length of
> * contained_set_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntSets(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int num_hops,
> /*out*/ iBase_EntitySetHandle** contained_set_handles,
> /*out*/ int* contained_set_handles_allocated,
> /*out*/ int* contained_set_handles_size,
> /*out*/ int *err);
>
> /**\brief Add an entity to a set
> *
> * Add an entity to a set
> * \param instance iMesh instance handle
> * \param entity_handle The entity being added
> * \param entity_set Pointer to the set being added to
> * \param *err Pointer to error type returned from function
> */
> void iMesh_addEntToSet(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*out*/ int *err);
>
> /**\brief Remove an entity from a set
> *
> * Remove an entity from a set
> *
> * \param instance iMesh instance handle
> * \param entity_handle The entity being removed
> * \param entity_set Pointer to the set being removed from
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvEntFromSet(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*out*/ int *err);
>
>
> /**\brief Add an array of entities to a set
> *
> * Add an array of entities to a set
> * \param instance iMesh instance handle
> * \param entity_handles Array of entities being added
> * \param entity_handles_size Number of entities in entity_handles array
> * \param entity_set Pointer to the set being added to
> * \param *err Pointer to error type returned from function
> */
> void iMesh_addEntArrToSet(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ int entity_handles_size,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*out*/ int *err);
>
>
> /**\brief Remove an array of entities from a set
> *
> * Remove an array of entities from a set
> * \param instance iMesh instance handle
> * \param entity_handles Array of entities being remove
> * \param entity_handles_size Number of entities in entity_handles array
> * \param entity_set Pointer to the set being removed from
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvEntArrFromSet(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ int entity_handles_size,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*out*/ int *err);
>
>
> /**\brief Add an entity set to a set
> *
> * Add an entity set to a set
> * \param instance iMesh instance handle
> * \param entity_set_to_add The entity set being added
> * \param entity_set_handle Pointer to the set being added to
> * \param *err Pointer to error type returned from function
> */
> void iMesh_addEntSet(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set_to_add,
> /*in*/ iBase_EntitySetHandle entity_set_handle,
> /*out*/ int *err);
>
>
> /**\brief Remove an entity set from a set
> *
> * Remove an entity set from a set
> * \param instance iMesh instance handle
> * \param entity_set_to_remove The entity set being removed
> * \param entity_set_handle Pointer to the set being removed from
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvEntSet(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set_to_remove,
> /*in*/ iBase_EntitySetHandle entity_set_handle,
> /*out*/ int *err);
>
> /**\brief Return whether an entity is contained in another set
> *
> * Return whether an entity is contained (*is_contained=1) or not
> * contained (*is_contained=0) in another set
> * \param instance iMesh instance handle
> * \param containing_entity_set Entity set being queried
> * \param contained_entity Entity potentially contained in
> * containing_entity_set
> * \param is_contained Pointer to flag returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_isEntContained(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle containing_entity_set,
> /*in*/ iBase_EntityHandle contained_entity,
> /*out*/ int *is_contained,
> /*out*/ int *err);
>
> /**\brief Return whether entities are contained in a set
> *
> * Return whether each entity is contained in the set.
> * \param instance iMesh instance handle
> * \param containing_entity_set Entity set being queried
> * \param entity_handles List of entities for which to check containment.
> * \param is_contained One value for each input entity, 1 if contained
> * in set, zero otherwise.
> * \param *err Pointer to error type returned from function
> */
> void iMesh_isEntArrContained( iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle containing_set,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ int num_entity_handles,
> /*inout*/ int** is_contained,
> /*inout*/ int* is_contained_allocated,
> /*out*/ int* is_contained_size,
> /*out*/ int* err );
>
> /**\brief Return whether an entity set is contained in another set
> *
> * Return whether a set is contained (*is_contained=1) or not contained
> * (*is_contained=0) in another set
> * \param instance iMesh instance handle
> * \param containing_entity_set Entity set being queried
> * \param contained_entity_set Entity set potentially contained in
> * containing_entity_set
> * \param is_contained Pointer to flag returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_isEntSetContained(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle containing_entity_set,
> /*in*/ const iBase_EntitySetHandle contained_entity_set,
> /*out*/ int *is_contained,
> /*out*/ int *err);
>
> /**\brief Add parent/child links between two sets
> *
> * Add parent/child links between two sets. Makes parent point to child
> * and child point to parent.
> * \param instance iMesh instance handle
> * \param parent_entity_set Pointer to parent set
> * \param child_entity_set Pointer to child set
> * \param *err Pointer to error type returned from function
> */
> void iMesh_addPrntChld(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle parent_entity_set,
> /*in*/ iBase_EntitySetHandle child_entity_set,
> /*out*/ int *err);
>
> /**\brief Remove parent/child links between two sets
> *
> * Remove parent/child links between two sets.
> * \param instance iMesh instance handle
> * \param parent_entity_set Pointer to parent set
> * \param child_entity_set Pointer to child set
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvPrntChld(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle parent_entity_set,
> /*in*/ iBase_EntitySetHandle child_entity_set,
> /*out*/ int *err);
>
> /**\brief Return whether two sets are related by parent/child links
> *
> * Return whether two sets are related (*is_child=1) or not (*is_child=0)
> * by parent/child links
> * \param instance iMesh instance handle
> * \param parent_entity_set Pointer to parent set
> * \param child_entity_set Pointer to child set
> * \param is_child Pointer to flag returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_isChildOf(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle parent_entity_set,
> /*in*/ const iBase_EntitySetHandle child_entity_set,
> /*out*/ int *is_child,
> /*out*/ int *err);
>
> /**\brief Get the number of child sets linked from a specified set
> *
> * Get the number of child sets linked from a specified set. If num_hops
> * is non-zero, this represents the maximum hops from entity_set to any
> * child in the count.
> * \param instance iMesh instance handle
> * \param entity_set Entity set being queried
> * \param num_hops Maximum hops from entity_set_handle to child set,
> * inclusive of the child set
> * \param num_child Pointer to number of children returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNumChld(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set,
> /*in*/ const int num_hops,
> /*out*/ int *num_child,
> /*out*/ int *err);
>
> /**\brief Get the number of parent sets linked from a specified set
> *
> * Get the number of parent sets linked from a specified set. If num_hops
> * is non-zero, this represents the maximum hops from entity_set to any
> * parent in the count.
> * \param instance iMesh instance handle
> * \param entity_set Entity set being queried
> * \param num_hops Maximum hops from entity_set_handle to parent set,
> * inclusive of the parent set
> * \param num_parent Pointer to number of parents returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNumPrnt(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set,
> /*in*/ const int num_hops,
> /*out*/ int *num_parent,
> /*out*/ int *err);
>
> /**\brief Get the child sets linked from a specified set
> *
> * Get the child sets linked from a specified set. If num_hops
> * is non-zero, this represents the maximum hops from entity_set to any
> * child.
> * \param instance iMesh instance handle
> * \param from_entity_set Entity set being queried
> * \param num_hops Maximum hops from entity_set_handle to child set,
> * inclusive of the child set
> * \param *entity_set_handles Pointer to array of child sets
> * returned from function
> * \param *entity_set_handles_allocated Pointer to allocated size of
> * entity_set_handles array
> * \param *entity_set_handles_size Pointer to occupied size of
> * entity_set_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getChldn(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle from_entity_set,
> /*in*/ const int num_hops,
> /*out*/ iBase_EntitySetHandle** entity_set_handles,
> /*out*/ int* entity_set_handles_allocated,
> /*out*/ int* entity_set_handles_size,
> /*out*/ int *err);
>
> /**\brief Get the parent sets linked from a specified set
> *
> * Get the parent sets linked from a specified set. If num_hops
> * is non-zero, this represents the maximum hops from entity_set to any
> * parent.
> * \param instance iMesh instance handle
> * \param from_entity_set Entity set being queried
> * \param num_hops Maximum hops from entity_set_handle to parent set,
> * inclusive of the parent set
> * \param *entity_set_handles Pointer to array of parent sets
> * returned from function
> * \param *entity_set_handles_allocated Pointer to allocated size of
> * entity_set_handles array
> * \param *entity_set_handles_size Pointer to occupied size of
> * entity_set_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getPrnts(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle from_entity_set,
> /*in*/ const int num_hops,
> /*out*/ iBase_EntitySetHandle** entity_set_handles,
> /*out*/ int* entity_set_handles_allocated,
> /*out*/ int* entity_set_handles_size,
> /*out*/ int *err);
>
> /**\brief Set coordinates for an array of vertices
> *
> * Set coordinates for an array of vertices. Specified storage
> * order must be either iBase_INTERLEAVED or iBase_BLOCKED, and
> * indicates order of x, y, and z coordinates in coordinate array.
> * \param instance iMesh instance handle
> * \param vertex_handles Array of vertex handles
> * \param vertex_handles_size Number of vertex handles in array
> * \param storage_order Storage order of coordinates in coordinate array
> * \param new_coords Coordinate array
> * \param new_coords_size Size of coordinate array; should be
> * 3*vertex_handles_size
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setVtxArrCoords(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* vertex_handles,
> /*in*/ const int vertex_handles_size,
> /*in*/ const int storage_order,
> /*in*/ const double* new_coords,
> /*in*/ const int new_coords_size,
> /*out*/ int *err);
>
>
> /**\brief Create an array of new vertices at specified coordinates
> *
> * Create an array of new vertices at specified coordinates. Value of
> * storage_order must be either iBase_INTERLEAVED or iBase_BLOCKED.
> * \param instance iMesh instance handle
> * \param num_verts Number of new vertices to be created
> * \param storage_order Storage order of coordinates in new_coords array
> * \param new_coords Array of coordinates of new vertices
> * \param new_coords_size Number of coordinates in new_coords array, should
> * be 3*num_verts
> * \param *new_vertex_handles Pointer to array of new vertex handles
> * returned from function
> * \param *new_vertex_handles_allocated Pointer to allocated size of
> * new_vertex_handles array
> * \param *new_vertex_handles_size Pointer to occupied size of
> * new_vertex_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_createVtxArr(iMesh_Instance instance,
> /*in*/ const int num_verts,
> /*in*/ const int storage_order,
> /*in*/ const double* new_coords,
> /*in*/ const int new_coords_size,
> /*inout*/ iBase_EntityHandle** new_vertex_handles,
> /*inout*/ int* new_vertex_handles_allocated,
> /*inout*/ int* new_vertex_handles_size,
> /*out*/ int *err);
>
>
> /**\brief Create an array of new entities with specified lower-order topology
> *
> * Create an array of new entities with specified lower-order topology.
> * Specified new_entity_topology must be value in iMesh_EntityTopology
> * enumeration. Values return in status array must be values in the
> * iBase_CreationStatus enumeration.
> * \param instance iMesh instance handle
> * \param new_entity_topology Topology of created entity
> * \param lower_order_entity_handles Array of lower order entity handles
> * used to construct new entities
> * \param lower_order_entity_handles_size Number of entities in array of
> * lower order entity handles
> * \param *new_entity_handles Pointer to array of new_entity_handles
> * returned from function
> * \param *new_entity_handles_allocated Pointer to allocated size of
> * new_entity_handles array
> * \param *new_entity_handles_size Pointer to occupied size of
> * new_entity_handles array
> * \param *status Pointer to array of creation status returned from
> * function
> * \param *status_allocated Pointer to allocated size of status array
> * \param *status_size Pointer to occupied size of status array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_createEntArr(iMesh_Instance instance,
> /*in*/ const int new_entity_topology,
> /*in*/ const iBase_EntityHandle* lower_order_entity_handles,
> /*in*/ const int lower_order_entity_handles_size,
> /*out*/ iBase_EntityHandle** new_entity_handles,
> /*out*/ int* new_entity_handles_allocated,
> /*out*/ int* new_entity_handles_size,
> /*inout*/ int** status,
> /*inout*/ int* status_allocated,
> /*out*/ int* status_size,
> /*out*/ int *err);
>
>
> /**\brief Delete specified entities
> *
> * Delete specified entities
> * \param instance iMesh instance handle
> * \param entity_handles Array of entity handles to be deleted
> * \param entity_handles_size Number of entities in array to be deleted
> * \param *err Pointer to error type returned from function
> */
> void iMesh_deleteEntArr(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*out*/ int *err);
>
>
> /**\brief Create a tag with specified name, size, and type
> *
> * Create a tag with specified name, size, and type. Tag size is in
> * units of size of tag_type data types. Value input for tag type must be
> * value in iBase_TagType enumeration.
> * \param instance iMesh instance handle
> * \param tag_name Character string indicating tag name
> * \param tag_size Size of each tag value, in units of number of tag_type
> * entities
> * \param tag_type Data type for data stored in this tag
> * \param tag_handle Pointer to tag handle returned from function
> * \param *err Pointer to error type returned from function
> * \param tag_name_len Length of tag name string
> */
> void iMesh_createTag(iMesh_Instance instance,
> /*in*/ const char* tag_name,
> /*in*/ const int tag_size,
> /*in*/ const int tag_type,
> /*out*/ iBase_TagHandle* tag_handle,
> /*out*/ int *err,
> /*in*/ const int tag_name_len);
>
>
> /**\brief Destroy a tag
> *
> * Destroy a tag. If forced is non-zero and entities still have values
> * set for this tag, tag is deleted anyway and those values disappear,
> * otherwise tag is not deleted.
> * \param instance iMesh instance handle
> * \param tag_handle Handle of tag to be deleted
> * \param forced If non-zero, delete the tag even if entities have values
> * set for that tag
> * \param *err Pointer to error type returned from function
> */
> void iMesh_destroyTag(iMesh_Instance instance,
> /*in*/ iBase_TagHandle tag_handle,
> /*in*/ const int forced,
> /*out*/ int *err);
>
> /**\brief Get the name for a given tag handle
> *
> * Get the name for a given tag handle
> * \param instance iMesh instance handle
> * \param tag_handle Tag handle being queried
> * \param name Pointer to character string to store name returned from
> * function
> * \param *err Pointer to error type returned from function
> * \param name_len Length of character string input to function
> */
> void iMesh_getTagName(iMesh_Instance instance,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ char *name,
> /*out*/ int *err,
> /*in*/ int name_len);
>
> /**\brief Get size of a tag in units of numbers of tag data type
> *
> * Get size of a tag in units of numbers of tag data type
> * \param instance iMesh instance handle
> * \param tag_handle Handle of tag being queried
> * \param tag_size Pointer to tag size returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getTagSizeValues(iMesh_Instance instance,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *tag_size,
> /*out*/ int *err);
>
> /**\brief Get size of a tag in units of bytes
> *
> * Get size of a tag in units of bytes
> * \param instance iMesh instance handle
> * \param tag_handle Handle of tag being queried
> * \param tag_size Pointer to tag size returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getTagSizeBytes(iMesh_Instance instance,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *tag_size,
> /*out*/ int *err);
>
> /**\brief Get a the handle of an existing tag with the specified name
> *
> * Get a the handle of an existing tag with the specified name
> * \param instance iMesh instance handle
> * \param tag_name Name of tag being queried
> * \param tag_handle Pointer to tag handle returned from function
> * \param *err Pointer to error type returned from function
> * \param tag_name_len Length of tag name string
> */
> void iMesh_getTagHandle(iMesh_Instance instance,
> /*in*/ const char* tag_name,
> /*out*/ iBase_TagHandle *tag_handle,
> /*out*/ int *err,
> int tag_name_len);
>
> /**\brief Get the data type of the specified tag handle
> *
> * Get the data type of the specified tag handle. Tag type is a value in
> * the iBase_TagType enumeration.
> * \param instance iMesh instance handle
> * \param tag_handle Handle for the tag being queried
> * \param tag_type Pointer to tag type returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getTagType(iMesh_Instance instance,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *tag_type,
> /*out*/ int *err);
>
> /**\brief Set a tag value of arbitrary type on an entity set
> *
> * Set a tag value of arbitrary type on an entity set. Tag data is
> * passed as char* type,
> * but really represents pointer to arbitrary data.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param tag_value Pointer to tag data being set on entity set
> * \param tag_value_size Size in bytes of tag data
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setEntSetData(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const char* tag_value,
> /*in*/ const int tag_value_size,
> /*out*/ int *err);
>
>
> /**\brief Set a tag value of integer type on an entity set
> *
> * Set a tag value of integer type on an entity set.
> * \param instance iMesh instance handle
> * \param entity_set Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param tag_value Tag value being set on entity set
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setEntSetIntData(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const int tag_value,
> /*out*/ int *err);
>
>
> /**\brief Set a tag value of double type on an entity set
> *
> * Set a tag value of double type on an entity set.
> * \param instance iMesh instance handle
> * \param entity_set Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param tag_value Tag value being set on entity set
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setEntSetDblData(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const double tag_value,
> /*out*/ int *err);
>
>
> /**\brief Set a tag value of entity handle type on an entity set
> *
> * Set a tag value of entity handle type on an entity set.
> * \param instance iMesh instance handle
> * \param entity_set Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param tag_value Tag value being set on entity set
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setEntSetEHData(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const iBase_EntityHandle tag_value,
> /*out*/ int *err);
>
>
> /**\brief Get the value of a tag of arbitrary type on an entity set
> *
> * Get the value of a tag of arbitrary type on an entity set. Tag data
> * is passed back as char* type, but really represents arbitrary data.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param *tag_value Pointer to tag data array being queried
> * \param *tag_value_allocated Pointer to tag data array allocated size
> * \param *tag_value_size Pointer to tag data array occupied size
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntSetData(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ char** tag_value,
> /*inout*/ int* tag_value_allocated,
> /*inout*/ int* tag_value_size,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of integer type on an entity set
> *
> * Get the value of a tag of integer type on an entity set.
> * \param instance iMesh instance handle
> * \param entity_set Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param *out_data Pointer to tag value returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntSetIntData(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *out_data,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of double type on an entity set
> *
> * Get the value of a tag of double type on an entity set.
> * \param instance iMesh instance handle
> * \param entity_set Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param *out_data Pointer to tag value returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntSetDblData(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ double *out_data,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of entity handle type on an entity set
> *
> * Get the value of a tag of entity handle type on an entity set.
> * \param instance iMesh instance handle
> * \param entity_set Entity set on which tag is being set
> * \param tag_handle Tag being set on an entity set
> * \param *out_data Pointer to tag value returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntSetEHData(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ iBase_EntityHandle *out_data,
> /*out*/ int *err);
>
> /**\brief Get all the tags associated with a specified entity set
> *
> * Get all the tags associated with a specified entity set
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity being queried
> * \param *tag_handles Pointer to array of tag_handles returned from
> * function
> * \param *tag_handles_allocated Pointer to allocated size of tag_handles
> * array
> * \param *tag_handles_size Pointer to occupied size of tag_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getAllEntSetTags(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*out*/ iBase_TagHandle** tag_handles,
> /*out*/ int* tag_handles_allocated,
> /*out*/ int* tag_handles_size,
> /*out*/ int *err);
>
> /**\brief Remove a tag value from an entity set
> *
> * Remove a tag value from an entity set
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set from which tag is being removed
> * \param tag_handle Tag handle of tag being removed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvEntSetTag(iMesh_Instance instance,
> /*in*/ iBase_EntitySetHandle entity_set_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *err);
>
> /**\brief Set coordinates for a vertex
> *
> * Set coordinates for a vertex.
> * \param instance iMesh instance handle
> * \param vertex_handle vertex handle being set
> * \param x x coordinate being set
> * \param y y coordinate being set
> * \param z z coordinate being set
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setVtxCoords(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle vertex_handle,
> /*in*/ const double x, /*in*/ const double y,
> /*in*/ const double z,
> /*out*/ int *err);
>
> /**\brief Create a new vertex at specified coordinates
> *
> * Create a new vertex at specified coordinates.
> * \param instance iMesh instance handle
> * \param x x coordinate of new vertex
> * \param y y coordinate of new vertex
> * \param z z coordinate of new vertex
> * \param new_vertex_handle Pointer to new vertex handles returned from
> * function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_createVtx(iMesh_Instance instance,
> /*in*/ const double x, /*in*/ const double y,
> /*in*/ const double z,
> /*out*/ iBase_EntityHandle* new_vertex_handle,
> /*out*/ int *err);
>
> /**\brief Create a new entity with specified lower-order topology
> *
> * Create a new entity with specified lower-order topology.
> * Specified new_entity_topology must be value in iMesh_EntityTopology
> * enumeration. Value returned as status must be a value in the
> * iBase_CreationStatus enumeration.
> * \param instance iMesh instance handle
> * \param new_entity_topology Topology of created entity
> * \param lower_order_entity_handles Array of lower order entity handles
> * used to construct new entity
> * \param lower_order_entity_handles_size Number of entities in array of
> * lower order entity handles
> * \param new_entity_handle Pointer to new entity handle returned from
> * function
> * \param status Pointer to creation status returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_createEnt(iMesh_Instance instance,
> /*in*/ const int new_entity_topology,
> /*in*/ const iBase_EntityHandle* lower_order_entity_handles,
> /*in*/ const int lower_order_entity_handles_size,
> /*out*/ iBase_EntityHandle* new_entity_handle,
> /*out*/ int* status,
> /*out*/ int *err);
>
> /**\brief Delete specified entity
> *
> * Delete specified entity
> * \param instance iMesh instance handle
> * \param entity_handle Entity to be deleted
> * \param *err Pointer to error type returned from function
> */
> void iMesh_deleteEnt(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*out*/ int *err);
>
> /**\brief Get tag values of arbitrary type for an array of entities
> *
> * Get tag values of arbitrary type for an array of entities. Tag data
> * is returned as char* type, but really represents arbitrary data.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param *tag_values Pointer to tag data array being returned from
> * function
> * \param tag_values_allocated Pointer to allocated size of tag data array
> * \param tag_values_size Pointer to occupied size of tag data array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ char** tag_values,
> /*inout*/int* tag_values_allocated,
> /*out*/ int* tag_values_size,
> /*out*/ int *err);
>
> /**\brief Get tag values of integer type for an array of entities
> *
> * Get tag values of integer type for an array of entities.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param *tag_values Pointer to tag data array being returned from
> * function
> * \param tag_values_allocated Pointer to allocated size of tag data array
> * \param tag_values_size Pointer to occupied size of tag data array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getIntArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ int** tag_values,
> /*inout*/ int* tag_values_allocated,
> /*out*/ int* tag_values_size,
> /*out*/ int *err);
>
> /**\brief Get tag values of double type for an array of entities
> *
> * Get tag values of double type for an array of entities.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param *tag_values Pointer to tag data array being returned from
> * function
> * \param tag_values_allocated Pointer to allocated size of tag data array
> * \param tag_values_size Pointer to occupied size of tag data array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getDblArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ double** tag_values,
> /*inout*/ int* tag_values_allocated,
> /*out*/ int* tag_values_size,
> /*out*/ int *err);
>
> /**\brief Get tag values of entity handle type for an array of entities
> *
> * Get tag values of entity handle type for an array of entities.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param *tag_value Pointer to tag data array being returned from
> * function
> * \param tag_value_allocated Pointer to allocated size of tag data array
> * \param tag_value_size Pointer to occupied size of tag data array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEHArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ iBase_EntityHandle** tag_value,
> /*inout*/ int* tag_value_allocated,
> /*out*/ int* tag_value_size,
> /*out*/ int *err);
>
> /**\brief Set tag values of arbitrary type on an array of entities
> *
> * Set tag values of arbitrary type on an array of entities. Tag data is
> * passed as char* type, but really represents pointer to arbitrary data.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param tag_values Pointer to tag data being set on entity
> * \param tag_values_size Size in total bytes of tag data
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const char* tag_values,
> /*in*/ const int tag_values_size,
> /*out*/ int *err);
>
> /**\brief Set tag values of integer type on an array of entities
> *
> * Set tag values of integer type on an array of entities.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param tag_values Pointer to tag data being set on entities
> * \param tag_values_size Size in total number of integers of tag data
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setIntArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const int* tag_values,
> /*in*/ const int tag_values_size,
> /*out*/ int *err);
>
> /**\brief Set tag values of double type on an array of entities
> *
> * Set tag values of double type on an array of entities.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param tag_values Pointer to tag data being set on entities
> * \param tag_values_size Size in total number of doubles of tag data
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setDblArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const double* tag_values,
> /*in*/ const int tag_values_size,
> /*out*/ int *err);
>
> /**\brief Set tag values of entity handle type on an array of entities
> *
> * Set tag values of entity handle type on an array of entities.
> * \param instance iMesh instance handle
> * \param entity_handles Entity array on which tag is being set
> * \param entity_handles_size Number of entities in array
> * \param tag_handle Tag being set on an entity
> * \param tag_values Pointer to tag data being set on entities
> * \param tag_values_size Size in total number of entity handles of tag
> * data
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setEHArrData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const iBase_EntityHandle* tag_values,
> /*in*/ const int tag_values_size,
> /*out*/ int *err);
>
> /**\brief Remove a tag value from an array of entities
> *
> * Remove a tag value from an array of entities
> * \param instance iMesh instance handle
> * \param entity_handles Entity from which tag is being removed
> * \param entity_handles_size Number of entities in entity array
> * \param tag_handle Tag handle of tag being removed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvArrTag(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle* entity_handles,
> /*in*/ const int entity_handles_size,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of arbitrary type on an entity
> *
> * Get the value of a tag of arbitrary type on an entity. Tag data
> * is passed back as char* type, but really represents arbitrary data.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param *tag_value Pointer to tag data array being queried
> * \param *tag_value_allocated Pointer to tag data array allocated size
> * \param *tag_value_size Pointer to tag data array occupied size
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*inout*/ char** tag_value,
> /*inout*/ int *tag_value_allocated,
> /*out*/ int *tag_value_size,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of integer type on an entity
> *
> * Get the value of a tag of integer type on an entity.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param *out_data Pointer to tag value returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getIntData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *out_data,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of double type on an entity
> *
> * Get the value of a tag of double type on an entity.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param *out_data Pointer to tag value returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getDblData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ double *out_data,
> /*out*/ int *err);
>
> /**\brief Get the value of a tag of entity handle type on an entity
> *
> * Get the value of a tag of entity handle type on an entity.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param *out_data Pointer to tag value returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEHData(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ iBase_EntityHandle *out_data,
> /*out*/ int *err);
>
> /**\brief Set a tag value of arbitrary type on an entity
> *
> * Set a tag value of arbitrary type on an entity. Tag data is
> * passed as char* type, but really represents pointer to arbitrary data.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param tag_value Pointer to tag data being set on entity
> * \param tag_value_size Size in bytes of tag data
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setData(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const char* tag_value,
> /*in*/ const int tag_value_size,
> /*out*/ int *err);
>
> /**\brief Set a tag value of integer type on an entity
> *
> * Set a tag value of integer type on an entity.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param tag_value Tag value being set on entity
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setIntData(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const int tag_value,
> /*out*/ int *err);
>
> /**\brief Set a tag value of double type on an entity
> *
> * Set a tag value of double type on an entity.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param tag_value Tag value being set on entity
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setDblData(iMesh_Instance instance,
>
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const double tag_value,
> /*out*/ int *err);
>
> /**\brief Set a tag value of entity handle type on an entity
> *
> * Set a tag value of entity handle type on an entity.
> * \param instance iMesh instance handle
> * \param entity_handle Entity on which tag is being set
> * \param tag_handle Tag being set on an entity
> * \param tag_value Tag value being set on entity
> * \param *err Pointer to error type returned from function
> */
> void iMesh_setEHData(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*in*/ const iBase_EntityHandle tag_value,
> /*out*/ int *err);
>
> /**\brief Get all the tags associated with a specified entity handle
> *
> * Get all the tags associated with a specified entity handle
> * \param instance iMesh instance handle
> * \param entity_handle Entity being queried
> * \param *tag_handles Pointer to array of tag_handles returned from
> * function
> * \param *tag_handles_allocated Pointer to allocated size of tag_handles
> * array
> * \param *tag_handles_size Pointer to occupied size of tag_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getAllTags(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*inout*/ iBase_TagHandle** tag_handles,
> /*inout*/ int* tag_handles_allocated,
> /*out*/ int* tag_handles_size,
> /*out*/ int *err);
>
> /**\brief Remove a tag value from an entity
> *
> * Remove a tag value from an entity
> * \param instance iMesh instance handle
> * \param entity_handle Entity from which tag is being removed
> * \param tag_handle Tag handle of tag being removed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_rmvTag(iMesh_Instance instance,
> /*in*/ iBase_EntityHandle entity_handle,
> /*in*/ const iBase_TagHandle tag_handle,
> /*out*/ int *err);
>
> /**\brief Initialize an iterator over specified entity type, topology, and size
> *
> * Initialize an iterator over specified entity type, topology, and size,
> * for a specified set or instance. Iterator returned can be used as input
> * to functions returning the entity for the iterator. If all entities of
> * a specified type and/or topology are to be iterated, specify
> * iBase_ALL_TYPES or iMesh_ALL_TOPOLOGIES, respectively. Specified type
> * or topology must be a value in the iBase_EntityType or
> * iMesh_EntityTopology enumerations, respectively.
> * \param instance iMesh instance handle
> * \param entity_set_handle Entity set being iterated
> * \param requested_entity_type Type of entity to iterate
> * \param requested_entity_topology Topology of entity to iterate
> * \param entity_iterator Pointer to iterator returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_initEntIter(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_handle,
> /*in*/ const int requested_entity_type,
> /*in*/ const int requested_entity_topology,
> /*out*/ iMesh_EntityIterator* entity_iterator,
> /*out*/ int *err);
>
> /**\brief Get entity corresponding to an iterator and increment iterator
> *
> * Get the entity corresponding to an array iterator, and increment the
> * iterator. Also return whether the next value of the iterator has
> * an entity (if non-zero, next iterator value is the end of the
> * iteration).
> * \param instance iMesh instance handle
> * \param entity_iterator Iterator being queried
> * \param entity_handle Pointer to an entity handle corresponding to the
> * current value of iterator
> * \param has_data Pointer to flag; if returned non-zero, next iterator
> * has an entity
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getNextEntIter(iMesh_Instance instance,
> /*in*/ iMesh_EntityIterator entity_iterator,
> /*out*/ iBase_EntityHandle* entity_handle,
> /*out*/ int *has_data,
> /*out*/ int *err);
>
> /**\brief Reset the iterator
> *
> * Reset the iterator
> * \param instance iMesh instance handle
> * \param entity_iterator Iterator to reset
> * \param *err Pointer to error type returned from function
> */
> void iMesh_resetEntIter(iMesh_Instance instance,
> /*in*/ iMesh_EntityIterator entity_iterator,
> /*out*/ int *err);
>
> /**\brief Destroy the specified iterator
> *
> * Destroy the specified iterator
> * \param instance iMesh instance handle
> * \param entity_iterator Iterator which gets destroyed
> * \param *err Pointer to error type returned from function
> */
> void iMesh_endEntIter(iMesh_Instance instance,
> /*in*/ iMesh_EntityIterator entity_iterator,
> /*out*/ int *err);
>
> /**\brief Get the entity topology for the specified entity
> *
> * Get the entity topology for the specified entity. Topology
> * returned is a value in the iMesh_EntityTopology enumeration.
> * \param instance iMesh instance handle
> * \param entity_handle Entity handle being queried
> * \param *out_topo Pointer to entity topology returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntTopo(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*out*/ int *out_topo,
> /*out*/ int *err);
>
> /**\brief Get the entity type for the specified entity
> *
> * Get the entity type for the specified entity. Type returned is a value
> * in the iBase_EntityType enumeration.
> * \param instance iMesh instance handle
> * \param entity_handle Entity handle being queried
> * \param *out_type Pointer to entity type returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntType(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*out*/ int *out_type,
> /*out*/ int *err);
>
> /**\brief Get coordinates of specified vertex
> *
> * Get coordinates of specified vertex.
> * \param instance iMesh instance handle
> * \param vertex_handle Mesh vertex being queried
> * \param *x Pointer to x coordinate returned from function
> * \param *y Pointer to y coordinate returned from function
> * \param *z Pointer to z coordinate returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getVtxCoord(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle vertex_handle,
> /*out*/ double *x, /*out*/ double *y, /*out*/ double *z,
> /*out*/ int *err);
>
> /**\brief Get entities of specified type adjacent to an entity
> *
> * Get entities of specified type adjacent to an entity. Specified type
> * must be value in the iBase_EntityType enumeration.
> * \param instance iMesh instance handle
> * \param entity_handle Entity handle being queried
> * \param entity_type_requested Type of adjacent entities requested
> * \param *adj_entity_handles Pointer to array of adjacent entities
> * returned from function
> * \param *adj_entity_handles_allocated Pointer to allocated size of
> * adj_entity_handles array
> * \param *adj_entity_handles_size Pointer to occupied size of
> * adj_entity_handles array
> * \param *err Pointer to error type returned from function
> */
> void iMesh_getEntAdj(iMesh_Instance instance,
> /*in*/ const iBase_EntityHandle entity_handle,
> /*in*/ const int entity_type_requested,
> /*inout*/ iBase_EntityHandle** adj_entity_handles,
> /*inout*/ int* adj_entity_handles_allocated,
> /*out*/ int* adj_entity_handles_size,
> /*out*/ int *err);
>
> /**\brief Get "2nd order" adjacencies to an entity
> * Get "2nd order" adjacencies to an entity, that is, from an entity, through
> * other entities of a specified "bridge" dimension, to other entities of another
> * specified "to" dimension.
> * \param instance iMesh instance for this call
> * \param entity_handle Entity from which adjacencies are requested
> * \param bridge_entity_type Type of bridge entity for 2nd order adjacencies
> * \param requested_entity_type Type of adjacent entities returned
> * \param adjacent_entities Adjacent entities
> * \param adjacent_entities_allocated Allocated size of returned array
> * \param adjacent_entities_size Occupied size of returned array
> * \param err
> */
> void iMesh_getEnt2ndAdj( iMesh_Instance instance,
> iBase_EntityHandle entity_handle,
> int bridge_entity_type,
> int requested_entity_type,
> iBase_EntityHandle** adjacent_entities,
> int* adjacent_entities_allocated,
> int* adjacent_entities_size,
> int* err );
>
> /**\brief Subtract contents of one entity set from another
> *
> * Subtract contents of one entity set from another
> * \param instance iMesh instance handle
> * \param entity_set_1 Entity set from which other set is being subtracted
> * \param entity_set_2 Entity set being subtracted from other set
> * \param result_entity_set Pointer to entity set returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_subtract(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_1,
> /*in*/ const iBase_EntitySetHandle entity_set_2,
> /*out*/ iBase_EntitySetHandle* result_entity_set,
> /*out*/ int *err);
>
> /**\brief Intersect contents of one entity set with another
> *
> * Intersect contents of one entity set with another
> * \param instance iMesh instance handle
> * \param entity_set_1 Entity set being intersected with another
> * \param entity_set_2 Entity set being intersected with another
> * \param result_entity_set Pointer to entity set returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_intersect(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_1,
> /*in*/ const iBase_EntitySetHandle entity_set_2,
> /*out*/ iBase_EntitySetHandle* result_entity_set,
> /*out*/ int *err);
>
> /**\brief Unite contents of one entity set with another
> *
> * Unite contents of one entity set with another
> * \param instance iMesh instance handle
> * \param entity_set_1 Entity set being united with another
> * \param entity_set_2 Entity set being united with another
> * \param result_entity_set Pointer to entity set returned from function
> * \param *err Pointer to error type returned from function
> */
> void iMesh_unite(iMesh_Instance instance,
> /*in*/ const iBase_EntitySetHandle entity_set_1,
> /*in*/ const iBase_EntitySetHandle entity_set_2,
> /*out*/ iBase_EntitySetHandle* result_entity_set,
> /*out*/ int *err);
>
> #ifdef __cplusplus
> } // extern "C"
> #endif
>
> #endif /* ifndef IMESH_CBIND_H__ */
>
> ______________________________________________________________________
> #ifndef __IBASE_H__
> #define __IBASE_H__
>
> #ifndef ITAPS
> #define ITAPS
> #endif
>
> #ifdef __cplusplus
>
> extern "C"
> {
> #endif
>
> /*==========================================================
> * TYPEDEF'S
> *==========================================================
> */
> typedef void* iBase_Instance;
> typedef struct iBase_EntityHandle_Private* iBase_EntityHandle;
> typedef struct iBase_EntitySetHandle_Private* iBase_EntitySetHandle;
> typedef struct iBase_TagHandle_Private* iBase_TagHandle;
>
> /*==========================================================
> * ENTITYTYPE ENUMERATION
> *==========================================================
> */
> enum iBase_EntityType {
> iBase_VERTEX = 0,
> iBase_EDGE,
> iBase_FACE,
> iBase_REGION,
> iBase_ALL_TYPES
> };
>
> /*==========================================================
> * ADJACENCYCOST ENUMERATION
> *==========================================================
> */
> enum iBase_AdjacencyCost {
> iBase_UNAVAILABLE = 0, /**< Adjacency information not supported */
> iBase_ALL_ORDER_1, /**< No more than local mesh traversal required */
> iBase_ALL_ORDER_LOGN, /**< Global tree search */
> iBase_ALL_ORDER_N, /**< Global exhaustive search */
> iBase_SOME_ORDER_1, /**< Only some adjacency info, local */
> iBase_SOME_ORDER_LOGN, /**< Only some adjacency info, tree */
> iBase_SOME_ORDER_N /**< Only some adjacency info, exhaustive */
> };
>
> /*==========================================================
> * CREATIONSTATUS ENUMERATION
> *==========================================================
> */
> enum iBase_CreationStatus {
> iBase_NEW = 0,
> iBase_ALREADY_EXISTED,
> iBase_CREATED_DUPLICATE,
> iBase_CREATION_FAILED
> };
>
> /*==========================================================
> * ERRORACTIONS ENUMERATION
> *==========================================================
> */
> enum iBase_ErrorActions {
> iBase_SILENT,
> iBase_WARN_ONLY,
> iBase_THROW_ERROR
> };
>
> /*==========================================================
> * ERRORTYPE ENUMERATION
> *==========================================================
> */
> enum iBase_ErrorType {
> iBase_SUCCESS,
> iBase_MESH_ALREADY_LOADED,
> iBase_NO_MESH_DATA,
> iBase_FILE_NOT_FOUND,
> iBase_FILE_WRITE_ERROR,
> iBase_NIL_ARRAY,
> iBase_BAD_ARRAY_SIZE,
> iBase_BAD_ARRAY_DIMENSION,
> iBase_INVALID_ENTITY_HANDLE,
> iBase_INVALID_ENTITY_COUNT,
> iBase_INVALID_ENTITY_TYPE,
> iBase_INVALID_ENTITY_TOPOLOGY,
> iBase_BAD_TYPE_AND_TOPO,
> iBase_ENTITY_CREATION_ERROR,
> iBase_INVALID_TAG_HANDLE,
> iBase_TAG_NOT_FOUND,
> iBase_TAG_ALREADY_EXISTS,
> iBase_TAG_IN_USE,
> iBase_INVALID_ENTITYSET_HANDLE,
> iBase_INVALID_ITERATOR_HANDLE,
> iBase_INVALID_ARGUMENT,
> iBase_MEMORY_ALLOCATION_FAILED,
> iBase_NOT_SUPPORTED,
> iBase_FAILURE
> };
>
> /*==========================================================
> * ERROR STRUCT
> *==========================================================
> */
> struct iBase_Error
> {
> int error_type;
> char description[120];
> };
>
> /*==========================================================
> * STORAGEORDER ENUMERATION
> *==========================================================
> */
> enum iBase_StorageOrder {
> iBase_BLOCKED,
> iBase_INTERLEAVED,
> iBase_UNDETERMINED
> };
>
> /*==========================================================
> * TAGVALUETYPE ENUMERATION
> *==========================================================
> */
> enum iBase_TagValueType {
> iBase_INTEGER,
> iBase_DOUBLE,
> iBase_ENTITY_HANDLE,
> iBase_BYTES
> };
>
> #ifdef __cplusplus
> }
> #endif
>
> #endif /* #ifndef __IBASE_H__ */
--
Mark C. Miller, Lawrence Livermore National Laboratory
email: mailto:miller86 at llnl.gov
(M/T/W) (925)-423-5901 (!!LLNL BUSINESS ONLY!!)
(Th/F) (530)-753-8511 (!!LLNL BUSINESS ONLY!!)
More information about the itaps-parallel
mailing list