LCOV - code coverage report
Current view: top level - itaps/fbigeom - FBiGeom_MOAB.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 205 879 23.3 %
Date: 2020-12-16 07:07:30 Functions: 31 191 16.2 %
Branches: 177 1052 16.8 %

           Branch data     Line data    Source code
       1                 :            : #include <iostream>
       2                 :            : #include <map>
       3                 :            : #include "FBiGeom_MOAB.hpp"
       4                 :            : #include "moab/GeomTopoTool.hpp"
       5                 :            : #include "moab/OrientedBoxTreeTool.hpp"
       6                 :            : #include "moab/CartVect.hpp"
       7                 :            : #include "moab/FileOptions.hpp"
       8                 :            : #include "MBTagConventions.hpp"
       9                 :            : #include <stdlib.h>
      10                 :            : #include <cstring>
      11                 :            : #include <map>
      12                 :            : #include "assert.h"
      13                 :            : 
      14                 :            : using namespace moab;
      15                 :            : 
      16                 :          0 : static int compare_no_case1( const char* str1, const char* str2, size_t n )
      17                 :            : {
      18 [ #  # ][ #  # ]:          0 :     for( size_t i = 1; i != n && *str1 && toupper( *str1 ) == toupper( *str2 ); ++i, ++str1, ++str2 )
                 [ #  # ]
      19                 :            :         ;
      20                 :          0 :     return toupper( *str2 ) - toupper( *str1 );
      21                 :            : }
      22                 :            : // Filter out non-MOAB options and remove the "moab:" prefix
      23                 :          5 : static std::string filter_options1( const char* begin, const char* end )
      24                 :            : {
      25                 :          5 :     const char* opt_begin = begin;
      26                 :          5 :     const char* opt_end   = begin;
      27                 :            : 
      28                 :          5 :     std::string filtered;
      29                 :          5 :     bool first = true;
      30                 :            : 
      31         [ -  + ]:          5 :     while( opt_end != end )
      32                 :            :     {
      33         [ #  # ]:          0 :         opt_end = std::find( opt_begin, end, ' ' );
      34                 :            : 
      35 [ #  # ][ #  # ]:          0 :         if( opt_end - opt_begin >= 5 && compare_no_case1( opt_begin, "moab:", 5 ) == 0 )
                 [ #  # ]
      36                 :            :         {
      37 [ #  # ][ #  # ]:          0 :             if( !first ) filtered.push_back( ';' );
      38                 :          0 :             first = false;
      39         [ #  # ]:          0 :             filtered.append( opt_begin + 5, opt_end );
      40                 :            :         }
      41                 :            : 
      42                 :          0 :         opt_begin = opt_end + 1;
      43                 :            :     }
      44                 :          5 :     return filtered;
      45                 :            : }
      46                 :            : 
      47                 :            : bool debug_igeom     = false;
      48                 :            : bool Debug_surf_eval = false;
      49                 :            : 
      50                 :            : #define COPY_RANGE( r, vec )                                              \
      51                 :            :     {                                                                     \
      52                 :            :         EntityHandle* tmp_ptr = reinterpret_cast< EntityHandle* >( vec ); \
      53                 :            :         std::copy( r.begin(), r.end(), tmp_ptr );                         \
      54                 :            :     }
      55                 :            : 
      56                 :            : #define TAG_HANDLE( tagh ) reinterpret_cast< Tag >( tagh )
      57                 :            : 
      58                 :            : #define COPY_DOUBLEVEC( r, vec )                              \
      59                 :            :     {                                                         \
      60                 :            :         double* tmp_ptr = reinterpret_cast< double* >( vec ); \
      61                 :            :         std::copy( r.begin(), r.end(), tmp_ptr );             \
      62                 :            :     }
      63                 :            : 
      64                 :          1 : void FBiGeom_getDescription( FBiGeom_Instance instance, char* descr, int descr_len )
      65                 :            : {
      66                 :          1 :     iMesh_getDescription( IMESH_INSTANCE( instance ), descr, descr_len );
      67                 :          1 : }
      68                 :            : 
      69                 :          0 : void FBiGeom_getErrorType( FBiGeom_Instance instance, /*out*/ int* error_type )
      70                 :            : {
      71                 :          0 :     iMesh_getErrorType( IMESH_INSTANCE( instance ), /*out*/ error_type );
      72                 :          0 : }
      73                 :            : 
      74                 :          5 : void FBiGeom_newGeom( char const* options, FBiGeom_Instance* instance_out, int* err, int options_len )
      75                 :            : {
      76                 :            : 
      77         [ +  - ]:          5 :     std::string tmp_options = filter_options1( options, options + options_len );
      78         [ +  - ]:         10 :     FileOptions opts( tmp_options.c_str() );
      79                 :            :     // process some options?
      80                 :            : 
      81                 :          5 :     MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( instance_out );
      82                 :          5 :     *mbigeom          = NULL;
      83 [ +  - ][ +  - ]:          5 :     *mbigeom          = new MBiGeom();
      84                 :          5 :     *err              = iBase_SUCCESS;
      85                 :          5 : }
      86                 :            : 
      87                 :          5 : void FBiGeom_dtor( FBiGeom_Instance instance, int* err )
      88                 :            : {
      89                 :          5 :     MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( &instance );
      90 [ +  - ][ +  - ]:          5 :     if( *mbigeom ) delete *mbigeom;
      91                 :          5 :     *err = iBase_SUCCESS;
      92                 :          5 : }
      93                 :            : 
      94                 :          1 : void FBiGeom_newGeomFromMesh( iMesh_Instance mesh, iBase_EntitySetHandle set, const char* options,
      95                 :            :                               FBiGeom_Instance* geom, int* err, int )
      96                 :            : {
      97                 :          1 :     MBiMesh* mbimesh           = reinterpret_cast< MBiMesh* >( mesh );
      98                 :          1 :     moab::Interface* mbi       = mbimesh->mbImpl;
      99                 :          1 :     moab::EntityHandle rootSet = reinterpret_cast< moab::EntityHandle >( set );
     100 [ +  - ][ +  - ]:          1 :     moab::GeomTopoTool* gtt    = new moab::GeomTopoTool( mbi, true, rootSet );
     101                 :          1 :     bool smooth                = false;  // decide from options
     102                 :          1 :     char smth[]                = "SMOOTH;";
     103                 :          1 :     const char* res            = strstr( options, smth );
     104         [ +  - ]:          1 :     if( res != NULL ) smooth = true;
     105 [ +  - ][ +  - ]:          1 :     moab::FBEngine* fbe = new moab::FBEngine( mbi, gtt, smooth );
     106                 :          1 :     MBiGeom** mbigeom   = reinterpret_cast< MBiGeom** >( geom );
     107                 :          1 :     *mbigeom            = NULL;
     108 [ +  - ][ +  - ]:          1 :     *mbigeom            = new MBiGeom( mbimesh, fbe );
     109                 :            :     // will do now the initialization of the engine;
     110                 :            :     // heavy duty computation
     111         [ +  - ]:          1 :     fbe->Init();
     112                 :          1 :     *err = iBase_SUCCESS;
     113                 :          1 : }
     114                 :            : // corresponding to constructor 2, from iMesh instance
     115                 :          1 : void FBiGeom_dtor2( FBiGeom_Instance instance, int* err )
     116                 :            : {
     117                 :          1 :     moab::FBEngine* fbe = FBE_cast( instance );
     118         [ +  - ]:          1 :     if( fbe )
     119                 :            :     {
     120                 :          1 :         moab::GeomTopoTool* gtt = fbe->get_gtt();
     121 [ +  - ][ +  - ]:          1 :         if( gtt ) delete gtt;
     122         [ +  - ]:          1 :         delete fbe;
     123                 :            :     }
     124                 :          1 :     MBiGeom** mbigeom = reinterpret_cast< MBiGeom** >( &instance );
     125 [ +  - ][ +  - ]:          1 :     if( *mbigeom ) delete *mbigeom;
     126                 :          1 :     *err = iBase_SUCCESS;
     127                 :          1 : }
     128                 :            : 
     129                 :          4 : void FBiGeom_load( FBiGeom_Instance instance, char const* name, char const* options, int* err, int, int options_len )
     130                 :            : {
     131                 :            :     // first remove option for smooth facetting
     132                 :            : 
     133                 :          4 :     const char smth[] = "SMOOTH;";
     134                 :          4 :     bool smooth       = false;
     135                 :          4 :     const char* res   = NULL;
     136                 :            : 
     137                 :          4 :     char* reducedOptions = NULL;
     138                 :          4 :     bool localReduce     = false;
     139         [ +  + ]:          4 :     if( options ) res = strstr( options, smth );
     140         [ +  + ]:          4 :     if( res )
     141                 :            :     {
     142                 :            :         // extract that option, will not be recognized by our moab/imesh
     143         [ +  - ]:          2 :         reducedOptions = new char[options_len - 6];
     144                 :          2 :         localReduce    = true;
     145                 :          2 :         int preLen     = (int)( res - options );
     146                 :          2 :         strncpy( reducedOptions, options, preLen );
     147                 :          2 :         int postLen = options_len - 7 - preLen;
     148                 :            : 
     149                 :          2 :         char* tmp = reducedOptions + preLen;
     150                 :            : 
     151                 :          2 :         strncpy( tmp, res + 7, postLen );
     152                 :          2 :         reducedOptions[options_len - 7] = 0;
     153 [ +  - ][ +  - ]:          2 :         std::cout << reducedOptions << std::endl;
     154                 :          2 :         smooth = true;
     155                 :            :     }
     156                 :            :     else
     157                 :            :     {
     158                 :          2 :         reducedOptions = const_cast< char* >( options );
     159                 :            :     }
     160                 :            :     // load mesh-based geometry
     161                 :          4 :     const EntityHandle* file_set = 0;
     162 [ +  - ][ +  - ]:          4 :     ErrorCode rval               = MBI->load_file( name, file_set, reducedOptions );CHKERR( rval, "can't load mesh file" );
         [ -  + ][ #  # ]
                 [ #  # ]
     163 [ +  + ][ +  - ]:          4 :     if( localReduce ) delete[] reducedOptions;
     164                 :            : 
     165         [ +  - ]:          4 :     FBEngine* fbe = FBE_cast( instance );
     166         [ -  + ]:          4 :     if( fbe == NULL )
     167                 :            :     {
     168                 :          0 :         *err = iBase_FAILURE;
     169                 :          0 :         return;
     170                 :            :     }
     171 [ +  - ][ +  - ]:          4 :     GeomTopoTool* gtt = GETGTT( instance );
     172         [ -  + ]:          4 :     if( gtt == NULL )
     173                 :            :     {
     174                 :          0 :         *err = iBase_FAILURE;
     175                 :          0 :         return;
     176                 :            :     }
     177                 :            :     // keep mesh-based geometries in Range
     178 [ +  - ][ -  + ]:          4 :     rval = gtt->find_geomsets();CHKERR( rval, "Failure to find geometry lists." );
         [ #  # ][ #  # ]
     179                 :            : 
     180 [ +  + ][ +  - ]:          4 :     if( smooth ) fbe->set_smooth();  // assumes that initialization did not happen yet
     181                 :            : 
     182         [ +  - ]:          4 :     fbe->Init();  // major computation
     183                 :            : 
     184 [ +  - ][ +  - ]:          4 :     RETURN( iBase_SUCCESS );
     185                 :            : }
     186                 :            : 
     187                 :          0 : void FBiGeom_save( FBiGeom_Instance instance, char const* name, char const* options, int* err, int name_len,
     188                 :            :                    int options_len )
     189                 :            : {
     190                 :          0 :     iMesh_save( IMESH_INSTANCE( instance ), NULL, name, options, err, name_len, options_len );
     191                 :          0 : }
     192                 :            : 
     193                 :         19 : void FBiGeom_getRootSet( FBiGeom_Instance instance, iBase_EntitySetHandle* root_set, int* err )
     194                 :            : {
     195                 :            :     EntityHandle modelSet;
     196 [ +  - ][ +  - ]:         19 :     ErrorCode rval = FBE_cast( instance )->getRootSet( &modelSet );CHKERR( rval, "can't get root set " );
         [ -  + ][ #  # ]
                 [ #  # ]
     197                 :         19 :     *root_set = (iBase_EntitySetHandle)modelSet;
     198 [ +  - ][ +  - ]:         19 :     RETURN( iBase_SUCCESS );
     199                 :            : }
     200                 :            : 
     201                 :          0 : void FBiGeom_getBoundBox( FBiGeom_Instance instance, double*, double*, double*, double*, double*, double*, int* err )
     202                 :            : {
     203                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     204                 :            : }
     205                 :            : 
     206                 :         66 : void FBiGeom_getEntities( FBiGeom_Instance instance, iBase_EntitySetHandle set_handle, int entity_type,
     207                 :            :                           iBase_EntityHandle** entity_handles, int* entity_handles_allocated, int* entity_handles_size,
     208                 :            :                           int* err )
     209                 :            : {
     210                 :            : 
     211 [ +  - ][ -  + ]:         66 :     if( 0 > entity_type || 4 < entity_type ) { ERROR( iBase_INVALID_ENTITY_TYPE, "Bad entity type." ); }
     212                 :            :     else /* 0<= entity_type <= 4) */
     213                 :            :     {
     214         [ +  - ]:         66 :         Range gentities;
     215 [ +  - ][ +  - ]:         66 :         ErrorCode rval = FBE_cast( instance )->getEntities( (EntityHandle)set_handle, entity_type, gentities );CHKERR( rval, "can't get entities " );
         [ -  + ][ #  # ]
                 [ #  # ]
     216         [ +  - ]:         66 :         *entity_handles_size = gentities.size();
     217                 :            : 
     218 [ -  + ][ #  # ]:         66 :         CHECK_SIZE( *entity_handles, *entity_handles_allocated, *entity_handles_size, iBase_EntityHandle, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ +  + ]
         [ -  + ][ #  # ]
         [ -  + ][ #  # ]
                 [ #  # ]
     219 [ +  - ][ +  - ]:         66 :         COPY_RANGE( gentities, *entity_handles );
         [ +  - ][ +  - ]
     220                 :            :     }
     221                 :            : 
     222                 :         66 :     RETURN( iBase_SUCCESS );
     223                 :            : }
     224                 :            : 
     225                 :         24 : void FBiGeom_getNumOfType( FBiGeom_Instance instance, iBase_EntitySetHandle set_handle, int entity_type, int* num_out,
     226                 :            :                            int* err )
     227                 :            : {
     228 [ +  - ][ -  + ]:         24 :     if( 0 > entity_type || 4 < entity_type ) { ERROR( iBase_INVALID_ENTITY_TYPE, "Bad entity type." ); }
     229         [ -  + ]:         24 :     ErrorCode rval = FBE_cast( instance )->getNumOfType( (EntityHandle)set_handle, entity_type, num_out );CHKERR( rval, "can't get number of type " );
     230                 :            : 
     231                 :         24 :     RETURN( iBase_SUCCESS );
     232                 :            : }
     233                 :            : 
     234                 :         68 : void FBiGeom_getEntType( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* type, int* err )
     235                 :            : {
     236                 :            : 
     237         [ -  + ]:         68 :     ErrorCode rval = FBE_cast( instance )->getEntType( (EntityHandle)entity_handle, type );CHKERR( rval, "can't get entity type " );
     238                 :            : 
     239                 :         68 :     RETURN( iBase_SUCCESS );
     240                 :            : }
     241                 :            : 
     242                 :          3 : void FBiGeom_getArrType( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size,
     243                 :            :                          int** type, int* type_allocated, int* type_size, int* err )
     244                 :            : {
     245 [ +  - ][ +  - ]:          3 :     CHECK_SIZE( *type, *type_allocated, entity_handles_size, int, NULL );
         [ -  + ][ #  # ]
         [ #  # ][ +  - ]
         [ +  - ][ -  + ]
         [ #  # ][ #  # ]
                 [ #  # ]
     246                 :          3 :     *type_size = entity_handles_size;
     247                 :            : 
     248                 :            :     int tmp_err;
     249                 :            : 
     250         [ +  + ]:         39 :     for( int i = 0; i < entity_handles_size; i++ )
     251                 :            :     {
     252         [ +  - ]:         36 :         FBiGeom_getEntType( instance, entity_handles[i], *type + i, &tmp_err );
     253 [ -  + ][ #  # ]:         36 :         if( iBase_SUCCESS != tmp_err ) { ERROR( tmp_err, "Failed to get entity type in FBiGeom_getArrType." ); }
                 [ #  # ]
     254                 :            :     }
     255                 :            : 
     256 [ +  - ][ +  - ]:          3 :     RETURN( iBase_SUCCESS );
     257                 :            : }
     258                 :            : 
     259                 :        123 : void FBiGeom_getEntAdj( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int to_dimension,
     260                 :            :                         iBase_EntityHandle** adj_entities, int* adj_entities_allocated, int* adj_entities_size,
     261                 :            :                         int* err )
     262                 :            : {
     263         [ +  - ]:        123 :     Range adjs;
     264                 :        123 :     EntityHandle this_ent = MBH_cast( entity_handle );
     265                 :            : 
     266 [ +  - ][ +  - ]:        123 :     ErrorCode rval = FBE_cast( instance )->getEntAdj( this_ent, to_dimension, adjs );
     267                 :            : 
     268 [ -  + ][ #  # ]:        123 :     CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getEntAdj." );
                 [ #  # ]
     269                 :            : 
     270                 :            :     // copy adjacent entities
     271         [ +  - ]:        123 :     *adj_entities_size = adjs.size();
     272 [ -  + ][ #  # ]:        123 :     CHECK_SIZE( *adj_entities, *adj_entities_allocated, *adj_entities_size, iBase_EntityHandle, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ +  - ]
         [ -  + ][ #  # ]
         [ -  + ][ #  # ]
                 [ #  # ]
     273 [ +  - ][ +  - ]:        123 :     COPY_RANGE( adjs, *adj_entities );
                 [ +  - ]
     274                 :            : 
     275 [ +  - ][ +  - ]:        123 :     RETURN( iBase_SUCCESS );
     276                 :            : }
     277                 :            : 
     278                 :            : // I suspect this is wrong
     279                 :          0 : void FBiGeom_getArrAdj( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size,
     280                 :            :                         int requested_entity_type, iBase_EntityHandle** adj_entity_handles,
     281                 :            :                         int* adj_entity_handles_allocated, int* adj_entity_handles_size, int** offset,
     282                 :            :                         int* offset_allocated, int* offset_size, int* err )
     283                 :            : {
     284                 :            :     // check offset array size
     285 [ #  # ][ #  # ]:          0 :     Range temp_range, total_range;
     286 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *offset, *offset_allocated, entity_handles_size + 1, int, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     287                 :          0 :     *offset_size = entity_handles_size + 1;
     288                 :            : 
     289                 :            :     // get adjacent entities
     290         [ #  # ]:          0 :     for( int i = 0; i < entity_handles_size; ++i )
     291                 :            :     {
     292         [ #  # ]:          0 :         ( *offset )[i] = total_range.size();
     293         [ #  # ]:          0 :         temp_range.clear();
     294                 :            :         ErrorCode rval =
     295 [ #  # ][ #  # ]:          0 :             FBE_cast( instance )->getEntAdj( MBH_cast( entity_handles[i] ), requested_entity_type, temp_range );CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getArrAdj." );
         [ #  # ][ #  # ]
                 [ #  # ]
     296         [ #  # ]:          0 :         total_range.merge( temp_range );
     297                 :            :     }
     298         [ #  # ]:          0 :     int nTot                         = total_range.size();
     299                 :          0 :     ( *offset )[entity_handles_size] = nTot;
     300                 :            : 
     301                 :            :     // copy adjacent entities
     302 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *adj_entity_handles, *adj_entity_handles_allocated, nTot, iBase_EntityHandle, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     303 [ #  # ][ #  # ]:          0 :     COPY_RANGE( total_range, *adj_entity_handles );
                 [ #  # ]
     304                 :          0 :     *adj_entity_handles_size = nTot;
     305                 :            : 
     306 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     307                 :            : }
     308                 :            : 
     309                 :          0 : void FBiGeom_getEnt2ndAdj( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int bridge_dimension,
     310                 :            :                            int to_dimension, iBase_EntityHandle** adjacent_entities, int* adjacent_entities_allocated,
     311                 :            :                            int* adjacent_entities_size, int* err )
     312                 :            : {
     313 [ #  # ][ #  # ]:          0 :     Range to_ents, bridge_ents, tmp_ents;
                 [ #  # ]
     314 [ #  # ][ #  # ]:          0 :     ErrorCode rval = FBE_cast( instance )->getEntAdj( MBH_cast( entity_handle ), bridge_dimension, bridge_ents );
     315                 :            : 
     316 [ #  # ][ #  # ]:          0 :     CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getEnt2ndAdj." );
                 [ #  # ]
     317                 :            : 
     318 [ #  # ][ #  # ]:          0 :     Range::iterator iter, jter, kter, end_jter;
         [ #  # ][ #  # ]
     319         [ #  # ]:          0 :     Range::iterator end_iter = bridge_ents.end();
     320 [ #  # ][ #  # ]:          0 :     for( iter = bridge_ents.begin(); iter != end_iter; ++iter )
         [ #  # ][ #  # ]
     321                 :            :     {
     322 [ #  # ][ #  # ]:          0 :         rval = FBE_cast( instance )->getEntAdj( *iter, to_dimension, tmp_ents );
                 [ #  # ]
     323                 :            : 
     324 [ #  # ][ #  # ]:          0 :         CHKERR( rval, "Failed to get adjacent entities in FBiGeom_getEnt2ndAdj." );
                 [ #  # ]
     325                 :            : 
     326 [ #  # ][ #  # ]:          0 :         for( jter = tmp_ents.begin(); jter != end_jter; ++jter )
         [ #  # ][ #  # ]
     327                 :            :         {
     328 [ #  # ][ #  # ]:          0 :             if( to_ents.find( *jter ) == to_ents.end() ) { to_ents.insert( *jter ); }
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     329                 :            :         }
     330         [ #  # ]:          0 :         tmp_ents.clear();
     331                 :            :     }
     332                 :            : 
     333         [ #  # ]:          0 :     *adjacent_entities_size = to_ents.size();
     334 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *adjacent_entities, *adjacent_entities_allocated, *adjacent_entities_size, iBase_EntityHandle, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     335 [ #  # ][ #  # ]:          0 :     COPY_RANGE( to_ents, *adjacent_entities );
                 [ #  # ]
     336                 :            : 
     337 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     338                 :            : }
     339                 :            : 
     340                 :          0 : void FBiGeom_getArr2ndAdj( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, int, iBase_EntityHandle**,
     341                 :            :                            int*, int*, int**, int*, int*, int* err )
     342                 :            : {
     343                 :            :     // not implemented
     344                 :            :     // who would need this monster, anyway?
     345                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     346                 :            : }
     347                 :            : 
     348                 :          0 : void FBiGeom_isEntAdj( FBiGeom_Instance instance, iBase_EntityHandle entity_handle1, iBase_EntityHandle entity_handle2,
     349                 :            :                        int* are_adjacent, int* err )
     350                 :            : {
     351                 :            : 
     352                 :            :     bool adjacent_out;
     353                 :            :     ErrorCode rval =
     354 [ #  # ][ #  # ]:          0 :         FBE_cast( instance )->isEntAdj( MBH_cast( entity_handle1 ), MBH_cast( entity_handle2 ), adjacent_out );CHKERR( rval, "Failed to get adjacent info" );
         [ #  # ][ #  # ]
                 [ #  # ]
     355                 :          0 :     *are_adjacent = (int)adjacent_out;  // 0 or 1, really
     356                 :            : 
     357 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     358                 :            : }
     359                 :            : 
     360                 :          0 : void FBiGeom_isArrAdj( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles_1, int entity_handles_1_size,
     361                 :            :                        iBase_EntityHandle const* entity_handles_2, int entity_handles_2_size, int** is_adjacent_info,
     362                 :            :                        int* is_adjacent_info_allocated, int* is_adjacent_info_size, int* err )
     363                 :            : {
     364                 :          0 :     int index1 = 0;
     365                 :          0 :     int index2 = 0;
     366                 :            :     size_t index1_step, index2_step;
     367                 :            :     int count;
     368                 :            : 
     369                 :            :     // If either list contains only 1 entry, compare that entry with
     370                 :            :     // every entry in the other list.
     371         [ #  # ]:          0 :     if( entity_handles_1_size == entity_handles_2_size )
     372                 :            :     {
     373                 :          0 :         index1_step = index2_step = 1;
     374                 :          0 :         count                     = entity_handles_1_size;
     375                 :            :     }
     376         [ #  # ]:          0 :     else if( entity_handles_1_size == 1 )
     377                 :            :     {
     378                 :          0 :         index1_step = 0;
     379                 :          0 :         index2_step = 1;
     380                 :          0 :         count       = entity_handles_2_size;
     381                 :            :     }
     382         [ #  # ]:          0 :     else if( entity_handles_2_size == 1 )
     383                 :            :     {
     384                 :          0 :         index1_step = 1;
     385                 :          0 :         index2_step = 0;
     386                 :          0 :         count       = entity_handles_1_size;
     387                 :            :     }
     388                 :            :     else
     389                 :            :     {
     390                 :          0 :         RETURN( iBase_INVALID_ENTITY_COUNT );
     391                 :            :     }
     392                 :            : 
     393 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *is_adjacent_info, *is_adjacent_info_allocated, count, int, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     394                 :            : 
     395         [ #  # ]:          0 :     for( int i = 0; i < count; ++i )
     396                 :            :     {
     397                 :          0 :         FBiGeom_isEntAdj( instance, entity_handles_1[index1], entity_handles_2[index2], &( ( *is_adjacent_info )[i] ),
     398                 :          0 :                           err );
     399         [ #  # ]:          0 :         FWDERR();
     400                 :            : 
     401                 :          0 :         index1 += index1_step;
     402                 :          0 :         index2 += index2_step;
     403                 :            :     }
     404                 :            :     // it is now safe to set the size
     405                 :          0 :     *is_adjacent_info_size = count;
     406                 :            : 
     407                 :          0 :     RETURN( iBase_SUCCESS );
     408                 :            : }
     409                 :            : 
     410                 :         24 : void FBiGeom_getEntClosestPt( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double near_x, double near_y,
     411                 :            :                               double near_z, double* on_x, double* on_y, double* on_z, int* err )
     412                 :            : {
     413                 :            : 
     414                 :            :     ErrorCode rval =
     415         [ -  + ]:         24 :         FBE_cast( instance )->getEntClosestPt( MBH_cast( entity_handle ), near_x, near_y, near_z, on_x, on_y, on_z );CHKERR( rval, "Failed to get closest point" );
     416                 :            : 
     417                 :         24 :     RETURN( iBase_SUCCESS );
     418                 :            : }
     419                 :            : 
     420                 :          0 : void FBiGeom_getArrClosestPt( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
     421                 :            :                               int entity_handles_size, int storage_order, double const* near_coordinates,
     422                 :            :                               int near_coordinates_size, double** on_coordinates, int* on_coordinates_allocated,
     423                 :            :                               int* on_coordinates_size, int* err )
     424                 :            : {
     425 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *on_coordinates, *on_coordinates_allocated, near_coordinates_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     426                 :            : 
     427         [ #  # ]:          0 :     for( int i = 0; i < entity_handles_size; i++ )
     428                 :            :     {
     429         [ #  # ]:          0 :         if( storage_order == iBase_INTERLEAVED )
     430                 :            :         {
     431                 :          0 :             FBiGeom_getEntClosestPt( instance, entity_handles[i], near_coordinates[3 * i], near_coordinates[3 * i + 1],
     432                 :          0 :                                      near_coordinates[3 * i + 2], on_coordinates[3 * i], on_coordinates[3 * i + 1],
     433                 :          0 :                                      on_coordinates[3 * i + 2], err );
     434                 :            :         }
     435         [ #  # ]:          0 :         else if( storage_order == iBase_BLOCKED )
     436                 :            :         {
     437                 :          0 :             FBiGeom_getEntClosestPt( instance, entity_handles[i], near_coordinates[i],
     438                 :          0 :                                      near_coordinates[i + entity_handles_size],
     439                 :          0 :                                      near_coordinates[i + 2 * entity_handles_size], on_coordinates[i],
     440                 :          0 :                                      on_coordinates[i + entity_handles_size],
     441                 :          0 :                                      on_coordinates[i + 2 * entity_handles_size], err );
     442                 :            :         }
     443         [ #  # ]:          0 :         FWDERR();
     444                 :            :     }
     445                 :          0 :     *on_coordinates_size = near_coordinates_size;
     446                 :            : 
     447                 :          0 :     RETURN( iBase_SUCCESS );
     448                 :            : }
     449                 :            : 
     450                 :          4 : void FBiGeom_getEntNrmlXYZ( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double x, double y, double z,
     451                 :            :                             double* nrml_i, double* nrml_j, double* nrml_k, int* err )
     452                 :            : {
     453                 :            : 
     454         [ -  + ]:          4 :     ErrorCode rval = FBE_cast( instance )->getEntNrmlXYZ( MBH_cast( entity_handle ), x, y, z, nrml_i, nrml_j, nrml_k );CHKERR( rval, "Failed to get normal" );
     455                 :          4 :     RETURN( iBase_SUCCESS );
     456                 :            : }
     457                 :            : 
     458                 :          0 : void FBiGeom_getArrNrmlXYZ( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
     459                 :            :                             int entity_handles_size, int storage_order, double const* coordinates, int coordinates_size,
     460                 :            :                             double** normals, int* normals_allocated, int* normals_size, int* err )
     461                 :            : {
     462                 :            :     // set up iteration according to storage order.
     463                 :            :     // allow either gentity_handles or near_coordinates to contain
     464                 :            :     // only one value, where that single value is applied for every
     465                 :            :     // entry in the other list.
     466                 :          0 :     size_t index = 0;
     467                 :          0 :     size_t coord_step, norm_step = 1, ent_step;
     468                 :            :     int count;
     469         [ #  # ]:          0 :     if( 3 * entity_handles_size == coordinates_size )
     470                 :            :     {
     471                 :          0 :         coord_step = ent_step = 1;
     472                 :          0 :         count                 = entity_handles_size;
     473                 :            :     }
     474         [ #  # ]:          0 :     else if( coordinates_size == 3 )
     475                 :            :     {
     476                 :          0 :         coord_step = 0;
     477                 :          0 :         ent_step   = 1;
     478                 :          0 :         count      = entity_handles_size;
     479                 :            :     }
     480         [ #  # ]:          0 :     else if( entity_handles_size == 1 )
     481                 :            :     {
     482                 :          0 :         coord_step = 1;
     483                 :          0 :         ent_step   = 0;
     484                 :          0 :         count      = coordinates_size / 3;
     485                 :            :     }
     486                 :            :     else
     487                 :            :     {
     488                 :          0 :         ERROR( iBase_INVALID_ENTITY_COUNT, "Mismatched array sizes" );
     489                 :            :     }
     490                 :            : 
     491                 :            :     // check or pre-allocate the coordinate arrays
     492 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *normals, *normals_allocated, 3 * count, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     493                 :            : 
     494                 :            :     const double *coord_x, *coord_y, *coord_z;
     495                 :            :     double *norm_x, *norm_y, *norm_z;
     496         [ #  # ]:          0 :     if( storage_order == iBase_BLOCKED )
     497                 :            :     {
     498                 :          0 :         coord_x   = coordinates;
     499                 :          0 :         coord_y   = coord_x + coordinates_size / 3;
     500                 :          0 :         coord_z   = coord_y + coordinates_size / 3;
     501                 :          0 :         norm_x    = *normals;
     502                 :          0 :         norm_y    = norm_x + count;
     503                 :          0 :         norm_z    = norm_y + count;
     504                 :          0 :         norm_step = 1;
     505                 :            :     }
     506                 :            :     else
     507                 :            :     {
     508                 :          0 :         storage_order = iBase_INTERLEAVED; /* set if unspecified */
     509                 :          0 :         coord_x       = coordinates;
     510                 :          0 :         coord_y       = coord_x + 1;
     511                 :          0 :         coord_z       = coord_x + 2;
     512                 :          0 :         norm_x        = *normals;
     513                 :          0 :         norm_y        = norm_x + 1;
     514                 :          0 :         norm_z        = norm_x + 2;
     515                 :          0 :         coord_step *= 3;
     516                 :          0 :         norm_step = 3;
     517                 :            :     }
     518                 :            : 
     519         [ #  # ]:          0 :     for( int i = 0; i < count; ++i )
     520                 :            :     {
     521                 :          0 :         FBiGeom_getEntNrmlXYZ( instance, entity_handles[index], *coord_x, *coord_y, *coord_z, norm_x, norm_y, norm_z,
     522                 :          0 :                                err );
     523         [ #  # ]:          0 :         FWDERR();
     524                 :            : 
     525                 :          0 :         index += ent_step;
     526                 :          0 :         coord_x += coord_step;
     527                 :          0 :         coord_y += coord_step;
     528                 :          0 :         coord_z += coord_step;
     529                 :          0 :         norm_x += norm_step;
     530                 :          0 :         norm_y += norm_step;
     531                 :          0 :         norm_z += norm_step;
     532                 :            :     }
     533                 :          0 :     *normals_size = count;
     534                 :          0 :     RETURN( iBase_SUCCESS );
     535                 :            : }
     536                 :            : 
     537                 :          0 : void FBiGeom_getEntNrmlPlXYZ( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double x, double y, double z,
     538                 :            :                               double* pt_x, double* pt_y, double* pt_z, double* nrml_i, double* nrml_j, double* nrml_k,
     539                 :            :                               int* err )
     540                 :            : {
     541                 :            :     // just do for surface and volume
     542                 :            :     int type;
     543         [ #  # ]:          0 :     FBiGeom_getEntType( instance, entity_handle, &type, err );
     544         [ #  # ]:          0 :     FWDERR();
     545                 :            : 
     546 [ #  # ][ #  # ]:          0 :     if( type != 2 && type != 3 )
     547 [ #  # ][ #  # ]:          0 :     { ERROR( iBase_INVALID_ENTITY_TYPE, "Entities passed into gentityNormal must be face or volume." ); }
     548                 :            : 
     549                 :            :     // do 2 searches, so it is not fast enough
     550         [ #  # ]:          0 :     FBiGeom_getEntClosestPt( instance, entity_handle, x, y, z, pt_x, pt_y, pt_z, err );
     551                 :            : 
     552         [ #  # ]:          0 :     FWDERR();
     553         [ #  # ]:          0 :     FBiGeom_getEntNrmlXYZ( instance, entity_handle, *pt_x, *pt_y, *pt_z, nrml_i, nrml_j, nrml_k, err );
     554         [ #  # ]:          0 :     FWDERR();
     555                 :            : 
     556 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     557                 :            : }
     558                 :            : 
     559                 :          0 : void FBiGeom_getArrNrmlPlXYZ( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
     560                 :            :                               int entity_handles_size, int storage_order, double const* near_coordinates,
     561                 :            :                               int near_coordinates_size, double** on_coordinates, int* on_coordinates_allocated,
     562                 :            :                               int* on_coordinates_size, double** normals, int* normals_allocated, int* normals_size,
     563                 :            :                               int* err )
     564                 :            : {
     565                 :            :     // set up iteration according to storage order.
     566                 :            :     // allow either gentity_handles or near_coordinates to contain
     567                 :            :     // only one value, where that single value is applied for every
     568                 :            :     // entry in the other list.
     569                 :          0 :     size_t index = 0;
     570                 :          0 :     size_t near_step, on_step = 1, ent_step;
     571                 :            :     int count;
     572         [ #  # ]:          0 :     if( 3 * entity_handles_size == near_coordinates_size )
     573                 :            :     {
     574                 :          0 :         near_step = ent_step = 1;
     575                 :          0 :         count                = entity_handles_size;
     576                 :            :     }
     577         [ #  # ]:          0 :     else if( near_coordinates_size == 3 )
     578                 :            :     {
     579                 :          0 :         near_step = 0;
     580                 :          0 :         ent_step  = 1;
     581                 :          0 :         count     = entity_handles_size;
     582                 :            :     }
     583         [ #  # ]:          0 :     else if( entity_handles_size == 1 )
     584                 :            :     {
     585                 :          0 :         near_step = 1;
     586                 :          0 :         ent_step  = 0;
     587                 :          0 :         count     = near_coordinates_size / 3;
     588                 :            :     }
     589                 :            :     else
     590                 :            :     {
     591                 :          0 :         ERROR( iBase_INVALID_ENTITY_COUNT, "Mismatched array sizes" );
     592                 :            :     }
     593                 :            : 
     594                 :            :     // check or pre-allocate the coordinate arrays
     595 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *on_coordinates, *on_coordinates_allocated, 3 * count, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     596 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *normals, *normals_allocated, 3 * count, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     597                 :            : 
     598                 :            :     const double *near_x, *near_y, *near_z;
     599                 :            :     double *on_x, *on_y, *on_z;
     600                 :            :     double *norm_x, *norm_y, *norm_z;
     601         [ #  # ]:          0 :     if( storage_order == iBase_BLOCKED )
     602                 :            :     {
     603                 :          0 :         near_x  = near_coordinates;
     604                 :          0 :         near_y  = near_x + near_coordinates_size / 3;
     605                 :          0 :         near_z  = near_y + near_coordinates_size / 3;
     606                 :          0 :         on_x    = *on_coordinates;
     607                 :          0 :         on_y    = on_x + count;
     608                 :          0 :         on_z    = on_y + count;
     609                 :          0 :         norm_x  = *normals;
     610                 :          0 :         norm_y  = norm_x + count;
     611                 :          0 :         norm_z  = norm_y + count;
     612                 :          0 :         on_step = 1;
     613                 :            :     }
     614                 :            :     else
     615                 :            :     {
     616                 :          0 :         storage_order = iBase_INTERLEAVED; /* set if unspecified */
     617                 :          0 :         near_x        = near_coordinates;
     618                 :          0 :         near_y        = near_x + 1;
     619                 :          0 :         near_z        = near_x + 2;
     620                 :          0 :         on_x          = *on_coordinates;
     621                 :          0 :         on_y          = on_x + 1;
     622                 :          0 :         on_z          = on_x + 2;
     623                 :          0 :         norm_x        = *normals;
     624                 :          0 :         norm_y        = norm_x + 1;
     625                 :          0 :         norm_z        = norm_x + 2;
     626                 :          0 :         near_step *= 3;
     627                 :          0 :         on_step = 3;
     628                 :            :     }
     629                 :            : 
     630         [ #  # ]:          0 :     for( int i = 0; i < count; ++i )
     631                 :            :     {
     632                 :          0 :         FBiGeom_getEntNrmlPlXYZ( instance, entity_handles[index], *near_x, *near_y, *near_z, on_x, on_y, on_z, norm_x,
     633                 :          0 :                                  norm_y, norm_z, err );
     634         [ #  # ]:          0 :         FWDERR();
     635                 :            : 
     636                 :            :         // entities += ent_step;
     637                 :          0 :         index += ent_step;
     638                 :          0 :         near_x += near_step;
     639                 :          0 :         near_y += near_step;
     640                 :          0 :         near_z += near_step;
     641                 :          0 :         on_x += on_step;
     642                 :          0 :         on_y += on_step;
     643                 :          0 :         on_z += on_step;
     644                 :          0 :         norm_x += on_step;
     645                 :          0 :         norm_y += on_step;
     646                 :          0 :         norm_z += on_step;
     647                 :            :     }
     648                 :          0 :     *on_coordinates_size = count * 3;
     649                 :          0 :     *normals_size        = count;
     650                 :          0 :     RETURN( iBase_SUCCESS );
     651                 :            : }
     652                 :            : 
     653                 :          0 : void FBiGeom_getEntTgntXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
     654                 :            :                             double*, int* err )
     655                 :            : {
     656                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     657                 :            : }
     658                 :            : 
     659                 :          0 : void FBiGeom_getArrTgntXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
     660                 :            :                             double**, int*, int*, int* err )
     661                 :            : {
     662                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     663                 :            : }
     664                 :            : 
     665                 :         30 : void FBiGeom_getEntBoundBox( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double* min_x, double* min_y,
     666                 :            :                              double* min_z, double* max_x, double* max_y, double* max_z, int* err )
     667                 :            : {
     668                 :            :     ErrorCode rval;
     669                 :            :     int type;
     670         [ +  - ]:         30 :     FBiGeom_getEntType( instance, entity_handle, &type, err );
     671         [ -  + ]:         30 :     FWDERR();
     672                 :            : 
     673         [ +  + ]:         30 :     if( type == 0 )
     674                 :            :     {
     675         [ +  - ]:         18 :         FBiGeom_getVtxCoord( instance, entity_handle, min_x, min_y, min_z, err );
     676         [ -  + ]:         18 :         FWDERR();
     677                 :         18 :         max_x = min_x;
     678                 :         18 :         max_y = min_y;
     679                 :         18 :         max_z = min_z;
     680                 :            :     }
     681         [ -  + ]:         12 :     else if( type == 1 )
     682                 :            :     {
     683                 :            :         // it could be relatively easy to support
     684                 :          0 :         *err = iBase_NOT_SUPPORTED;
     685         [ #  # ]:          0 :         FWDERR();
     686                 :            :     }
     687 [ -  + ][ #  # ]:         12 :     else if( type == 2 || type == 3 )
     688                 :            :     {
     689                 :            : 
     690                 :            :         EntityHandle root;
     691 [ +  - ][ +  - ]:         48 :         CartVect center, axis[3];
                 [ +  + ]
     692 [ +  - ][ +  - ]:         12 :         GeomTopoTool* gtt = GETGTT( instance );
     693 [ -  + ][ #  # ]:         12 :         if( !gtt ) ERROR( iBase_FAILURE, "Can't get geom topo tool." );
                 [ #  # ]
     694 [ +  - ][ -  + ]:         12 :         rval = gtt->get_root( MBH_cast( entity_handle ), root );CHKERR( rval, "Failed to get tree root in FBiGeom_getEntBoundBox." );
         [ #  # ][ #  # ]
     695 [ +  - ][ +  - ]:         12 :         rval = gtt->obb_tree()->box( root, center.array(), axis[0].array(), axis[1].array(), axis[2].array() );CHKERR( rval, "Failed to get box from obb tree." );
         [ +  - ][ +  - ]
         [ +  - ][ +  - ]
         [ -  + ][ #  # ]
                 [ #  # ]
     696                 :            : 
     697 [ +  - ][ +  + ]:         48 :         CartVect absv[3];
     698         [ +  + ]:         48 :         for( int i = 0; i < 3; i++ )
     699                 :            :         {
     700 [ +  - ][ +  - ]:         36 :             absv[i] = CartVect( fabs( axis[i][0] ), fabs( axis[i][1] ), fabs( axis[i][2] ) );
         [ +  - ][ +  - ]
     701                 :            :         }
     702 [ +  - ][ +  - ]:         12 :         CartVect min, max;
     703 [ +  - ][ +  - ]:         12 :         min    = center - absv[0] - absv[1] - absv[2];
                 [ +  - ]
     704 [ +  - ][ +  - ]:         12 :         max    = center + absv[0] + absv[1] + absv[2];
                 [ +  - ]
     705         [ +  - ]:         12 :         *min_x = min[0];
     706         [ +  - ]:         12 :         *min_y = min[1];
     707         [ +  - ]:         12 :         *min_z = min[2];
     708         [ +  - ]:         12 :         *max_x = max[0];
     709         [ +  - ]:         12 :         *max_y = max[1];
     710         [ +  - ]:         12 :         *max_z = max[2];
     711                 :            :     }
     712                 :            :     else
     713 [ #  # ][ #  # ]:          0 :         RETURN( iBase_INVALID_ENTITY_TYPE );
     714                 :            : 
     715 [ +  - ][ +  - ]:         30 :     RETURN( iBase_SUCCESS );
     716                 :            : }
     717                 :            : 
     718                 :          0 : void FBiGeom_getArrBoundBox( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
     719                 :            :                              int entity_handles_size, int storage_order, double** min_corner, int* min_corner_allocated,
     720                 :            :                              int* min_corner_size, double** max_corner, int* max_corner_allocated, int* max_corner_size,
     721                 :            :                              int* err )
     722                 :            : {
     723                 :            :     // check or pre-allocate the coordinate arrays
     724 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *min_corner, *min_corner_allocated, 3 * entity_handles_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     725 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *max_corner, *max_corner_allocated, 3 * entity_handles_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     726                 :            : 
     727                 :            :     size_t step, init;
     728         [ #  # ]:          0 :     if( storage_order == iBase_BLOCKED )
     729                 :            :     {
     730                 :          0 :         step = 1;
     731                 :          0 :         init = entity_handles_size;
     732                 :            :     }
     733                 :            :     else
     734                 :            :     {
     735                 :          0 :         step = 3;
     736                 :          0 :         init = 1;
     737                 :            :     }
     738                 :            :     double *min_x, *min_y, *min_z, *max_x, *max_y, *max_z;
     739                 :          0 :     min_x = *min_corner;
     740                 :          0 :     max_x = *max_corner;
     741                 :          0 :     min_y = min_x + init;
     742                 :          0 :     max_y = max_x + init;
     743                 :          0 :     min_z = min_y + init;
     744                 :          0 :     max_z = max_y + init;
     745                 :            : 
     746         [ #  # ]:          0 :     for( int i = 0; i < entity_handles_size; ++i )
     747                 :            :     {
     748                 :          0 :         FBiGeom_getEntBoundBox( instance, entity_handles[i], min_x, min_y, min_z, max_x, max_y, max_z, err );
     749         [ #  # ]:          0 :         FWDERR();
     750                 :            : 
     751                 :          0 :         min_x += step;
     752                 :          0 :         max_x += step;
     753                 :          0 :         min_y += step;
     754                 :          0 :         max_y += step;
     755                 :          0 :         min_z += step;
     756                 :          0 :         max_z += step;
     757                 :            :     }
     758                 :          0 :     *min_corner_size = 3 * entity_handles_size;
     759                 :          0 :     *max_corner_size = 3 * entity_handles_size;
     760                 :          0 :     RETURN( iBase_SUCCESS );
     761                 :            : }
     762                 :            : 
     763                 :         18 : void FBiGeom_getVtxCoord( FBiGeom_Instance instance, iBase_EntityHandle vertex_handle, double* x, double* y, double* z,
     764                 :            :                           int* err )
     765                 :            : {
     766         [ -  + ]:         18 :     ErrorCode rval = FBE_cast( instance )->getVtxCoord( MBH_cast( vertex_handle ), x, y, z );CHKERR( rval, "Failed to vertex position" );
     767                 :         18 :     RETURN( iBase_SUCCESS );
     768                 :            : }
     769                 :            : 
     770                 :          0 : void FBiGeom_getVtxArrCoords( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles,
     771                 :            :                               int entity_handles_size, int storage_order, double** coordinates,
     772                 :            :                               int* coordinates_allocated, int* coordinates_size, int* err )
     773                 :            : {
     774                 :            :     // check or pre-allocate the coordinate arrays
     775 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *coordinates, *coordinates_allocated, 3 * entity_handles_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     776                 :            : 
     777                 :            :     double *x, *y, *z;
     778                 :            :     size_t step;
     779         [ #  # ]:          0 :     if( storage_order == iBase_BLOCKED )
     780                 :            :     {
     781                 :          0 :         x    = *coordinates;
     782                 :          0 :         y    = x + entity_handles_size;
     783                 :          0 :         z    = y + entity_handles_size;
     784                 :          0 :         step = 1;
     785                 :            :     }
     786                 :            :     else
     787                 :            :     {
     788                 :          0 :         x    = *coordinates;
     789                 :          0 :         y    = x + 1;
     790                 :          0 :         z    = x + 2;
     791                 :          0 :         step = 3;
     792                 :            :     }
     793                 :            : 
     794         [ #  # ]:          0 :     for( int i = 0; i < entity_handles_size; i++ )
     795                 :            :     {
     796                 :          0 :         FBiGeom_getVtxCoord( instance, entity_handles[i], x, y, z, err );
     797                 :          0 :         x += step;
     798                 :          0 :         y += step;
     799                 :          0 :         z += step;
     800                 :            :     }
     801                 :          0 :     *coordinates_size = 3 * entity_handles_size;
     802                 :          0 :     RETURN( iBase_SUCCESS );
     803                 :            : }
     804                 :            : 
     805                 :          2 : void FBiGeom_getPntRayIntsct( FBiGeom_Instance instance, double x, double y, double z, double dir_x, double dir_y,
     806                 :            :                               double dir_z, iBase_EntityHandle** intersect_entity_handles,
     807                 :            :                               int* intersect_entity_handles_allocated, int* intersect_entity_handles_size,
     808                 :            :                               int storage_order, double** intersect_coords, int* intersect_coords_allocated,
     809                 :            :                               int* intersect_coords_size, double** param_coords, int* param_coords_allocated,
     810                 :            :                               int* param_coords_size, int* err )
     811                 :            : {
     812                 :            :     // this is pretty cool
     813                 :            :     // we will return only surfaces
     814                 :            :     //
     815                 :            :     // storage order is ignored
     816         [ +  - ]:          2 :     std::vector< EntityHandle > intersect_handles;
     817         [ +  - ]:          4 :     std::vector< double > coords;
     818         [ +  - ]:          4 :     std::vector< double > params;
     819                 :            :     ErrorCode rval =
     820 [ +  - ][ +  - ]:          2 :         FBE_cast( instance )->getPntRayIntsct( x, y, z, dir_x, dir_y, dir_z, intersect_handles, coords, params );CHKERR( rval, "can't get ray intersections " );
         [ -  + ][ #  # ]
                 [ #  # ]
     821                 :          2 :     *intersect_entity_handles_size = (int)intersect_handles.size();
     822                 :            : 
     823 [ -  + ][ #  # ]:          2 :     CHECK_SIZE( *intersect_entity_handles, *intersect_entity_handles_allocated, *intersect_entity_handles_size,
         [ #  # ][ #  # ]
         [ #  # ][ +  - ]
         [ -  + ][ #  # ]
         [ -  + ][ #  # ]
                 [ #  # ]
     824                 :            :                 iBase_EntityHandle, NULL );
     825                 :          2 :     *intersect_coords_size = 3 * (int)intersect_handles.size();
     826 [ -  + ][ #  # ]:          2 :     CHECK_SIZE( *intersect_coords, *intersect_coords_allocated, *intersect_coords_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ +  - ]
         [ -  + ][ #  # ]
         [ -  + ][ #  # ]
                 [ #  # ]
     827                 :          2 :     *param_coords_size = (int)intersect_handles.size();
     828 [ -  + ][ #  # ]:          2 :     CHECK_SIZE( *param_coords, *param_coords_allocated, *param_coords_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ +  - ]
         [ -  + ][ #  # ]
         [ -  + ][ #  # ]
                 [ #  # ]
     829                 :            : 
     830         [ +  - ]:          2 :     COPY_RANGE( intersect_handles, *intersect_entity_handles );
     831                 :            : 
     832         [ +  - ]:          2 :     COPY_DOUBLEVEC( params, *param_coords );
     833         [ -  + ]:          2 :     if( storage_order == iBase_BLOCKED )
     834                 :            :     {
     835                 :          0 :         int sz = (int)intersect_handles.size();
     836         [ #  # ]:          0 :         for( int i = 0; i < sz; i++ )
     837                 :            :         {
     838         [ #  # ]:          0 :             *intersect_coords[i]          = coords[3 * i];
     839         [ #  # ]:          0 :             *intersect_coords[sz + i]     = coords[3 * i + 1];
     840         [ #  # ]:          0 :             *intersect_coords[2 * sz + i] = coords[3 * i + 2];
     841                 :            :         }
     842                 :            :     }
     843                 :            :     else
     844                 :            :     {
     845         [ +  - ]:          2 :         COPY_DOUBLEVEC( coords, *intersect_coords );
     846                 :            :     }
     847                 :            : 
     848 [ +  - ][ +  - ]:          4 :     RETURN( iBase_SUCCESS );
     849                 :            : }
     850                 :            : 
     851                 :          0 : void FBiGeom_getPntArrRayIntsct( FBiGeom_Instance instance, int, const double*, int, const double*, int,
     852                 :            :                                  iBase_EntityHandle**, int*, int*, int**, int*, int*, double**, int*, int*, double**,
     853                 :            :                                  int*, int*, int* err )
     854                 :            : {
     855                 :            :     // not implemented
     856                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     857                 :            : }
     858                 :            : 
     859                 :          0 : void FBiGeom_getEntNrmlSense( FBiGeom_Instance instance, iBase_EntityHandle face, iBase_EntityHandle region,
     860                 :            :                               int* sense_out, int* err )
     861                 :            : {
     862                 :          0 :     moab::EntityHandle mbregion = (moab::EntityHandle)region;
     863                 :          0 :     moab::EntityHandle mbface   = (moab::EntityHandle)face;
     864         [ #  # ]:          0 :     moab::ErrorCode rval        = FBE_cast( instance )->getEgFcSense( mbface, mbregion, *sense_out );CHKERR( rval, "can't get normal sense " );
     865                 :          0 :     RETURN( iBase_SUCCESS );
     866                 :            : }
     867                 :          0 : void FBiGeom_getArrNrmlSense( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
     868                 :            :                               int**, int*, int*, int* err )
     869                 :            : {
     870                 :            :     // not implemented
     871                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     872                 :            : }
     873                 :            : 
     874                 :            : /**\brief Get the sense of an edge with respect to a face
     875                 :            :  * Get the sense of an edge with respect to a face.  Sense returned is -1, 0, or 1,
     876                 :            :  * representing "reversed", "both", or "forward".  "both" sense indicates that edge bounds
     877                 :            :  * the face once with each sense.
     878                 :            :  * \param edge Edge being queried
     879                 :            :  * \param face Face being queried
     880                 :            :  * \param sense_out Sense of edge with respect to face
     881                 :            :  */
     882                 :            : 
     883                 :          0 : void FBiGeom_getEgFcSense( FBiGeom_Instance instance, iBase_EntityHandle edge, iBase_EntityHandle face, int* sense_out,
     884                 :            :                            int* err )
     885                 :            : {
     886                 :            :     // this one is important, for establishing the orientation of the edges in faces
     887                 :            :     // bummer, I "thought" it is already implemented
     888                 :            :     // use senses
     889                 :          0 :     ErrorCode rval = FBE_cast( instance )->getEgFcSense( MBH_cast( edge ), MBH_cast( face ), *sense_out );
     890                 :            : 
     891         [ #  # ]:          0 :     CHKERR( rval, "Failed to get edge senses in FBiGeom_getEgFcSense." );
     892                 :          0 :     RETURN( iBase_SUCCESS );
     893                 :            : }
     894                 :          0 : void FBiGeom_getEgFcArrSense( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
     895                 :            :                               int**, int*, int*, int* err )
     896                 :            : {
     897                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     898                 :            : }
     899                 :            : 
     900                 :          0 : void FBiGeom_getEgVtxSense( FBiGeom_Instance instance, iBase_EntityHandle edge, iBase_EntityHandle vertex1,
     901                 :            :                             iBase_EntityHandle vertex2, int* sense_out, int* err )
     902                 :            : {
     903                 :            : 
     904                 :            :     ErrorCode rval =
     905         [ #  # ]:          0 :         FBE_cast( instance )->getEgVtxSense( MBH_cast( edge ), MBH_cast( vertex1 ), MBH_cast( vertex2 ), *sense_out );CHKERR( rval, "Failed to get vertex sense wrt edge in FBiGeom_getEgVtxSense" );
     906                 :          0 :     RETURN( iBase_SUCCESS );
     907                 :            : }
     908                 :          0 : void FBiGeom_getEgVtxArrSense( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*,
     909                 :            :                                int, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
     910                 :            : {
     911                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     912                 :            : }
     913                 :            : 
     914                 :          0 : void FBiGeom_measure( FBiGeom_Instance instance, iBase_EntityHandle const* entity_handles, int entity_handles_size,
     915                 :            :                       double** measures, int* measures_allocated, int* measures_size, int* err )
     916                 :            : {
     917                 :            : 
     918 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *measures, *measures_allocated, entity_handles_size, double, NULL );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     919         [ #  # ]:          0 :     ErrorCode rval = FBE_cast( instance )->measure( (EntityHandle*)( entity_handles ), entity_handles_size, *measures );CHKERR( rval, "Failed to get measures" );
     920                 :          0 :     *measures_size = entity_handles_size;
     921                 :          0 :     RETURN( iBase_SUCCESS );
     922                 :            : }
     923                 :            : 
     924                 :          0 : void FBiGeom_getFaceType( FBiGeom_Instance instance, iBase_EntityHandle, char* face_type, int* err,
     925                 :            :                           int* face_type_length )
     926                 :            : {
     927         [ #  # ]:          0 :     std::string type = "nonplanar";  // for swept faces created with rays between surfaces,
     928                 :            :                                      // we could actually create planar surfaces; maybe we should
     929                 :            :                                      // recognize them as such
     930         [ #  # ]:          0 :     face_type = new char[type.length() + 1];
     931                 :          0 :     strcpy( face_type, type.c_str() );
     932                 :          0 :     *face_type_length = type.length() + 1;
     933 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     934                 :            : }
     935                 :          0 : void FBiGeom_getParametric( FBiGeom_Instance instance, int* is_parametric, int* err )
     936                 :            : {
     937                 :          0 :     *is_parametric = 0;  //(false)
     938                 :          0 :     RETURN( iBase_SUCCESS );
     939                 :            : }
     940                 :          0 : void FBiGeom_isEntParametric( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, int* parametric, int* err )
     941                 :            : {
     942                 :          0 :     int type = -1;
     943         [ #  # ]:          0 :     FBiGeom_getEntType( instance, entity_handle, &type, err );
     944         [ #  # ]:          0 :     if( type == 1 )
     945                 :          0 :         *parametric = 1;  // true
     946                 :            :     else
     947                 :          0 :         *parametric = 0;  // false
     948 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     949                 :            : }
     950                 :          0 : void FBiGeom_isArrParametric( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
     951                 :            : {
     952                 :            :     // not implemented
     953                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     954                 :            : }
     955                 :          0 : void FBiGeom_getEntUVtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double*, double*, double*,
     956                 :            :                             int* err )
     957                 :            : {
     958                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     959                 :            : }
     960                 :          0 : void FBiGeom_getArrUVtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
     961                 :            :                             double**, int*, int*, int* err )
     962                 :            : {
     963                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     964                 :            : }
     965                 :            : 
     966                 :          0 : void FBiGeom_getEntUtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double u, double* x, double* y,
     967                 :            :                            double* z, int* err )
     968                 :            : {
     969                 :            :     int type;
     970         [ #  # ]:          0 :     FBiGeom_getEntType( instance, entity_handle, &type, err );
     971         [ #  # ]:          0 :     FWDERR();
     972                 :            : 
     973         [ #  # ]:          0 :     if( type != 1 )  // not edge
     974 [ #  # ][ #  # ]:          0 :         RETURN( iBase_NOT_SUPPORTED );
     975                 :            : 
     976 [ #  # ][ #  # ]:          0 :     ErrorCode rval = FBE_cast( instance )->getEntUtoXYZ( (EntityHandle)entity_handle, u, *x, *y, *z );CHKERR( rval, "Failed to get position from parameter" );
         [ #  # ][ #  # ]
                 [ #  # ]
     977 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
     978                 :            : }
     979                 :            : 
     980                 :          0 : void FBiGeom_getArrUtoXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double const*, int, int, double**,
     981                 :            :                            int*, int*, int* err )
     982                 :            : {
     983                 :            :     // not implemented
     984                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     985                 :            : }
     986                 :          0 : void FBiGeom_getEntXYZtoUV( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
     987                 :            :                             int* err )
     988                 :            : {
     989                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     990                 :            : }
     991                 :          0 : void FBiGeom_getEntXYZtoU( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, int* err )
     992                 :            : {
     993                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     994                 :            : }
     995                 :          0 : void FBiGeom_getArrXYZtoUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
     996                 :            :                             double**, int*, int*, int* err )
     997                 :            : {
     998                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
     999                 :            : }
    1000                 :          0 : void FBiGeom_getArrXYZtoU( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int, double**,
    1001                 :            :                            int*, int*, int* err )
    1002                 :            : {
    1003                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1004                 :            : }
    1005                 :          0 : void FBiGeom_getEntXYZtoUVHint( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
    1006                 :            :                                 int* err )
    1007                 :            : {
    1008                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1009                 :            : }
    1010                 :          0 : void FBiGeom_getArrXYZtoUVHint( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1011                 :            :                                 double**, int*, int*, int* err )
    1012                 :            : {
    1013                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1014                 :            : }
    1015                 :          0 : void FBiGeom_getEntUVRange( FBiGeom_Instance instance, iBase_EntityHandle, double*, double*, double*, double*,
    1016                 :            :                             int* err )
    1017                 :            : {
    1018                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1019                 :            : }
    1020                 :            : 
    1021                 :          0 : void FBiGeom_getEntURange( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double* u_min, double* u_max,
    1022                 :            :                            int* err )
    1023                 :            : {
    1024         [ #  # ]:          0 :     ErrorCode rval = FBE_cast( instance )->getEntURange( (EntityHandle)entity_handle, *u_min, *u_max );CHKERR( rval, "Failed to get range" );
    1025                 :          0 :     RETURN( iBase_SUCCESS );
    1026                 :            : }
    1027                 :          0 : void FBiGeom_getArrUVRange( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double**, int*, int*,
    1028                 :            :                             double**, int*, int*, int* err )
    1029                 :            : {
    1030                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1031                 :            : }
    1032                 :          0 : void FBiGeom_getArrURange( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double**, int*, int*, double**,
    1033                 :            :                            int*, int*, int* err )
    1034                 :            : {
    1035                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1036                 :            : }
    1037                 :          0 : void FBiGeom_getEntUtoUV( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, double, double*, double*,
    1038                 :            :                           int* err )
    1039                 :            : {
    1040                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1041                 :            : }
    1042                 :          0 : void FBiGeom_getVtxToUV( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, double*, double*, int* err )
    1043                 :            : {
    1044                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1045                 :            : }
    1046                 :          0 : void FBiGeom_getVtxToU( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, double*, int* err )
    1047                 :            : {
    1048                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1049                 :            : }
    1050                 :          0 : void FBiGeom_getArrUtoUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
    1051                 :            :                           double const*, int, int, double**, int*, int*, int* err )
    1052                 :            : {
    1053                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1054                 :            : }
    1055                 :          0 : void FBiGeom_getVtxArrToUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
    1056                 :            :                             int, double**, int*, int*, int* err )
    1057                 :            : {
    1058                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1059                 :            : }
    1060                 :          0 : void FBiGeom_getVtxArrToU( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle const*, int,
    1061                 :            :                            double**, int*, int*, int* err )
    1062                 :            : {
    1063                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1064                 :            : }
    1065                 :          0 : void FBiGeom_getEntNrmlUV( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double*, double*, double*,
    1066                 :            :                            int* err )
    1067                 :            : {
    1068                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1069                 :            : }
    1070                 :          0 : void FBiGeom_getArrNrmlUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int, double**,
    1071                 :            :                            int*, int*, int* err )
    1072                 :            : {
    1073                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1074                 :            : }
    1075                 :          0 : void FBiGeom_getEntTgntU( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, double u, double* tgnt_i,
    1076                 :            :                           double* tgnt_j, double* tgnt_k, int* err )
    1077                 :            : {
    1078                 :            :     ErrorCode rval =
    1079         [ #  # ]:          0 :         FBE_cast( instance )->getEntTgntU( (moab::EntityHandle)entity_handle, u, *tgnt_i, *tgnt_j, *tgnt_k );CHKERR( rval, "Failed to get tangent from u" );
    1080                 :          0 :     RETURN( iBase_SUCCESS );
    1081                 :            : }
    1082                 :          0 : void FBiGeom_getArrTgntU( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int, double**,
    1083                 :            :                           int*, int*, int* err )
    1084                 :            : {
    1085                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1086                 :            : }
    1087                 :          0 : void FBiGeom_getEnt1stDrvt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double**, int*, int*,
    1088                 :            :                             double**, int*, int*, int* err )
    1089                 :            : {
    1090                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1091                 :            : }
    1092                 :          0 : void FBiGeom_getArr1stDrvt( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1093                 :            :                             double**, int*, int*, int**, int*, int*, double**, int*, int*, int**, int*, int*, int* err )
    1094                 :            : {
    1095                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1096                 :            : }
    1097                 :          0 : void FBiGeom_getEnt2ndDrvt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double**, int*, int*,
    1098                 :            :                             double**, int*, int*, double**, int*, int*, int* err )
    1099                 :            : {
    1100                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1101                 :            : }
    1102                 :          0 : void FBiGeom_getArr2ndDrvt( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1103                 :            :                             double**, int*, int*, int**, int*, int*, double**, int*, int*, int**, int*, int*, double**,
    1104                 :            :                             int*, int*, int**, int*, int*, int* err )
    1105                 :            : {
    1106                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1107                 :            : }
    1108                 :          0 : void FBiGeom_getFcCvtrUV( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double*, double*, double*,
    1109                 :            :                           double*, double*, double*, int* err )
    1110                 :            : {
    1111                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1112                 :            : }
    1113                 :          0 : void FBiGeom_getFcArrCvtrUV( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1114                 :            :                              double**, int*, int*, double**, int*, int*, int* err )
    1115                 :            : {
    1116                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1117                 :            : }
    1118                 :          0 : void FBiGeom_isEntPeriodic( FBiGeom_Instance /*instance*/, iBase_EntityHandle /*entity_handle*/, int* in_u, int* in_v,
    1119                 :            :                             int* err )
    1120                 :            : {
    1121                 :          0 :     *in_u = 0;
    1122                 :          0 :     *in_v = 0;
    1123                 :          0 :     *err  = 0;
    1124                 :          0 :     return;
    1125                 :            : }
    1126                 :          0 : void FBiGeom_isArrPeriodic( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
    1127                 :            : {
    1128                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1129                 :            : }
    1130                 :          0 : void FBiGeom_isFcDegenerate( FBiGeom_Instance instance, iBase_EntityHandle, int*, int* err )
    1131                 :            : {
    1132                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1133                 :            : }
    1134                 :          0 : void FBiGeom_isFcArrDegenerate( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int**, int*, int*, int* err )
    1135                 :            : {
    1136                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1137                 :            : }
    1138                 :            : 
    1139                 :          0 : void FBiGeom_initEntIter( FBiGeom_Instance instance, iBase_EntitySetHandle, int, iBase_EntityIterator*, int* err )
    1140                 :            : {
    1141                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1142                 :            : }
    1143                 :            : 
    1144                 :          0 : void FBiGeom_initEntArrIter( FBiGeom_Instance instance, iBase_EntitySetHandle, int, int, iBase_EntityArrIterator*,
    1145                 :            :                              int* err )
    1146                 :            : {
    1147                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1148                 :            : }
    1149                 :            : 
    1150                 :          0 : void FBiGeom_getNextEntIter( FBiGeom_Instance instance, iBase_EntityIterator, iBase_EntityHandle*, int*, int* err )
    1151                 :            : {
    1152                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1153                 :            : }
    1154                 :            : 
    1155                 :          0 : void FBiGeom_getNextEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator, iBase_EntityHandle**, int*, int*,
    1156                 :            :                                 int*, int* err )
    1157                 :            : {
    1158                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1159                 :            : }
    1160                 :            : 
    1161                 :          0 : void FBiGeom_resetEntIter( FBiGeom_Instance instance, iBase_EntityIterator, int* err )
    1162                 :            : {
    1163                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1164                 :            : }
    1165                 :            : 
    1166                 :          0 : void FBiGeom_resetEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator, int* err )
    1167                 :            : {
    1168                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1169                 :            : }
    1170                 :            : 
    1171                 :          0 : void FBiGeom_endEntIter( FBiGeom_Instance instance, iBase_EntityIterator, int* err )
    1172                 :            : {
    1173                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1174                 :            : }
    1175                 :            : 
    1176                 :          0 : void FBiGeom_endEntArrIter( FBiGeom_Instance instance, iBase_EntityArrIterator, int* err )
    1177                 :            : {
    1178                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1179                 :            : }
    1180                 :            : 
    1181                 :          0 : void FBiGeom_copyEnt( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle*, int* err )
    1182                 :            : {
    1183                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1184                 :            : }
    1185                 :            : 
    1186                 :          0 : void FBiGeom_sweepEntAboutAxis( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double,
    1187                 :            :                                 iBase_EntityHandle*, int* err )
    1188                 :            : {
    1189                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1190                 :            : }
    1191                 :            : 
    1192                 :          0 : void FBiGeom_deleteAll( FBiGeom_Instance instance, int* err )
    1193                 :            : {
    1194                 :            :     // it means deleting some sets from moab db ; is this what we want?
    1195                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1196                 :            : }
    1197                 :            : 
    1198                 :          0 : void FBiGeom_deleteEnt( FBiGeom_Instance instance, iBase_EntityHandle /*entity_handle*/, int* err )
    1199                 :            : {
    1200                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1201                 :            : }
    1202                 :            : 
    1203                 :          0 : void FBiGeom_createSphere( FBiGeom_Instance instance, double, iBase_EntityHandle*, int* err )
    1204                 :            : {
    1205                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1206                 :            : }
    1207                 :            : 
    1208                 :          0 : void FBiGeom_createPrism( FBiGeom_Instance instance, double, int, double, double, iBase_EntityHandle*, int* err )
    1209                 :            : {
    1210                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1211                 :            : }
    1212                 :            : 
    1213                 :          0 : void FBiGeom_createBrick( FBiGeom_Instance instance, double, double, double, iBase_EntityHandle*, int* err )
    1214                 :            : {
    1215                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1216                 :            : }
    1217                 :            : 
    1218                 :          0 : void FBiGeom_createCylinder( FBiGeom_Instance instance, double, double, double, iBase_EntityHandle*, int* err )
    1219                 :            : {
    1220                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1221                 :            : }
    1222                 :            : 
    1223                 :          0 : void FBiGeom_createCone( FBiGeom_Instance instance, double, double, double, double, iBase_EntityHandle*, int* err )
    1224                 :            : {
    1225                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1226                 :            : }
    1227                 :            : 
    1228                 :          0 : void FBiGeom_createTorus( FBiGeom_Instance instance, double, double, iBase_EntityHandle*, int* err )
    1229                 :            : {
    1230                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1231                 :            : }
    1232                 :            : 
    1233                 :          0 : void FBiGeom_moveEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, int* err )
    1234                 :            : {
    1235                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1236                 :            : }
    1237                 :            : 
    1238                 :          0 : void FBiGeom_rotateEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, int* err )
    1239                 :            : {
    1240                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1241                 :            : }
    1242                 :            : 
    1243                 :          0 : void FBiGeom_reflectEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, double, double,
    1244                 :            :                          int* err )
    1245                 :            : {
    1246                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1247                 :            : }
    1248                 :            : 
    1249                 :          0 : void FBiGeom_scaleEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, double, double,
    1250                 :            :                        int* err )
    1251                 :            : {
    1252                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1253                 :            : }
    1254                 :            : 
    1255                 :          0 : void FBiGeom_uniteEnts( FBiGeom_Instance instance, iBase_EntityHandle const*, int, iBase_EntityHandle*, int* err )
    1256                 :            : {
    1257                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1258                 :            : }
    1259                 :            : 
    1260                 :          0 : void FBiGeom_subtractEnts( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, iBase_EntityHandle*,
    1261                 :            :                            int* err )
    1262                 :            : {
    1263                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1264                 :            : }
    1265                 :            : 
    1266                 :          0 : void FBiGeom_intersectEnts( FBiGeom_Instance instance, iBase_EntityHandle, iBase_EntityHandle, iBase_EntityHandle*,
    1267                 :            :                             int* err )
    1268                 :            : {
    1269                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1270                 :            : }
    1271                 :            : 
    1272                 :          0 : void FBiGeom_sectionEnt( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double, int,
    1273                 :            :                          iBase_EntityHandle*, int* err )
    1274                 :            : {
    1275                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1276                 :            : }
    1277                 :            : 
    1278                 :          0 : void FBiGeom_imprintEnts( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int* err )
    1279                 :            : {
    1280                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1281                 :            : }
    1282                 :            : 
    1283                 :          0 : void FBiGeom_mergeEnts( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double, int* err )
    1284                 :            : {
    1285                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1286                 :            : }
    1287                 :            : // start copy old
    1288                 :            : 
    1289                 :          0 : void FBiGeom_createEntSet( FBiGeom_Instance instance, int isList, iBase_EntitySetHandle* entity_set_created, int* err )
    1290                 :            : {
    1291                 :          0 :     iMesh_createEntSet( IMESH_INSTANCE( instance ), isList, entity_set_created, err );
    1292         [ #  # ]:          0 :     FWDERR();
    1293                 :            : }
    1294                 :            : 
    1295                 :          0 : void FBiGeom_destroyEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle, int* err )
    1296                 :            : {
    1297                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1298                 :            : }
    1299                 :            : 
    1300                 :          0 : void FBiGeom_isList( FBiGeom_Instance instance, iBase_EntitySetHandle, int*, int* err )
    1301                 :            : {
    1302                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1303                 :            : }
    1304                 :            : 
    1305                 :          0 : void FBiGeom_getNumEntSets( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle, int /*num_hops*/,
    1306                 :            :                             int* num_sets, int* err )
    1307                 :            : {
    1308                 :            :     //  here, we get only the entity sets that have gents as members
    1309                 :            :     // we have the convention that entity sets of geom dimension 4 are
    1310                 :            :     // sets of geo entities; they should contain only gentities as elements (or other sets of gents)
    1311                 :            :     // we should also consider the number of hops
    1312                 :            :     // first, get all sets of geo dim 4 from the entity_set_handle; then intersect with
    1313                 :            :     // the range from geom topo tool
    1314                 :            :     Tag geomTag;
    1315 [ #  # ][ #  # ]:          0 :     ErrorCode rval = MBI->tag_get_handle( GEOM_DIMENSION_TAG_NAME, 1, MB_TYPE_INTEGER, geomTag );
    1316 [ #  # ][ #  # ]:          0 :     if( MB_SUCCESS != rval ) RETURN( iBase_FAILURE );
                 [ #  # ]
    1317 [ #  # ][ #  # ]:          0 :     GeomTopoTool* gtt   = GETGTT( instance );
    1318         [ #  # ]:          0 :     const Range* gRange = gtt->geoRanges();
    1319                 :            :     // get all sets of geom dimension 4 from the entity set
    1320                 :          0 :     EntityHandle moabSet         = (EntityHandle)entity_set_handle;
    1321                 :          0 :     const int four               = 4;
    1322                 :          0 :     const void* const four_val[] = { &four };
    1323         [ #  # ]:          0 :     Range tmp;
    1324 [ #  # ][ #  # ]:          0 :     rval = MBI->get_entities_by_type_and_tag( moabSet, MBENTITYSET, &geomTag, four_val, 1, tmp );CHKERR( rval, "can't get sets of geo dim 4 " );
         [ #  # ][ #  # ]
                 [ #  # ]
    1325 [ #  # ][ #  # ]:          0 :     tmp       = intersect( tmp, gRange[4] );
    1326         [ #  # ]:          0 :     *num_sets = tmp.size();  // ignore, for the time being, number of hops
    1327                 :            : 
    1328 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
    1329                 :            : }
    1330                 :            : 
    1331                 :          0 : void FBiGeom_getEntSets( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle, int,
    1332                 :            :                          iBase_EntitySetHandle** contained_set_handles, int* contained_set_handles_allocated,
    1333                 :            :                          int* contained_set_handles_size, int* err )
    1334                 :            : {
    1335                 :            :     //  we get only the entity sets that have gents as members
    1336                 :            :     // we keep the convention that entity sets of geom dimension 4 are
    1337                 :            :     // sets of geo entities; they should contain only gentities as elements (or other sets of gents)
    1338                 :            :     Tag geomTag;
    1339 [ #  # ][ #  # ]:          0 :     ErrorCode rval = MBI->tag_get_handle( GEOM_DIMENSION_TAG_NAME, 1, MB_TYPE_INTEGER, geomTag );
    1340 [ #  # ][ #  # ]:          0 :     if( MB_SUCCESS != rval ) RETURN( iBase_FAILURE );
                 [ #  # ]
    1341 [ #  # ][ #  # ]:          0 :     GeomTopoTool* gtt   = GETGTT( instance );
    1342         [ #  # ]:          0 :     const Range* gRange = gtt->geoRanges();
    1343                 :            :     // get all sets of geom dimension 4 from the entity set
    1344                 :          0 :     EntityHandle moabSet         = (EntityHandle)entity_set_handle;
    1345                 :          0 :     const int four               = 4;
    1346                 :          0 :     const void* const four_val[] = { &four };
    1347         [ #  # ]:          0 :     Range tmp;
    1348 [ #  # ][ #  # ]:          0 :     rval = MBI->get_entities_by_type_and_tag( moabSet, MBENTITYSET, &geomTag, four_val, 1, tmp );CHKERR( rval, "can't get sets of geo dim 4 " );
         [ #  # ][ #  # ]
                 [ #  # ]
    1349 [ #  # ][ #  # ]:          0 :     tmp                         = intersect( tmp, gRange[4] );
    1350         [ #  # ]:          0 :     *contained_set_handles_size = tmp.size();
    1351 [ #  # ][ #  # ]:          0 :     CHECK_SIZE( *contained_set_handles, *contained_set_handles_allocated, *contained_set_handles_size,
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
    1352                 :            :                 iBase_EntitySetHandle, NULL );
    1353 [ #  # ][ #  # ]:          0 :     COPY_RANGE( tmp, *contained_set_handles );
                 [ #  # ]
    1354                 :            : 
    1355 [ #  # ][ #  # ]:          0 :     RETURN( iBase_SUCCESS );
    1356                 :            : }
    1357                 :            : 
    1358                 :          0 : void FBiGeom_addEntToSet( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_EntitySetHandle entity_set,
    1359                 :            :                           int* err )
    1360                 :            : {
    1361                 :          0 :     iMesh_addEntToSet( IMESH_INSTANCE( instance ), entity_handle, entity_set, err );
    1362                 :          0 : }
    1363                 :            : 
    1364                 :          0 : void FBiGeom_rmvEntFromSet( FBiGeom_Instance instance, iBase_EntityHandle entity_handle,
    1365                 :            :                             iBase_EntitySetHandle entity_set, int* err )
    1366                 :            : {
    1367                 :          0 :     iMesh_rmvEntFromSet( IMESH_INSTANCE( instance ), entity_handle, entity_set, err );
    1368                 :          0 : }
    1369                 :            : 
    1370                 :          0 : void FBiGeom_addEntArrToSet( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1371                 :            :                              int entity_handles_size, iBase_EntitySetHandle entity_set, int* err )
    1372                 :            : {
    1373                 :          0 :     iMesh_addEntArrToSet( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, entity_set, err );
    1374                 :          0 : }
    1375                 :            : 
    1376                 :          0 : void FBiGeom_rmvEntArrFromSet( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1377                 :            :                                int entity_handles_size, iBase_EntitySetHandle entity_set, int* err )
    1378                 :            : {
    1379                 :          0 :     iMesh_rmvEntArrFromSet( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, entity_set, err );
    1380                 :          0 : }
    1381                 :            : 
    1382                 :          0 : void FBiGeom_addEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_to_add,
    1383                 :            :                         iBase_EntitySetHandle entity_set_handle, int* err )
    1384                 :            : {
    1385                 :          0 :     iMesh_addEntSet( IMESH_INSTANCE( instance ), entity_set_to_add, entity_set_handle, err );
    1386                 :          0 : }
    1387                 :            : 
    1388                 :          0 : void FBiGeom_rmvEntSet( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_to_remove,
    1389                 :            :                         iBase_EntitySetHandle entity_set_handle, int* err )
    1390                 :            : {
    1391                 :          0 :     iMesh_rmvEntSet( IMESH_INSTANCE( instance ), entity_set_to_remove, entity_set_handle, err );
    1392                 :          0 : }
    1393                 :            : 
    1394                 :          0 : void FBiGeom_isEntContained( FBiGeom_Instance instance, iBase_EntitySetHandle containing_entity_set,
    1395                 :            :                              iBase_EntityHandle contained_entity, int* is_contained, int* err )
    1396                 :            : {
    1397                 :          0 :     iMesh_isEntContained( IMESH_INSTANCE( instance ), containing_entity_set, contained_entity, is_contained, err );
    1398                 :          0 : }
    1399                 :            : 
    1400                 :          0 : void FBiGeom_isEntArrContained( FBiGeom_Instance instance, iBase_EntitySetHandle containing_set,
    1401                 :            :                                 const iBase_EntityHandle* entity_handles, int num_entity_handles, int** is_contained,
    1402                 :            :                                 int* is_contained_allocated, int* is_contained_size, int* err )
    1403                 :            : {
    1404                 :          0 :     iMesh_isEntArrContained( IMESH_INSTANCE( instance ), containing_set, entity_handles, num_entity_handles,
    1405                 :          0 :                              is_contained, is_contained_allocated, is_contained_size, err );
    1406                 :          0 : }
    1407                 :            : 
    1408                 :          0 : void FBiGeom_isEntSetContained( FBiGeom_Instance instance, iBase_EntitySetHandle containing_entity_set,
    1409                 :            :                                 iBase_EntitySetHandle contained_entity_set, int* is_contained, int* err )
    1410                 :            : {
    1411                 :          0 :     iMesh_isEntSetContained( IMESH_INSTANCE( instance ), containing_entity_set, contained_entity_set, is_contained,
    1412                 :          0 :                              err );
    1413                 :          0 : }
    1414                 :            : 
    1415                 :          0 : void FBiGeom_addPrntChld( FBiGeom_Instance instance, iBase_EntitySetHandle parent_entity_set,
    1416                 :            :                           iBase_EntitySetHandle child_entity_set, int* err )
    1417                 :            : {
    1418                 :          0 :     iMesh_addPrntChld( IMESH_INSTANCE( instance ), parent_entity_set, child_entity_set, err );
    1419                 :          0 : }
    1420                 :            : 
    1421                 :          0 : void FBiGeom_rmvPrntChld( FBiGeom_Instance instance, iBase_EntitySetHandle parent_entity_set,
    1422                 :            :                           iBase_EntitySetHandle child_entity_set, int* err )
    1423                 :            : {
    1424                 :          0 :     iMesh_rmvPrntChld( IMESH_INSTANCE( instance ), parent_entity_set, child_entity_set, err );
    1425                 :          0 : }
    1426                 :            : 
    1427                 :          0 : void FBiGeom_isChildOf( FBiGeom_Instance instance, iBase_EntitySetHandle parent_entity_set,
    1428                 :            :                         iBase_EntitySetHandle child_entity_set, int* is_child, int* err )
    1429                 :            : {
    1430                 :          0 :     iMesh_isChildOf( IMESH_INSTANCE( instance ), parent_entity_set, child_entity_set, is_child, err );
    1431                 :          0 : }
    1432                 :            : 
    1433                 :          0 : void FBiGeom_getNumChld( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, int num_hops, int* num_child,
    1434                 :            :                          int* err )
    1435                 :            : {
    1436                 :          0 :     iMesh_getNumChld( IMESH_INSTANCE( instance ), entity_set, num_hops, num_child, err );
    1437                 :          0 : }
    1438                 :            : 
    1439                 :          0 : void FBiGeom_getNumPrnt( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, int num_hops, int* num_parent,
    1440                 :            :                          int* err )
    1441                 :            : {
    1442                 :          0 :     iMesh_getNumPrnt( IMESH_INSTANCE( instance ), entity_set, num_hops, num_parent, err );
    1443                 :          0 : }
    1444                 :            : 
    1445                 :          0 : void FBiGeom_getChldn( FBiGeom_Instance instance, iBase_EntitySetHandle from_entity_set, int num_hops,
    1446                 :            :                        iBase_EntitySetHandle** entity_set_handles, int* entity_set_handles_allocated,
    1447                 :            :                        int* entity_set_handles_size, int* err )
    1448                 :            : {
    1449                 :          0 :     iMesh_getChldn( IMESH_INSTANCE( instance ), from_entity_set, num_hops, entity_set_handles,
    1450                 :          0 :                     entity_set_handles_allocated, entity_set_handles_size, err );
    1451                 :          0 : }
    1452                 :            : 
    1453                 :          0 : void FBiGeom_getPrnts( FBiGeom_Instance instance, iBase_EntitySetHandle from_entity_set, int num_hops,
    1454                 :            :                        iBase_EntitySetHandle** entity_set_handles, int* entity_set_handles_allocated,
    1455                 :            :                        int* entity_set_handles_size, int* err )
    1456                 :            : {
    1457                 :          0 :     iMesh_getPrnts( IMESH_INSTANCE( instance ), from_entity_set, num_hops, entity_set_handles,
    1458                 :          0 :                     entity_set_handles_allocated, entity_set_handles_size, err );
    1459                 :          0 : }
    1460                 :            : 
    1461                 :          7 : void FBiGeom_createTag( FBiGeom_Instance instance, const char* tag_name, int tag_size, int tag_type,
    1462                 :            :                         iBase_TagHandle* tag_handle, int* err, int tag_name_len )
    1463                 :            : {
    1464                 :            : 
    1465                 :          7 :     iMesh_createTag( IMESH_INSTANCE( instance ), tag_name, tag_size, tag_type, tag_handle, err, tag_name_len );
    1466                 :          7 : }
    1467                 :            : 
    1468                 :          7 : void FBiGeom_destroyTag( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int, int* err )
    1469                 :            : {
    1470         [ -  + ]:          7 :     ErrorCode rval = MBI->tag_delete( TAG_HANDLE( tag_handle ) );CHKERR( rval, "Failed to delete tag" );
    1471                 :          7 :     RETURN( iBase_SUCCESS );
    1472                 :            : }
    1473                 :            : 
    1474                 :         13 : void FBiGeom_getTagName( FBiGeom_Instance instance, iBase_TagHandle tag_handle, char* name, int* err, int name_len )
    1475                 :            : {
    1476                 :         13 :     iMesh_getTagName( IMESH_INSTANCE( instance ), tag_handle, name, err, name_len );
    1477                 :         13 : }
    1478                 :            : 
    1479                 :          3 : void FBiGeom_getTagSizeValues( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_size, int* err )
    1480                 :            : {
    1481                 :          3 :     iMesh_getTagSizeValues( IMESH_INSTANCE( instance ), tag_handle, tag_size, err );
    1482                 :          3 : }
    1483                 :            : 
    1484                 :          3 : void FBiGeom_getTagSizeBytes( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_size, int* err )
    1485                 :            : {
    1486                 :          3 :     iMesh_getTagSizeBytes( IMESH_INSTANCE( instance ), tag_handle, tag_size, err );
    1487                 :          3 : }
    1488                 :            : 
    1489                 :          5 : void FBiGeom_getTagHandle( FBiGeom_Instance instance, const char* tag_name, iBase_TagHandle* tag_handle, int* err,
    1490                 :            :                            int tag_name_len )
    1491                 :            : {
    1492                 :          5 :     iMesh_getTagHandle( IMESH_INSTANCE( instance ), tag_name, tag_handle, err, tag_name_len );
    1493                 :          5 : }
    1494                 :            : 
    1495                 :          3 : void FBiGeom_getTagType( FBiGeom_Instance instance, iBase_TagHandle tag_handle, int* tag_type, int* err )
    1496                 :            : {
    1497                 :          3 :     iMesh_getTagType( IMESH_INSTANCE( instance ), tag_handle, tag_type, err );
    1498                 :          3 : }
    1499                 :            : 
    1500                 :          0 : void FBiGeom_setEntSetData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
    1501                 :            :                             iBase_TagHandle tag_handle, const void* tag_value, int tag_value_size, int* err )
    1502                 :            : {
    1503                 :          0 :     iMesh_setEntSetData( IMESH_INSTANCE( instance ), entity_set_handle, tag_handle, tag_value, tag_value_size, err );
    1504                 :          0 : }
    1505                 :            : 
    1506                 :          0 : void FBiGeom_setEntSetIntData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1507                 :            :                                int tag_value, int* err )
    1508                 :            : {
    1509                 :          0 :     iMesh_setEntSetIntData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
    1510                 :          0 : }
    1511                 :            : 
    1512                 :          0 : void FBiGeom_setEntSetDblData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1513                 :            :                                double tag_value, int* err )
    1514                 :            : {
    1515                 :          0 :     iMesh_setEntSetDblData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
    1516                 :          0 : }
    1517                 :            : 
    1518                 :          0 : void FBiGeom_setEntSetEHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1519                 :            :                               iBase_EntityHandle tag_value, int* err )
    1520                 :            : {
    1521                 :          0 :     iMesh_setEntSetEHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
    1522                 :          0 : }
    1523                 :            : 
    1524                 :          0 : void FBiGeom_setEntSetESHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1525                 :            :                                iBase_EntitySetHandle tag_value, int* err )
    1526                 :            : {
    1527                 :          0 :     iMesh_setEntSetESHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, tag_value, err );
    1528                 :          0 : }
    1529                 :            : 
    1530                 :          0 : void FBiGeom_getEntSetData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
    1531                 :            :                             iBase_TagHandle tag_handle, void** tag_value, int* tag_value_allocated, int* tag_value_size,
    1532                 :            :                             int* err )
    1533                 :            : {
    1534                 :          0 :     iMesh_getEntSetData( IMESH_INSTANCE( instance ), entity_set_handle, tag_handle, tag_value, tag_value_allocated,
    1535                 :          0 :                          tag_value_size, err );
    1536                 :          0 : }
    1537                 :            : 
    1538                 :          0 : void FBiGeom_getEntSetIntData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1539                 :            :                                int* out_data, int* err )
    1540                 :            : {
    1541                 :          0 :     iMesh_getEntSetIntData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
    1542                 :          0 : }
    1543                 :            : 
    1544                 :          0 : void FBiGeom_getEntSetDblData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1545                 :            :                                double* out_data, int* err )
    1546                 :            : {
    1547                 :          0 :     iMesh_getEntSetDblData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
    1548                 :          0 : }
    1549                 :            : 
    1550                 :          0 : void FBiGeom_getEntSetEHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1551                 :            :                               iBase_EntityHandle* out_data, int* err )
    1552                 :            : {
    1553                 :          0 :     iMesh_getEntSetEHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
    1554                 :          0 : }
    1555                 :            : 
    1556                 :          0 : void FBiGeom_getEntSetESHData( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set, iBase_TagHandle tag_handle,
    1557                 :            :                                iBase_EntitySetHandle* out_data, int* err )
    1558                 :            : {
    1559                 :          0 :     iMesh_getEntSetESHData( IMESH_INSTANCE( instance ), entity_set, tag_handle, out_data, err );
    1560                 :          0 : }
    1561                 :            : 
    1562                 :          0 : void FBiGeom_getAllEntSetTags( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
    1563                 :            :                                iBase_TagHandle** tag_handles, int* tag_handles_allocated, int* tag_handles_size,
    1564                 :            :                                int* err )
    1565                 :            : {
    1566                 :          0 :     iMesh_getAllEntSetTags( IMESH_INSTANCE( instance ), entity_set_handle, tag_handles, tag_handles_allocated,
    1567                 :          0 :                             tag_handles_size, err );
    1568                 :          0 : }
    1569                 :            : 
    1570                 :          0 : void FBiGeom_rmvEntSetTag( FBiGeom_Instance instance, iBase_EntitySetHandle entity_set_handle,
    1571                 :            :                            iBase_TagHandle tag_handle, int* err )
    1572                 :            : {
    1573                 :          0 :     iMesh_rmvEntSetTag( IMESH_INSTANCE( instance ), entity_set_handle, tag_handle, err );
    1574                 :          0 : }
    1575                 :            : 
    1576                 :         19 : void FBiGeom_getArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
    1577                 :            :                          iBase_TagHandle tag_handle, void** tag_values, int* tag_values_allocated, int* tag_values_size,
    1578                 :            :                          int* err )
    1579                 :            : {
    1580                 :         19 :     iMesh_getArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1581                 :         19 :                       tag_values_allocated, tag_values_size, err );
    1582                 :         19 : }
    1583                 :            : 
    1584                 :          0 : void FBiGeom_getIntArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1585                 :            :                             int entity_handles_size, iBase_TagHandle tag_handle, int** tag_values,
    1586                 :            :                             int* tag_values_allocated, int* tag_values_size, int* err )
    1587                 :            : {
    1588                 :          0 :     iMesh_getIntArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1589                 :          0 :                          tag_values_allocated, tag_values_size, err );
    1590                 :          0 : }
    1591                 :            : 
    1592                 :          0 : void FBiGeom_getDblArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1593                 :            :                             int entity_handles_size, iBase_TagHandle tag_handle, double** tag_values,
    1594                 :            :                             int* tag_values_allocated, int* tag_values_size, int* err )
    1595                 :            : {
    1596                 :          0 :     iMesh_getDblArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1597                 :          0 :                          tag_values_allocated, tag_values_size, err );
    1598                 :          0 : }
    1599                 :            : 
    1600                 :          0 : void FBiGeom_getEHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
    1601                 :            :                            iBase_TagHandle tag_handle, iBase_EntityHandle** tag_value, int* tag_value_allocated,
    1602                 :            :                            int* tag_value_size, int* err )
    1603                 :            : {
    1604                 :          0 :     iMesh_getEHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_value,
    1605                 :          0 :                         tag_value_allocated, tag_value_size, err );
    1606                 :          0 : }
    1607                 :            : 
    1608                 :          0 : void FBiGeom_getESHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1609                 :            :                             int entity_handles_size, iBase_TagHandle tag_handle, iBase_EntitySetHandle** tag_value,
    1610                 :            :                             int* tag_value_allocated, int* tag_value_size, int* err )
    1611                 :            : {
    1612                 :          0 :     iMesh_getESHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_value,
    1613                 :          0 :                          tag_value_allocated, tag_value_size, err );
    1614                 :          0 : }
    1615                 :            : 
    1616                 :         55 : void FBiGeom_setArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
    1617                 :            :                          iBase_TagHandle tag_handle, const void* tag_values, int tag_values_size, int* err )
    1618                 :            : {
    1619                 :         55 :     iMesh_setArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1620                 :         55 :                       tag_values_size, err );
    1621                 :         55 : }
    1622                 :            : 
    1623                 :          0 : void FBiGeom_setIntArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1624                 :            :                             int entity_handles_size, iBase_TagHandle tag_handle, const int* tag_values,
    1625                 :            :                             int tag_values_size, int* err )
    1626                 :            : {
    1627                 :          0 :     iMesh_setIntArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1628                 :          0 :                          tag_values_size, err );
    1629                 :          0 : }
    1630                 :            : 
    1631                 :          0 : void FBiGeom_setDblArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1632                 :            :                             int entity_handles_size, iBase_TagHandle tag_handle, const double* tag_values,
    1633                 :            :                             const int tag_values_size, int* err )
    1634                 :            : {
    1635                 :          0 :     iMesh_setDblArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1636                 :          0 :                          tag_values_size, err );
    1637                 :          0 : }
    1638                 :            : 
    1639                 :          0 : void FBiGeom_setEHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
    1640                 :            :                            iBase_TagHandle tag_handle, const iBase_EntityHandle* tag_values, int tag_values_size,
    1641                 :            :                            int* err )
    1642                 :            : {
    1643                 :          0 :     iMesh_setEHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1644                 :          0 :                         tag_values_size, err );
    1645                 :          0 : }
    1646                 :            : 
    1647                 :          0 : void FBiGeom_setESHArrData( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles,
    1648                 :            :                             int entity_handles_size, iBase_TagHandle tag_handle,
    1649                 :            :                             const iBase_EntitySetHandle* tag_values, int tag_values_size, int* err )
    1650                 :            : {
    1651                 :          0 :     iMesh_setESHArrData( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, tag_values,
    1652                 :          0 :                          tag_values_size, err );
    1653                 :          0 : }
    1654                 :            : 
    1655                 :          1 : void FBiGeom_rmvArrTag( FBiGeom_Instance instance, const iBase_EntityHandle* entity_handles, int entity_handles_size,
    1656                 :            :                         iBase_TagHandle tag_handle, int* err )
    1657                 :            : {
    1658                 :          1 :     iMesh_rmvArrTag( IMESH_INSTANCE( instance ), entity_handles, entity_handles_size, tag_handle, err );
    1659                 :          1 : }
    1660                 :            : 
    1661                 :          0 : void FBiGeom_getData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1662                 :            :                       void** tag_value, int* tag_value_allocated, int* tag_value_size, int* err )
    1663                 :            : {
    1664                 :          0 :     iMesh_getData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, tag_value_allocated,
    1665                 :          0 :                    tag_value_size, err );
    1666                 :          0 : }
    1667                 :            : 
    1668                 :          0 : void FBiGeom_getIntData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1669                 :            :                          int* out_data, int* err )
    1670                 :            : {
    1671                 :          0 :     iMesh_getIntData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
    1672                 :          0 : }
    1673                 :            : 
    1674                 :          0 : void FBiGeom_getDblData( FBiGeom_Instance instance, const iBase_EntityHandle entity_handle,
    1675                 :            :                          const iBase_TagHandle tag_handle, double* out_data, int* err )
    1676                 :            : {
    1677                 :          0 :     iMesh_getDblData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
    1678                 :          0 : }
    1679                 :            : 
    1680                 :          0 : void FBiGeom_getEHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1681                 :            :                         iBase_EntityHandle* out_data, int* err )
    1682                 :            : {
    1683                 :          0 :     iMesh_getEHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
    1684                 :          0 : }
    1685                 :            : 
    1686                 :          0 : void FBiGeom_getESHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1687                 :            :                          iBase_EntitySetHandle* out_data, int* err )
    1688                 :            : {
    1689                 :          0 :     iMesh_getESHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, out_data, err );
    1690                 :          0 : }
    1691                 :            : 
    1692                 :          0 : void FBiGeom_setData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1693                 :            :                       const void* tag_value, int tag_value_size, int* err )
    1694                 :            : {
    1695                 :          0 :     iMesh_setData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, tag_value_size, err );
    1696                 :          0 : }
    1697                 :            : 
    1698                 :          0 : void FBiGeom_setIntData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1699                 :            :                          int tag_value, int* err )
    1700                 :            : {
    1701                 :          0 :     iMesh_setIntData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
    1702                 :          0 : }
    1703                 :            : 
    1704                 :          0 : void FBiGeom_setDblData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1705                 :            :                          double tag_value, int* err )
    1706                 :            : {
    1707                 :          0 :     iMesh_setDblData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
    1708                 :          0 : }
    1709                 :            : 
    1710                 :          0 : void FBiGeom_setEHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1711                 :            :                         iBase_EntityHandle tag_value, int* err )
    1712                 :            : {
    1713                 :          0 :     iMesh_setEHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
    1714                 :          0 : }
    1715                 :            : 
    1716                 :          0 : void FBiGeom_setESHData( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle,
    1717                 :            :                          iBase_EntitySetHandle tag_value, int* err )
    1718                 :            : {
    1719                 :          0 :     iMesh_setESHData( IMESH_INSTANCE( instance ), entity_handle, tag_handle, tag_value, err );
    1720                 :          0 : }
    1721                 :            : 
    1722                 :         45 : void FBiGeom_getAllTags( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle** tag_handles,
    1723                 :            :                          int* tag_handles_allocated, int* tag_handles_size, int* err )
    1724                 :            : {
    1725                 :         45 :     iMesh_getAllTags( IMESH_INSTANCE( instance ), entity_handle, tag_handles, tag_handles_allocated, tag_handles_size,
    1726                 :         45 :                       err );
    1727                 :         45 : }
    1728                 :            : 
    1729                 :          0 : void FBiGeom_rmvTag( FBiGeom_Instance instance, iBase_EntityHandle entity_handle, iBase_TagHandle tag_handle, int* err )
    1730                 :            : {
    1731                 :          0 :     iMesh_rmvTag( IMESH_INSTANCE( instance ), entity_handle, tag_handle, err );
    1732                 :          0 : }
    1733                 :            : 
    1734                 :          0 : void FBiGeom_subtract( FBiGeom_Instance instance, iBase_EntitySetHandle, iBase_EntitySetHandle, iBase_EntitySetHandle*,
    1735                 :            :                        int* err )
    1736                 :            : {
    1737                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1738                 :            : }
    1739                 :            : 
    1740                 :          0 : void FBiGeom_intersect( FBiGeom_Instance instance, iBase_EntitySetHandle, iBase_EntitySetHandle, iBase_EntitySetHandle*,
    1741                 :            :                         int* err )
    1742                 :            : {
    1743                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1744                 :            : }
    1745                 :            : 
    1746                 :          0 : void FBiGeom_unite( FBiGeom_Instance instance, iBase_EntitySetHandle, iBase_EntitySetHandle, iBase_EntitySetHandle*,
    1747                 :            :                     int* err )
    1748                 :            : {
    1749                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1750                 :            : }
    1751                 :            : 
    1752                 :            : // TODO methods not yet implemented
    1753                 :          0 : void FBiGeom_getEntClosestPtTrimmed( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*,
    1754                 :            :                                      double*, double*, int* err )
    1755                 :            : {
    1756                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1757                 :            : }
    1758                 :            : 
    1759                 :          0 : void FBiGeom_getFcCvtrXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
    1760                 :            :                            double*, double*, double*, double*, int* err )
    1761                 :            : {
    1762                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1763                 :            : }
    1764                 :            : 
    1765                 :          0 : void FBiGeom_getEgCvtrXYZ( FBiGeom_Instance instance, iBase_EntityHandle, double, double, double, double*, double*,
    1766                 :            :                            double*, int* err )
    1767                 :            : {
    1768                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1769                 :            : }
    1770                 :            : 
    1771                 :          0 : void FBiGeom_getEntArrCvtrXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1772                 :            :                                double**, int*, int*, double**, int*, int*, int* err )
    1773                 :            : {
    1774                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1775                 :            : }
    1776                 :            : 
    1777                 :          0 : void FBiGeom_getEgEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle edge, double x, double y, double z,
    1778                 :            :                            double* on_x, double* on_y, double* on_z, double* tngt_i, double* tngt_j, double* tngt_k,
    1779                 :            :                            double* cvtr_i, double* cvtr_j, double* cvtr_k, int* err )
    1780                 :            : {
    1781                 :            :     ErrorCode rval = FBE_cast( instance )
    1782                 :            :                          ->getEgEvalXYZ( (moab::EntityHandle)edge, x, y, z, *on_x, *on_y, *on_z, *tngt_i, *tngt_j,
    1783         [ #  # ]:          0 :                                          *tngt_k, *cvtr_i, *cvtr_j, *cvtr_k );CHKERR( rval, "can't get point on edge " );
    1784                 :          0 :     RETURN( iBase_SUCCESS );
    1785                 :            : }
    1786                 :            : 
    1787                 :          0 : void FBiGeom_getFcEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle face_handle, double x, double y, double z,
    1788                 :            :                            double* on_x, double* on_y, double* on_z, double* nrml_i, double* nrml_j, double* nrml_k,
    1789                 :            :                            double* cvtr1_i, double* cvtr1_j, double* cvtr1_k, double* cvtr2_i, double* cvtr2_j,
    1790                 :            :                            double* cvtr2_k, int* err )
    1791                 :            : {
    1792                 :            :     /*
    1793                 :            :       moab::ErrorCode rval = _fbEngine->getFcEvalXYZ( (moab::EntityHandle) face,
    1794                 :            :       x,  y, z,
    1795                 :            :       on_x, on_y, on_z,
    1796                 :            :       nrml_i, nrml_j, nrml_k,
    1797                 :            :       cvtr1_i, cvtr1_j, cvtr1_k,
    1798                 :            :       cvtr2_i, cvtr2_j,  cvtr2_k );*/
    1799                 :            :     // camal really does not use curvatures
    1800                 :            :     // the most it is calling for normals and for closest point
    1801                 :            :     // return all curvatures = 0 for the time being, because we
    1802                 :            :     // know camal is not requesting them
    1803                 :            : 
    1804                 :          0 :     *cvtr1_i = *cvtr1_j = *cvtr1_k = *cvtr2_i = *cvtr2_j = *cvtr2_k = 0.;
    1805                 :            :     // first get closest point, then normal, separately
    1806                 :            :     ErrorCode rval =
    1807         [ #  # ]:          0 :         FBE_cast( instance )->getEntClosestPt( (moab::EntityHandle)face_handle, x, y, z, on_x, on_y, on_z );CHKERR( rval, "can't get closest point on surface " );
    1808                 :            :     rval = FBE_cast( instance )
    1809                 :            :                ->getEntNrmlXYZ( (moab::EntityHandle)face_handle, x, y, z, nrml_i, nrml_j,
    1810                 :          0 :                                 nrml_k );  // some inconsistency here, we use pointers, not refs
    1811         [ #  # ]:          0 :     CHKERR( rval, "can't get normal on closest point on surface " );
    1812                 :          0 :     RETURN( iBase_SUCCESS );
    1813                 :            : }
    1814                 :            : 
    1815                 :          0 : void FBiGeom_getArrEgEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1816                 :            :                               double**, int*, int*, double**, int*, int*, double**, int*, int*, int* err )
    1817                 :            : {
    1818                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1819                 :            : }
    1820                 :            : 
    1821                 :          0 : void FBiGeom_getArrFcEvalXYZ( FBiGeom_Instance instance, iBase_EntityHandle const*, int, int, double const*, int,
    1822                 :            :                               double**, int*, int*, double**, int*, int*, double**, int*, int*, double**, int*, int*,
    1823                 :            :                               int* err )
    1824                 :            : {
    1825                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1826                 :            : }
    1827                 :            : 
    1828                 :          0 : void FBiGeom_getPntClsf( FBiGeom_Instance instance, double, double, double, iBase_EntityHandle*, int* err )
    1829                 :            : {
    1830                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1831                 :            : }
    1832                 :            : 
    1833                 :          0 : void FBiGeom_getPntArrClsf( FBiGeom_Instance instance, int, double const*, int, iBase_EntityHandle**, int*, int*,
    1834                 :            :                             int* err )
    1835                 :            : {
    1836                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1837                 :            : }
    1838                 :            : 
    1839                 :          0 : void FBiGeom_getFacets( FBiGeom_Instance instance, iBase_EntityHandle, double, double, int, int, int, int, int,
    1840                 :            :                         int* err )
    1841                 :            : {
    1842                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1843                 :            : }
    1844                 :            : 
    1845                 :          0 : void FBiGeom_getEntTolerance( FBiGeom_Instance instance, iBase_EntityHandle, double*, int* err )
    1846                 :            : {
    1847                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1848                 :            : }
    1849                 :          0 : void FBiGeom_getArrTolerance( FBiGeom_Instance instance, iBase_EntityHandle const*, int, double**, int*, int*,
    1850                 :            :                               int* err )
    1851                 :            : {
    1852                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1853                 :            : }
    1854                 :          0 : void FBiGeom_getTolerance( FBiGeom_Instance instance, int*, double*, int* err )
    1855                 :            : {
    1856                 :          0 :     RETURN( iBase_NOT_SUPPORTED );
    1857 [ +  - ][ +  - ]:         32 : }

Generated by: LCOV version 1.11