#include <gugr_planesweep.h>
Public Methods | |
segnode (int left, int right, segnode *parent) | |
~segnode () | |
void * | operator new (size_t s) |
void | operator delete (void *p, size_t s) |
void | insert (int beg, int end, segment *seg) |
void | remove (int beg, int end, segment *seg) |
void | leaves_to_array (int *nL, Ptr< segnode *> *L) |
Public Attributes | |
int | m_il |
int | m_ir |
segnode * | m_left |
segnode * | m_right |
segnode * | m_parent |
RefMap< segment > | m_segs |
|
Definition at line 272 of file gugr_planesweep.h. References m_il, m_ir, and segnode(). Referenced by segnode().
|
|
Definition at line 287 of file gugr_planesweep.h. References m_segs.
|
|
Definition at line 305 of file gugr_planesweep.h. References gugr::compare_pointer_to_pointer(), m_il, m_ir, m_segs, and gul::ndebug.
00306 { 00307 gul::Assert<gul::InternalError>( ndebug || (beg != end) ); 00308 00309 if( (beg <= m_il) && (m_ir <= end) ) 00310 { 00311 int side; 00312 RefMap<segment>::Node node,node1; 00313 00314 side = m_segs.SearchNode( seg, 00315 (int (*)(segment *, segment *))compare_pointer_to_pointer, &node ); 00316 if( side == 0 ) throw InternalError(); 00317 00318 node1 = m_segs.NewNode(seg); 00319 00320 m_segs.InsertNode( node1, node, side ); 00321 } 00322 else 00323 { 00324 if( beg < (m_il + m_ir)/2 ) 00325 m_left->insert( beg, end, seg ); 00326 if( end > (m_il + m_ir)/2 ) 00327 m_right->insert( beg, end, seg ); 00328 } 00329 } |
|
Definition at line 352 of file gugr_planesweep.h.
|
|
Definition at line 301 of file gugr_planesweep.h. References gust::PoolFree().
00302 { 00303 if( p != 0 ) PoolFree( p, s ); 00304 } |
|
Definition at line 294 of file gugr_planesweep.h. References gust::PoolAlloc().
00295 { 00296 size_t dummy; 00297 void *p = PoolAlloc( s, &dummy ); 00298 if( p == NULL ) throw PoolAllocError(); 00299 return(p); 00300 } |
|
Definition at line 330 of file gugr_planesweep.h. References gugr::compare_pointer_to_pointer(), m_il, m_ir, and m_segs.
00331 { 00332 if( (beg <= m_il) && (m_ir <= end) ) 00333 { 00334 int side; 00335 RefMap<segment>::Node node; 00336 00337 side = m_segs.SearchNode( seg, 00338 (int (*)(segment *, segment *))compare_pointer_to_pointer, &node ); 00339 if( side != 0 ) throw InternalError(); 00340 00341 m_segs.RemoveNode( node ); 00342 m_segs.FreeNode( node ); 00343 } 00344 else 00345 { 00346 if( beg < (m_il + m_ir)/2 ) 00347 m_left->remove( beg, end, seg ); 00348 if( end > (m_il + m_ir)/2 ) 00349 m_right->remove( beg, end, seg ); 00350 } 00351 } |
|
Definition at line 263 of file gugr_planesweep.h. |
|
Definition at line 264 of file gugr_planesweep.h. |
|
Definition at line 266 of file gugr_planesweep.h. |
|
Definition at line 268 of file gugr_planesweep.h. |
|
Definition at line 267 of file gugr_planesweep.h. |
|
Definition at line 270 of file gugr_planesweep.h. |