예제 #1
0
 ValueGenerator::ComputeState::~ComputeState()
 {
   if ( m_valueTransform->m_operator->takesSharedValue() )
   {
     RC::ConstHandle<ValueProducer> sharedValueProducer = m_valueTransform->m_shared;
     sharedValueProducer->getValueDesc()->disposeData( &m_sharedData[0] );
   }
 }
예제 #2
0
 ValueGenerator::ComputeState::ComputeState( RC::ConstHandle<ValueGenerator> const &valueTransform )
   : ValueProducer::ComputeState( valueTransform )
   , m_valueTransform( valueTransform )
 {
   if ( m_valueTransform->m_operator->takesSharedValue() )
   {
     RC::ConstHandle<ValueProducer> sharedValueProducer = m_valueTransform->m_shared;
     m_sharedData.resize( sharedValueProducer->getValueDesc()->getAllocSize(), 0 );
     sharedValueProducer->createComputeState()->produce( &m_sharedData[0] );
   }
 }
예제 #3
0
 ValueMap::ComputeState::ComputeState( RC::ConstHandle<ValueMap> const &valueMap )
   : ValueProducer::ComputeState( valueMap )
   , m_inputComputeState( valueMap->m_input->createComputeState() )
   , m_inputDesc( valueMap->getValueDesc() )
   , m_operator( valueMap->m_operator )
   , m_shared( valueMap->m_shared )
 {
   if ( m_operator->takesSharedValue() )
   {
     m_sharedData.resize( m_shared->getValueDesc()->getAllocSize(), 0 );
     m_shared->createComputeState()->produce( &m_sharedData[0] );
   }
 }
예제 #4
0
 ValueMap::ValueMap(
   RC::ConstHandle<ValueProducer> const &input,
   RC::ConstHandle<ValueIOOperator> const &operator_,
   RC::ConstHandle<ValueProducer> const &shared
   )
   : m_input( input )
   , m_operator( operator_ )
   , m_shared( shared )
 {
   RC::ConstHandle<RT::Desc> inputValueDesc = input->getValueDesc();
   if ( !inputValueDesc )
     throw Exception("input is invalid");
   RC::ConstHandle<RT::Desc> operatorInputDesc = operator_->getInputDesc();
   if ( !operatorInputDesc )
     throw Exception("operator is invalid");
   if ( !operatorInputDesc->isEquivalentTo( inputValueDesc ) )
     throw Exception(
       "input value type ("
       + _(inputValueDesc->getUserName())
       + ") is not equivalent to value map operator input type ("
       + _(operatorInputDesc->getUserName()) + ")"
       );
   RC::ConstHandle<RT::Desc> operatorSharedDesc = operator_->getSharedDesc();
   if ( operatorSharedDesc )
   {
     RC::ConstHandle<RT::Desc> sharedValueDesc = shared->getValueDesc();
     if ( !sharedValueDesc )
       throw Exception( "operator requires a shared value but no shared value producer is provided" );
     if ( !sharedValueDesc->isEquivalentTo( operatorSharedDesc ) )
       throw Exception(
         "shared value type ("
         + _(sharedValueDesc->getUserName())
         + ") is not equivalent to value map operator shared type ("
         + _(operatorSharedDesc->getUserName()) + ")"
         );
   }
 }