/// This file has been generated, if you wish to
/// modify it in a permanent way, please refer
/// to the script file : gen/generator_haskell.rb

#include <vector>
#include <string>
#include <stdlib.h>
#include "interface_c.hh"
typedef struct __internal__cxx__position {
  int ligne;
  int colonne;
} __internal__cxx__position;
typedef struct __internal__cxx__echantillon {
  case_type element1;
  case_type element2;
} __internal__cxx__echantillon;
typedef struct __internal__cxx__position_echantillon {
  __internal__cxx__position pos1;
  __internal__cxx__position pos2;
} __internal__cxx__position_echantillon;
typedef struct __internal__cxx__action_hist {
  action_type atype;
  __internal__cxx__position pos1;
  __internal__cxx__position pos2;
  int id_apprenti;
  case_type nouvelle_case;
} __internal__cxx__action_hist;
extern "C" erreur api_placer_echantillon(__internal__cxx__position pos1, __internal__cxx__position pos2);
extern "C" erreur api_transmuter(__internal__cxx__position pos);
extern "C" erreur api_catalyser(__internal__cxx__position pos, int id_apprenti, case_type terrain);
extern "C" erreur api_donner_echantillon(__internal__cxx__echantillon echantillon_donne);
extern "C" case_type api_type_case(__internal__cxx__position pos, int id_apprenti);
extern "C" bool api_est_vide(__internal__cxx__position pos, int id_apprenti);
extern "C" element_propriete api_propriete_case(__internal__cxx__position pos, int id_apprenti);
extern "C" element_propriete api_propriete_case_type(case_type ctype);
extern "C" int api_taille_region(__internal__cxx__position pos, int id_apprenti);
extern "C" std::vector<__internal__cxx__position> api_positions_region(__internal__cxx__position pos, int id_apprenti);
extern "C" bool api_placement_possible_echantillon(__internal__cxx__echantillon echantillon_a_placer, __internal__cxx__position pos1, __internal__cxx__position pos2, int id_apprenti);
extern "C" std::vector<__internal__cxx__position_echantillon> api_placements_possible_echantillon(__internal__cxx__echantillon echantillon_a_placer, int id_apprenti);
extern "C" std::vector<__internal__cxx__action_hist> api_historique(void);
extern "C" int api_moi(void);
extern "C" int api_adversaire(void);
extern "C" int api_score(int id_apprenti);
extern "C" int api_tour_actuel(void);
extern "C" bool api_annuler(void);
extern "C" int api_nombre_catalyseurs(void);
extern "C" __internal__cxx__echantillon api_echantillon_tour(void);
extern "C" bool api_a_pose_echantillon(void);
extern "C" bool api_a_donne_echantillon(void);
extern "C" int api_quantite_transmutation_or(int taille_region);
extern "C" int api_quantite_transmutation_catalyseur(int taille_region);
extern "C" int api_quantite_transmutation_catalyseur_or(int taille_region);
extern "C" __internal__cxx__echantillon api_echantillon_defaut_premier_tour(void);
extern "C" void api_afficher_etablis(void);
extern "C" void api_afficher_case_type(case_type v);
extern "C" void api_afficher_element_propriete(element_propriete v);
extern "C" void api_afficher_erreur(erreur v);
extern "C" void api_afficher_action_type(action_type v);
extern "C" void api_afficher_position(__internal__cxx__position v);
extern "C" void api_afficher_echantillon(__internal__cxx__echantillon v);
extern "C" void api_afficher_position_echantillon(__internal__cxx__position_echantillon v);
extern "C" void api_afficher_action_hist(__internal__cxx__action_hist v);
extern "C" void partie_init();
extern "C" void jouer_tour();
extern "C" void partie_fin();
