LCOV - code coverage report
Current view: top level - geom/cgm - SenseEntity.hpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 48 55 87.3 %
Date: 2020-06-30 00:58:45 Functions: 14 15 93.3 %
Branches: 11 14 78.6 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : SenseEntity.hpp
       3                 :            : //
       4                 :            : // Purpose       : This class is the base class of all sense entities such,
       5                 :            : //                 as CoVolume, CoFace, CoEdge, and CoVertex.
       6                 :            : //
       7                 :            : // Special Notes : This is a pure virtual class.
       8                 :            : //
       9                 :            : // Creator       : Xuechen Liu 
      10                 :            : //
      11                 :            : // Creation Date : 07/11/96
      12                 :            : //
      13                 :            : // Owner         : Malcolm J. Panthaki
      14                 :            : //-------------------------------------------------------------------------
      15                 :            : 
      16                 :            : #ifndef SENSE_ENTITY_HPP
      17                 :            : #define SENSE_ENTITY_HPP
      18                 :            : 
      19                 :            : // ********** BEGIN STANDARD INCLUDES      **********
      20                 :            : // ********** END STANDARD INCLUDES        **********
      21                 :            : 
      22                 :            : // ********** BEGIN CUBIT INCLUDES         **********
      23                 :            : #include "CubitDefines.h"
      24                 :            : #include "TopologyEntity.hpp"
      25                 :            : #include "CubitObservable.hpp"
      26                 :            : 
      27                 :            : // ********** END CUBIT INCLUDES           **********
      28                 :            : 
      29                 :            : // ********** BEGIN MACROS DEFINITIONS     **********
      30                 :            : // ********** END MACROS DEFINITIONS       **********
      31                 :            : 
      32                 :            : // ********** BEGIN FORWARD DECLARATIONS   **********
      33                 :            : class BasicTopologyEntity ;
      34                 :            : class GroupingEntity;
      35                 :            : template <class X> class DLIList ;
      36                 :            : // ********** END FORWARD DECLARATIONS     **********
      37                 :            : 
      38                 :            : class CUBIT_GEOM_EXPORT  SenseEntity : public TopologyEntity,
      39                 :            :                     public CubitObservable
      40                 :            : {
      41                 :            :   public :
      42                 :            :   
      43                 :            :   inline SenseEntity();
      44                 :            :    
      45                 :            :   virtual ~SenseEntity();
      46                 :            : 
      47                 :            :   inline BasicTopologyEntity* get_basic_topology_entity_ptr() ;
      48                 :            :      //R BasicTopologyEntity*
      49                 :            :      //R- A pointer to the BasicTopologyEntity which the current sense
      50                 :            :      //R- entity is associated with.
      51                 :            :      //- This function returns a pointer to the BasicTopologyEntity which
      52                 :            :      //- the current sense entity is associated with.
      53                 :            :                  
      54                 :            :         inline GroupingEntity* get_grouping_entity_ptr();
      55                 :            :           //R GroupingEntity*
      56                 :            :                 //R- A pointer to the parent GroupingEntity.
      57                 :            : 
      58                 :            :   BasicTopologyEntity* get_parent_basic_topology_entity_ptr();
      59                 :            :    
      60                 :            :   CubitStatus attach_basic_topology_entity(BasicTopologyEntity* basicTopologyEntityPtr) ;
      61                 :            :      //R CubitStatus
      62                 :            :      //R- CUBIT_SUCCESS/FAILURE
      63                 :            :      //I basicTopologyEntityPtr
      64                 :            :      //I- The pointer to a BasicTopologyEntity which will be attached as
      65                 :            :      //I- a BasicTopologyEntity of this SenseEntity.
      66                 :            :      //- This function is used to attach a BasicTopologyEntity to this 
      67                 :            :      //- SenseEntity. The operation can fail if the BTE is not the
      68                 :            :      //- appropriate type. In that case the function returns
      69                 :            :      //- CUBIT_FAILURE. If the attachment is done successfully, the function
      70                 :            :      //- returns CUBIT_SUCCESS.
      71                 :            :      
      72                 :            :    CubitStatus switch_basic_topology_entity(BasicTopologyEntity* new_bte );
      73                 :            :     //- Change the BasicTopologyEntity attached to this SenseEntity
      74                 :            :     //- to the passed BTE.  This is used by unmerge.
      75                 :            :    
      76                 :            :    inline void set_sense(CubitSense sense) ;
      77                 :            :      //R void 
      78                 :            :      //I sense
      79                 :            :      //I- The sense to be set.
      80                 :            :      //- This function sets the sense of the SenseEntity.
      81                 :            :      
      82                 :            :    void reverse_sense();
      83                 :            :      //- Reverse the sense of this SenseEntity.
      84                 :            :    
      85                 :            :    inline CubitSense get_sense() const ;
      86                 :            :      //R CubitSense
      87                 :            :      //R- The sense of the sense entity - CUBIT_FORWARD/REVERSED.
      88                 :            :      //- This function returns the sense of the SenseEntity.
      89                 :            :    
      90                 :            :    inline SenseEntity* next();
      91                 :            :      //R SenseEntity*
      92                 :            :      //R- A SenseEntity pointer
      93                 :            :      //- This function returns a pointer to the SenseEntity that is
      94                 :            :      //- a child of this one in the DAG. If it is the end of the line,
      95                 :            :      //- then a NULL pointer is returned.
      96                 :            :    
      97                 :            :    inline SenseEntity* previous();
      98                 :            :      //R SenseEntity*
      99                 :            :      //R- A SenseEntity pointer
     100                 :            :      //- This function returns a pointer to the SenseEntity that is
     101                 :            :      //- a "parent" of this one in the DAG. If this SenseEntity is
     102                 :            :      //- already at the beginning of the list, then a NULL pointer is 
     103                 :            :      //- returned.
     104                 :            :    
     105                 :            :    inline SenseEntity* next_on_bte();
     106                 :            :     //R SenseEntity*
     107                 :            :     //R- The next sense entity in the linked of list of 
     108                 :            :     //R- sense entities associated with the child bte.
     109                 :            :    
     110                 :            :    virtual int get_parents( DLIList<TopologyEntity*>* list = 0 ) const;
     111                 :            :    virtual int get_children( DLIList<TopologyEntity*>* list = 0 ) const;
     112                 :            :    
     113                 :            :    
     114                 :            :   protected :
     115                 :            :    
     116                 :            :    virtual CubitBoolean query_append_parents( DLIList<TopologyEntity*>& list );
     117                 :            :    virtual CubitBoolean query_append_children(DLIList<TopologyEntity*>& list );
     118                 :            :    
     119                 :            :    virtual CubitStatus remove_child_link( TopologyEntity* );
     120                 :            :    
     121                 :            :    CubitStatus disconnect_all_children( DLIList<TopologyEntity*>* children = 0 );
     122                 :            :    CubitStatus disconnect_all_parents( DLIList<TopologyEntity*>* parents = 0 );
     123                 :            :    
     124                 :            :    private :  
     125                 :            :    
     126                 :            :     // functions for use by GroupingEntity only
     127                 :            :    friend class GroupingEntity;
     128                 :            :    inline CubitStatus gpe_insert_after (SenseEntity* prev_ptr);
     129                 :            :    inline CubitStatus gpe_insert_before(SenseEntity* next_ptr);
     130                 :            :    inline CubitStatus gpe_remove();
     131                 :            :    inline CubitStatus set_grouping_entity_ptr(GroupingEntity* gpe_ptr);
     132                 :            :    inline void swap_gpe_list_ptrs();
     133                 :            :    
     134                 :            :     // functions for use by BasicTopologyEntity only
     135                 :            :    friend class BasicTopologyEntity;
     136                 :            :    inline SenseEntity* set_bte_next(SenseEntity* next_ptr);
     137                 :            :    inline CubitStatus set_basic_topology_entity_ptr(BasicTopologyEntity* bte_ptr);
     138                 :            :    
     139                 :            :    CubitSense mySense;
     140                 :            :    
     141                 :            :    GroupingEntity* myParent;
     142                 :            :    SenseEntity* nextInParent;
     143                 :            :    SenseEntity* prevInParent;
     144                 :            :    
     145                 :            :    BasicTopologyEntity* myChild;
     146                 :            :    SenseEntity* nextInChild;
     147                 :            :    
     148                 :            :    SenseEntity( const SenseEntity& );
     149                 :            :    void operator=( const SenseEntity& );
     150                 :            : };
     151                 :            : 
     152                 :            : 
     153                 :     158312 : SenseEntity::SenseEntity()
     154                 :            :   : mySense(CUBIT_FORWARD),
     155                 :            :     myParent(0), 
     156                 :            :     nextInParent(0),
     157                 :            :     prevInParent(0),
     158                 :            :     myChild(0),
     159         [ +  - ]:     158312 :     nextInChild(0)
     160                 :     158312 :   {}
     161                 :            : 
     162                 :     411568 : BasicTopologyEntity* SenseEntity::get_basic_topology_entity_ptr() 
     163                 :     411568 :   { return myChild; }
     164                 :            : 
     165                 :     428897 : GroupingEntity* SenseEntity::get_grouping_entity_ptr()
     166                 :     428897 :   { return myParent; }
     167                 :            : 
     168                 :      41858 : void SenseEntity::set_sense(CubitSense sense)
     169                 :      41858 :   { mySense = sense; }
     170                 :            :   
     171                 :      43110 : CubitSense SenseEntity::get_sense() const 
     172                 :      43110 :   { return mySense; }
     173                 :            : 
     174                 :    2006638 : SenseEntity* SenseEntity::next()
     175                 :    2006638 :   { return nextInParent; }
     176                 :            : 
     177                 :     107419 : SenseEntity* SenseEntity::previous()
     178                 :     107419 :   { return prevInParent; }
     179                 :            : 
     180                 :     425869 : SenseEntity* SenseEntity::next_on_bte()
     181                 :     425869 :   { return nextInChild; }
     182                 :            :    
     183                 :     100837 : CubitStatus SenseEntity::gpe_insert_after(SenseEntity* prev_ptr)
     184                 :            : {
     185                 :     100837 :   nextInParent = prev_ptr->nextInParent;
     186         [ +  + ]:     100837 :   if (nextInParent)
     187                 :       2522 :     nextInParent->prevInParent = this;
     188                 :     100837 :   prevInParent = prev_ptr;
     189                 :     100837 :   prev_ptr->nextInParent = this;
     190                 :     100837 :   return CUBIT_SUCCESS;
     191                 :            : }  
     192                 :            :    
     193                 :        438 : CubitStatus SenseEntity::gpe_insert_before(SenseEntity* next_ptr)
     194                 :            : {
     195                 :        438 :   prevInParent = next_ptr->prevInParent;
     196         [ -  + ]:        438 :   if (prevInParent)
     197                 :          0 :     prevInParent->nextInParent = this;
     198                 :        438 :   nextInParent = next_ptr;
     199                 :        438 :   next_ptr->prevInParent = this;
     200                 :        438 :   return CUBIT_SUCCESS;
     201                 :            : }  
     202                 :            : 
     203                 :      99114 : CubitStatus SenseEntity::gpe_remove()
     204                 :            : {
     205         [ +  + ]:      99114 :   if (nextInParent)
     206                 :      62197 :     nextInParent->prevInParent = prevInParent;
     207         [ +  + ]:      99114 :   if (prevInParent)
     208                 :       2567 :     prevInParent->nextInParent = nextInParent;
     209                 :      99114 :   prevInParent = nextInParent = 0;
     210                 :      99114 :   return CUBIT_SUCCESS;
     211                 :            : }
     212                 :            : 
     213                 :          0 : void SenseEntity::swap_gpe_list_ptrs()
     214                 :            : {
     215                 :          0 :   SenseEntity* tmp = nextInParent;
     216                 :          0 :   nextInParent = prevInParent;
     217                 :          0 :   prevInParent = tmp;
     218                 :          0 : }
     219                 :            : 
     220                 :     256248 : CubitStatus SenseEntity::set_grouping_entity_ptr(GroupingEntity* gpe_ptr)
     221                 :            : {
     222                 :     256248 :   myParent = gpe_ptr;
     223                 :     256248 :   return CUBIT_SUCCESS;
     224                 :            : }
     225                 :            : 
     226                 :     199427 : SenseEntity* SenseEntity::set_bte_next(SenseEntity* next_ptr)
     227                 :            : {
     228                 :     199427 :   SenseEntity* old_val = nextInChild;
     229                 :     199427 :   nextInChild = next_ptr;
     230                 :     199427 :   return old_val;
     231                 :            : }
     232                 :            : 
     233                 :     261176 : CubitStatus SenseEntity::set_basic_topology_entity_ptr(
     234                 :            :                                   BasicTopologyEntity* bte_ptr)
     235                 :            : {
     236 [ +  + ][ -  + ]:     261176 :   if (myChild && bte_ptr) 
     237                 :          0 :     { assert(0); return CUBIT_FAILURE; }
     238                 :            :     
     239                 :     261176 :   myChild = bte_ptr;
     240                 :     261176 :   return CUBIT_SUCCESS;
     241                 :            : }
     242                 :            : 
     243                 :            : 
     244                 :            : // ********** BEGIN HELPER CLASSES         **********
     245                 :            : // ********** END   HELPER CLASSES         **********
     246                 :            : 
     247                 :            : // ********** BEGIN INLINE FUNCTIONS       **********
     248                 :            : // ********** END INLINE FUNCTIONS         **********
     249                 :            : 
     250                 :            : // ********** BEGIN FRIEND FUNCTIONS       **********
     251                 :            : // ********** END FRIEND FUNCTIONS         **********
     252                 :            : 
     253                 :            : // ********** BEGIN EXTERN FUNCTIONS       **********
     254                 :            : // ********** END EXTERN FUNCTIONS         **********
     255                 :            : 
     256                 :            : 
     257                 :            : #endif
     258                 :            : 
     259                 :            : 

Generated by: LCOV version 1.11