cgma
GeometryFeatureTool Class Reference

This is a singleton pattern class for the feature functions. More...

#include <GeometryFeatureTool.hpp>

List of all members.

Public Member Functions

 ~GeometryFeatureTool ()
 destructor
void add_gfe (GeometryFeatureEngine *gfe_ptr)
 add a feature engine to the list
GeometryFeatureEngine::FeatureType feature_type (BasicTopologyEntity *bte)
 Returns the feature type that created the entity.
CubitStatus get_related_by_feature (BasicTopologyEntity *bte, DLIList< GeometryEntity * > &return_list)
 Get all of the entities related to 'entity_in' by the same source feature.
DLIList
< GeometryFeatureEngine::FeatureType
available_feature_types (BasicTopologyEntity *bte)
 Get the feature types available from this FeatureEngine.

Static Public Member Functions

static GeometryFeatureToolinstance (GeometryFeatureEngine *GFEPtr=NULL)
static void delete_instance ()

Protected Member Functions

 GeometryFeatureTool (GeometryFeatureEngine *GFEPtr)
 constructor

Private Member Functions

GeometryFeatureEngineget_engine (TopologyBridge *tb_ptr) const
 returns the feature engine of an entity
GeometryFeatureEngineget_engine (TopologyEntity *te_ptr) const
 returns the feature engine of an entity
CubitBoolean same_feature_engine (DLIList< RefEntity * > &ref_entity_list, CubitBoolean check_children) const
 determines if entities belong to the same engine
CubitBoolean same_feature_engine (DLIList< TopologyEntity * > &topo_list) const
 determines if entities belong to the same engine

Private Attributes

DLIList< GeometryFeatureEngine * > gfeList
 list of feature engines

Static Private Attributes

static GeometryFeatureToolinstance_ = 0
 singleton pattern class instance interface

Detailed Description

This is a singleton pattern class for the feature functions.

Definition at line 22 of file GeometryFeatureTool.hpp.


Constructor & Destructor Documentation

destructor

Definition at line 41 of file GeometryFeatureTool.cpp.

{
   for (int i = gfeList.size(); i > 0; i--)
      delete gfeList.get_and_step();

   gfeList.clean_out();
   instance_ = NULL;
}

constructor

Definition at line 202 of file GeometryFeatureTool.cpp.

{
  if (GFEPtr != NULL)
     add_gfe(GFEPtr);
}

Member Function Documentation

add a feature engine to the list

Definition at line 51 of file GeometryFeatureTool.cpp.

{
   assert(gfe_ptr != 0);

   if (!gfeList.move_to(gfe_ptr))
      gfeList.append(gfe_ptr);
}

Get the feature types available from this FeatureEngine.

Definition at line 183 of file GeometryFeatureTool.cpp.

{
    TopologyEntity* topo_ptr = CAST_TO(bte, TopologyEntity);
    DLIList<GeometryFeatureEngine::FeatureType> null_list;
    if (!topo_ptr)
        return null_list;

    GeometryFeatureEngine* gfe = get_engine(topo_ptr);

    if(!gfe)
        return null_list;

    return gfe->available_feature_types(bte->get_geometry_entity_ptr());
}
static void GeometryFeatureTool::delete_instance ( ) [inline, static]

Definition at line 33 of file GeometryFeatureTool.hpp.

   { 
     if(instance_)
       delete instance_;
     instance_ = NULL;
   };  

Returns the feature type that created the entity.

Definition at line 140 of file GeometryFeatureTool.cpp.

{
    // first check to see if the feature information is in the tool data
    TDSourceFeature *tdss = 0;
    tdss = (TDSourceFeature *)bte->
        get_TD(&TDSourceFeature::is_source_feature);

    if(tdss)
        return tdss->source_feature();

    // if the feature information is not in the tool data 
    // then call the engine specific FeatureEngine
    TopologyEntity* topo_ptr = CAST_TO(bte, TopologyEntity);

    if (!topo_ptr)
        return GeometryFeatureEngine::FEATURE_UNDEFINED;

    GeometryFeatureEngine* gfe = get_engine(topo_ptr);

    if(!gfe)
        return GeometryFeatureEngine::FEATURE_UNDEFINED;

    return gfe->feature_type(bte->get_geometry_entity_ptr());
}

