src/vcfr.cpp
// Two implementations of ProcessSubgame().  One if you have a VCFRState object to work from,
// one if you don't.
Two implementations of ProcessSubgame().  One if you have a VCFRState object to work from,
one if you don't.
Two implementations of ProcessSubgame () . One if you have a VCFRState object to work from one if you don ' t .
shared_ptr<double []> VCFR::ProcessSubgame(Node *p0_node, Node *p1_node, int gbd, 
					   const VCFRState &pred_state) {
  VCFRState state(pred_state.P(), pred_state.OppProbs(), pred_state.GetHandTree(),
		  pred_state.ActionSequence());
  int st = p0_node->Street();
  SetStreetBuckets(st, gbd, &state);
  return Process(p0_node, p1_node, gbd, &state, st);
}
shared_ptr < double [ ] > VCFR :: ProcessSubgame ( Node * p0_node , Node * p1_node , int gbd , const VCFRState & pred_state ) { VCFRState state ( pred_state . P ( ) , pred_state . OppProbs ( ) , pred_state . GetHandTree ( ) , pred_state . ActionSequence ( ) ) ; int st = p0_node -> Street ( ) ; SetStreetBuckets ( st , gbd , & state ) ; return Process ( p0_node , p1_node , gbd , & state , st ) ; }
Two implementations of ProcessSubgame().
Two implementations of ProcessSubgame () .
// It's important to create a new state object, I think.  In the case of multithreading, we don't // want multiple threads modifying the same state object.