void SignalProcessingMasterFitter::MultiFlowRegionalFitting ( int flow, bool last )
{
  if ( region_data->fitters_applied == TIME_TO_DO_MULTIFLOW_REGIONAL_FIT)
  {
    SetFittersIfNeeded();
    if ( IsFirstBlock ( flow ) )
    {
      RegionalFittingForInitialFlowBlock();
      region_data->fitters_applied = TIME_TO_DO_MULTIFLOW_FIT_ALL_WELLS;
    }
    else
    {
      RegionalFittingForLaterFlowBlock();
      region_data->fitters_applied = TIME_TO_DO_DOWNSTREAM;
    }
  }
}
Esempio n. 2
0
spv_result_t Function::RegisterBlock(uint32_t block_id, bool is_definition) {
  assert(
      declaration_type_ == FunctionDecl::kFunctionDeclDefinition &&
      "RegisterBlocks can only be called after declaration_type_ is defined");

  std::unordered_map<uint32_t, BasicBlock>::iterator inserted_block;
  bool success = false;
  tie(inserted_block, success) =
      blocks_.insert({block_id, BasicBlock(block_id)});
  if (is_definition) {  // new block definition
    assert(current_block_ == nullptr &&
           "Register Block can only be called when parsing a binary outside of "
           "a BasicBlock");

    undefined_blocks_.erase(block_id);
    current_block_ = &inserted_block->second;
    ordered_blocks_.push_back(current_block_);
    if (IsFirstBlock(block_id)) current_block_->set_reachable(true);
  } else if (success) {  // Block doesn't exsist but this is not a definition
    undefined_blocks_.insert(block_id);
  }

  return SPV_SUCCESS;
}