returns the feature engine of an entity

Definition at line 59 of file GeometryFeatureTool.cpp.

{
  GeometryFeatureEngine *gfe;

  for (int i = 0; i < gfeList.size(); i++)
  {
    gfe = gfeList.next(i);
    if (gfe->is_feature_engine(tb_ptr))
       return gfe;
  }

  return NULL;
}

returns the feature engine of an entity

Definition at line 73 of file GeometryFeatureTool.cpp.

{
  GeometryFeatureEngine *gfe;

  TopologyBridge *tb_ptr = te_ptr->bridge_manager()->topology_bridge();

  for (int i = 0; i < gfeList.size(); i++)
  {
    gfe = gfeList.next(i);
    if (gfe->is_feature_engine(tb_ptr))
       return gfe;
  }

  return NULL;
}

Get all of the entities related to 'entity_in' by the same source feature.

Definition at line 165 of file GeometryFeatureTool.cpp.

{
    TopologyEntity* topo_ptr = CAST_TO(bte, TopologyEntity);

    if (!topo_ptr)
        return CUBIT_FAILURE;

    GeometryFeatureEngine* gfe = get_engine(topo_ptr);

    if(!gfe)
        return CUBIT_FAILURE;

    return gfe->get_related_by_feature(bte->get_geometry_entity_ptr(),return_list);
}

singleton pattern class instance interface

Returns:
the one and only instace

Definition at line 15 of file GeometryFeatureTool.cpp.

{
   // Check to see if we have created an instance of the class;
   // if not, proceed to create one.
   if (instance_ == 0)
   {
      // When creating the instance, we should always have a valid
      // gfePtr. If not, complain.
      instance_ = new GeometryFeatureTool(GFEPtr);

      // Check to make sure there's a ref entity factory extant:
      // RefEntityFactory *factory =
      RefEntityFactory::instance();
   }
   // If there is an existing instance of the class, check if there
   // is a request to set the default engine. If so, do so.
   else if ( GFEPtr != NULL && !instance_->gfeList.move_to(GFEPtr) )
   {
      delete instance_->gfeList.remove();
      instance_->gfeList.insert(GFEPtr);
   }

   // Return the a pointer to the instance of the class.
   return instance_;
}
CubitBoolean GeometryFeatureTool::same_feature_engine ( DLIList< RefEntity * > &  ref_entity_list,
CubitBoolean  check_children 
) const [private]

determines if entities belong to the same engine

Definition at line 89 of file GeometryFeatureTool.cpp.

{
   DLIList<RefEntity*> complete_entity_list;

   //Check the check_children option and check all the children if necessary
   if (check_children)
   {
      //Make a complete list of all the RefEntities and their children
      DLIList<RefEntity*> temp = ref_entity_list;
      RefEntity* ref_entity_ptr;

      for (int i = 0; i < ref_entity_list.size(); i++)
      {
         ref_entity_ptr = ref_entity_list.get_and_step();
         complete_entity_list.clean_out();
         ref_entity_ptr->get_all_child_ref_entities(complete_entity_list);
         temp += complete_entity_list;
      }

      complete_entity_list.clean_out();
      complete_entity_list.merge_unique(temp);
   }

   //Now make sure all the RefEntities are from the same geometry engine
   DLIList<TopologyEntity*> te_list;
   CAST_LIST(complete_entity_list, te_list, TopologyEntity);
   return same_feature_engine(te_list);
}

determines if entities belong to the same engine

Definition at line 119 of file GeometryFeatureTool.cpp.

{
   GeometryFeatureEngine *gePtr1 = get_engine(topo_list.get_and_step());
   GeometryFeatureEngine *gePtr2;

   for (int i = 1; i < topo_list.size(); i++)
   {
      gePtr2 = get_engine(topo_list.get_and_step());
      if (gePtr1 != gePtr2)
      {
         return CUBIT_FALSE;
      }
   }
   return CUBIT_TRUE;
}

Member Data Documentation

list of feature engines

Definition at line 84 of file GeometryFeatureTool.hpp.

singleton pattern class instance interface

Definition at line 81 of file GeometryFeatureTool.hpp.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines