LCOV - code coverage report
Current view: top level - geom/cgm - BasicTopologyEntity.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 7 11 63.6 %
Date: 2020-06-30 00:58:45 Functions: 3 5 60.0 %
Branches: 1 2 50.0 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : BasicTopologyEntity.hpp
       3                 :            : //
       4                 :            : // Purpose       : This is the interface to the BasicTopologyEntity base class.
       5                 :            : //                 The main characteristic of specific BasicTopoEntities is
       6                 :            : //                 that they form the basis of a topological description
       7                 :            : //                 of a solid model.  Having ordered lists of these would
       8                 :            : //                 be a complete and unambiguous description of a solid
       9                 :            : //                 model.
      10                 :            : //
      11                 :            : //                 The other characteristic of BasicTopoEntities is that 
      12                 :            : //                 they contain ("own") various mesh-related entities. 
      13                 :            : //
      14                 :            : // Special Notes : Although each BasicTopologyEntity is associated with a set of 
      15                 :            : //                 GroupingEntity's, there is no member data in a BasicTopologyEntity
      16                 :            : //                 that stores this list.  Instead, this connection is
      17                 :            : //                 established within the Directed Acyclic Graph (DAG)
      18                 :            : //                 datastructure that captures the relationships between
      19                 :            : //                 the various TopologyEntity's in the Model.
      20                 :            : //
      21                 :            : //                 Each BasicTopologyEntity (with the exception of RefVertex) is
      22                 :            : //                 associated with a set of GroupingEntity's (GrE's).  These 
      23                 :            : //                 GrE's are ordered in a list.  Hence, the BasicTopologyEntity 
      24                 :            : //                 interface not only provides the ability to get the entire 
      25                 :            : //                 list of GrE's, but also allows you to ask for the "first"
      26                 :            : //                 associated GrE. By extension, the GrE interface, provides 
      27                 :            : //                 a function to ask for the "next" GrE.  The linked 
      28                 :            : //                 list of GrE's ends when the "next" function returns a 
      29                 :            : //                 NULL pointer. 
      30                 :            : //
      31                 :            : //                 Each BasicTopologyEntity HasA GeometryEntity pointer.  This 
      32                 :            : //                 pointer is stored explicitly as a member datum because 
      33                 :            : //                 Geometry Entity's are *not* represented by nodes in the 
      34                 :            : //                 Model DAG.
      35                 :            : //
      36                 :            : //                 This is a pure virtual class, to prevent instantiation.
      37                 :            : //
      38                 :            : // Creator       : Malcolm J. Panthaki
      39                 :            : //
      40                 :            : // Creation Date : 10/14/96
      41                 :            : //
      42                 :            : // Owner         : Malcolm J. Panthaki
      43                 :            : //-------------------------------------------------------------------------
      44                 :            : 
      45                 :            : #ifndef BASIC_TOPOLOGY_ENTITY_HPP
      46                 :            : #define BASIC_TOPOLOGY_ENTITY_HPP
      47                 :            : 
      48                 :            : // ********** BEGIN STANDARD INCLUDES      **********
      49                 :            : // ********** END STANDARD INCLUDES        **********
      50                 :            : 
      51                 :            : // ********** BEGIN CUBIT INCLUDES         **********
      52                 :            : 
      53                 :            : #include "CubitDefines.h"
      54                 :            : #include "GeometryDefines.h"
      55                 :            : #include "TopologyEntity.hpp"
      56                 :            : #include "RefEntity.hpp"
      57                 :            : #include "CubitBox.hpp"
      58                 :            : 
      59                 :            : // ********** END CUBIT INCLUDES           **********
      60                 :            : 
      61                 :            : // ********** BEGIN FORWARD DECLARATIONS   **********
      62                 :            : 
      63                 :            : template <class X> class DLIList;
      64                 :            : class GroupingEntity;
      65                 :            : class SenseEntity;
      66                 :            : class GeometryEntity;
      67                 :            : 
      68                 :            : // ********** END FORWARD DECLARATIONS     **********
      69                 :            : 
      70                 :            : // ********** BEGIN MACRO DEFINITIONS     **********
      71                 :            : // ********** END MACRO DEFINITIONS       **********
      72                 :            : 
      73                 :            : // ********** BEGIN ENUM DEFINITIONS     **********
      74                 :            : // ********** END ENUM DEFINITIONS       **********
      75                 :            : 
      76                 :            : class CUBIT_GEOM_EXPORT BasicTopologyEntity : public TopologyEntity,
      77                 :            :                             public RefEntity
      78                 :            : {
      79                 :            : public:
      80                 :          0 :   static const char* get_class_name()
      81                 :          0 :     { return "BasicTopologyEntity"; }
      82                 :            : 
      83                 :          0 :   virtual const char* class_name() const
      84                 :          0 :     { return get_class_name(); }
      85                 :            :   
      86                 :            :   virtual DagType dag_type() const = 0;
      87                 :            :   
      88                 :            :    
      89                 :            :   inline BasicTopologyEntity() ;  
      90                 :            :     //- Default constructor.
      91                 :            :    
      92                 :            :   virtual ~BasicTopologyEntity();  
      93                 :            : 
      94                 :            :  CubitStatus get_grouping_entity_list(
      95                 :            :       DLIList<GroupingEntity*>& groupingEntityList) const;
      96                 :            :     //R  CubitStatus
      97                 :            :     //R- CUBIT_SUCCESS/FAILURE.
      98                 :            :     //O  groupingEntityList
      99                 :            :     //O- The list of GroupingEntity pointers associated with this
     100                 :            :     //O- BasicTopologyEntity.
     101                 :            :     //-  This function returns a list of pointers to GroupingEntity's
     102                 :            :     //-  associated with this BasicTopologyEntity.
     103                 :            :     
     104                 :            :   inline GroupingEntity* get_first_grouping_entity_ptr() const;
     105                 :            :     //R GroupingEntity* 
     106                 :            :     //R- The child GroupingEntity pointer or NULL if none.
     107                 :            :                 
     108                 :            :         CubitStatus get_sense_entity_list( DLIList<SenseEntity*>& senseEntityList ) const;
     109                 :            :           //R- CubitStatus
     110                 :            :                 //O senseEntityList
     111                 :            :                 //O- The parent SenseEntity pointers for this BTE.
     112                 :            :   
     113                 :            :   inline SenseEntity* get_first_sense_entity_ptr() const;
     114                 :            :   
     115                 :            :   CubitStatus add_grouping_entity(GroupingEntity*) ;
     116                 :            :     //R  CubitStatus
     117                 :            :     //R- CUBIT_SUCCESS/FAILURE.
     118                 :            :     //I  GroupingEntity*
     119                 :            :     //I- A pointer to a GroupingEntity which will be added to
     120                 :            :     //I- the list of grouping entities associated with this BasicTopologyEntity.
     121                 :            :     //-  This function is used to add a GroupingEntity to the
     122                 :            :     //-  list of grouping entities associated with this BasicTopologyEntity.
     123                 :            : 
     124                 :            :   CubitStatus remove_grouping_entity(GroupingEntity*);
     125                 :            :     //R  CubitStatus
     126                 :            :     //R- CUBIT_SUCCESS/FAILURE.
     127                 :            :     //I  GroupingEntity*
     128                 :            :     //I- A pointer to a GroupingEntity which will be removed from
     129                 :            :     //I- the list of grouping entities associated with this BasicTopologyEntity.
     130                 :            :     //-  This function is used to remove a GroupingEntity from the
     131                 :            :     //-  list of grouping entities associated with this BasicTopologyEntity.
     132                 :            :   
     133                 :            :   CubitStatus set_grouping_entity_list( DLIList<GroupingEntity*>& new_list,
     134                 :            :                                         DLIList<GroupingEntity*>& removed_list );
     135                 :            :     //R CubitStatus
     136                 :            :     //R- CUBIT_SUCCESS/CUBIT_FAILURE
     137                 :            :     //I new_list
     138                 :            :     //I- The list of child grouping entities for this BTE
     139                 :            :     //O removed_list
     140                 :            :     //O- Any grouping entities disconnected from this BTE
     141                 :            :     //- Make the child list of grouping entities for this BTE be
     142                 :            :     //- the passed list, in the same order as the passed list.
     143                 :            :     //- Pass back any grouping entities that were children of this
     144                 :            :     //- BTE but were not in new_list.
     145                 :            :   
     146                 :            :   CubitStatus add_sense_entity(SenseEntity*);
     147                 :            :     //R  CubitStatus
     148                 :            :     //R- CUBIT_SUCCESS/FAILURE.
     149                 :            :     //I  SenseEntity*
     150                 :            :     //I- A pointer to a SenseEntity which will be added to
     151                 :            :     //I- the list of sense entities associated with this BasicTopologyEntity.
     152                 :            :     //-  This function is used to add a SenseEntity to the
     153                 :            :     //-  list of sense entities associated with this BasicTopologyEntity.
     154                 :            : 
     155                 :            :   CubitStatus remove_sense_entity(SenseEntity*);
     156                 :            :     //R  CubitStatus
     157                 :            :     //R- CUBIT_SUCCESS/FAILURE.
     158                 :            :     //I  SenseEntity*
     159                 :            :     //I- A pointer to a SenseEntity which will be removed from
     160                 :            :     //I- the list of sense entities associated with this BasicTopologyEntity.
     161                 :            :     //-  This function is used to remove a SenseEntity from the
     162                 :            :     //-  list of sense entities associated with this BasicTopologyEntity.
     163                 :            :   
     164                 :            :   SenseEntity* find_sense_entity(GroupingEntity* gpe) const;
     165                 :            :     //R SenseEntity*
     166                 :            :     //R-  A parent SenseEntity of this BasicTopologEntity, or NULL.
     167                 :            :     //I GroupingEntity*
     168                 :            :     //I- A immediate parent grouping entity of this basic topology entity.
     169                 :            :     //- Find the sense entity connecting this BTE to the passed 
     170                 :            :     //- grouping entity.  Returns NULL if more than one sense entity.
     171                 :            :   
     172                 :            :   SenseEntity* find_sense_entity(BasicTopologyEntity* bte) const;
     173                 :            :     //R SenseEntity*
     174                 :            :     //R-  A parent SenseEntity of this BasicTopologEntity, or NULL.
     175                 :            :     //I BasicTopologyEntity*
     176                 :            :     //I- A immediate parent basic topology entity of this basic 
     177                 :            :     //I- topology entity.
     178                 :            :     //- Find the sense entity connecting this BTE to the passed 
     179                 :            :     //- BTE.  Returns NULL if more than one sense entity.
     180                 :            :     
     181                 :            :   CubitStatus get_sense_entities( DLIList<SenseEntity*>& result,
     182                 :            :                                   GroupingEntity* in_this);
     183                 :            :   CubitStatus get_sense_entities( DLIList<SenseEntity*>& result,
     184                 :            :                                   BasicTopologyEntity* in_this);
     185                 :            :     //R CubitStatus
     186                 :            :     //R- CUBIT_SUCCESS/CUBIT_FAILURE
     187                 :            :     //I in_this
     188                 :            :     //I- Subset of parent sense entities joining this to 'in_this'
     189                 :            :     //I- Must be an immediate parent.
     190                 :            :     //O result
     191                 :            :     //O- List of parent sense entities.
     192                 :            :     //- Get parent sense entities, optionally limiting the result
     193                 :            :     //- to the subset connecting this to a passed entity.
     194                 :            :   
     195                 :            :   CubitBoolean is_nonmanifold( GroupingEntity* in_this_parent );
     196                 :            :     //R CubitBoolean
     197                 :            :     //R- CUBIT_TRUE/CUBIT_FALSE
     198                 :            :     //I in_this_parent
     199                 :            :     //I- Immediate parent grouping entity to test with respect to.
     200                 :            :     //- Result is false if there is exactly one sense entity
     201                 :            :     //- connecting this entity to the parent grouping entity.  
     202                 :            :     //- Result is true if there are more than one sense entities
     203                 :            :     //- connecting this entity to the parent grouping entity.
     204                 :            :     //- Result is undefined if there are no sense entities connecting
     205                 :            :     //- this entity to the passed parent.
     206                 :            :    
     207                 :            :   GeometryEntity* get_geometry_entity_ptr() const;
     208                 :            :     //R GeometryEntity*
     209                 :            :     //R- A pointer to the GeometryEntity to which the current 
     210                 :            :     //R- BasicTopologyEntity points. 
     211                 :            :     //-  This function returns a pointer to the GeometryEntity
     212                 :            :     //-  which the current BasicTopologyEntity points to.
     213                 :            :    
     214                 :            :   GeometryType geometry_type() const;
     215                 :            :     //R GeometryType
     216                 :            :     //R- An enumerated type describing the underlying geometry
     217                 :            :     //R- representation
     218                 :            :     //-  This function returns the type of geometry representation
     219                 :            :     //- underlying this entity
     220                 :            : 
     221                 :            :   virtual CubitBox bounding_box();
     222                 :            :     //- Returns the bounding box of this entity
     223                 :            :    
     224                 :            :   virtual CubitBox unmerged_bounding_box();
     225                 :            :     //- Returns the bounding box of all of the bridges in this entity if
     226                 :            :     //- it is a merged entity
     227                 :            : 
     228                 :            :   CubitStatus set_geometry_entity_ptr(GeometryEntity* geometryEntityPtr) ;
     229                 :            :     //R CubitStatus
     230                 :            :     //R- CUBIT_SUCCESS/FAILURE
     231                 :            :     //I  geometryEntityPtr
     232                 :            :     //I- A pointer to the GeometryEntity that will be associated with
     233                 :            :     //I- this RefEntity.
     234                 :            :     //- This function sets the GeometryEntity associated with this 
     235                 :            :     //- RefEntity.
     236                 :            :     //- CUBIT_FAILURE is returned if a problem was detected.
     237                 :            :    
     238                 :            :   double measure();
     239                 :            :     //R double
     240                 :            :     //R- The numeric value of the measure (its units depend on the dimension
     241                 :            :     //R- of the RefEntity being "measured")
     242                 :            :     //- A generic geometric extent function.
     243                 :            :     //- Returns volume for RefVolumes, area for RefFaces, length for RefEdge,
     244                 :            :     //- and 1.0 for RefVertices
     245                 :            :    
     246                 :            :    virtual int get_parents( DLIList<TopologyEntity*>* list = 0 ) const;
     247                 :            :    virtual int get_children(DLIList<TopologyEntity*>* list = 0 ) const;
     248                 :            :    
     249                 :            : protected: 
     250                 :            :    virtual CubitBoolean query_append_parents( DLIList<TopologyEntity*>& list );
     251                 :            :    virtual CubitBoolean query_append_children(DLIList<TopologyEntity*>& list );
     252                 :            :    
     253                 :            :    virtual CubitStatus remove_child_link(TopologyEntity* entity_ptr);
     254                 :            :    
     255                 :            :    CubitStatus disconnect_all_children( DLIList<TopologyEntity*>* children = 0 );
     256                 :            :    CubitStatus disconnect_all_parents( DLIList<TopologyEntity*>* parents = 0 );
     257                 :            :    
     258                 :            : private:
     259                 :            : 
     260                 :            :   SenseEntity* firstSenseEntity;
     261                 :            :   SenseEntity* lastSenseEntity;
     262                 :            :   GroupingEntity* firstGroupingEntity;
     263                 :            :   GroupingEntity* lastGroupingEntity;
     264                 :            :   
     265                 :            :   BasicTopologyEntity( const BasicTopologyEntity& );
     266                 :            :   void operator=( const BasicTopologyEntity& );
     267                 :            : } ;
     268                 :            : 
     269                 :            : 
     270                 :            : // ********** BEGIN INLINE FUNCTIONS       **********
     271                 :      78626 : BasicTopologyEntity::BasicTopologyEntity()
     272                 :            :   : firstSenseEntity(0),
     273                 :            :     lastSenseEntity(0),
     274                 :            :     firstGroupingEntity(0),
     275         [ +  - ]:      78626 :     lastGroupingEntity(0)
     276                 :      78626 :   {}
     277                 :            : 
     278                 :       1364 : SenseEntity* BasicTopologyEntity::get_first_sense_entity_ptr() const
     279                 :       1364 :   { return firstSenseEntity; }
     280                 :            :   
     281                 :     117834 : GroupingEntity* BasicTopologyEntity::get_first_grouping_entity_ptr() const
     282                 :     117834 :   { return firstGroupingEntity; }
     283                 :            : 
     284                 :            : // ********** END INLINE FUNCTIONS         **********
     285                 :            : 
     286                 :            : // ********** BEGIN FRIEND FUNCTIONS       **********
     287                 :            : // ********** END FRIEND FUNCTIONS         **********
     288                 :            : 
     289                 :            : // ********** BEGIN EXTERN FUNCTIONS       **********
     290                 :            : // ********** END EXTERN FUNCTIONS         **********
     291                 :            : 
     292                 :            : #endif
     293                 :            : 
     294                 :            : 

Generated by: LCOV version 1.11