Show
Ignore:
Timestamp:
04/04/08 00:28:08 (5 months ago)
Author:
vossg
Message:

added: cluster and mt local fieldcontainer infrastructure

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/System/Cluster/Window/SortLast/OSGParallelComposerBase.cpp

    r1096 r1098  
    143143    "NULL", 
    144144    0, 
    145     (PrototypeCreateF) &ParallelComposerBase::createEmpty
     145    (PrototypeCreateF) &ParallelComposerBase::createEmptyLocal
    146146    ParallelComposer::initMethod, 
    147147    ParallelComposer::exitMethod, 
     
    350350} 
    351351 
     352//! create a new instance of the class 
     353ParallelComposerTransitPtr ParallelComposerBase::createLocal(BitVector bFlags) 
     354{ 
     355    ParallelComposerTransitPtr fc; 
     356 
     357    if(getClassType().getPrototype() != NullFC) 
     358    { 
     359        FieldContainerTransitPtr tmpPtr = 
     360            getClassType().getPrototype()-> shallowCopyLocal(bFlags); 
     361 
     362        fc = dynamic_pointer_cast<ParallelComposer>(tmpPtr); 
     363    } 
     364 
     365    return fc; 
     366} 
     367 
    352368//! create an empty new instance of the class, do not copy the prototype 
    353369ParallelComposerPtr ParallelComposerBase::createEmpty(void) 
     
    355371    ParallelComposerPtr returnValue; 
    356372 
    357     newPtr<ParallelComposer>(returnValue); 
     373    newPtr<ParallelComposer>(returnValue, Thread::getCurrentLocalFlags()); 
     374 
     375    returnValue->_pFieldFlags->_bNamespaceMask &=  
     376        ~Thread::getCurrentLocalFlags();  
     377 
     378    return returnValue; 
     379
     380 
     381ParallelComposerPtr ParallelComposerBase::createEmptyLocal(BitVector bFlags) 
     382
     383    ParallelComposerPtr returnValue; 
     384 
     385    newPtr<ParallelComposer>(returnValue, bFlags); 
     386 
     387    returnValue->_pFieldFlags->_bNamespaceMask &= ~bFlags; 
    358388 
    359389    return returnValue; 
     
    364394    ParallelComposerPtr tmpPtr; 
    365395 
    366     newPtr(tmpPtr, dynamic_cast<const ParallelComposer *>(this)); 
     396    newPtr(tmpPtr,  
     397           dynamic_cast<const ParallelComposer *>(this),  
     398           Thread::getCurrentLocalFlags()); 
     399 
     400    tmpPtr->_pFieldFlags->_bNamespaceMask &= ~Thread::getCurrentLocalFlags(); 
    367401 
    368402    FieldContainerTransitPtr returnValue(tmpPtr); 
     403 
     404    return returnValue; 
     405} 
     406 
     407FieldContainerTransitPtr ParallelComposerBase::shallowCopyLocal( 
     408    BitVector bFlags) const 
     409{ 
     410    ParallelComposerPtr tmpPtr; 
     411 
     412    newPtr(tmpPtr, dynamic_cast<const ParallelComposer *>(this), bFlags); 
     413 
     414    FieldContainerTransitPtr returnValue(tmpPtr); 
     415 
     416    tmpPtr->_pFieldFlags->_bNamespaceMask &= ~bFlags; 
    369417 
    370418    return returnValue;