LCOV - code coverage report
Current view: top level - geom/virtual - CompositePoint.cpp (source / functions) Hit Total Coverage
Test: coverage_sk.info Lines: 1 115 0.9 %
Date: 2020-06-30 00:58:45 Functions: 2 14 14.3 %
Branches: 2 202 1.0 %

           Branch data     Line data    Source code
       1                 :            : //-------------------------------------------------------------------------
       2                 :            : // Filename      : CompositePoint.cpp
       3                 :            : //
       4                 :            : // Purpose       : Point decorator for composite topology
       5                 :            : //
       6                 :            : // Special Notes : 
       7                 :            : //
       8                 :            : // Creator       : Jason Kraftcheck
       9                 :            : //
      10                 :            : // Creation Date : 03/11/02
      11                 :            : //-------------------------------------------------------------------------
      12                 :            : 
      13                 :            : #include "CompositePoint.hpp"
      14                 :            : #include "CompositeEngine.hpp"
      15                 :            : #include "VirtualQueryEngine.hpp"
      16                 :            : 
      17                 :          0 : CompositePoint::CompositePoint( TBPoint* real_pt )
      18                 :          0 :   : HadBridgeRemoved(0), firstCurve(0), realPoint(real_pt), stitchNext(0)
      19                 :            : {
      20 [ #  # ][ #  # ]:          0 :   if( real_pt->owner() )
      21 [ #  # ][ #  # ]:          0 :     real_pt->owner()->swap_bridge( real_pt, this, false );
      22         [ #  # ]:          0 :   real_pt->owner(this);
      23                 :          0 : }
      24                 :            : 
      25         [ #  # ]:          0 : CompositePoint::~CompositePoint()
      26                 :            : {
      27                 :            :     // remove from all curves
      28         [ #  # ]:          0 :   while( firstCurve )
      29                 :            :   {
      30                 :          0 :     CompositeCurve* curve = firstCurve;
      31 [ #  # ][ #  # ]:          0 :     if( curve->start_point() == this )
      32         [ #  # ]:          0 :       curve->start_point(0);
      33 [ #  # ][ #  # ]:          0 :     if( curve->end_point() == this )
      34         [ #  # ]:          0 :       curve->end_point(0);
      35         [ #  # ]:          0 :     assert(firstCurve != curve);
      36                 :            :   }
      37                 :            : 
      38         [ #  # ]:          0 :   if( stitchNext )
      39                 :            :   {
      40                 :            :       // unmerge
      41         [ #  # ]:          0 :     unstitch_all();
      42                 :            :   }
      43                 :            :   
      44         [ #  # ]:          0 :   if (realPoint)
      45                 :            :   {
      46                 :            :       // update owner
      47 [ #  # ][ #  # ]:          0 :     assert(realPoint->owner() == this);
      48         [ #  # ]:          0 :     realPoint->owner(0);
      49 [ #  # ][ #  # ]:          0 :     if( owner() )  
      50 [ #  # ][ #  # ]:          0 :       owner()->swap_bridge( this, realPoint, false );
      51                 :            :     
      52                 :          0 :     realPoint = 0;
      53                 :            :   }
      54         [ #  # ]:          0 : }
      55                 :            : 
      56                 :          0 : void CompositePoint::unstitch_all()
      57                 :            : {
      58         [ #  # ]:          0 :   assert( !firstCurve );
      59         [ #  # ]:          0 :   while (stitchNext)
      60                 :            :   {
      61                 :          0 :     stitchNext->owner(0);
      62         [ #  # ]:          0 :     if (owner())
      63                 :          0 :       owner()->notify_copied( stitchNext, this );
      64                 :          0 :     stitchNext = stitchNext->stitchNext;
      65                 :            :   }
      66                 :          0 : }
      67                 :            : 
      68                 :            : 
      69                 :          0 : void CompositePoint::get_parents_virt( DLIList<TopologyBridge*>& list )
      70                 :            : {
      71         [ #  # ]:          0 :   DLIList<TopologyBridge*> point_parents;
      72         [ #  # ]:          0 :   realPoint->get_parents_virt( point_parents );
      73 [ #  # ][ #  # ]:          0 :   for( int i = point_parents.size(); i--; )
      74                 :            :   {
      75         [ #  # ]:          0 :     TopologyBridge* tb = point_parents.get_and_step();
      76 [ #  # ][ #  # ]:          0 :     if( CompositeCurve* curve = dynamic_cast<CompositeCurve*>(tb->owner()) )
                 [ #  # ]
      77                 :            :     {
      78 [ #  # ][ #  # ]:          0 :       if( ! dynamic_cast<HiddenEntitySet*>(curve->owner()) )
         [ #  # ][ #  # ]
      79         [ #  # ]:          0 :         list.append_unique( curve );
      80                 :            :     }
      81 [ #  # ][ #  # ]:          0 :     else if( ! dynamic_cast<HiddenEntitySet*>(tb->owner()) )
         [ #  # ][ #  # ]
      82         [ #  # ]:          0 :       list.append( tb );
      83                 :            :   }
      84                 :            : 
      85                 :            :     // get point-curves also
      86                 :          0 :   CompositeCurve* curve = 0;
      87 [ #  # ][ #  # ]:          0 :   while ((curve = next_curve(curve)))
      88 [ #  # ][ #  # ]:          0 :     if (curve->num_curves() == 0)
      89         [ #  # ]:          0 :       list.append(curve);
      90                 :            :   
      91         [ #  # ]:          0 :   if (stitchNext)
      92                 :            :   {
      93         [ #  # ]:          0 :     point_parents.clean_out();
      94         [ #  # ]:          0 :     stitchNext->get_parents_virt( point_parents );
      95         [ #  # ]:          0 :     point_parents.reset();
      96 [ #  # ][ #  # ]:          0 :     for (int j = point_parents.size(); j--; )
      97                 :            :     {
      98         [ #  # ]:          0 :       TopologyBridge* bridge = point_parents.get_and_step();
      99         [ #  # ]:          0 :       CompositeCurve* curv = dynamic_cast<CompositeCurve*>(bridge);
     100         [ #  # ]:          0 :       if (curv)
     101 [ #  # ][ #  # ]:          0 :         list.append_unique( curv->primary_stitched_curve() );
     102                 :            :       else
     103         [ #  # ]:          0 :         list.append_unique( bridge );
     104                 :            :     }
     105         [ #  # ]:          0 :   }
     106                 :          0 : }
     107                 :            : 
     108                 :          0 : void CompositePoint::get_children_virt( DLIList<TopologyBridge*>& )
     109                 :            : {
     110                 :          0 : }
     111                 :            : 
     112                 :            : 
     113                 :          0 : CubitStatus CompositePoint::remove_bridge( TopologyBridge* bridge )
     114                 :            : {
     115         [ #  # ]:          0 :   if( bridge->owner() != this  )
     116                 :            :   {
     117                 :          0 :     assert(0);
     118                 :            :     return CUBIT_FAILURE;
     119                 :            :   }
     120                 :            :   
     121         [ #  # ]:          0 :   if( bridge == realPoint )
     122                 :            :   {
     123                 :          0 :     realPoint = 0;
     124                 :            :   }
     125                 :            :   else
     126                 :            :   {
     127                 :          0 :     return CUBIT_FAILURE;
     128                 :            :   }
     129                 :            :   
     130                 :          0 :   bridge->owner(0);
     131                 :            :   
     132         [ #  # ]:          0 :   if (!realPoint)
     133                 :          0 :     CompositeEngine::instance().notify_deactivated(this);
     134                 :            : 
     135                 :          0 :   HadBridgeRemoved = 1;
     136                 :            : 
     137                 :          0 :   return CUBIT_SUCCESS;
     138                 :            : }
     139                 :            : 
     140                 :          0 : CubitStatus CompositePoint::swap_bridge( TopologyBridge* oldtb, 
     141                 :            :                                          TopologyBridge* newtb, 
     142                 :            :                                          bool )
     143                 :            : {
     144         [ #  # ]:          0 :   TBPoint* oldpt = dynamic_cast<TBPoint*>(oldtb);
     145         [ #  # ]:          0 :   TBPoint* newpt = dynamic_cast<TBPoint*>(newtb);
     146 [ #  # ][ #  # ]:          0 :   if( !(oldpt && newpt) || newpt->owner() )
         [ #  # ][ #  # ]
     147                 :          0 :     return CUBIT_FAILURE;
     148                 :            : 
     149         [ #  # ]:          0 :   assert(oldpt == realPoint );
     150                 :            : 
     151                 :          0 :   realPoint = newpt;
     152                 :            : 
     153                 :          0 :   newtb->owner(this);
     154                 :          0 :   oldtb->owner(0);
     155                 :          0 :   return CUBIT_SUCCESS;
     156                 :            : }
     157                 :            : 
     158                 :            : 
     159                 :          0 : void CompositePoint::print_debug_info( const char* prefix, bool brief ) const
     160                 :            : {
     161         [ #  # ]:          0 :   if( prefix == 0 ) prefix = "";
     162                 :            : 
     163                 :            : #ifdef TOPOLOGY_BRIDGE_IDS
     164                 :            :   PRINT_INFO("%sCompositePoint %d : %s %d\n", prefix, get_id(),
     165                 :            :     realPoint ? fix_type_name(typeid(*realPoint).name()) : "NO REAL POINT", 
     166                 :            :     realPoint ? realPoint->get_id() : 0 );
     167                 :            : #else  
     168 [ #  # ][ #  # ]:          0 :   PRINT_INFO("%sCompositePoint %p : %s %p\n", prefix, (void*)this,
                 [ #  # ]
     169                 :            :     realPoint ? fix_type_name(typeid(*realPoint).name()) : "NO REAL POINT", 
     170         [ #  # ]:          0 :     (void*)realPoint);
     171                 :            : #endif
     172                 :            :   
     173         [ #  # ]:          0 :   if ( !brief )
     174                 :            :   {  
     175         [ #  # ]:          0 :     CubitVector p = coordinates();
     176 [ #  # ][ #  # ]:          0 :     PRINT_INFO("%s  (%f,%f,%f)\n", prefix, p.x(), p.y(), p.z() );
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     177                 :            :   }
     178                 :          0 : }
     179                 :            : 
     180                 :          0 : void CompositePoint::notify_reversed( TopologyBridge* )
     181                 :          0 :   { }
     182                 :            : 
     183                 :          0 : CubitStatus CompositePoint::stitch( CompositePoint* point )
     184                 :            : {
     185 [ #  # ][ #  # ]:          0 :   if( !point || point->owner() != this->owner() )
                 [ #  # ]
     186                 :            :   {
     187                 :          0 :     assert(0);
     188                 :            :     return CUBIT_FAILURE;
     189                 :            :   }
     190                 :            :   
     191         [ #  # ]:          0 :   if( point->owner() )
     192                 :          0 :     point->owner()->notify_merged( point, this );
     193                 :            :   
     194         [ #  # ]:          0 :   if( point->owner() )
     195                 :          0 :     point->owner()->remove_bridge( point );
     196                 :            : 
     197                 :          0 :   point->owner( this );
     198                 :          0 :   CompositePoint* end = point;
     199         [ #  # ]:          0 :   while (end->stitchNext)
     200                 :            :   {
     201                 :          0 :     end->stitchNext->owner( this );
     202                 :          0 :     end = end->stitchNext;
     203                 :            :   }
     204                 :            :   
     205                 :          0 :   end->stitchNext = stitchNext;
     206                 :          0 :   stitchNext = end;
     207                 :            :   
     208                 :          0 :   return CUBIT_SUCCESS;
     209                 :            : }
     210                 :            : 
     211                 :          0 : void CompositePoint::get_stitched( DLIList<CompositePoint*>& result )
     212                 :            : {
     213 [ #  # ][ #  # ]:          0 :   CompositePoint* pt = dynamic_cast<CompositePoint*>(owner());
     214         [ #  # ]:          0 :   if (!pt)
     215                 :          0 :     pt = this;
     216         [ #  # ]:          0 :   while (pt)
     217                 :            :   {
     218         [ #  # ]:          0 :     result.append(pt);
     219                 :          0 :     pt = pt->stitchNext;
     220                 :            :   }
     221                 :          0 : }
     222                 :            : 
     223                 :          0 : GeometryQueryEngine* CompositePoint::get_geometry_query_engine() const
     224 [ +  - ][ +  - ]:       6364 : { return VirtualQueryEngine::instance(); }

Generated by: LCOV version 1.11