Show
Ignore:
Timestamp:
04/02/08 14:18:07 (8 months ago)
Author:
cneumann
Message:

replaced pointer field implementation
split FieldContainer/Fields? directory into Base and Handle subdir

Status: - ref counting seems to work (mt, cluster)

  • new OSB loader works (well, the unittest does)
  • VRML loader is deactivated
  • get/edit handle for dynamic (pointer) fields missing
  • need to remove some more old files - they get moved in this commit
  • generated (i.e. base) code in following commit
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Carsten_PtrWork2/Source/System/FieldContainer/Base/OSGReferenceCountTest.cpp

    r1070 r1072  
    7070    OSG::UInt32 gi1 = grp1->getId(); 
    7171     
    72     CHECK_EQUAL(0, nrp0->getRefCount()        ); 
    73     CHECK_EQUAL(1, nrp0->getExternalRefCount()); 
     72    CHECK_EQUAL(1, nrp0->getRefCount()        ); 
    7473    CHECK_EQUAL(0, nrp0->getWeakRefCount()    ); 
    7574     
    76     CHECK_EQUAL(0, nrp1->getRefCount()        ); 
    77     CHECK_EQUAL(1, nrp1->getExternalRefCount()); 
     75    CHECK_EQUAL(1, nrp1->getRefCount()        ); 
    7876    CHECK_EQUAL(0, nrp1->getWeakRefCount()    ); 
    7977     
    80     CHECK_EQUAL(0, grp0->getRefCount()        ); 
    81     CHECK_EQUAL(1, grp0->getExternalRefCount()); 
     78    CHECK_EQUAL(1, grp0->getRefCount()        ); 
    8279    CHECK_EQUAL(0, grp0->getWeakRefCount()    ); 
    8380     
    84     CHECK_EQUAL(0, grp1->getRefCount()        ); 
    85     CHECK_EQUAL(1, grp1->getExternalRefCount()); 
     81    CHECK_EQUAL(1, grp1->getRefCount()        ); 
    8682    CHECK_EQUAL(0, grp1->getWeakRefCount()    ); 
    87      
    88     OSG::commitChanges(); 
    8983     
    9084    // link nodes 
     
    9488    nrp1->setCore(grp1); 
    9589     
    96     CHECK_EQUAL(0, nrp0->getRefCount()        ); 
    97     CHECK_EQUAL(1, nrp0->getExternalRefCount()); 
     90    OSG::commitChanges(); 
     91     
     92    CHECK_EQUAL(1, nrp0->getRefCount()        ); 
    9893    CHECK_EQUAL(2, nrp0->getWeakRefCount()    ); 
    9994     
    100     CHECK_EQUAL(1, nrp1->getRefCount()        ); 
    101     CHECK_EQUAL(1, nrp1->getExternalRefCount()); 
     95    CHECK_EQUAL(2, nrp1->getRefCount()        ); 
    10296    CHECK_EQUAL(1, nrp1->getWeakRefCount()    ); 
    10397     
    104     CHECK_EQUAL(1, grp0->getRefCount()        ); 
    105     CHECK_EQUAL(1, grp0->getExternalRefCount()); 
     98    CHECK_EQUAL(2, grp0->getRefCount()        ); 
    10699    CHECK_EQUAL(0, grp0->getWeakRefCount()    ); 
    107100     
    108     CHECK_EQUAL(1, grp1->getRefCount()        ); 
    109     CHECK_EQUAL(1, grp1->getExternalRefCount()); 
     101    CHECK_EQUAL(2, grp1->getRefCount()        ); 
    110102    CHECK_EQUAL(0, grp1->getWeakRefCount()    ); 
    111103 
     
    124116    grp0 = NullFC; 
    125117    grp1 = NullFC; 
     118     
     119    OSG::commitChanges(); 
    126120     
    127121    // all containers must be gone 
     
    135129TEST(RefPtrReuse) 
    136130{ 
     131    std::cout << "TEST::RefPtrReuse START" << std::endl; 
     132 
    137133    // Still basic case, but use fewer ref ptrs 
    138134    // 
     
    158154    nrp1->setCore(grp); 
    159155     
     156    CHECK_EQUAL(2, np1->getRefCount()        ); 
     157    CHECK_EQUAL(1, np1->getWeakRefCount()    ); 
     158     
    160159    nrp1 = OSG::Node::create(); 
    161160     
     
    166165    nrp1->setCore (grp ); 
    167166     
    168     CHECK_EQUAL(0, np0->getRefCount()        ); 
    169     CHECK_EQUAL(1, np0->getExternalRefCount()); 
     167    CHECK_EQUAL(1, np0->getRefCount()        ); 
    170168    CHECK_EQUAL(3, np0->getWeakRefCount()    ); 
    171169     
    172170    CHECK_EQUAL(1, np1->getRefCount()        ); 
    173     CHECK_EQUAL(0, np1->getExternalRefCount()); 
    174171    CHECK_EQUAL(1, np1->getWeakRefCount()    ); 
    175172     
    176     CHECK_EQUAL(1, np2->getRefCount()        ); 
    177     CHECK_EQUAL(1, np2->getExternalRefCount()); 
     173    CHECK_EQUAL(2, np2->getRefCount()        ); 
    178174    CHECK_EQUAL(1, np2->getWeakRefCount()    ); 
    179175     
    180     CHECK_EQUAL(3, gp0->getRefCount()        ); 
    181     CHECK_EQUAL(1, gp0->getExternalRefCount()); 
     176    CHECK_EQUAL(4, gp0->getRefCount()        ); 
    182177    CHECK_EQUAL(0, gp0->getWeakRefCount()    ); 
    183178     
     
    187182    grp  = NullFC; 
    188183     
    189     std::cerr <<   "nrp0->getRefCount() "         << nrp0->getRefCount() 
    190               << "\nnrp0->getExternalRefCount() " << nrp0->getExternalRefCount() 
    191               << "\nnrp0->getWeakRefCount() "     << nrp0->getWeakRefCount() 
    192               << std::endl; 
     184    OSG::commitChanges(); 
    193185     
    194186    // all containers must still exist 
     
    199191     
    200192    nrp0 = NullFC; 
    201         
    202     std::cerr <<   "gp0->getRefCount() "         << gp0->getRefCount() 
    203               << "\ngp0->getExternalRefCount() " << gp0->getExternalRefCount() 
    204               << "\ngp0->getWeakRefCount() "     << gp0->getWeakRefCount() 
    205               << std::endl; 
    206     std::cerr <<   "np1->getRefCount() "         << np1->getRefCount() 
    207               << "\nnp1->getExternalRefCount() " << np1->getExternalRefCount() 
    208               << "\nnp1->getWeakRefCount() "     << np1->getWeakRefCount() 
    209               << std::endl; 
     193     
     194    OSG::commitChanges(); 
    210195     
    211196    // all containers must be gone 
     
    215200    CHECK_EQUAL(OSG::FieldContainerPtr(NullFC), OSG::FieldContainerFactory::the()->getContainer(ni2)); 
    216201     
     202    std::cout << "TEST::RefPtrReuse STOP" << std::endl; 
    217203} // RefPtrReuse 
    218204 
     
    239225    OSG::UInt32 gi0 = grp0->getId(); 
    240226         
    241     CHECK_EQUAL(0, nrp0->getRefCount()        ); 
    242     CHECK_EQUAL(1, nrp0->getExternalRefCount()); 
     227    CHECK_EQUAL(1, nrp0->getRefCount()        ); 
    243228    CHECK_EQUAL(0, nrp0->getWeakRefCount()    ); 
    244229     
    245     CHECK_EQUAL(0, nrp1->getRefCount()        ); 
    246     CHECK_EQUAL(1, nrp1->getExternalRefCount()); 
     230    CHECK_EQUAL(1, nrp1->getRefCount()        ); 
    247231    CHECK_EQUAL(0, nrp1->getWeakRefCount()    ); 
    248232     
    249     CHECK_EQUAL(0, grp0->getRefCount()        ); 
    250     CHECK_EQUAL(1, grp0->getExternalRefCount()); 
     233    CHECK_EQUAL(1, grp0->getRefCount()        ); 
    251234    CHECK_EQUAL(0, grp0->getWeakRefCount()    ); 
    252235     
     
    257240    nrp0->addChild(nrp1); 
    258241     
    259     CHECK_EQUAL(0, np0->getRefCount()        ); 
    260     CHECK_EQUAL(1, np0->getExternalRefCount()); 
     242    CHECK_EQUAL(1, np0->getRefCount()        ); 
    261243    CHECK_EQUAL(1, np0->getWeakRefCount()    ); 
    262244     
    263     CHECK_EQUAL(1, np1->getRefCount()        ); 
    264     CHECK_EQUAL(1, np1->getExternalRefCount()); 
     245    CHECK_EQUAL(2, np1->getRefCount()        ); 
    265246    CHECK_EQUAL(0, np1->getWeakRefCount()    ); 
    266247     
     
    274255    nrp0->setCore(gp0); 
    275256     
    276     CHECK_EQUAL(0, np0->getRefCount()        ); 
    277     CHECK_EQUAL(1, np0->getExternalRefCount()); 
     257    CHECK_EQUAL(1, np0->getRefCount()        ); 
    278258    CHECK_EQUAL(2, np0->getWeakRefCount()    ); 
    279259     
    280     CHECK_EQUAL(1, gp0->getRefCount()        ); 
    281     CHECK_EQUAL(1, gp0->getExternalRefCount()); 
     260    CHECK_EQUAL(2, gp0->getRefCount()        ); 
    282261    CHECK_EQUAL(0, gp0->getWeakRefCount()    ); 
    283262     
     
    291270    nrp1->setCore(gp0); 
    292271     
    293     CHECK_EQUAL(1, np1->getRefCount()        ); 
    294     CHECK_EQUAL(1, np1->getExternalRefCount()); 
     272    CHECK_EQUAL(2, np1->getRefCount()        ); 
    295273    CHECK_EQUAL(1, np1->getWeakRefCount()    ); 
    296274     
    297     CHECK_EQUAL(2, gp0->getRefCount()        ); 
    298     CHECK_EQUAL(1, gp0->getExternalRefCount()); 
     275    CHECK_EQUAL(3, gp0->getRefCount()        ); 
    299276    CHECK_EQUAL(0, gp0->getWeakRefCount()    ); 
    300277     
     
    307284     
    308285    grp0 = NullFC; 
     286     
     287    OSG::commitChanges(); 
    309288     
    310289    // all containers must still exist 
     
    313292    CHECK_EQUAL(np1, OSG::FieldContainerFactory::the()->getContainer(ni1)); 
    314293    CHECK_EQUAL(2, gp0->getRefCount()        ); 
    315     CHECK_EQUAL(0, gp0->getExternalRefCount()); 
    316294    CHECK_EQUAL(0, gp0->getWeakRefCount()    ); 
    317295     
    318296    nrp1 = NullFC; 
     297     
     298    OSG::commitChanges(); 
    319299     
    320300    // all containers must still exist 
     
    323303    CHECK_EQUAL(np1, OSG::FieldContainerFactory::the()->getContainer(ni1)); 
    324304    CHECK_EQUAL(2, gp0->getRefCount()        ); 
    325     CHECK_EQUAL(0, gp0->getExternalRefCount()); 
    326305    CHECK_EQUAL(0, gp0->getWeakRefCount()    ); 
    327306    CHECK_EQUAL(1, np1->getRefCount()        ); 
    328     CHECK_EQUAL(0, np1->getExternalRefCount()); 
    329307    CHECK_EQUAL(1, np1->getWeakRefCount()    ); 
    330308     
    331309    nrp0 = NullFC; 
     310     
     311    OSG::commitChanges(); 
    332312     
    333313    // all containers must be gone 
     
    382362    nrp3->setCore(grp0); 
    383363     
    384     CHECK_EQUAL(0, nrp0->getRefCount()        ); 
    385     CHECK_EQUAL(1, nrp0->getExternalRefCount()); 
     364    CHECK_EQUAL(1, nrp0->getRefCount()        ); 
    386365    CHECK_EQUAL(3, nrp0->getWeakRefCount()    ); 
    387366     
    388     CHECK_EQUAL(1, nrp1->getRefCount()        ); 
    389     CHECK_EQUAL(1, nrp1->getExternalRefCount()); 
     367    CHECK_EQUAL(2, nrp1->getRefCount()        ); 
    390368    CHECK_EQUAL(2, nrp1->getWeakRefCount()    ); 
    391369     
    392     CHECK_EQUAL(1, nrp2->getRefCount()        ); 
    393     CHECK_EQUAL(1, nrp2->getExternalRefCount()); 
     370    CHECK_EQUAL(2, nrp2->getRefCount()        ); 
    394371    CHECK_EQUAL(1, nrp2->getWeakRefCount()    ); 
    395372     
    396     CHECK_EQUAL(1, nrp3->getRefCount()        ); 
    397     CHECK_EQUAL(1, nrp3->getExternalRefCount()); 
     373    CHECK_EQUAL(2, nrp3->getRefCount()        ); 
    398374    CHECK_EQUAL(1, nrp3->getWeakRefCount()    ); 
    399375     
    400     CHECK_EQUAL(2, grp0->getRefCount()        ); 
    401     CHECK_EQUAL(1, grp0->getExternalRefCount()); 
     376    CHECK_EQUAL(3, grp0->getRefCount()        ); 
    402377    CHECK_EQUAL(0, grp0->getWeakRefCount()    ); 
    403378     
    404     CHECK_EQUAL(2, grp1->getRefCount()        ); 
    405     CHECK_EQUAL(1, grp1->getExternalRefCount()); 
     379    CHECK_EQUAL(3, grp1->getRefCount()        ); 
    406380    CHECK_EQUAL(0, grp1->getWeakRefCount()    ); 
    407381     
     
    415389    grp0 = NullFC; 
    416390    grp1 = NullFC; 
     391     
     392    OSG::commitChanges(); 
    417393     
    418394    // all containers must be gone 
     
    428404TEST(Remove) 
    429405{ 
     406    std::cerr << "ReferenceCountTests::Remove" << std::endl; 
     407 
    430408    // Test removal of objects 
    431409     
     
    491469    CHECK_EQUAL(nrp0, nrp1->getParent()     ); 
    492470     
     471    CHECK_EQUAL(1, nrp0->getRefCount()        ); 
     472    CHECK_EQUAL(1, nrp0->getWeakRefCount()    ); 
     473     
     474    CHECK_EQUAL(2, nrp1->getRefCount()        ); 
     475    CHECK_EQUAL(0, nrp1->getWeakRefCount()    ); 
     476     
    493477    // add same child to different node 
    494478    nrp2->addChild(nrp1); 
     
    501485    CHECK_EQUAL(0, nrp0->getNChildren()); 
    502486     
     487    CHECK_EQUAL(1, nrp0->getRefCount()        ); 
     488    CHECK_EQUAL(0, nrp0->getWeakRefCount()    ); 
     489     
     490    CHECK_EQUAL(1, nrp2->getRefCount()        ); 
     491    CHECK_EQUAL(1, nrp2->getWeakRefCount()    ); 
     492     
     493    CHECK_EQUAL(2, nrp1->getRefCount()        ); 
     494    CHECK_EQUAL(0, nrp1->getWeakRefCount()    ); 
     495     
    503496} // MoveChild 
    504497