LCOV - code coverage report
Current view: top level - geom/cgm - GroupingEntity.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 37 38 97.4 %
Date: 2020-06-30 00:58:45 Functions: 10 10 100.0 %
Branches: 10 12 83.3 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : GroupingEntity.hpp
       3                 :            : //
       4                 :            : // Purpose       : This file contains the declarations of the class 
       5                 :            : //                 GroupingEntity.
       6                 :            : //                 This class is the base class of all the grouping entities
       7                 :            : //                 Body, Shell, Loop, Chain.
       8                 :            : //
       9                 :            : // Special Notes : Each GroupingEntity is associated with a set of 
      10                 :            : //                 SenseEntity's (SE's). These SE's are ordered in a 
      11                 :            : //                 list.  Hence the GroupingEntity interface
      12                 :            : //                 not only provides the ability to get the entire list
      13                 :            : //                 of SE's, but also allows you to ask for the "first"
      14                 :            : //                 associated SE.  The SE interface thus provides a
      15                 :            : //                 function to ask for the "next" SE.  The linked
      16                 :            : //                 list of SE's ends when the next function returns a 
      17                 :            : //                 NULL pointer. 
      18                 :            : //
      19                 :            : //                 The same is true of GroupingEntities themselves. They
      20                 :            : //                 are an ordered list in the DAG, implying that a next()
      21                 :            : //                 function needs to be provided.
      22                 :            : //
      23                 :            : //                 This is a pure virtual class.
      24                 :            : //
      25                 :            : // Creator       : Xuechen Liu 
      26                 :            : //
      27                 :            : // Creation Date : 07/11/96
      28                 :            : //
      29                 :            : // Owner         : Malcolm J. Panthaki
      30                 :            : //-------------------------------------------------------------------------
      31                 :            : 
      32                 :            : #ifndef GROUPING_ENTITY_HPP
      33                 :            : #define GROUPING_ENTITY_HPP
      34                 :            : 
      35                 :            : // ********** BEGIN STANDARD INCLUDES      **********
      36                 :            : // ********** END STANDARD INCLUDES        **********
      37                 :            : 
      38                 :            : // ********** BEGIN CUBIT INCLUDES         **********
      39                 :            : #include "CubitDefines.h"
      40                 :            : #include "TopologyEntity.hpp"
      41                 :            : // ********** END CUBIT INCLUDES           **********
      42                 :            : 
      43                 :            : // ********** BEGIN MACROS DEFINITIONS     **********
      44                 :            : // ********** END MACROS DEFINITIONS       **********
      45                 :            : 
      46                 :            : // ********** BEGIN FORWARD DECLARATIONS   **********
      47                 :            : class SenseEntity;
      48                 :            : class BasicTopologyEntity;
      49                 :            : 
      50                 :            : // ********** END FORWARD DECLARATIONS     **********
      51                 :            : 
      52                 :            : class CUBIT_GEOM_EXPORT GroupingEntity : public TopologyEntity
      53                 :            : {
      54                 :            :    public :
      55                 :            :    
      56                 :            :    inline GroupingEntity() ;
      57                 :            :      //- The default constructor
      58                 :            :    
      59                 :            :    virtual ~GroupingEntity();
      60                 :            : 
      61                 :            :    inline SenseEntity* get_first_sense_entity_ptr();
      62                 :            :    inline SenseEntity* get_last_sense_entity_ptr();
      63                 :            :      //R SenseEntity*
      64                 :            :      //R- A pointer to the first of the list of SenseEntitys pointed
      65                 :            :      //R- to by this object.
      66                 :            :      //- This function returns a pointer to the first of the list of
      67                 :            :      //- SenseEntity's pointed to by this GroupingEntity.
      68                 :            :    
      69                 :            :    CubitStatus get_sense_entity_list(DLIList<SenseEntity*>& list);
      70                 :            :      //R CubitStatus
      71                 :            :      //R- CUBIT_SUCCESS/CUBIT_FAILURE
      72                 :            :      //O list
      73                 :            :      //O- A list of SenseEntity pointers.
      74                 :            :      //- This function returns a list of SenseEntity pointers
      75                 :            :      //- associated with this GroupingEntity. If there are none, then
      76                 :            :      //- CUBIT_FAILURE is returned.
      77                 :            :    
      78                 :            :    CubitStatus set_sense_entity_list(DLIList<SenseEntity*>& list,
      79                 :            :                                      DLIList<SenseEntity*>& removed);
      80                 :            :      //R CubitStatus
      81                 :            :      //R- CUBIT_SUCCESS/CUBIT_FAILURE
      82                 :            :      //I list
      83                 :            :      //I- New set of child SenseEntitys for this GroupingEntity.
      84                 :            :      //O removed
      85                 :            :      //O- List of child SenseEntitys removed from this GroupingEntity
      86                 :            :      //- Change/reorder child list.
      87                 :            :      //- It is an error for any input SenseEntity to have a parent 
      88                 :            :      //- GroupingEntity unless that parent GroupingEntity is this.
      89                 :            :    
      90                 :            :    
      91                 :            :    inline GroupingEntity* next();
      92                 :            :      //R GroupingEntity*
      93                 :            :      //R- A GroupingEntity pointer
      94                 :            :      //- This function returns a pointer to the GroupingEntity that is
      95                 :            :      //- a child of this one in the DAG. If it is the end of the line,
      96                 :            :      //- then a NULL pointer is returned.
      97                 :            :      
      98                 :            :     inline GroupingEntity* previous();
      99                 :            :      //R GroupingEntity*
     100                 :            :      //R- A GroupingEntity pointer
     101                 :            :      //- This function returns a pointer to the GroupingEntity that is
     102                 :            :      //- a child of this one in the DAG. If it is the end of the line,
     103                 :            :      //- then a NULL pointer is returned.
     104                 :            :    
     105                 :            :     inline BasicTopologyEntity* get_basic_topology_entity_ptr();
     106                 :            :      //R BasicTopologyEntity*
     107                 :            :      //R- A pointer to the BasicTopologyEntity which the current grouping
     108                 :            :      //R- entity is associated with.
     109                 :            :      //- This function returns a pointer to the BasicTopologyEntity which
     110                 :            :      //- the current sense entity is associated with.
     111                 :            :                  
     112                 :            :    CubitStatus add_sense_entity(SenseEntity *sense_entity_ptr,
     113                 :            :                                 SenseEntity *after_this = 0) ;
     114                 :            :      //R CubitStatus
     115                 :            :      //I senseEntityPtr
     116                 :            :      //I- The pointer to a SenseEntity which will be added to the 
     117                 :            :      //I- list of sense entities of the grouping entity.
     118                 :            :      //- This function is used to add a SenseEntity to the list of
     119                 :            :      //- sense entities of a grouping entity. If the input sense entity
     120                 :            :      //- is not the appropriate type, nothing is done and the function
     121                 :            :      //- returns CUBIT_FAILURE. If the sense entity is added successfully,
     122                 :            :      //- the function returns CUBIT_SUCCESS.
     123                 :            :      
     124                 :            :    CubitStatus remove_sense_entity(SenseEntity* sense_entity_ptr);
     125                 :            :    
     126                 :            :    void reverse_direction();  
     127                 :            :      // reverse order and sense of child sense entities
     128                 :            : 
     129                 :            :    virtual int get_parents( DLIList<TopologyEntity*>* list = 0 ) const;
     130                 :            :    virtual int get_children(DLIList<TopologyEntity*>* list = 0 ) const;
     131                 :            : 
     132                 :            : protected :
     133                 :            :    
     134                 :            :    virtual CubitBoolean query_append_parents( DLIList<TopologyEntity*>& list );
     135                 :            :    virtual CubitBoolean query_append_children(DLIList<TopologyEntity*>& list );
     136                 :            : 
     137                 :            :    virtual CubitStatus remove_child_link( TopologyEntity* child_ptr );
     138                 :            : 
     139                 :            :    CubitStatus disconnect_all_children( DLIList<TopologyEntity*>* children = 0 );
     140                 :            :    CubitStatus disconnect_all_parents( DLIList<TopologyEntity*>* parents = 0 );
     141                 :            :    
     142                 :            : private :
     143                 :            :    
     144                 :            :     // for use by BasicTopologyEntity only
     145                 :            :   friend class BasicTopologyEntity;
     146                 :            :   inline CubitStatus remove_from_list();
     147                 :            :   inline void set_basic_topology_entity_ptr( BasicTopologyEntity* );
     148                 :            :   inline CubitStatus insert_after(GroupingEntity* next);
     149                 :            :   inline CubitStatus insert_before(GroupingEntity* prev);
     150                 :            : 
     151                 :            :   BasicTopologyEntity* myParent;
     152                 :            :   GroupingEntity* nextInParent;
     153                 :            :   GroupingEntity* prevInParent;
     154                 :            :   SenseEntity* firstSenseEntity;
     155                 :            :   SenseEntity* lastSenseEntity;
     156                 :            :   
     157                 :            :   GroupingEntity( const GroupingEntity& );
     158                 :            :   void operator=( const GroupingEntity& );
     159                 :            : };
     160                 :            : 
     161                 :            : // ********** BEGIN HELPER CLASSES         **********
     162                 :            : // ********** END   HELPER CLASSES         **********
     163                 :            : 
     164                 :            : // ********** BEGIN INLINE FUNCTIONS       **********
     165                 :            : 
     166                 :      58215 : inline GroupingEntity::GroupingEntity()
     167                 :            :   : myParent(0), 
     168                 :            :     nextInParent(0),
     169                 :            :     prevInParent(0),
     170                 :            :     firstSenseEntity(0),
     171                 :      58215 :     lastSenseEntity(0)
     172                 :      58215 :   {}
     173                 :            : 
     174                 :      20425 : inline SenseEntity* GroupingEntity::get_first_sense_entity_ptr()
     175                 :      20425 :   { return firstSenseEntity; }
     176                 :            : 
     177                 :      20370 : inline SenseEntity* GroupingEntity::get_last_sense_entity_ptr()
     178                 :      20370 :   { return lastSenseEntity; }
     179                 :            :    
     180                 :     680112 : inline GroupingEntity* GroupingEntity::next()
     181                 :     680112 :   { return nextInParent; }
     182                 :            :    
     183                 :      34190 : inline GroupingEntity* GroupingEntity::previous()
     184                 :      34190 :   { return prevInParent; }
     185                 :            :    
     186                 :     190431 : inline BasicTopologyEntity* GroupingEntity::get_basic_topology_entity_ptr()
     187                 :     190431 :   { return myParent; }
     188                 :            :     
     189                 :      34190 : inline CubitStatus GroupingEntity::remove_from_list()
     190                 :            : {
     191         [ +  + ]:      34190 :   if (nextInParent)
     192                 :        545 :     nextInParent->prevInParent = prevInParent;
     193         [ +  + ]:      34190 :   if (prevInParent)
     194                 :        227 :     prevInParent->nextInParent = nextInParent;
     195                 :      34190 :   prevInParent = nextInParent = 0;
     196                 :      34190 :   return CUBIT_SUCCESS;
     197                 :            : }
     198                 :            : 
     199                 :       1184 : inline CubitStatus GroupingEntity::insert_after( GroupingEntity* next_ptr )
     200                 :            : {
     201                 :       1184 :   prevInParent = next_ptr;
     202                 :       1184 :   nextInParent = next_ptr->nextInParent;
     203         [ +  + ]:       1184 :   if (nextInParent)
     204                 :        192 :     nextInParent->prevInParent = this;
     205                 :       1184 :   next_ptr->nextInParent = this;
     206                 :       1184 :   return CUBIT_SUCCESS;
     207                 :            : }
     208                 :            : 
     209                 :        183 : inline CubitStatus GroupingEntity::insert_before( GroupingEntity* prev_ptr )
     210                 :            : {
     211                 :        183 :   nextInParent = prev_ptr;
     212                 :        183 :   prevInParent = prev_ptr->prevInParent;
     213         [ -  + ]:        183 :   if (prevInParent)
     214                 :          0 :     prevInParent->nextInParent = this;
     215                 :        183 :   prev_ptr->prevInParent = this;
     216                 :        183 :   return CUBIT_SUCCESS;
     217                 :            : }
     218                 :            : 
     219                 :      89689 : inline void GroupingEntity::set_basic_topology_entity_ptr( BasicTopologyEntity* bte_ptr )
     220                 :            : {
     221 [ +  + ][ -  + ]:      89689 :   assert(!myParent || !bte_ptr);
     222                 :      89689 :   myParent = bte_ptr;
     223                 :      89689 : }
     224                 :            : 
     225                 :            :  
     226                 :            : // ********** END INLINE FUNCTIONS         **********
     227                 :            : 
     228                 :            : // ********** BEGIN FRIEND FUNCTIONS       **********
     229                 :            : // ********** END FRIEND FUNCTIONS         **********
     230                 :            : 
     231                 :            : // ********** BEGIN EXTERN FUNCTIONS       **********
     232                 :            : // ********** END EXTERN FUNCTIONS         **********
     233                 :            : 
     234                 :            : #endif
     235                 :            : 

Generated by: LCOV version 1.11