/// 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__minerai {
  int resistance;
  int rendement;
} __internal__cxx__minerai;
typedef struct __internal__cxx__nain {
  __internal__cxx__position pos;
  int vie;
  int pa;
  int pm;
  bool accroche;
  int butin;
} __internal__cxx__nain;
typedef struct __internal__cxx__action_hist {
  action_type atype;
  int id_nain;
  direction dir;
  direction sens;
} __internal__cxx__action_hist;
extern "C" std::vector<direction> api_chemin(__internal__cxx__position pos1, __internal__cxx__position pos2);
extern "C" erreur api_deplacer(int id_nain, direction dir);
extern "C" erreur api_lacher(int id_nain);
extern "C" erreur api_agripper(int id_nain);
extern "C" erreur api_miner(int id_nain, direction dir);
extern "C" erreur api_tirer(int id_nain, direction dir_corde, direction sens);
extern "C" erreur api_poser_corde(int id_nain, direction dir);
extern "C" erreur api_debug_afficher_drapeau(__internal__cxx__position pos, debug_drapeau drapeau);
extern "C" case_type api_type_case(__internal__cxx__position pos);
extern "C" std::vector<__internal__cxx__position> api_liste_cordes(void);
extern "C" bool api_corde_sur_case(__internal__cxx__position pos);
extern "C" int api_nain_sur_case(__internal__cxx__position pos);
extern "C" __internal__cxx__nain api_info_nain(int id_joueur, int id_nain);
extern "C" std::vector<__internal__cxx__position> api_liste_minerais(void);
extern "C" __internal__cxx__minerai api_info_minerai(__internal__cxx__position pos);
extern "C" int api_cout_de_deplacement(int id_nain, direction dir);
extern "C" __internal__cxx__position api_position_taverne(int id_joueur);
extern "C" std::vector<__internal__cxx__action_hist> api_historique(void);
extern "C" int api_score(int id_joueur);
extern "C" int api_moi(void);
extern "C" int api_adversaire(void);
extern "C" bool api_annuler(void);
extern "C" int api_tour_actuel(void);
extern "C" void api_afficher_case_type(case_type v);
extern "C" void api_afficher_direction(direction v);
extern "C" void api_afficher_erreur(erreur v);
extern "C" void api_afficher_action_type(action_type v);
extern "C" void api_afficher_debug_drapeau(debug_drapeau v);
extern "C" void api_afficher_position(__internal__cxx__position v);
extern "C" void api_afficher_minerai(__internal__cxx__minerai v);
extern "C" void api_afficher_nain(__internal__cxx__nain 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();
