Show
Ignore:
Timestamp:
12/12/07 18:00:42 (1 year ago)
Author:
cneumann
Message:

added: generic interface
changed: factory functions return RefPtr?

The unittests don't pass right now, because of the change
to the factory functions, which leads to containers
being immediately destroyed as they are not assigned to
a RefPtr?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Carsten_PtrWork2/Source/System/Cluster/Window/MultiDisplay/OSGMultiDisplayWindowBase.cpp

    r1020 r1032  
    102102*/ 
    103103 
    104  
     104     
    105105void MultiDisplayWindowBase::classDescInserter(TypeObject &oType) 
    106106{ 
    107107    FieldDescriptionBase *pDesc = NULL; 
    108  
    109108 
    110109    pDesc = new SFUInt32::Description( 
     
    112111        "hServers", 
    113112        "Number of horizontal servers\n", 
    114         HServersFieldId, HServersFieldMask, 
     113        HServersFieldId, 
     114        HServersFieldMask, 
    115115        false, 
    116116        Field::SFDefaultFlags, 
    117117        static_cast<FieldEditMethodSig>(&MultiDisplayWindowBase::editHandleHServers), 
    118         static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleHServers)); 
    119  
    120     oType.addInitialDesc(pDesc); 
    121  
     118        static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleHServers ) ); 
     119         
     120        oType.addInitialDesc(pDesc); 
     121         
     122         
    122123    pDesc = new SFUInt32::Description( 
    123124        SFUInt32::getClassType(), 
    124125        "vServers", 
    125126        "Number of vertical servers\n", 
    126         VServersFieldId, VServersFieldMask, 
     127        VServersFieldId, 
     128        VServersFieldMask, 
    127129        false, 
    128130        Field::SFDefaultFlags, 
    129131        static_cast<FieldEditMethodSig>(&MultiDisplayWindowBase::editHandleVServers), 
    130         static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleVServers)); 
    131  
    132     oType.addInitialDesc(pDesc); 
    133  
     132        static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleVServers ) ); 
     133         
     134        oType.addInitialDesc(pDesc); 
     135         
     136         
    134137    pDesc = new SFBool::Description( 
    135138        SFBool::getClassType(), 
    136139        "manageClientViewports", 
    137140        "If true, duplicate all viewports into the client window\n", 
    138         ManageClientViewportsFieldId, ManageClientViewportsFieldMask, 
     141        ManageClientViewportsFieldId, 
     142        ManageClientViewportsFieldMask, 
    139143        false, 
    140144        Field::SFDefaultFlags, 
    141145        static_cast<FieldEditMethodSig>(&MultiDisplayWindowBase::editHandleManageClientViewports), 
    142         static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleManageClientViewports)); 
    143  
    144     oType.addInitialDesc(pDesc); 
    145  
     146        static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleManageClientViewports ) ); 
     147         
     148        oType.addInitialDesc(pDesc); 
     149         
     150         
    146151    pDesc = new SFInt32::Description( 
    147152        SFInt32::getClassType(), 
    148153        "xOverlap", 
    149154        "Horizontal overlap\n", 
    150         XOverlapFieldId, XOverlapFieldMask, 
     155        XOverlapFieldId, 
     156        XOverlapFieldMask, 
    151157        false, 
    152158        Field::SFDefaultFlags, 
    153159        static_cast<FieldEditMethodSig>(&MultiDisplayWindowBase::editHandleXOverlap), 
    154         static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleXOverlap)); 
    155  
    156     oType.addInitialDesc(pDesc); 
    157  
     160        static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleXOverlap ) ); 
     161         
     162        oType.addInitialDesc(pDesc); 
     163         
     164         
    158165    pDesc = new SFInt32::Description( 
    159166        SFInt32::getClassType(), 
    160167        "yOverlap", 
    161168        "Vertical overlap\n", 
    162         YOverlapFieldId, YOverlapFieldMask, 
     169        YOverlapFieldId, 
     170        YOverlapFieldMask, 
    163171        false, 
    164172        Field::SFDefaultFlags, 
    165173        static_cast<FieldEditMethodSig>(&MultiDisplayWindowBase::editHandleYOverlap), 
    166         static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleYOverlap)); 
    167  
    168     oType.addInitialDesc(pDesc); 
    169 
    170  
     174        static_cast<FieldGetMethodSig >(&MultiDisplayWindowBase::getHandleYOverlap ) ); 
     175         
     176        oType.addInitialDesc(pDesc); 
     177         
     178         
     179
    171180 
    172181MultiDisplayWindowBase::TypeObject MultiDisplayWindowBase::_type( 
     
    245254    "Cluster rendering configuration for multible displays\n" 
    246255    ); 
    247  
     256     
    248257/*------------------------------ get -----------------------------------*/ 
    249258 
     
    353362 
    354363//! create a new instance of the class 
    355 MultiDisplayWindowPtr MultiDisplayWindowBase::create(void) 
    356 
    357     MultiDisplayWindowPtr fc; 
     364MultiDisplayWindowBase::ObjRefPtr 
     365MultiDisplayWindowBase::create(void) 
     366
     367    ObjRefPtr pFC; 
    358368 
    359369    if(getClassType().getPrototype() != NullFC) 
    360370    { 
    361         fc = dynamic_cast<MultiDisplayWindow::ObjPtr>( 
    362             getClassType().getPrototype()-> shallowCopy()); 
    363     } 
    364  
    365     return fc
     371        pFC = boost::dynamic_pointer_cast<MultiDisplayWindow>( 
     372            getClassType().getPrototype()->shallowCopy()); 
     373    } 
     374 
     375    return pFC
    366376} 
    367377 
     
    376386} 
    377387 
    378 FieldContainerPtr MultiDisplayWindowBase::shallowCopy(void) const 
    379 
    380     MultiDisplayWindowPtr returnValue; 
     388FieldContainerRefPtr 
     389MultiDisplayWindowBase::shallowCopy(void) const 
     390
     391    ObjPtr returnValue; 
    381392 
    382393    newPtr(returnValue, dynamic_cast<const MultiDisplayWindow *>(this)); 
    383394 
    384     return returnValue
     395    return FieldContainerRefPtr(returnValue)
    385396} 
    386397