Author: tautges Date: 2008-03-07 13:12:39 -0600 (Fri, 07 Mar 2008) New Revision: 1638 Modified: cgm/trunk/itaps/iGeom.h cgm/trunk/itaps/iGeom_CGMA.cc Log: Adding commented iGeom.h header. Changing slightly the call signature for getFaceType to match C-Fortran calling convention. Modified: cgm/trunk/itaps/iGeom.h =================================================================== --- cgm/trunk/itaps/iGeom.h 2008-03-06 19:58:48 UTC (rev 1637) +++ cgm/trunk/itaps/iGeom.h 2008-03-07 19:12:39 UTC (rev 1638) @@ -1,6 +1,62 @@ #ifndef IGEOM_CBIND_H__ #define IGEOM_CBIND_H__ + /** \mainpage The ITAPS Geometry Interface iGeom + * + * The ITAPS Geometry Interface iGeom provides a common interface for + * accessing geometry 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. + * + * \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 model, e.g. vertices, + * edges, faces, regions. \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 model is associated and on which + * functions in iGeom 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 + * Each entity has a specific Entity Type. The Entity + * Type is one of VERTEX, EDGE, FACE, and REGION, and is synonymous with + * the topological dimension of the entity. Entity Type is an enumerated + * type in the iBase_EntityType enumeration. + * + * \section KTAPS Entity-, Array-, and Iterator-Based Access + * + * The iGeom 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 iGeom 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 @@ -12,1406 +68,3117 @@ extern "C" { #endif -typedef void* iGeom_Instance; -typedef void* iGeom_EntityIterator; -typedef void* iGeom_EntityArrIterator; + /**\brief Type used to store iGeom interface handle + * + * Type used to store iGeom interface handle + */ + typedef void* iGeom_Instance; -void iGeom_getDescription( iGeom_Instance instance, - char* descr, - int* err, - int descr_len ); + /**\brief Type used to store an iterator returned by iGeom + * + * Type used to store an iterator returned by iGeom + */ + typedef void* iGeom_EntityIterator; -void iGeom_newGeom( char const* options, - iGeom_Instance* instance_out, - int* err, - int options_len ); + /**\brief Type used to store an array iterator returned by iGeom + * + * Type used to store an array iterator returned by iGeom + */ + typedef void* iGeom_EntityArrIterator; -void iGeom_dtor( iGeom_Instance instance, int* err ); + /**\brief Get a description of the error returned from the last iGeom function + * + * Get a description of the error returned from the last iGeom function + * \param instance iGeom instance handle + * \param descr Pointer to a character string to be filled with a + * description of the error from the last iGeom function + * \param *err Pointer to error type returned from function + * \param descr_len Length of the character string pointed to by descr + */ + void iGeom_getDescription( iGeom_Instance instance, + char* descr, + int* err, + int descr_len ); + /**\brief Get the error type returned from the last iGeom function + * + * Get the error type returned from the last iGeom function. Value + * returned is a member of the iBase_ErrorType enumeration. + * \param instance iGeom instance handle + * \param *error_type Error type returned from last iGeom function + * \param *err Pointer to error type returned from function + */ + void iGeom_getErrorType(iGeom_Instance instance, + /*out*/ int *error_type, + int *err); -void iGeom_load( iGeom_Instance, - char const* name, - char const* options, - int* err, - int name_len, - int options_len ); + /**\brief Construct a new iGeom instance + * + * Construct a new iGeom instance, using implementation-specific + * options + * \param options Pointer to implementation-specific options string + * \param instance Pointer to iGeom 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 iGeom_newGeom( char const* options, + iGeom_Instance* instance_out, + int* err, + int options_len ); -void iGeom_save( iGeom_Instance, - char const* name, - char const* options, - int* err, - int name_len, - int options_len ); + /**\brief Destroy an iGeom instance + * + * Destroy an iGeom instance + * \param instance iGeom instance to be destroyed + * \param *err Pointer to error type returned from function + */ + void iGeom_dtor( iGeom_Instance instance, int* err ); -void iGeom_getRootSet( iGeom_Instance, - iBase_EntitySetHandle* root_set, - int* err ); -void iGeom_getBoundBox( iGeom_Instance, - double* min_x, - double* min_y, - double* min_z, - double* max_x, - double* max_y, - double* max_z, - int* err ); + /**\brief Load a geom from a file + * + * Load a geom from a file. If entity set is specified, loaded geom + * is added to that set; specify zero if that is not desired. + * \param instance iGeom instance handle + * \param entity_set_handle Set to which loaded geom will be added, zero + * if not desired + * \param name File name from which geom 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 iGeom_load( iGeom_Instance, + char const* name, + char const* options, + int* err, + int name_len, + int options_len ); -void iGeom_getEntities( iGeom_Instance instance, - iBase_EntitySetHandle set_handle, - int entity_type, - iBase_EntityHandle** entity_handles, - int* entity_handles_allococated, - int* entity_handles_size, - int* err ); + /**\brief Save a geom to a file + * + * Save a geom to a file. If entity set is specified, save only the + * geom contained in that set. + * \param instance iGeom instance handle + * \param entity_set_handle Entity set being saved + * \param name File name to which geom 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 iGeom_save( iGeom_Instance, + char const* name, + char const* options, + int* err, + int name_len, + int options_len ); -void iGeom_getNumOfType( iGeom_Instance instance, - iBase_EntitySetHandle set_handle, - int entity_type, - int* num_out, + /**\brief Get handle of the root set for this instance + * + * Get handle of the root set for this instance. All geom in + * this instance can be accessed from this set. + * \param instance iGeom instance handle + * \param root_set Pointer to set handle returned from function + * \param *err Pointer to error type returned from function + */ + void iGeom_getRootSet( iGeom_Instance, + iBase_EntitySetHandle* root_set, int* err ); -void iGeom_getArrType( iGeom_Instance instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int** type, - int* type_allocated, - int* type_size, - int* err ); +/**\brief Get the bounding box of the entire model + * Get the bounding box of the entire model + * \param min_x Minimum coordinate of bounding box + * \param min_y Minimum coordinate of bounding box + * \param min_z Minimum coordinate of bounding box + * \param max_x Maximum coordinate of bounding box + * \param max_y Maximum coordinate of bounding box + * \param max_z Maximum coordinate of bounding box + */ + void iGeom_getBoundBox( iGeom_Instance, + double* min_x, + double* min_y, + double* min_z, + double* max_x, + double* max_y, + double* max_z, + int* err ); -void iGeom_getEntAdj( iGeom_Instance instance, - iBase_EntityHandle entity_handle, - int to_dimension, - iBase_EntityHandle** adj_entities, - int* adj_entities_allocated, - int* adj_entities_size, - 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 iGeom 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 iGeom_getEntities( iGeom_Instance instance, + iBase_EntitySetHandle set_handle, + int entity_type, + iBase_EntityHandle** entity_handles, + int* entity_handles_allococated, + int* entity_handles_size, + int* err ); -void iGeom_getArrAdj( iGeom_Instance instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - 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 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 zero, 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 iGeom 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 iGeom_getNumOfType( iGeom_Instance instance, + iBase_EntitySetHandle set_handle, + int entity_type, + int* num_out, + int* err ); -void iGeom_getEnt2ndAdj( iGeom_Instance instance, - iBase_EntityHandle entity_handle, - int bridge_dimension, - int to_dimension, - iBase_EntityHandle** adjacent_entities, - int* adjacent_entities_allocated, - int* adjacent_entities_size, - int* err ); - -void iGeom_getArr2ndAdj( iGeom_Instance instance, + /**\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 iGeom 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 iGeom_getArrType( iGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size, - int order_adjacent_key, - 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** type, + int* type_allocated, + int* type_size, int* err ); -void iGeom_isEntAdj( iGeom_Instance instance, - iBase_EntityHandle entity_handle1, - iBase_EntityHandle entity_handle2, - int* are_adjacent, - 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 iGeom 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 iGeom_getEntAdj( iGeom_Instance instance, + iBase_EntityHandle entity_handle, + int to_dimension, + iBase_EntityHandle** adj_entities, + int* adj_entities_allocated, + int* adj_entities_size, + int* err ); -void iGeom_isArrAdj( iGeom_Instance instance, - iBase_EntityHandle const* entity_handles_1, - int entity_handles_1_size, - iBase_EntityHandle const* entity_handles_2, - int entity_handles_2_size, - int** is_adjacent_info, - int* is_adjacent_info_allocated, - int* is_adjacent_info_size, - 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 iGeom 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 iGeom_getArrAdj( iGeom_Instance instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + 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 ); -void iGeom_getTopoLevel( iGeom_Instance instance, - int* topo_level_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 entity_handle Entity from which adjacencies are requested + * \param bridge_dimension Bridge dimension for 2nd order adjacencies + * \param to_dimension Dimension 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 iGeom_getEnt2ndAdj( iGeom_Instance instance, + iBase_EntityHandle entity_handle, + int bridge_dimension, + int to_dimension, + iBase_EntityHandle** adjacent_entities, + int* adjacent_entities_allocated, + int* adjacent_entities_size, + int* err ); -void iGeom_getEntClosestPt( iGeom_Instance instance, - iBase_EntityHandle entity_handle, - double near_x, - double near_y, - double near_z, - double* on_x, - double* on_y, - double* on_z, - 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 entity_handles Entities from which adjacencies are requested + * \param entity_handles_size Number of entities whose adjacencies are requested + * \param bridge_dimension Bridge dimension for 2nd order adjacencies + * \param to_dimension Dimension 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 iGeom_getArr2ndAdj( iGeom_Instance instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int order_adjacent_key, + 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 ); -void iGeom_getArrClosestPt( iGeom_Instance instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* near_coordinates, - int near_coordinates_size, - double** on_coordinates, - int* on_coordinates_allocated, - int* on_coordinates_size, - int* err ); +/**\brief Return whether two entities are adjacent + * Return whether two entities are adjacent. + * \param entity_handle1 First entity queried + * \param entity_handle2 Second entity queried + * \param are_adjacent If returned non-zero, entities are adjacent, otherwise + * they are not + * \param err + */ + void iGeom_isEntAdj( iGeom_Instance instance, + iBase_EntityHandle entity_handle1, + iBase_EntityHandle entity_handle2, + int* are_adjacent, + int* err ); -void iGeom_getEntNrmlXYZ( iGeom_Instance, - iBase_EntityHandle entity_handle, - double x, - double y, - double z, - double* nrml_i, - double* nrml_j, - double* nrml_k, - int* err ); +/**\brief Return whether entity pairs are adjacent + * Return whether entity pairs are adjacent, i.e. if entity_handles_1[i] is + * adjacent to entity_handles_2[i]. This function requires entity_handles_1_size + * and entity_handles_2_size to be equal. + * \param entity_handles_1 First array of entities + * \param entity_handles_1_size Number of entities in first array + * \param entity_handles_2 Second array of entities + * \param entity_handles_2_size Number of entities in second array + * \param is_adjacent_info Array of flags returned from function + * \param is_adjacent_info_allocated Allocated size of flags array + * \param is_adjacent_info_size Occupied size of flags array + */ + void iGeom_isArrAdj( iGeom_Instance instance, + iBase_EntityHandle const* entity_handles_1, + int entity_handles_1_size, + iBase_EntityHandle const* entity_handles_2, + int entity_handles_2_size, + int** is_adjacent_info, + int* is_adjacent_info_allocated, + int* is_adjacent_info_size, + int* err ); -void iGeom_getArrNrmlXYZ( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* coordinates, - int coordinates_size, - double** normals, - int* normals_allocated, - int* normals_size, - int* err ); +/**\brief DON'T KNOW WHAT THIS FUNCTION IS + * + * \param topo_level_out + */ + void iGeom_getTopoLevel( iGeom_Instance instance, + int* topo_level_out, + int* err ); -void iGeom_getEntNrmlPlXYZ( iGeom_Instance, +/**\brief Get closest point to an entity + * Get closest point to a specified position on an entity + * \param entity_handle Entity being queried + * \param near_x Coordinates of starting point + * \param near_y Coordinates of starting point + * \param near_z Coordinates of starting point + * \param on_x Closest point on entity + * \param on_y Closest point on entity + * \param on_z Closest point on entity + */ + void iGeom_getEntClosestPt( iGeom_Instance instance, + iBase_EntityHandle entity_handle, + double near_x, + double near_y, + double near_z, + double* on_x, + double* on_y, + double* on_z, + int* err ); + +/**\brief Get closest point for an array of entities and points + * Get closest point for an array of entities and points. If either the number + * of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entity(ies) being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of input points + * \param near_coordinates Coordinates of starting point(s) + * \param near_coordinates_size Number of values in near_coordinates array + * \param on_coordinates Coordinates of closest points + * \param on_coordinates_allocated Allocated size of closest point array + * \param on_coordinates_size Occupied size of closest point array + */ + void iGeom_getArrClosestPt( iGeom_Instance instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* near_coordinates, + int near_coordinates_size, + double** on_coordinates, + int* on_coordinates_allocated, + int* on_coordinates_size, + int* err ); + +/**\brief Get the normal vector on an entity at the given position + * Get the normal vector on an entity at the given position. + * \param entity_handle Entity being queried + * \param x Coordinates of starting point + * \param y Coordinates of starting point + * \param z Coordinates of starting point + * \param nrml_i Normal vector at starting point + * \param nrml_j Normal vector at starting point + * \param nrml_k Normal vector at starting point + */ + void iGeom_getEntNrmlXYZ( iGeom_Instance, iBase_EntityHandle entity_handle, double x, double y, double z, - double* pt_x, - double* pt_y, - double* pt_z, double* nrml_i, double* nrml_j, double* nrml_k, int* err ); -void iGeom_getArrNrmlPlXYZ( iGeom_Instance, +/**\brief Get the normal vector on an entity(ies) at given position(s) + * Get the normal vector on an entity(ies) at given position(s). If either the + * number of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entity(ies) being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of coordinates + * \param coordinates Starting coordinates + * \param coordinates_size Number of values in coordinates array + * \param normals Normal coordinates + * \param normals_allocated Allocated size of normals array + * \param normals_size Occupied size of normals array + */ + void iGeom_getArrNrmlXYZ( iGeom_Instance, iBase_EntityHandle const* entity_handles, int entity_handles_size, int storage_order, - double const* near_coordinates, - int near_coordinates_size, - double** on_coordinates, - int* on_coordinates_allocated, - int* on_coordinates_size, + double const* coordinates, + int coordinates_size, double** normals, int* normals_allocated, int* normals_size, int* err ); -void iGeom_getEntTgntXYZ( iGeom_Instance, - iBase_EntityHandle entity_handle, - double x, - double y, - double z, - double* tgnt_i, - double* tgnt_j, - double* tgnt_k, - int* err ); +/**\brief Get the normal vector AND closest point on an entity at given position + * Get the normal vector AND closest point on an entity at a given position. + * \param entity_handle Entity being queried + * \param x Starting coordinates + * \param y Starting coordinates + * \param z Starting coordinates + * \param pt_x Closest point + * \param pt_y Closest point + * \param pt_z Closest point + * \param nrml_i Normal at closest point + * \param nrml_j Normal at closest point + * \param nrml_k Normal at closest point + */ + void iGeom_getEntNrmlPlXYZ( iGeom_Instance, + iBase_EntityHandle entity_handle, + double x, + double y, + double z, + double* pt_x, + double* pt_y, + double* pt_z, + double* nrml_i, + double* nrml_j, + double* nrml_k, + int* err ); -void iGeom_getArrTgntXYZ( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* coordinates, - int coordinates_size, - double** tangents, - int* tangents_allocated, - int* tangents_size, - int* err ); +/**\brief Get the normal vector AND closest point on an entity(ies) at given position(s) + * Get the normal vector AND closest point on an entity(ies) at given position(s). If either the + * number of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entity(ies) being queried + * \param entity_handles_size Number of entity(ies) being queried + * \param storage_order Storage order in near_coordinates array + * \param near_coordinates Starting coordinates + * \param near_coordinates_size Number of values in near_coordinates array + * \param on_coordinates Closest point array + * \param on_coordinates_allocated Allocated size of closest point array + * \param on_coordinates_size Occupied size of closest point array + * \param normals Normal array + * \param normals_allocated Allocated size of normal array + * \param normals_size Occupied size of normal array + */ + void iGeom_getArrNrmlPlXYZ( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* near_coordinates, + int near_coordinates_size, + double** on_coordinates, + int* on_coordinates_allocated, + int* on_coordinates_size, + double** normals, + int* normals_allocated, + int* normals_size, + int* err ); -void iGeom_getFcCvtrXYZ( iGeom_Instance, - iBase_EntityHandle face_handle, - double x, - double y, - double z, - double* cvtr1_i, - double* cvtr1_j, - double* cvtr1_k, - double* cvtr2_i, - double* cvtr2_j, - double* cvtr2_k, - int* err ); +/**\brief Get the tangent vector on an entity at given position + * Get the tangent vector on an entity at a given position. + * \param entity_handle Entity being queried + * \param x Starting coordinates + * \param y Starting coordinates + * \param z Starting coordinates + * \param tgnt_i Tangent at closest point + * \param tgnt_j Tangent at closest point + * \param tgnt_k Tangent at closest point + */ + void iGeom_getEntTgntXYZ( iGeom_Instance, + iBase_EntityHandle entity_handle, + double x, + double y, + double z, + double* tgnt_i, + double* tgnt_j, + double* tgnt_k, + int* err ); -void iGeom_getEgCvtrXYZ( iGeom_Instance, - iBase_EntityHandle edge_handle, - double x, - double y, - double z, - double* cvtr_i, - double* cvtr_j, - double* cvtr_k, - int* err ); +/**\brief Get the tangent vector on an entity(ies) at given position(s) + * Get the tangent vector on an entity(ies) at given position(s). If either the + * number of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entity(ies) being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of coordinates + * \param coordinates Starting coordinates + * \param coordinates_size Number of values in coordinates array + * \param tangents Tangent coordinates + * \param tangents_allocated Allocated size of tangents array + * \param tangents_size Occupied size of tangents array + */ + void iGeom_getArrTgntXYZ( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* coordinates, + int coordinates_size, + double** tangents, + int* tangents_allocated, + int* tangents_size, + int* err ); -void iGeom_getEntArrCvtrXYZ( iGeom_Instance, +/**\brief Get the two principle curvature vectors for a face at a point + * Get the two principle curvature vectors for a face at a point. Magnitudes of + * vectors are curvature, directions are directions of principal curvatures. + * \param face_handle Face being queried + * \param x Position being queried + * \param y Position being queried + * \param z Position being queried + * \param cvtr1_i Maximum curvature vector + * \param cvtr1_j Maximum curvature vector + * \param cvtr1_k Maximum curvature vector + * \param cvtr2_i Minimum curvature vector + * \param cvtr2_j Minimum curvature vector + * \param cvtr2_k Minimum curvature vector + */ + void iGeom_getFcCvtrXYZ( iGeom_Instance, + iBase_EntityHandle face_handle, + double x, + double y, + double z, + double* cvtr1_i, + double* cvtr1_j, + double* cvtr1_k, + double* cvtr2_i, + double* cvtr2_j, + double* cvtr2_k, + int* err ); + +/**\brief Get the principle curvature vector for an edge at a point + * Get the principle curvature vector for an edge at a point. Magnitude of + * vector is the curvature, direction is direction of principal curvature. + * \param edge_handle Edge being queried + * \param x Position being queried + * \param y Position being queried + * \param z Position being queried + * \param cvtr_i Maximum curvature vector + * \param cvtr_j Maximum curvature vector + * \param cvtr_k Maximum curvature vector + */ + void iGeom_getEgCvtrXYZ( iGeom_Instance, + iBase_EntityHandle edge_handle, + double x, + double y, + double z, + double* cvtr_i, + double* cvtr_j, + double* cvtr_k, + int* err ); + +/**\brief Get the curvature(s) on an entity(ies) at given position(s) + * Get the curvature(s) on an entity(ies) at given position(s). If either the + * number of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entity(ies) being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of coordinates + * \param coords Starting coordinates + * \param coords_size Number of values in coordinates array + * \param cvtr_1 First principal curvatures + * \param cvtr_1_allocated Allocated size of first curvature array + * \param cvtr_1_size Occupied size of first curvature array + * \param cvtr_2 Second principal curvatures + * \param cvtr_2_allocated Allocated size of second curvature array + * \param cvtr_2_size Occupied size of second curvature array + */ + void iGeom_getEntArrCvtrXYZ( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* coords, + int coords_size, + double** cvtr_1, + int* cvtr_1_allocated, + int* cvtr_1_size, + double** cvtr_2, + int* cvtr_2_allocated, + int* cvtr_2_size, + int* err ); + +/**\brief Get closest point, tangent, and curvature of edge + * Get closest point, tangent, and curvature of edge. + * \param edge_handle Edge being queried + * \param x Point at which entity is being queried + * \param y Point at which entity is being queried + * \param z Point at which entity is being queried + * \param on_x Closest point at point being queried + * \param on_y Closest point at point being queried + * \param on_z Closest point at point being queried + * \param tgnt_i Tangent at point being queried + * \param tgnt_j Tangent at point being queried + * \param tgnt_k Tangent at point being queried + * \param cvtr_i Curvature at point being queried + * \param cvtr_j Curvature at point being queried + * \param cvtr_k Curvature at point being queried + */ + void iGeom_getEgEvalXYZ( iGeom_Instance, + iBase_EntityHandle edge_handle, + double x, + double y, + double z, + double* on_x, + double* on_y, + double* on_z, + double* tgnt_i, + double* tgnt_j, + double* tgnt_k, + double* cvtr_i, + double* cvtr_j, + double* cvtr_k, + int* err ); + +/**\brief Get closest point, tangent, and curvature of face + * Get closest point, tangent, and curvature of face. If any of input + * coordinate pointers are NULL, that value is not returned. + * \param face_handle Face being queried + * \param x Point at which entity is being queried + * \param y Point at which entity is being queried + * \param z Point at which entity is being queried + * \param on_x Closest point at point being queried + * \param on_y Closest point at point being queried + * \param on_z Closest point at point being queried + * \param nrml_i Normal at point being queried + * \param nrml_j Normal at point being queried + * \param nrml_k Normal at point being queried + * \param cvtr1_i First principal curvature at point being queried + * \param cvtr1_j First principal curvature at point being queried + * \param cvtr1_k First principal curvature at point being queried + * \param cvtr2_i Second principal curvature at point being queried + * \param cvtr2_j Second principal curvature at point being queried + * \param cvtr2_k Second principal curvature at point being queried + */ + void iGeom_getFcEvalXYZ( iGeom_Instance, + iBase_EntityHandle face_handle, + double x, + double y, + double z, + double* on_x, + double* on_y, + double* on_z, + double* nrml_i, + double* nrml_j, + double* nrml_k, + double* cvtr1_i, + double* cvtr1_j, + double* cvtr1_k, + double* cvtr2_i, + double* cvtr2_j, + double* cvtr2_k, + int* err ); + +/**\brief Get the closest point(s), tangent(s), and curvature(s) on an entity(ies) at given position(s) + * Get the closest point(s), tangent(s), and curvature(s) on an entity(ies) at given position(s). + * If either the number of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param edge_handles Edge(s) being queried + * \param edge_handles_size Number of edges being queried + * \param storage_order Storage order of coordinates + * \param coords Starting coordinates + * \param coords_size Number of values in coordinates array + * \param on_coords Closest point array + * \param on_coords_allocated Allocated size of closest point array + * \param on_coords_size Occupied size of closest point array + * \param tangent Tangent array + * \param tangent_allocated Allocated size of tangent array + * \param tangent_size Occupied size of tangent array + * \param cvtr First principal curvatures + * \param cvtr_allocated Allocated size of first curvature array + * \param cvtr_size Occupied size of first curvature array + */ + void iGeom_getArrEgEvalXYZ( iGeom_Instance, + iBase_EntityHandle const* edge_handles, + int edge_handles_size, + int storage_order, + double const* coords, + int coords_size, + double** on_coords, + int* on_coords_allocated, + int* on_coords_size, + double** tangent, + int* tangent_allocated, + int* tangent_size, + double** cvtr, + int* cvtr_allocated, + int* cvtr_size, + int* err ); + +/**\brief Get the closest point(s), tangent(s), and curvature(s) on an entity(ies) at given position(s) + * Get the closest point(s), tangent(s), and curvature(s) on an entity(ies) at given position(s). + * If either the number of entities or number of coordinate triples is unity, then all points or + * entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param edge_handles Edge(s) being queried + * \param edge_handles_size Number of edges being queried + * \param storage_order Storage order of coordinates + * \param coords Starting coordinates + * \param coords_size Number of values in coordinates array + * \param on_coords Closest point array + * \param on_coords_allocated Allocated size of closest point array + * \param on_coords_size Occupied size of closest point array + * \param normal Normal array + * \param normal_allocated Allocated size of normal array + * \param normal_size Occupied size of normal array + * \param cvtr_1 First principal curvatures + * \param cvtr_1_allocated Allocated size of first curvature array + * \param cvtr_1_size Occupied size of first curvature array + * \param cvtr_2 Second principal curvatures + * \param cvtr_2_allocated Allocated size of second curvature array + * \param cvtr_2_size Occupied size of second curvature array + */ + void iGeom_getArrFcEvalXYZ( iGeom_Instance, + iBase_EntityHandle const* face_handles, + int face_handles_size, + int storage_order, + double const* coords, + int coords_size, + double** on_coords, + int* on_coords_allocated, + int* on_coords_size, + double** normal, + int* normal_allocated, + int* normal_size, + double** cvtr1, + int* cvtr1_allocated, + int* cvtr1_size, + double** cvtr2, + int* cvtr2_allocated, + int* cvtr2_size, + int* err ); + +/**\brief Get the bounding box of the specified entity + * Get the bounding box of the specified entity + * \param entity_handle Entity being queried + * \param min_x Minimum coordinate of bounding box + * \param min_y Minimum coordinate of bounding box + * \param min_z Minimum coordinate of bounding box + * \param max_x Maximum coordinate of bounding box + * \param max_y Maximum coordinate of bounding box + * \param max_z Maximum coordinate of bounding box + */ + void iGeom_getEntBoundBox( iGeom_Instance, + iBase_EntityHandle entity_handle, + double* min_x, + double* min_y, + double* min_z, + double* max_x, + double* max_y, + double* max_z, + int* err ); + +/**\brief Get the bounding box of the specified entities + * Get the bounding box of the specified entities. Storage order passed back + * will be member of iBase_StorageOrder enum. + * \param entity_handles Entity handles being queried + * \param enttiy_handles_size Number of entities being queried + * \param storage_order Storage order of coordinates passed back + * \param min_corner Minimum coordinates of bounding boxes + * \param min_corner_allocated Allocated size of minimum coordinates array + * \param min_corner_size Occupied size of minimum coordinates array + * \param max_corner Maximum coordinates of bounding boxes + * \param max_corner_allocated Allocated size of maximum coordinates array + * \param max_corner_size Occupied size of maximum coordinates array + */ + void iGeom_getArrBoundBox( iGeom_Instance, iBase_EntityHandle const* entity_handles, int entity_handles_size, - int storage_order, - double const* coords, - int coords_size, - double** cvtr_1, - int* cvtr_1_allocated, - int* cvtr_1_size, - double** cvtr_2, - int* cvtr_2_allocated, - int* cvtr_2_size, + int* storage_order, + double** min_corner, + int* min_corner_allocated, + int* min_corner_size, + double** max_corner, + int* max_corner_allocated, + int* max_corner_size, int* err ); -void iGeom_getEgEvalXYZ( iGeom_Instance, - iBase_EntityHandle edge_handle, - double x, - double y, - double z, - double* on_x, - double* on_y, - double* on_z, - double* tgnt_i, - double* tgnt_j, - double* tgnt_k, - double* cvtr_i, - double* cvtr_j, - double* cvtr_k, - int* err ); + /**\brief Get coordinates of specified vertex + * + * Get coordinates of specified vertex. + * \param instance iGeom instance handle + * \param vertex_handle Geom 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 iGeom_getVtxCoord( iGeom_Instance, + iBase_EntityHandle vertex_handle, + double* x, + double* y, + double* z, + int* err ); -void iGeom_getFcEvalXYZ( iGeom_Instance, - iBase_EntityHandle face_handle, + /**\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 iGeom instance handle + * \param vertex_handles Array of geom 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 iGeom_getVtxArrCoords( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int* storage_order, + double** coordinates, + int* coordinates_allocated, + int* coordinates_size, + int* err ); + +/**\brief Intersect a ray with the model + * Intersect a ray with the model. Storage orders passed back are members of the + * iBase_StorageOrder enumeration; if output is iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param x Point from which ray is fired + * \param y Point from which ray is fired + * \param z Point from which ray is fired + * \param dir_x Direction in which ray is fired + * \param dir_y Direction in which ray is fired + * \param dir_z Direction in which ray is fired + * \param intersect_entity_handles Entities intersected by ray + * \param intersect_entity_handles_allocated Allocated size of intersections array + * \param intersect_entity_hangles_size Occupied size of intersections array + * \param storage_order Storage order of coordinates passed back + * \param intersect_coords Coordinates of intersections + * \param intersect_coords_allocated Allocated size of coordinates array + * \param intersect_coords_size Occupied size of coordinates array + * \param param_coords Distances along ray of intersections + * \param param_coords_allocated Allocated size of param_coords array + * \param param_coords_size Occupied size of param_coords array + */ + void iGeom_getPntRayIntsct( iGeom_Instance, + double x, + double y, + double z, + double dir_x, + double dir_y, + double dir_z, + iBase_EntityHandle** intersect_entity_handles, + int* intersect_entity_handles_allocated, + int* intersect_entity_hangles_size, + int* storage_order, + double** intersect_coords, + int* intersect_coords_allocated, + int* intersect_coords_size, + double** param_coords, + int* param_coords_allocated, + int* param_coords_size, + int* err ); + +/**\brief Intersect an array of rays with the model + * Intersect an array of rays with the model. Storage orders passed back are members of the + * iBase_StorageOrder enumeration; if input/output is iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param storage_order Storage order of input coordinates + * \param coords Points from which rays are fired + * \param coords_size Number of points from which rays are fired + * \param directions Directions in which rays are fired + * \param directions_size Number of coordinates in directions array + * \param intersect_entity_handles Entities intersected by ray + * \param intersect_entity_handles_allocated Allocated size of intersections array + * \param intersect_entity_hangles_size Occupied size of intersections array + * \param offset Offset[i] is offset into intersect_entity_handles of ith ray + * \param offset_allocated Allocated size of offset array + * \param offset_size Occupied size of offset array + * \param storage_order Storage order of coordinates passed back + * \param intersect_coords Coordinates of intersections + * \param intersect_coords_allocated Allocated size of coordinates array + * \param intersect_coords_size Occupied size of coordinates array + * \param param_coords Distances along ray of intersections + * \param param_coords_allocated Allocated size of param_coords array + * \param param_coords_size Occupied size of param_coords array + */ + void iGeom_getPntArrRayIntsct( iGeom_Instance, + int storage_order, + const double* coords, + int coords_size, + const double* directions, + int directions_size, + iBase_EntityHandle** intersect_entity_handles, + int* intersect_entity_handles_allocated, + int* intersect_entity_hangles_size, + int** offset, + int* offset_allocated, + int* offset_size, + double** intersect_coords, + int* intersect_coords_allocated, + int* intersect_coords_size, + double** param_coords, + int* param_coords_allocated, + int* param_coords_size, + int* err ); + +/**\brief Get the entity on which a point is located + * Get the entity on which a point is located + * \param x Point being queried + * \param y Point being queried + * \param z Point being queried + * \param entity_handle Entity on which point is located + */ + void iGeom_getPntClsf( iGeom_Instance, double x, double y, double z, - double* on_x, - double* on_y, - double* on_z, - double* nrml_i, - double* nrml_j, - double* nrml_k, - double* cvtr1_i, - double* cvtr1_j, - double* cvtr1_k, - double* cvtr2_i, - double* cvtr2_j, - double* cvtr2_k, + iBase_EntityHandle* entity_handle, int* err ); -void iGeom_getArrEgEvalXYZ( iGeom_Instance, - iBase_EntityHandle const* edge_handles, - int edge_handles_size, +/**\brief Get the entities on which points are located + * Get the entities on which points are located. Storage orders should be members of the + * iBase_StorageOrder enumeration; if input is iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param storage_order Storage order of coordinates in coords + * \param coords Points being queried + * \param coords_size Number of entries in coords array + * \param entity_handles Entities on which points are located + * \param entity_handles_allocated Allocated size of entity_handles array + * \param entity_handles_size Occupied size of entity_handles array + */ + void iGeom_getPntArrClsf( iGeom_Instance, int storage_order, double const* coords, int coords_size, - double** on_coords, - int* on_coords_allocated, - int* on_coords_size, - double** tangent, - int* tangent_allocated, - int* tangent_size, - double** cvtr, - int* cvtr_allocated, - int* cvtr_size, + iBase_EntityHandle** entity_handles, + int* entity_handles_allocated, + int* entity_handles_size, int* err ); -void iGeom_getArrFcEvalXYZ( iGeom_Instance, - iBase_EntityHandle const* face_handles, - int face_handles_size, - int storage_order, - double const* coords, - int coords_size, - double** on_coords, - int* on_coords_allocated, - int* on_coords_size, - double** normal, - int* normal_allocated, - int* normal_size, - double** cvtr1, - int* cvtr1_allocated, - int* cvtr1_size, - double** cvtr2, - int* cvtr2_allocated, - int* cvtr2_size, - int* err ); +/**\brief Get the sense of a face with respect to a region + * Get the sense of a face with respect to a region. Sense returned is -1, 0, or 1, + * representing "reversed", "both", or "forward". "both" sense indicates that face bounds + * the region once with each sense. + * \param face Face being queried + * \param region Region being queried + * \param sense_out Sense of face with respect to region + */ + void iGeom_getEntNrmlSense( iGeom_Instance, + iBase_EntityHandle face, + iBase_EntityHandle region, + int* sense_out, + int* err ); -void iGeom_getEntBoundBox( iGeom_Instance, - iBase_EntityHandle entity_handle, - double* min_x, - double* min_y, - double* min_z, - double* max_x, - double* max_y, - double* max_z, - int* err ); +/**\brief Get the senses of an array of faces with respect to an array of regions + * Get the senses of an array of faces with respect to an array of regions. Sense returned + * is -1, 0, or 1, representing "reversed", "both", or "forward". "both" sense indicates + * that face bounds the region once with each sense. + * \param face_handles Faces being queried + * \param face_handles_size Size of face handles array + * \param region_handles Regions being queried + * \param region_handles_size Size of region handles array + * \param sense Senses of faces with respect to regions + * \param sense_allocated Allocated size of senses array + * \param sense_size Occupied size of senses array + */ + void iGeom_getArrNrmlSense( iGeom_Instance, + iBase_EntityHandle const* face_handles, + int face_handles_size, + iBase_EntityHandle const* region_handles, + int region_handles_size, + int** sense, + int* sense_allocated, + int* sense_size, + int* err ); -void iGeom_getArrBoundBox( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int* storage_order, - double** min_corner, - int* min_corner_allocated, - int* min_corner_size, - double** max_corner, - int* max_corner_allocated, - int* max_corner_size, +/**\brief Get the sense of an edge with respect to a face + * Get the sense of an edge with respect to a face. Sense returned is -1, 0, or 1, + * representing "reversed", "both", or "forward". "both" sense indicates that edge bounds + * the face once with each sense. + * \param edge Edge being queried + * \param face Face being queried + * \param sense_out Sense of edge with respect to face + */ + void iGeom_getEgFcSense( iGeom_Instance, + iBase_EntityHandle edge, + iBase_EntityHandle face, + int* sense_out, int* err ); -void iGeom_getVtxCoord( iGeom_Instance, - iBase_EntityHandle vertex_handle, - double* x, - double* y, - double* z, - int* err ); +/**\brief Get the senses of an array of edges with respect to an array of faces + * Get the senses of an array of edges with respect to an array of faces. Sense returned + * is -1, 0, or 1, representing "reversed", "both", or "forward". "both" sense indicates + * that edge bounds the face once with each sense. + * \param edge_handles Edges being queried + * \param edge_handles_size Size of edge handles array + * \param face_handles Faces being queried + * \param face_handles_size Size of face handles array + * \param sense Senses of faces with respect to regions + * \param sense_allocated Allocated size of senses array + * \param sense_size Occupied size of senses array + */ + void iGeom_getEgFcArrSense( iGeom_Instance, + iBase_EntityHandle const* edge_handles, + int edge_handles_size, + iBase_EntityHandle const* face_handles, + int face_handles_size, + int** sense, + int* sense_allocated, + int* sense_size, + int* err ); -void iGeom_getVtxArrCoords( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int* storage_order, - double** coordinates, - int* coordinates_allocated, - int* coordinates_size, +/**\brief Get the sense of a vertex pair with respect to an edge + * Get the sense of a vertex pair with respect to an edge. Sense returned is -1, 0, or 1, + * representing "reversed", "both", or "forward". "both" sense indicates that vertices + * are identical and that vertex bounds both sides of the edge + * \param edge Edge being queried + * \param vertex1 First vertex being queried + * \param vertex2 Second vertex being queried + * \param sense_out Sense of vertex pair with respect to edge + */ + void iGeom_getEgVtxSense( iGeom_Instance, + iBase_EntityHandle edge, + iBase_EntityHandle vertex1, + iBase_EntityHandle vertex2, + int* sense_out, int* err ); -void iGeom_getPntRayIntsct( iGeom_Instance, - double x, - double y, - double z, - double dir_x, - double dir_y, - double dir_z, - iBase_EntityHandle** intersect_entity_handles, - int* intersect_entity_handles_allocated, - int* intersect_entity_hangles_size, - int* storage_order, - double** intersect_coords, - int* intersect_coords_allocated, - int* intersect_coords_size, - double** param_coords, - int* param_coords_allocated, - int* param_coords_size, - int* err ); - -void iGeom_getPntArrRayIntsct( iGeom_Instance, - int storage_order, - const double* coords, - int coords_size, - const double* directions, - int directions_size, - iBase_EntityHandle** intersect_entity_handles, - int* intersect_entity_handles_allocated, - int* intersect_entity_hangles_size, - int** offset, - int* offset_allocated, - int* offset_size, - double** intersect_coords, - int* intersect_coords_allocated, - int* intersect_coords_size, - double** param_coords, - int* param_coords_allocated, - int* param_coords_size, +/**\brief Get the senses of vertex pair with respect to a edges + * Get the senses of vertex pairs with respect to edges. Sense returned is -1, 0, or 1, + * representing "reversed", "both", or "forward". "both" sense indicates that both vertices + * in pair are identical and that vertex bounds both sides of the edge + * \param edge_handles Edges being queried + * \param edge_handles_size Number of edges being queried + * \param vertex_handles_1 First vertex being queried + * \param vertex_handles_1_size Number of vertices in vertices array + * \param vertex_handles_2 Second vertex being queried + * \param vertex_handles_2_size Number of vertices in vertices array + * \param sense Sense of vertex pair with respect to edge + * \param sense_allocated Allocated size of sense array + * \param sense_size Occupied size of sense array + */ + void iGeom_getEgVtxArrSense( iGeom_Instance, + iBase_EntityHandle const* edge_handles, + int edge_handles_size, + iBase_EntityHandle const* vertex_handles_1, + int veretx_handles_1_size, + iBase_EntityHandle const* vertex_handles_2, + int vertex_handles_2_size, + int** sense, + int* sense_allocated, + int* sense_size, int* err ); -void iGeom_getPntClsf( iGeom_Instance, - double x, - double y, - double z, - iBase_EntityHandle* entity_handle, - int* err ); +/**\brief Return the measure (length, area, volume) of entities + * Return the measure (length, area, volume) of entities + * \param entity_handles Array of entities being queried + * \param entity_handles_size Number of entities in entity array + * \param measures Measures of entities being queried + * \param measures_allocated Allocated size of measures array + * \param measures_size Occupied size of measures array + */ + void iGeom_measure( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + double** measures, + int* measures_allocated, + int* measures_size, + int* err ); -void iGeom_getPntArrClsf( iGeom_Instance, - int storage_order, - double const* coords, - int coords_size, - iBase_EntityHandle** entity_handles, - int* entity_handles_allocated, - int* entity_handles_size, - int* err ); +/**\brief Get the geometric type of an entity + * Get the geometric type of an entity. Specific types depend on implementation. + * \param face_handle Face being queried + * \param face_type Face type + * \param face_type_length Length of face type string + */ + void iGeom_getFaceType( iGeom_Instance, + iBase_EntityHandle face_handle, + char* face_type, + int* err, + int* face_type_length); -void iGeom_getEntNrmlSense( iGeom_Instance, - iBase_EntityHandle face, - iBase_EntityHandle region, - int* sense_out, +/**\brief Return whether interface has information about parameterization + * Return whether an interface has information about parameterization (!=0) or not (0) + * \param is_parametric If non-zero, interface has information about parameterization + */ + void iGeom_getParametric( iGeom_Instance, + int* is_parametric, int* err ); -void iGeom_getArrNrmlSense( iGeom_Instance, - iBase_EntityHandle const* face_handles, - int face_handles_size, - iBase_EntityHandle const* region_handles, - int region_handles_size, - int** sense, - int* sense_allocated, - int* sense_size, - int* err ); +/**\brief Return whether an entity has a parameterization + * Return whether an entity has a parameterization (!= 0) or not (=0) + * \param entity_handle Entity being queried + * \param is_parametric Entity has a parameterization (!= 0) or not (=0) + */ + void iGeom_isEntParametric( iGeom_Instance, + iBase_EntityHandle entity_handle, + int* parametric, + int* err ); -void iGeom_getEgFcSense( iGeom_Instance, - iBase_EntityHandle edge, - iBase_EntityHandle face, - int* sense_out, - int* err ); +/**\brief Return whether entities have parameterizations + * Return whether entities have parameterizations (!= 0) or not (=0) + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param is_parametric entity_handles[i] has a parameterization (!= 0) or not (=0) + * \param is_parametric_allocated Allocated size of is_parametric array + * \param is_parametric_size Occupied size of is_parametric array + */ + void iGeom_isArrParametric( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int** is_parametric, + int* is_parametric_allocated, + int* is_parametric_size, + int* err ); -void iGeom_getEgFcArrSense( iGeom_Instance, - iBase_EntityHandle const* edge_handles, - int edge_handles_size, - iBase_EntityHandle const* face_handles, - int face_handles_size, - int** sense, - int* sense_allocated, - int* sense_size, +/**\brief Return coordinate position at specified parametric position on entity + * Return coordinate position at specified parametric position on entity. + * \param entity_handle Entity being queried + * \param u Parametric coordinate being queried + * \param v Parametric coordinate being queried + * \param x Spatial coordinate at parametric position being queried + * \param y Spatial coordinate at parametric position being queried + * \param z Spatial coordinate at parametric position being queried + */ + void iGeom_getEntUVtoXYZ( iGeom_Instance, + iBase_EntityHandle entity_handle, + double u, + double v, + double* x, + double* y, + double* z, int* err ); -void iGeom_getEgVtxSense( iGeom_Instance, - iBase_EntityHandle edge, - iBase_EntityHandle vertex1, - iBase_EntityHandle vertex2, - int* sense_out, - int* err ); +/**\brief Return coordinate positions at specified parametric position(s) on entity(ies) + * Return coordinate positions at specified parametric position(s) on entity(ies). + * If either the number of entities or number of parametric coordinate pairs is unity, then + * all points or entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of uv coordinates input + * \param uv Coordinates being queried + * \param uv_size Number of coordinates in array + * \param coordinates Coordinates of parametric positions + * \param coordinates_allocated Allocated size of coordinates array + * \param coordinates_size Occupied size of coordinates array + */ + void iGeom_getArrUVtoXYZ( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* uv, + int uv_size, + double** coordinates, + int* coordinates_allocated, + int* coordinates_size, + int* err ); -void iGeom_getEgVtxArrSense( iGeom_Instance, - iBase_EntityHandle const* edge_handles, - int edge_handles_size, - iBase_EntityHandle const* vertex_handles_1, - int veretx_handles_1_size, - iBase_EntityHandle const* vertex_handles_2, - int vertex_handles_2_size, - int** sense, - int* sense_allocated, - int* sense_size, - int* err ); +/**\brief Return coordinate position at specified parametric position on entity + * Return coordinate position at specified parametric position on entity. + * \param entity_handle Entity being queried + * \param u Parametric coordinate being queried + * \param x Spatial coordinate at parametric position being queried + * \param y Spatial coordinate at parametric position being queried + * \param z Spatial coordinate at parametric position being queried + */ + void iGeom_getEntUtoXYZ( iGeom_Instance, + iBase_EntityHandle entity_handle, + double u, + double* x, + double* y, + double* z, + int* err ); -void iGeom_measure( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - double** measures, - int* measures_allocated, - int* measures_size, - int* err ); +/**\brief Return coordinate positions at specified parametric position(s) on entity(ies) + * Return coordinate positions at specified parametric position(s) on entity(ies). + * If either the number of entities or number of parametric coordinate pairs is unity, then + * all points or entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of uv coordinates input + * \param uv Coordinates being queried + * \param uv_size Number of coordinates in array + * \param coordinates Coordinates of parametric positions + * \param coordinates_allocated Allocated size of coordinates array + * \param coordinates_size Occupied size of coordinates array + */ + void iGeom_getArrUtoXYZ( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + double const* u, + int u_size, + int* storage_order, + double** on_coords, + int* on_coords_allocated, + int* on_coords_size, + int* err ); -void iGeom_getFaceType( iGeom_Instance, - iBase_EntityHandle face_handle, - char** face_type, - int* face_type_allocated, - int* face_type_size, - int* err ); - -void iGeom_getParametric( iGeom_Instance, - int* parametric, - int* err ); - -void iGeom_isEntParametric( iGeom_Instance, +/**\brief Return parametric position at specified spatial position on entity + * Return parametric position at specified spatial position on entity + * \param entity_handle Entity being queried + * \param x Spatial coordinate being queried + * \param y Spatial coordinate being queried + * \param z Spatial coordinate being queried + * \param u Parametric coordinate at spatial position being queried + * \param v Parametric coordinate at spatial position being queried + */ + void iGeom_getEntXYZtoUV( iGeom_Instance, iBase_EntityHandle entity_handle, - int* parametric, + double x, + double y, + double z, + double* u, + double* v, int* err ); -void iGeom_isArrParametric( iGeom_Instance, +/**\brief Return parametric position at specified spatial position on entity + * Return parametric position at specified spatial position on entity + * \param entity_handle Entity being queried + * \param x Spatial coordinate being queried + * \param y Spatial coordinate being queried + * \param z Spatial coordinate being queried + * \param u Parametric coordinate at spatial position being queried + */ + void iGeom_getEntXYZtoU( iGeom_Instance, + iBase_EntityHandle entity_handle, + double x, + double y, + double z, + double* u, + int* err ); + +/**\brief Return parametric positions at specified spatial position(s) on entity(ies) + * Return parametric positions at specified spatial position(s) on entity(ies). + * If either the number of entities or number of spatial coordinate triples is unity, then + * all points or entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of spatial coordinates input + * \param coordinates Coordinates being queried + * \param coordinates_size Number of coordinates in array + * \param uv Coordinates of parametric positions + * \param uv_allocated Allocated size of coordinates array + * \param uv_size Occupied size of coordinates array + */ + void iGeom_getArrXYZtoUV( iGeom_Instance, iBase_EntityHandle const* entity_handles, int entity_handles_size, - int** is_parametric, - int* is_parametric_allocated, - int* is_parametric_size, + int storage_order, + double const* coordinates, + int coordinates_size, + double** uv, + int* uv_allocated, + int* uv_size, int* err ); -void iGeom_getEntUVtoXYZ( iGeom_Instance, - iBase_EntityHandle entity_handle, - double u, - double v, - double* x, - double* y, - double* z, - int* err ); +/**\brief Return spatial positions at specified parametric position(s) on entity(ies) + * Return spatial positions at specified parametric position(s) on entity(ies). + * If either the number of entities or number of spatial coordinate triples is unity, then + * all points or entities are queried for that entity or point, respectively, otherwise each + * point corresponds to each entity. storage_order should be a value in + * the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in native order + * with respect to implementation. + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of spatial coordinates input + * \param coordinates Coordinates being queried + * \param coordinates_size Number of coordinates in array + * \param u Coordinates of parametric positions + * \param u_allocated Allocated size of coordinates array + * \param u_size Occupied size of coordinates array + */ + void iGeom_getArrXYZtoU( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* coordinates, + int coordinates_size, + double** u, + int* u_allocated, + int* u_size, + int* err ); -void iGeom_getArrUVtoXYZ( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* uv, - int uv_size, - double** coordinates, - int* coordinates_allocated, - int* coordinates_size, - int* err ); +/**\brief Return parametric position at specified spatial position on entity, based on parametric position hint + * Return parametric position at specified spatial position on entity, based on parametric + * position hint. For this function, u and v are input with parameters from which to start search. + * Typically this will reduce the search time for new parametric coordinates. + * \param entity_handle Entity being queried + * \param x Spatial coordinate being queried + * \param y Spatial coordinate being queried + * \param z Spatial coordinate being queried + * \param u Parametric coordinate at spatial position being queried + * \param v Parametric coordinate at spatial position being queried + */ + void iGeom_getEntXYZtoUVHint( iGeom_Instance, + iBase_EntityHandle entity_handle, + double x, + double y, + double z, + double* u, + double* v, + int* err ); -void iGeom_getEntUtoXYZ( iGeom_Instance, - iBase_EntityHandle entity_handle, - double u, - double* x, - double* y, - double* z, - int* err ); +/**\brief Return parametric positions at specified spatial position(s) on entity(ies), based on parametric position hints + * Return parametric positions at specified spatial position(s) on entity(ies), based on + * parametric position hints. If either the number of entities or number of spatial + * coordinate triples is unity, then all points or entities are queried for that entity + * or point, respectively, otherwise each point corresponds to each entity. storage_order + * should be a value in the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in + * native order with respect to implementation. + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of spatial coordinates input + * \param coordinates Coordinates being queried + * \param coordinates_size Number of coordinates in array + * \param uv Coordinates of parametric positions + * \param uv_allocated Allocated size of coordinates array + * \param uv_size Occupied size of coordinates array + */ + void iGeom_getArrXYZtoUVHint( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* coords, + int coords_size, + double** uv, + int* uv_allocated, + int* uv_size, + int* err ); -void iGeom_getArrUtoXYZ( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - double const* u, - int u_size, - int* storage_order, - double** on_coords, - int* on_coords_allocated, - int* on_coords_size, - int* err ); +/**\brief Get parametric range of entity + * Get parametric range of entity + * \param entity_handle Entity being queried + * \param u_min Minimum parametric coordinate for entity + * \param v_min Minimum parametric coordinate for entity + * \param u_max Maximum parametric coordinate for entity + * \param v_max Maximum parametric coordinate for entity + */ + void iGeom_getEntUVRange( iGeom_Instance, + iBase_EntityHandle entity_handle, + double* u_min, + double* v_min, + double* u_max, + double* v_max, + int* err ); -void iGeom_getEntXYZtoUV( iGeom_Instance, - iBase_EntityHandle entity_handle, - double x, - double y, - double z, - double* u, - double* v, - int* err ); +/**\brief Get parametric range of entity + * Get parametric range of entity + * \param entity_handle Entity being queried + * \param u_min Minimum parametric coordinate for entity + * \param u_max Maximum parametric coordinate for entity + */ + void iGeom_getEntURange( iGeom_Instance, + iBase_EntityHandle entity_handle, + double* u_min, + double* u_max, + int* err ); -void iGeom_getEntXYZtoU( iGeom_Instance, - iBase_EntityHandle entity_handle, - double x, - double y, - double z, - double* u, - int* err ); +/**\brief Get parametric range of entities + * Get parametric range of entities + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of parametric coordinates being returned + * \param uv_min Minimum parametric coordinate for entities + * \param uv_min_allocated Allocated size of minimum parametric coordinate array + * \param uv_min_size Occupied size of minimum parametric coordinate array + * \param uv_max Maximum parametric coordinate for entities + * \param uv_max_allocated Allocated size of maximum parametric coordinate array + * \param uv_max_size Occupied size of maximum parametric coordinate array + */ + void iGeom_getArrUVRange( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int* storage_order, + double** uv_min, + int* uv_min_allocated, + int* uv_min_size, + double** uv_max, + int* uv_max_allocated, + int* uv_max_size, + int* err ); -void iGeom_getArrXYZtoUV( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* coordinates, - int coordinates_size, - double** uv, - int* uv_allocated, - int* uv_size, - int* err ); +/**\brief Get parametric range of entities + * Get parametric range of entities + * \param entity_handles Entities being queried + * \param entity_handles_size Number of entities being queried + * \param storage_order Storage order of parametric coordinates being returned + * \param u_min Minimum parametric coordinate for entities + * \param u_min_allocated Allocated size of minimum parametric coordinate array + * \param u_min_size Occupied size of minimum parametric coordinate array + * \param u_max Maximum parametric coordinate for entities + * \param u_max_allocated Allocated size of maximum parametric coordinate array + * \param u_max_size Occupied size of maximum parametric coordinate array + */ + void iGeom_getArrURange( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + double** u_min, + int* u_min_allocated, + int* u_min_size, + double** u_max, + int* u_max_allocated, + int* u_max_size, + int* err ); -void iGeom_getArrXYZtoU( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* coordinates, - int coordinates_size, - double** u, - int* u_allocated, - int* u_size, - int* err ); - -void iGeom_getEntXYZtoUVHint( iGeom_Instance, - iBase_EntityHandle entity_handle, - double x, - double y, - double z, - double* u, - double* v, - int* err ); - -void iGeom_getArrXYZtoUVHint( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* coords, - int coords_size, - double** uv, - int* uv_allocated, - int* uv_size, - int* err ); - -void iGeom_getEntUVRange( iGeom_Instance, - iBase_EntityHandle entity_handle, - double* u_min, - double* v_min, - double* u_max, - double* v_max, +/**\brief Return the face parametric coordinates for a parametric position on a bounding edge + * Return the face parametric coordinates for a parametric position on a bounding edge + * \param edge_handle Edge being queried + * \param face_handle Face being queried + * \param in_u Parametric position on edge + * \param u Corresponding parametric position on face + * \param v Corresponding parametric position on face + */ + void iGeom_getEntUtoUV( iGeom_Instance, + iBase_EntityHandle edge_handle, + iBase_EntityHandle face_handle, + double in_u, + double* u, + double* v, int* err ); -void iGeom_getEntURange( iGeom_Instance, - iBase_EntityHandle entity_handle, - double* u_min, - double* u_max, +/**\brief Return parametric coordinates on face of vertex position + * Return parametric coordinates on face of vertex position + * \param vertex_handle Vertex being queried + * \param face_handle Face being queried + * \param u Corresponding parametric position on face + * \param v Corresponding parametric position on face + */ + void iGeom_getVtxToUV( iGeom_Instance, + iBase_EntityHandle vertex_handle, + iBase_EntityHandle face_handle, + double* u, + double* v, int* err ); -void iGeom_getArrUVRange( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int* storage_order, - double** uv_min, - int* uv_min_allocated, - int* uv_min_size, - double** uv_max, - int* uv_max_allocated, - int* uv_max_size, - int* err ); - -void iGeom_getArrURange( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - double** u_min, - int* u_min_allocated, - int* u_min_size, - double** u_max, - int* u_max_allocated, - int* u_max_size, - int* err ); - -void iGeom_getEntUtoUV( iGeom_Instance, +/**\brief Return parametric coordinates on edge of vertex position + * Return parametric coordinates on edge of vertex position + * \param vertex_handle Vertex being queried + * \param edge_handle Edge being queried + * \param u Corresponding parametric position on face + */ + void iGeom_getVtxToU( iGeom_Instance, + iBase_EntityHandle vertex_handle, iBase_EntityHandle edge_handle, - iBase_EntityHandle face_handle, - double in_u, double* u, - double* v, int* err ); -void iGeom_getVtxToUV( iGeom_Instance, - iBase_EntityHandle vertex_handle, - iBase_EntityHandle face_handle, - double* u, - double* v, - int* err ); - -void iGeom_getVtxToU( iGeom_Instance, - iBase_EntityHandle vertex_handle, - iBase_EntityHandle edge_handle, - double* u, - int* err ); - -void iGeom_getArrUtoUV( iGeom_Instance, - iBase_EntityHandle const* edge_handles, - int edge_handles_size, - iBase_EntityHandle const* face_handles, - int face_handles_size, - double const* u_in, - int u_in_size, - int* storage_order, - double** uv, - int* uv_allocated, - int* uv_size, - int* err ); - -void iGeom_getVtxArrToUV( iGeom_Instance, - iBase_EntityHandle const* vertex_handles, - int vertex_handles_size, +/**\brief Return the face parametric coordinates for a parametric position on bounding edges + * Return the face parametric coordinates for a parametric position on bounding edges + * \param edge_handles Edges being queried + * \param edge_handles_size Number of edges being queried + * \param face_handles Faces being queried + * \param face_handles_size Number of faces being queried + * \param u_in Parametric positions on edges + * \param u_in_size Number of parametric positions on edges + * \param storage_order Storage order of coordinates returned + * \param uv Corresponding parametric positions on faces + * \param uv_allocated Allocated size of parameter array + * \param uv_size Occupied size of parameter array + */ + void iGeom_getArrUtoUV( iGeom_Instance, + iBase_EntityHandle const* edge_handles, + int edge_handles_size, iBase_EntityHandle const* face_handles, int face_handles_size, + double const* u_in, + int u_in_size, int* storage_order, double** uv, int* uv_allocated, int* uv_size, int* err ); -void iGeom_getVtxArrToU( iGeom_Instance, - iBase_EntityHandle const* vertex_handles, - int vertex_handles_size, - iBase_EntityHandle const* edge_handles, - int edge_handles_size, - double** u, - int* u_allocated, - int* u_size, - int* err ); +/**\brief Return parametric coordinates on faces of vertex positions + * Return parametric coordinates on faces of vertex positions + * \param vertex_handles Vertices being queried + * \param vertex_handles_size Number of vertices being queried + * \param face_handles Faces being queried + * \param face_handles_size Number of faces being queried + * \param storage_order Storage order of coordinates returned + * \param uv Corresponding parametric positions on faces + * \param uv_allocated Allocated size of positions array + * \param uv_size Occupied size of positions array + */ + void iGeom_getVtxArrToUV( iGeom_Instance, + iBase_EntityHandle const* vertex_handles, + int vertex_handles_size, + iBase_EntityHandle const* face_handles, + int face_handles_size, + int* storage_order, + double** uv, + int* uv_allocated, + int* uv_size, + int* err ); -void iGeom_getEntNrmlUV( iGeom_Instance, - iBase_EntityHandle entity_handle, - double u, - double v, - double* nrml_i, - double* nrml_j, - double* nrml_k, - int* err ); +/**\brief Return parametric coordinates on edges of vertex positions + * Return parametric coordinates on edges of vertex positions + * \param vertex_handles Vertices being queried + * \param vertex_handles_size Number of vertices being queried + * \param edge_handles Edges being queried + * \param edge_handles_size Number of edges being queried + * \param u Corresponding parametric positions on faces + * \param u_allocated Allocated size of positions array + * \param u_size Occupied size of positions array + */ + void iGeom_getVtxArrToU( iGeom_Instance, + iBase_EntityHandle const* vertex_handles, + int vertex_handles_size, + iBase_EntityHandle const* edge_handles, + int edge_handles_size, + double** u, + int* u_allocated, + int* u_size, + int* err ); -void iGeom_getArrNrmlUV( iGeom_Instance, - iBase_EntityHandle const* face_handles, - int face_handles_size, - int storage_order, - double const* parameters, - int parameters_size, - double** normals, - int* normals_allocated, - int* normals_size, - int* err ); +/**\brief Return the normal at a specified parametric position + * Return the normal at a specified parametric position + * \param entity_handle Entity being queried + * \param u Parametric position being queried + * \param v Parametric position being queried + * \param nrml_i Normal at specified position + * \param nrml_j Normal at specified position + * \param nrml_k Normal at specified position + */ + void iGeom_getEntNrmlUV( iGeom_Instance, + iBase_EntityHandle entity_handle, + double u, + double v, + double* nrml_i, + double* nrml_j, + double* nrml_k, + int* err ); -void iGeom_getEntTgntU( iGeom_Instance, - iBase_EntityHandle entity_handle, - double u, - double* tgnt_i, - double* tgnt_j, - double* tgnt_k, - int* err ); +/**\brief Return the normals at a specified parametric positions + * Return the normals at a specified parametric positions. If either the number of + * entities or number of spatial + * coordinate triples is unity, then all points or entities are queried for that entity + * or point, respectively, otherwise each point corresponds to each entity. storage_order + * should be a value in the iBase_StorageOrder enum; if input as iBase_UNKNOWN, order is in + * native order with respect to implementation. + * \param entity_handle Entity being queried + * \param u Parametric position being queried + * \param v Parametric position being queried + */ + void iGeom_getArrNrmlUV( iGeom_Instance, + iBase_EntityHandle const* face_handles, + int face_handles_size, + int storage_order, + double const* parameters, + int parameters_size, + double** normals, + int* normals_allocated, + int* normals_size, + int* err ); -void iGeom_getArrTgntU( iGeom_Instance, - iBase_EntityHandle const* edge_handles, - int edge_handles_size, - int storage_order, - double const* parameters, - int parameters_size, - double** tangents, - int* tangents_allocated, - int* tangents_size, - int* err ); - -void iGeom_getEnt1stDrvt( iGeom_Instance, +/**\brief + * + */ + void iGeom_getEntTgntU( iGeom_Instance, iBase_EntityHandle entity_handle, double u, - double v, - double** drvt_u, - int* drvt_u_allocated, - int* drvt_u_size, - double** drvt_v, - int* dvrt_v_allocated, - int* dvrt_v_size, + double* tgnt_i, + double* tgnt_j, + double* tgnt_k, int* err ); -void iGeom_getArr1stDrvt( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, +/**\brief + * + */ + void iGeom_getArrTgntU( iGeom_Instance, + iBase_EntityHandle const* edge_handles, + int edge_handles_size, int storage_order, - double const* uv, - int uv_size, - double** dvtr_u, - int* dvrt_u_allocated, - int* dvrt_u_size, - int** u_offset, - int* u_offset_allocated, - int* u_offset_size, - double** dvrt_v, - int* dvrt_v_allocated, - int* dvrt_v_size, - int** v_offset, - int* v_offset_allocated, - int* v_offset_size, + double const* parameters, + int parameters_size, + double** tangents, + int* tangents_allocated, + int* tangents_size, int* err ); -void iGeom_getEnt2ndDrvt( iGeom_Instance, +/**\brief + * + */ + void iGeom_getEnt1stDrvt( iGeom_Instance, + iBase_EntityHandle entity_handle, + double u, + double v, + double** drvt_u, + int* drvt_u_allocated, + int* drvt_u_size, + double** drvt_v, + int* dvrt_v_allocated, + int* dvrt_v_size, + int* err ); + +/**\brief + * + */ + void iGeom_getArr1stDrvt( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* uv, + int uv_size, + double** dvtr_u, + int* dvrt_u_allocated, + int* dvrt_u_size, + int** u_offset, + int* u_offset_allocated, + int* u_offset_size, + double** dvrt_v, + int* dvrt_v_allocated, + int* dvrt_v_size, + int** v_offset, + int* v_offset_allocated, + int* v_offset_size, + int* err ); + +/**\brief + * + */ + void iGeom_getEnt2ndDrvt( iGeom_Instance, + iBase_EntityHandle entity_handle, + double u, + double v, + double** drvt_uu, + int* drvt_uu_allocated, + int* drvt_uu_size, + double** drvt_vv, + int* dvrt_vv_allocated, + int* dvrt_vv_size, + double** drvt_uv, + int* dvrt_uv_allocated, + int* dvrt_uv_size, + int* err ); + +/**\brief + * + */ + void iGeom_getArr2ndDrvt( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int storage_order, + double const* uv, + int uv_size, + double** dvtr_uu, + int* dvrt_uu_allocated, + int* dvrt_uu_size, + int** uu_offset, + int* uu_offset_allocated, + int* uu_offset_size, + double** dvtr_vv, + int* dvrt_vv_allocated, + int* dvrt_vv_size, + int** vv_offset, + int* vv_offset_allocated, + int* vv_offset_size, + double** dvrt_uv, + int* dvrt_uv_allocated, + int* dvrt_uv_size, + int** uv_offset, + int* uv_offset_allocated, + int* uv_offset_size, + int* err ); + +/**\brief + * + */ + void iGeom_getFcCvtrUV( iGeom_Instance, iBase_EntityHandle entity_handle, double u, double v, - double** drvt_uu, - int* drvt_uu_allocated, - int* drvt_uu_size, - double** drvt_vv, - int* dvrt_vv_allocated, - int* dvrt_vv_size, - double** drvt_uv, - int* dvrt_uv_allocated, - int* dvrt_uv_size, + double* cvtr1_i, + double* cvtr1_j, + double* cvtr1_k, + double* cvtr2_i, + double* cvtr2_j, + double* cvtr2_k, int* err ); -void iGeom_getArr2ndDrvt( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int storage_order, - double const* uv, - int uv_size, - double** dvtr_uu, - int* dvrt_uu_allocated, - int* dvrt_uu_size, - int** uu_offset, - int* uu_offset_allocated, - int* uu_offset_size, - double** dvtr_vv, - int* dvrt_vv_allocated, - int* dvrt_vv_size, - int** vv_offset, - int* vv_offset_allocated, - int* vv_offset_size, - double** dvrt_uv, - int* dvrt_uv_allocated, - int* dvrt_uv_size, - int** uv_offset, - int* uv_offset_allocated, - int* uv_offset_size, - int* err ); +/**\brief + * + */ + void iGeom_getFcArrCvtrUV( iGeom_Instance, + iBase_EntityHandle const* face_handles, + int face_handles_size, + int storage_order, + double const* uv, + int uv_size, + double** cvtr_1, + int* cvtr_1_allocated, + int* cvtr_1_size, + double** cvtr_2, + int* cvtr_2_allocated, + int* cvtr_2_size, + int* err ); -void iGeom_getFcCvtrUV( iGeom_Instance, - iBase_EntityHandle entity_handle, - double u, - double v, - double* cvtr1_i, - double* cvtr1_j, - double* cvtr1_k, - double* cvtr2_i, - double* cvtr2_j, - double* cvtr2_k, - int* err ); +/**\brief + * + */ + void iGeom_isEntPeriodic( iGeom_Instance, + iBase_EntityHandle entity_handle, + int* in_u, + int* in_v, + int* err ); -void iGeom_getFcArrCvtrUV( iGeom_Instance, - iBase_EntityHandle const* face_handles, - int face_handles_size, - int storage_order, - double const* uv, - int uv_size, - double** cvtr_1, - int* cvtr_1_allocated, - int* cvtr_1_size, - double** cvtr_2, - int* cvtr_2_allocated, - int* cvtr_2_size, - int* err ); +/**\brief + * + */ + void iGeom_isArrPeriodic( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + int** in_uv, + int* in_uv_allocated, + int* in_uv_size, + int* err ); -void iGeom_isEntPeriodic( iGeom_Instance, - iBase_EntityHandle entity_handle, - int* in_u, - int* in_v, - int* err ); +/**\brief + * + */ + void iGeom_isFcDegenerate( iGeom_Instance, + iBase_EntityHandle face_handle, + int* is_degenerate, + int* err ); -void iGeom_isArrPeriodic( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - int** in_uv, - int* in_uv_allocated, - int* in_uv_size, - int* err ); +/**\brief + * + */ + void iGeom_isFcArrDegenerate( iGeom_Instance, + iBase_EntityHandle const* face_handles, + int face_handles_size, + int** degenerate, + int* degenerate_allocated, + int* degenerate_size, + int* err ); -void iGeom_isFcDegenerate( iGeom_Instance, - iBase_EntityHandle face_handle, - int* is_degenerate, +/**\brief + * + */ + void iGeom_getTolerance( iGeom_Instance, + int* type, + double* tolerance, int* err ); -void iGeom_isFcArrDegenerate( iGeom_Instance, - iBase_EntityHandle const* face_handles, - int face_handles_size, - int** degenerate, - int* degenerate_allocated, - int* degenerate_size, +/**\brief + * + */ + void iGeom_getEntTolerance( iGeom_Instance, + iBase_EntityHandle entity_handle, + double* tolerance, int* err ); -void iGeom_getTolerance( iGeom_Instance, - int* type, - double* tolerance, - int* err ); +/**\brief + * + */ + void iGeom_getArrTolerance( iGeom_Instance, + iBase_EntityHandle const* entity_handles, + int entity_handles_size, + double** tolerances, + int* tolerances_allocated, + int* tolerances_size, + int* err ); -void iGeom_getEntTolerance( iGeom_Instance, - iBase_EntityHandle entity_handle, - double* tolerance, - 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 iGeom_ALL_TOPOLOGIES, respectively. Specified type + * or topology must be a value in the iBase_EntityType or + * iGeom_EntityTopology enumerations, respectively. + * \param instance iGeom 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 iGeom_initEntIter( iGeom_Instance, + iBase_EntitySetHandle entity_set_handle, + int entity_dimension, + iGeom_EntityIterator* entity_iterator, + int* err ); -void iGeom_getArrTolerance( iGeom_Instance, - iBase_EntityHandle const* entity_handles, - int entity_handles_size, - double** tolerances, - int* tolerances_allocated, - int* tolerances_size, - 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 iGeom_ALL_TOPOLOGIES, respectively. + * Specified type or topology must be a value in the iBase_EntityType or + * iGeom_EntityTopology enumerations, respectively. + * \param instance iGeom 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 iGeom_initEntArrIter( iGeom_Instance, + iBase_EntitySetHandle entity_set_handle, + int entity_dimension, + int requested_array_size, + iGeom_EntityArrIterator* entArr_iterator, + int* err ); -void iGeom_initEntIter( iGeom_Instance, - iBase_EntitySetHandle entity_set_handle, - int entity_dimension, - iGeom_EntityIterator* entity_iterator, - 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 iGeom 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 iGeom_getNextEntIter( iGeom_Instance, + iGeom_EntityIterator, + iBase_EntityHandle* entity_handle, + int* has_data, + int* err ); -void iGeom_initEntArrIter( iGeom_Instance, - iBase_EntitySetHandle entity_set_handle, - int entity_dimension, - int requested_array_size, - iGeom_EntityArrIterator* entArr_iterator, - 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 iGeom 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 iGeom_getNextEntArrIter( iGeom_Instance, + iGeom_EntityArrIterator, + iBase_EntityHandle** entity_handles, + int* entity_handles_allocated, + int* entity_handles_size, + int* err ); -void iGeom_getNextEntIter( iGeom_Instance, + /**\brief Reset the iterator + * + * Reset the iterator + * \param instance iGeom instance handle + * \param entity_iterator Iterator to reset + * \param *err Pointer to error type returned from function + */ + void iGeom_resetEntIter( iGeom_Instance, iGeom_EntityIterator, - iBase_EntityHandle* entity_handle, - int* has_data, int* err ); -void iGeom_getNextEntArrIter( iGeom_Instance, + /**\brief Reset the array iterator + * + * Reset the array iterator + * \param instance iGeom instance handle + * \param entArr_iterator Iterator to reset + * \param *err Pointer to error type returned from function + */ + void iGeom_resetEntArrIter( iGeom_Instance, iGeom_EntityArrIterator, - iBase_EntityHandle** entity_handles, - int* entity_handles_allocated, - int* entity_handles_size, int* err ); -void iGeom_resetEntIter( iGeom_Instance, - iGeom_EntityIterator, - int* err ); + /**\brief Destroy the specified iterator + * + * Destroy the specified iterator + * \param instance iGeom instance handle + * \param entity_iterator Iterator which gets destroyed + * \param *err Pointer to error type returned from function + */ + void iGeom_endEntIter( iGeom_Instance, iGeom_EntityIterator, int* err ); -void iGeom_resetEntArrIter( iGeom_Instance, - iGeom_EntityArrIterator, - int* err ); + /**\brief Destroy the specified array iterator + * + * Destroy the specified array iterator + * \param instance iGeom instance handle + * \param entArr_iterator Iterator which gets destroyed + * \param *err Pointer to error type returned from function + */ + void iGeom_endEntArrIter( iGeom_Instance, iGeom_EntityArrIterator, int* err ); -void iGeom_endEntIter( iGeom_Instance, iGeom_EntityIterator, int* err ); -void iGeom_endEntArrIter( iGeom_Instance, iGeom_EntityArrIterator, int* err ); +/**\brief + * + */ + void iGeom_copyEnt( iGeom_Instance, + iBase_EntityHandle source, + iBase_EntityHandle* copy, + int* err ); -void iGeom_copyEnt( iGeom_Instance, - iBase_EntityHandle source, - iBase_EntityHandle* copy, - int* err ); +/**\brief + * + */ + void iGeom_sweepEntAboutAxis( iGeom_Instance, + iBase_EntityHandle geom_entity, + double angle, + double axis_normal_x, + double axis_normal_y, + double axis_normal_z, + iBase_EntityHandle* geom_entity2, + int* err ); -void iGeom_sweepEntAboutAxis( iGeom_Instance, - iBase_EntityHandle geom_entity, - double angle, - double axis_normal_x, - double axis_normal_y, - double axis_normal_z, - iBase_EntityHandle* geom_entity2, - int* err ); + /**\brief Delete specified entity + * + * Delete specified entity + * \param instance iGeom instance handle + * \param entity_handle Entity to be deleted + * \param *err Pointer to error type returned from function + */ + void iGeom_deleteEnt( iGeom_Instance, + iBase_EntityHandle, + int* err ); -void iGeom_deleteEnt( iGeom_Instance, - iBase_EntityHandle, - int* err ); +/**\brief + * + */ + void iGeom_createBrick( iGeom_Instance, + double x, + double y, + double z, + iBase_EntityHandle* geom_entity, + int* err ); -void iGeom_createBrick( iGeom_Instance, - double x, - double y, - double z, - iBase_EntityHandle* geom_entity, - int* err ); +/**\brief + * + */ + void iGeom_createCylinder( iGeom_Instance, + double height, + double major_rad, + double minor_rad, + iBase_EntityHandle* geom_entity, + int* err ); -void iGeom_createCylinder( iGeom_Instance, - double height, - double major_rad, - double minor_rad, - iBase_EntityHandle* geom_entity, - int* err ); +/**\brief + * + */ + void iGeom_createTorus( iGeom_Instance, + double major_rad, + double minor_rad, + iBase_EntityHandle* geom_entity, + int* err ); -void iGeom_createTorus( iGeom_Instance, - double major_rad, - double minor_rad, +/**\brief + * + */ + void iGeom_moveEnt( iGeom_Instance, + iBase_EntityHandle* geom_entity, + double x, + double y, + double z, + int* err ); + +/**\brief + * + */ + void iGeom_rotateEnt( iGeom_Instance, iBase_EntityHandle* geom_entity, + double angle, + double axis_normal_x, + double axis_normal_y, + double axis_normal_z, int* err ); -void iGeom_moveEnt( iGeom_Instance, - iBase_EntityHandle* geom_entity, - double x, - double y, - double z, - int* err ); +/**\brief + * + */ + void iGeom_reflectEnt( iGeom_Instance, + iBase_EntityHandle* geom_entity, + double plane_normal_x, + double plane_normal_y, + double plane_normal_z, + int* err ); -void iGeom_rotateEnt( iGeom_Instance, - iBase_EntityHandle* geom_entity, - double angle, - double axis_normal_x, - double axis_normal_y, - double axis_normal_z, - int* err ); - -void iGeom_reflectEnt( iGeom_Instance, +/**\brief + * + */ + void iGeom_scaleEnt( iGeom_Instance, iBase_EntityHandle* geom_entity, - double plane_normal_x, - double plane_normal_y, - double plane_normal_z, + double scale_x, + double scale_y, + double scale_z, int* err ); -void iGeom_scaleEnt( iGeom_Instance, - iBase_EntityHandle* geom_entity, - double scale_x, - double scale_y, - double scale_z, - int* err ); +/**\brief + * + */ + void iGeom_uniteEnts( iGeom_Instance, + iBase_EntityHandle const* geom_entities, + int geom_entities_size, + iBase_EntityHandle* geom_entity, + int* err ); -void iGeom_uniteEnts( iGeom_Instance, - iBase_EntityHandle const* geom_entities, - int geom_entities_size, - iBase_EntityHandle* geom_entity, - int* err ); +/**\brief + * + */ + void iGeom_subtractEnts( iGeom_Instance, + iBase_EntityHandle blank, + iBase_EntityHandle tool, + iBase_EntityHandle* geom_entity, + int* err ); -void iGeom_subtractEnts( iGeom_Instance, - iBase_EntityHandle blank, - iBase_EntityHandle tool, +/**\brief + * + */ + void iGeom_sectionEnt( iGeom_Instance, iBase_EntityHandle* geom_entity, + double plane_normal_x, + double plane_normal_y, + double plane_normal_z, + double offset, + int reverse, + iBase_EntityHandle* geom_entity2, int* err ); -void iGeom_sectionEnt( iGeom_Instance, - iBase_EntityHandle* geom_entity, - double plane_normal_x, - double plane_normal_y, - double plane_normal_z, - double offset, - int reverse, - iBase_EntityHandle* geom_entity2, - int* err ); +/**\brief + * + */ + void iGeom_imprintEnts( iGeom_Instance, + iBase_EntityHandle const* geom_entities, + int geom_entities_size, + int* err ); -void iGeom_imprintEnts( iGeom_Instance, +/**\brief + * + */ + void iGeom_mergeEnts( iGeom_Instance, iBase_EntityHandle const* geom_entities, int geom_entities_size, + double tolerance, int* err ); -void iGeom_mergeEnts( iGeom_Instance, - iBase_EntityHandle const* geom_entities, - int geom_entities_size, - double tolerance, - 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 iGeom 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 iGeom_createEntSet(iGeom_Instance instance, + int isList, + iBase_EntitySetHandle* entity_set_created, + int *err); -void iGeom_createEntSet(iGeom_Instance instance, - int isList, - iBase_EntitySetHandle* entity_set_created, - int *err); + /**\brief Destroy an entity set + * + * Destroy an entity set + * \param instance iGeom instance handle + * \param entity_set Entity set to be destroyed + * \param *err Pointer to error type returned from function + */ + void iGeom_destroyEntSet(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + int *err); -void iGeom_destroyEntSet(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - 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 iGeom 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 iGeom_isList(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + int *is_list, + int *err); -void iGeom_isList(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - int *is_list, - 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 iGeom 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 iGeom_getNumEntSets(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_handle, + int num_hops, + int *num_sets, + int *err); -void iGeom_getNumEntSets(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_handle, - int num_hops, - int *num_sets, - 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 iGeom 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 iGeom_getEntSets(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_handle, + int num_hops, + iBase_EntitySetHandle** contained_set_handles, + int* contained_set_handles_allocated, + int* contained_set_handles_size, + int *err); -void iGeom_getEntSets(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_handle, - int num_hops, - iBase_EntitySetHandle** contained_set_handles, - int* contained_set_handles_allocated, - int* contained_set_handles_size, - int *err); - -void iGeom_addEntToSet(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_EntitySetHandle* entity_set, - int *err); - -void iGeom_rmvEntFromSet(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_EntitySetHandle* entity_set, + /**\brief Add an entity to a set + * + * Add an entity to a set + * \param instance iGeom 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 iGeom_addEntToSet(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_EntitySetHandle* entity_set, int *err); + /**\brief Remove an entity from a set + * + * Remove an entity from a set + * + * \param instance iGeom 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 iGeom_rmvEntFromSet(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_EntitySetHandle* entity_set, + int *err); -void iGeom_addEntArrToSet(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_EntitySetHandle* entity_set, - int *err); - -void iGeom_rmvEntArrFromSet(iGeom_Instance instance, + /**\brief Add an array of entities to a set + * + * Add an array of entities to a set + * \param instance iGeom 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 iGeom_addEntArrToSet(iGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size, - iBase_EntitySetHandle* entity_set, + iBase_EntitySetHandle* entity_set, int *err); -void iGeom_addEntSet(iGeom_Instance instance, - iBase_EntityHandle entity_set_to_add, - iBase_EntitySetHandle* entity_set_handle, - int *err); + /**\brief Remove an array of entities from a set + * + * Remove an array of entities from a set + * \param instance iGeom 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 iGeom_rmvEntArrFromSet(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_EntitySetHandle* entity_set, + int *err); -void iGeom_rmvEntSet(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_to_remove, - iBase_EntitySetHandle* entity_set_handle, - int *err); + /**\brief Add an entity set to a set + * + * Add an entity set to a set + * \param instance iGeom 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 iGeom_addEntSet(iGeom_Instance instance, + iBase_EntityHandle entity_set_to_add, + iBase_EntitySetHandle* entity_set_handle, + int *err); -void iGeom_isEntContained(iGeom_Instance instance, - iBase_EntitySetHandle containing_entity_set, - iBase_EntitySetHandle contained_entity, - int *is_contained, - int *err); -void iGeom_isEntSetContained(iGeom_Instance instance, - iBase_EntitySetHandle containing_entity_set, - iBase_EntitySetHandle contained_entity_set, - int *is_contained, - int *err); - -void iGeom_addPrntChld(iGeom_Instance instance, - iBase_EntitySetHandle* parent_entity_set, - iBase_EntitySetHandle* child_entity_set, + /**\brief Remove an entity set from a set + * + * Remove an entity set from a set + * \param instance iGeom 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 iGeom_rmvEntSet(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_to_remove, + iBase_EntitySetHandle* entity_set_handle, int *err); -void iGeom_rmvPrntChld(iGeom_Instance instance, - iBase_EntitySetHandle* parent_entity_set, - iBase_EntitySetHandle* child_entity_set, - 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 iGeom 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 iGeom_isEntContained(iGeom_Instance instance, + iBase_EntitySetHandle containing_entity_set, + iBase_EntitySetHandle contained_entity, + int *is_contained, + int *err); -void iGeom_isChildOf(iGeom_Instance instance, - iBase_EntitySetHandle parent_entity_set, - iBase_EntitySetHandle child_entity_set, - int *is_child, - 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 iGeom 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 iGeom_isEntSetContained(iGeom_Instance instance, + iBase_EntitySetHandle containing_entity_set, + iBase_EntitySetHandle contained_entity_set, + int *is_contained, + int *err); -void iGeom_getNumChld(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - int num_hops, - int *num_child, - 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 iGeom 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 iGeom_addPrntChld(iGeom_Instance instance, + iBase_EntitySetHandle* parent_entity_set, + iBase_EntitySetHandle* child_entity_set, + int *err); -void iGeom_getNumPrnt(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - int num_hops, - int *num_parent, - int *err); + /**\brief Remove parent/child links between two sets + * + * Remove parent/child links between two sets. + * \param instance iGeom 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 iGeom_rmvPrntChld(iGeom_Instance instance, + iBase_EntitySetHandle* parent_entity_set, + iBase_EntitySetHandle* child_entity_set, + int *err); -void iGeom_getChldn(iGeom_Instance instance, - iBase_EntitySetHandle from_entity_set, - int num_hops, - iBase_EntitySetHandle** entity_set_handles, - int* entity_set_handles_allocated, - int* entity_set_handles_size, - 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 iGeom 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 iGeom_isChildOf(iGeom_Instance instance, + iBase_EntitySetHandle parent_entity_set, + iBase_EntitySetHandle child_entity_set, + int *is_child, + int *err); -void iGeom_getPrnts(iGeom_Instance instance, - iBase_EntitySetHandle from_entity_set, - int num_hops, - iBase_EntitySetHandle** entity_set_handles, - int* entity_set_handles_allocated, - int* entity_set_handles_size, - 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 iGeom 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 iGeom_getNumChld(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + int num_hops, + int *num_child, + int *err); -void iGeom_createTag(iGeom_Instance instance, - const char* tag_name, - int tag_size, - int tag_type, - iBase_TagHandle* tag_handle, - int *err, - int tag_name_len ); + /**\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 iGeom 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 iGeom_getNumPrnt(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + int num_hops, + int *num_parent, + 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 iGeom 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 iGeom_getChldn(iGeom_Instance instance, + iBase_EntitySetHandle from_entity_set, + int num_hops, + iBase_EntitySetHandle** entity_set_handles, + int* entity_set_handles_allocated, + int* entity_set_handles_size, + int *err); -void iGeom_destroyTag(iGeom_Instance instance, - iBase_TagHandle tag_handle, - int forced, + /**\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 iGeom 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 iGeom_getPrnts(iGeom_Instance instance, + iBase_EntitySetHandle from_entity_set, + int num_hops, + iBase_EntitySetHandle** entity_set_handles, + int* entity_set_handles_allocated, + int* entity_set_handles_size, int *err); -void iGeom_getTagName(iGeom_Instance instance, - iBase_TagHandle tag_handle, - char *name, - int* err, - int name_len); + /**\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 iGeom 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 iGeom_createTag(iGeom_Instance instance, + const char* tag_name, + int tag_size, + int tag_type, + iBase_TagHandle* tag_handle, + int *err, + int tag_name_len ); -void iGeom_getTagSizeValues(iGeom_Instance instance, - iBase_TagHandle tag_handle, - int *tag_size, - int *err); -void iGeom_getTagSizeBytes(iGeom_Instance instance, - iBase_TagHandle tag_handle, - int *tag_size, - int *err); + /**\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 iGeom 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 iGeom_destroyTag(iGeom_Instance instance, + iBase_TagHandle tag_handle, + int forced, + int *err); -void iGeom_getTagHandle(iGeom_Instance instance, - const char* tag_name, - iBase_TagHandle *tag_handle, - int *err, - int tag_name_len); + /**\brief Get the name for a given tag handle + * + * Get the name for a given tag handle + * \param instance iGeom 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 iGeom_getTagName(iGeom_Instance instance, + iBase_TagHandle tag_handle, + char *name, + int* err, + int name_len); -void iGeom_getTagType(iGeom_Instance instance, - iBase_TagHandle tag_handle, - int *tag_type, - int *err); + /**\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 iGeom 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 iGeom_getTagSizeValues(iGeom_Instance instance, + iBase_TagHandle tag_handle, + int *tag_size, + int *err); + /**\brief Get size of a tag in units of bytes + * + * Get size of a tag in units of bytes + * \param instance iGeom 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 iGeom_getTagSizeBytes(iGeom_Instance instance, + iBase_TagHandle tag_handle, + int *tag_size, + int *err); -void iGeom_setEntSetData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_handle, - iBase_TagHandle tag_handle, - const char* tag_value, - int tag_value_size, - 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 iGeom 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 iGeom_getTagHandle(iGeom_Instance instance, + const char* tag_name, + iBase_TagHandle *tag_handle, + 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 iGeom 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 iGeom_getTagType(iGeom_Instance instance, + iBase_TagHandle tag_handle, + int *tag_type, + int *err); -void iGeom_setEntSetIntData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - iBase_TagHandle tag_handle, - int tag_value, - 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 iGeom 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 iGeom_setEntSetData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_handle, + iBase_TagHandle tag_handle, + const char* tag_value, + int tag_value_size, + int *err); -void iGeom_setEntSetDblData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - iBase_TagHandle tag_handle, - double tag_value, - 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 iGeom 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 iGeom_setEntSetIntData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + iBase_TagHandle tag_handle, + int tag_value, + int *err); -void iGeom_setEntSetEHData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - iBase_TagHandle tag_handle, - iBase_EntityHandle tag_value, - 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 iGeom 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 iGeom_setEntSetDblData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + iBase_TagHandle tag_handle, + double tag_value, + int *err); -void iGeom_getEntSetData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_handle, - iBase_TagHandle tag_handle, - char** tag_value, - int* tag_value_allocated, - int* tag_value_size, - int *err); -void iGeom_getEntSetIntData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - iBase_TagHandle tag_handle, - int *out_data, - 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 iGeom 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 iGeom_setEntSetEHData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + iBase_TagHandle tag_handle, + iBase_EntityHandle tag_value, + int *err); -void iGeom_getEntSetDblData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, - iBase_TagHandle tag_handle, - double *out_data, - int *err); -void iGeom_getEntSetEHData(iGeom_Instance instance, - iBase_EntitySetHandle entity_set, + /**\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 iGeom 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 iGeom_getEntSetData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_handle, iBase_TagHandle tag_handle, - iBase_EntityHandle *out_data, + char** tag_value, + int* tag_value_allocated, + int* tag_value_size, int *err); -void iGeom_getAllEntSetTags(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_handle, - iBase_TagHandle** tag_handles, - int* tag_handles_allocated, - int* tag_handles_size, - 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 iGeom 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 iGeom_getEntSetIntData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + iBase_TagHandle tag_handle, + int *out_data, + int *err); -void iGeom_rmvEntSetTag(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_handle, - iBase_TagHandle tag_handle, - 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 iGeom 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 iGeom_getEntSetDblData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + iBase_TagHandle tag_handle, + double *out_data, + 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 iGeom 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 iGeom_getEntSetEHData(iGeom_Instance instance, + iBase_EntitySetHandle entity_set, + iBase_TagHandle tag_handle, + iBase_EntityHandle *out_data, + int *err); -void iGeom_getArrData(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - char** tag_values, - int* tag_values_allocated, - int* tag_values_size, - 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 iGeom 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 iGeom_getAllEntSetTags(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_handle, + iBase_TagHandle** tag_handles, + int* tag_handles_allocated, + int* tag_handles_size, + int *err); -void iGeom_getIntArrData(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - int** tag_values, - int* tag_values_allocated, - int* tag_values_size, - int *err); + /**\brief Remove a tag value from an entity set + * + * Remove a tag value from an entity set + * \param instance iGeom 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 iGeom_rmvEntSetTag(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_handle, + iBase_TagHandle tag_handle, + int *err); -void iGeom_getDblArrData(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - double** tag_values, - int* tag_values_allocated, - int* tag_values_size, - int *err); -void iGeom_getEHArrData(iGeom_Instance instance, + /**\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 iGeom 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 iGeom_getArrData(iGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size, iBase_TagHandle tag_handle, - iBase_EntityHandle** tag_value, - int* tag_value_allocated, - int* tag_value_size, + char** tag_values, + int* tag_values_allocated, + int* tag_values_size, int *err); -void iGeom_setArrData(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - const char* tag_values, - int tag_values_size, - 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 iGeom 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 iGeom_getIntArrData(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + int** tag_values, + int* tag_values_allocated, + int* tag_values_size, + int *err); -void iGeom_setIntArrData(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - const int* tag_values, - int tag_values_size, - 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 iGeom 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 iGeom_getDblArrData(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + double** tag_values, + int* tag_values_allocated, + int* tag_values_size, + int *err); -void iGeom_setDblArrData(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - const double* tag_values, - const int tag_values_size, - 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 iGeom 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 iGeom_getEHArrData(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + iBase_EntityHandle** tag_value, + int* tag_value_allocated, + int* tag_value_size, + int *err); -void iGeom_setEHArrData(iGeom_Instance instance, + /**\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 iGeom 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 iGeom_setArrData(iGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size, iBase_TagHandle tag_handle, - const iBase_EntityHandle* tag_values, + const char* tag_values, int tag_values_size, int *err); -void iGeom_rmvArrTag(iGeom_Instance instance, - const iBase_EntityHandle* entity_handles, - int entity_handles_size, - iBase_TagHandle tag_handle, - 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 iGeom 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 iGeom_setIntArrData(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + const int* tag_values, + int tag_values_size, + int *err); -void iGeom_getData(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle tag_handle, - char** tag_value, - int *tag_value_allocated, - int *tag_value_size, - 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 iGeom 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 iGeom_setDblArrData(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + const double* tag_values, + const int tag_values_size, + int *err); -void iGeom_getIntData(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle tag_handle, - int *out_data, - 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 iGeom 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 iGeom_setEHArrData(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + const iBase_EntityHandle* tag_values, + int tag_values_size, + int *err); -void iGeom_getDblData(iGeom_Instance instance, - /*in*/ const iBase_EntityHandle entity_handle, - /*in*/ const iBase_TagHandle tag_handle, - double *out_data, int *err); + /**\brief Remove a tag value from an array of entities + * + * Remove a tag value from an array of entities + * \param instance iGeom 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 iGeom_rmvArrTag(iGeom_Instance instance, + const iBase_EntityHandle* entity_handles, + int entity_handles_size, + iBase_TagHandle tag_handle, + int *err); -void iGeom_getEHData(iGeom_Instance instance, + /**\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 iGeom 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 iGeom_getData(iGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle, - iBase_EntityHandle *out_data, + char** tag_value, + int *tag_value_allocated, + int *tag_value_size, int *err); -void iGeom_setData(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle tag_handle, - const char* tag_value, - int tag_value_size, - 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 iGeom 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 iGeom_getIntData(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle tag_handle, + int *out_data, + int *err); -void iGeom_setIntData(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle tag_handle, - int tag_value, - 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 iGeom 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 iGeom_getDblData(iGeom_Instance instance, + /*in*/ const iBase_EntityHandle entity_handle, + /*in*/ const iBase_TagHandle tag_handle, + double *out_data, int *err); -void iGeom_setDblData(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle tag_handle, - double tag_value, - 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 iGeom 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 iGeom_getEHData(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle tag_handle, + iBase_EntityHandle *out_data, + int *err); -void iGeom_setEHData(iGeom_Instance instance, + /**\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 iGeom 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 iGeom_setData(iGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle, - iBase_EntityHandle tag_value, + const char* tag_value, + int tag_value_size, int *err); -void iGeom_getAllTags(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle** tag_handles, - int* tag_handles_allocated, - int* tag_handles_size, - 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 iGeom 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 iGeom_setIntData(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle tag_handle, + int tag_value, + int *err); -void iGeom_rmvTag(iGeom_Instance instance, - iBase_EntityHandle entity_handle, - iBase_TagHandle tag_handle, - 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 iGeom 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 iGeom_setDblData(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle tag_handle, + double tag_value, + int *err); -void iGeom_subtract(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_1, - iBase_EntitySetHandle entity_set_2, - iBase_EntitySetHandle* result_entity_set, + /**\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 iGeom 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 iGeom_setEHData(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle tag_handle, + iBase_EntityHandle tag_value, + 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 iGeom 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 iGeom_getAllTags(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle** tag_handles, + int* tag_handles_allocated, + int* tag_handles_size, + int *err); + + /**\brief Remove a tag value from an entity + * + * Remove a tag value from an entity + * \param instance iGeom 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 iGeom_rmvTag(iGeom_Instance instance, + iBase_EntityHandle entity_handle, + iBase_TagHandle tag_handle, int *err); -void iGeom_intersect(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_1, - iBase_EntitySetHandle entity_set_2, - iBase_EntitySetHandle* result_entity_set, - int *err); + /**\brief Subtract contents of one entity set from another + * + * Subtract contents of one entity set from another + * \param instance iGeom 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 iGeom_subtract(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_1, + iBase_EntitySetHandle entity_set_2, + iBase_EntitySetHandle* result_entity_set, + int *err); -void iGeom_unite(iGeom_Instance instance, - iBase_EntitySetHandle entity_set_1, - iBase_EntitySetHandle entity_set_2, - iBase_EntitySetHandle* result_entity_set, - int *err); + /**\brief Intersect contents of one entity set with another + * + * Intersect contents of one entity set with another + * \param instance iGeom 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 iGeom_intersect(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_1, + iBase_EntitySetHandle entity_set_2, + iBase_EntitySetHandle* result_entity_set, + int *err); + /**\brief Unite contents of one entity set with another + * + * Unite contents of one entity set with another + * \param instance iGeom 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 iGeom_unite(iGeom_Instance instance, + iBase_EntitySetHandle entity_set_1, + iBase_EntitySetHandle entity_set_2, + iBase_EntitySetHandle* result_entity_set, + int *err); + #ifdef __cplusplus } // extern "C" #endif Modified: cgm/trunk/itaps/iGeom_CGMA.cc =================================================================== --- cgm/trunk/itaps/iGeom_CGMA.cc 2008-03-06 19:58:48 UTC (rev 1637) +++ cgm/trunk/itaps/iGeom_CGMA.cc 2008-03-07 19:12:39 UTC (rev 1638) @@ -2739,10 +2739,9 @@ void iGeom_getFaceType( iGeom_Instance instance, /*in*/ iBase_EntityHandle gentity_handle, - /*out*/ char **face_type, - int* face_type_allocated, - int* face_type_size, - int* err) + /*out*/ char *face_type, + int* err, + int *face_type_length) { static const char *surf_types[] = {"cone", "plane", "sphere", "spline", "torus", "best_fit", "facet", "undefined"}; @@ -2756,24 +2755,13 @@ const char* result = surf_types[this_type - CONE_SURFACE_TYPE]; const int len = strlen(result); - // need to allocate space for string - if (*face_type_allocated == 0 || !*face_type) { - *face_type_allocated = len + 1; - *face_type_size = len; - *face_type = strdup( result ); + if (len < *face_type_length) { + strcpy(face_type, result); + *face_type_length = len; } - // enough space for text, but not for null termination char - else if (*face_type_allocated == len) { - *face_type_size = len; - memcpy( *face_type, result, len ); - } - // enough space for null-terminated string - else if (*face_type_allocated > len) { - strcpy( *face_type, result ); - } - // already allocated w/ insuffucient space else { - RETURN (iBase_BAD_ARRAY_SIZE); + strncpy(face_type, result, *face_type_length-1); + face_type[*face_type_length] = '\0'; } RETURN(iBase_SUCCESS);
participants (1)
-
tautges@mcs.anl.gov