// PARAMS: IMPLEMENTATIONS
// IT'S TEMPLATE FOR CODE GENERATION PROCESS!

// This file contains code for player implementation choise.
// Generated code containing specific implementations names
// is included. 

//static data member templates are not implemented: 
void* implement_implementChoise = 0; 
template <class Observation, class Action>
class implementChoise {

 protected:

  implementChoise<Observation,Action>() {}

 public:

  static implementChoise<Observation,Action>* Instance() {
	// Singelton...

    if (!implement_implementChoise) 
      implement_implementChoise = (void*)
        new implementChoise<Observation,Action>();
    
    return  (implementChoise<Observation,Action>*)implement_implementChoise;
  }

	// Use generated code for specific implementation choise.
  PlayerImpBuilder<Observation,Action>* Choose_Impementation
    (char* playerKind) {

    cout << "Choose implementation!" << "\n";
    // GENERATED CODE - START
    !!IMPLEMENTATIONS!!
    // GENERATED CODE - END
    
    return 0;
  }

};


