Computer Chess Club Archives


Search

Terms

Messages

Subject: CWinboard.h

Author: Mathieu Pagé

Date: 06:32:39 03/16/04

Go up one level in this thread


#ifndef _CWINBOARD_H_
#define _CWINBOARD_H_

#include <string>
#include <vector>

namespace WinboardWrapper{

virtual enum EResult {cWhitesWin, cBlackWin, cDraw};
enum EVariant {cWildCastle, cNoCastle, cFisherRandom, cBugHouse, cCrazyHouse,
               cLosers,     cSuicide,  cGiveAway,     cTwoKings, cKriegspiel,
               cAtomic,     c3Check,   cUnknown};

std::vector <std::string> Tokenize(std::string s, char cDelimiteur);

class CWinboard
{
private:
   // Functions parsing winboard's commands
   void ParserProtover(std::vector<std::string> vecParams);
   void ParserAccepted(std::vector<std::string> vecParams);
   void ParserRejected(std::vector<std::string> vecParams);
   void ParserNew(std::vector<std::string> vecParams);
   void ParserVariant(std::vector<std::string> vecParams);
   void ParserRandom(std::vector<std::string> vecParams);
   void ParserForce(std::vector<std::string> vecParams);
   void ParserGo(std::vector<std::string> vecParams);
   void ParserPlayOther(std::vector<std::string> vecParams);
   void ParserWhite(std::vector<std::string> vecParams);
   void ParserBlack(std::vector<std::string> vecParams);
   void ParserLevel(std::vector<std::string> vecParams);
   void ParserSt(std::vector<std::string> vecParams);
   void ParserSd(std::vector<std::string> vecParams);
   void ParserTime(std::vector<std::string> vecParams);
   void ParserOtime(std::vector<std::string> vecParams);
   void ParserUserMove(std::vector<std::string> vecParams);
   void ParserMoveNow(std::vector<std::string> vecParams);
   void ParserPing(std::vector<std::string> vecParams);
   void ParserDraw(std::vector<std::string> vecParams);
   void ParserResult(std::vector<std::string> vecParams);
   void ParserSetBoard(std::vector<std::string> vecParams);
   void ParserEdit(std::vector<std::string> vecParams);
   void ParserHint(std::vector<std::string> vecParams);
   void ParserBk(std::vector<std::string> vecParams);
   void ParserUndo(std::vector<std::string> vecParams);
   void ParserRemove(std::vector<std::string> vecParams);
   void ParserHard(std::vector<std::string> vecParams);
   void ParserEasy(std::vector<std::string> vecParams);
   void ParserPost(std::vector<std::string> vecParams);
   void ParserNoPost(std::vector<std::string> vecParams);
   void ParserAnalyze(std::vector<std::string> vecParams);
   void ParserName(std::vector<std::string> vecParams);
   void ParserRating(std::vector<std::string> vecParams);
   void ParserIcs(std::vector<std::string> vecParams);
   void ParserComputer(std::vector<std::string> vecParams);
   void ParserPause(std::vector<std::string> vecParams);
   void ParserResume(std::vector<std::string> vecParams);
   void ParserPartner(std::vector<std::string> vecParams);
   void ParserPTell(std::vector<std::string> vecParams);
   void ParserHolding(std::vector<std::string> vecParams);
   void ParserExit(std::vector<std::string> vecParams);

protected:
   // Commands from xboard to the engine:
   virtual void protover(std::string strVersionNumber)
      {Error("Unknown command", "protover");};
   virtual void accepted(std::string strCommand)
      {Error("Unknown command", "accepted");};
   virtual void rejected(std::string strCommand)
      {Error("Unknown command", "rejected");};
   virtual void _new()
      {Error("Unknown command", "new");};
   virtual void variant(EVariant evrVariant)
      {Error("Unknown command", "variant");};
   virtual void random()
      {Error("Unknown command", "random");};
   virtual void force()
      {Error("Unknown command", "force");};
   virtual void go()
      {Error("Unknown command", "go");};
   virtual void playother()
      {Error("Unknown command", "playother");};
   virtual void white()
      {Error("Unknown command", "white");};
   virtual void black()
      {Error("Unknown command", "black");};
   virtual void level(int iMovesPerControl, int iSecondsPerControl, int
iIncrement)    {Error("Unknown command", "level");};
   virtual void st(int iSecondsPerMoves)
      {Error("Unknown command", "st");};
   virtual void sd(int iDepth)
      {Error("Unknown command", "sd");};
   virtual void time(int iCentiSeconds)
      {Error("Unknown command", "time");};
   virtual void otime(int iCentiSeconds)
      {Error("Unknown command", "otime");};
   virtual void usermove(std::string strMove)
      {Error("Unknown command", "usermove");};
   virtual void movenow()
      {Error("Unknown command", "?");};
   virtual void ping(int iPingNumber)
      {Error("Unknown command", "ping");};
   virtual void draw()
      {Error("Unknown command", "draw");};
   virtual void result(EResult ersResult, std::string strComment)
      {Error("Unknown command", "result");};
   virtual void setboard(std::string strFen)
      {Error("Unknown command", "setboard");};
   virtual void edit()
      {Error("Unknown command", "edit");};
   virtual void editCommand(std::string strCommand)
      {Error("Unknown command", strCommand);};
   virtual void hint()
      {Error("Unknown command", "hint");};
   virtual void bk()
      {Error("Unknown command", "bk");};
   virtual void undo()
      {Error("Unknown command", "undo");};
   virtual void remove()
      {Error("Unknown command", "remove");};
   virtual void hard()
      {Error("Unknown command", "hard");};
   virtual void easy()
      {Error("Unknown command", "easy");};
   virtual void post()
      {Error("Unknown command", "post");};
   virtual void nopost()
      {Error("Unknown command", "nopost");};
   virtual void analyze()
      {Error("Unknown command", "analyze");};
   virtual void name(std::string strName)
      {Error("Unknown command", "name");};
   virtual void rating(int iOwnRating, int iOpponentRating)
      {Error("Unknown command", "rating");};
   virtual void ics(std::string strHostName)
      {Error("Unknown command", "ics");};
   virtual void computer()
      {Error("Unknown command", "computer");};
   virtual void pause()
      {Error("Unknown command", "pause");};
   virtual void resume()
      {Error("Unknown command", "resume");};
   virtual void exit()
      {Error("Unknown command", "exit");};

   // BugHouse commands:
   virtual void partner(std::string strPartner)
      {Error("Unknown command", "partner");};
   virtual void NoPartner()
      {Error("Unknown command", "partner");};
   virtual void ptell(std::string strText)
      {Error("Unknown command", "ptell");};
   virtual void holding(std::string strWhite, std::string strBlack)
      {Error("Unknown command", "holding");};
   virtual void holding(std::string strWhite, std::string strBlack, char cColor,
char cPiece) {Error("Unknown command", "holdong");};

public:
   // Commands from the engine to xboard
   static void feature(bool ping,             bool playother,
                       bool san,              bool time,
                       bool draw,             bool sigint,
                       bool sigterm,          bool reuse,
                       bool analyze,          std::string myname,
                       std::string variants,  bool colors,
                       bool ics,              bool name,
                       bool pause);
   static void IllegalMove(std::string strMove, std::string strReason = "");
   static void Error(std::string strErrorType, std::string strCommand);
   static void Move(std::string strMove);
   static void Result(EResult ersResultat, std::string strComment);
   static void Resign();
   static void OfferDraw();
   static void TellOpponent(std::string strMessage);
   static void TellOthers(std::string strMessage);
   static void TellAll(std::string strMessage);
   static void TellUser(std::string strMessage);
   static void TellUserError(std::string strMessage);
   static void AskUser(std::string strRepTag, std::string strMessage);
   static void TellICS(std::string strMessage);
   static void TellICSNoAlias(std::string strMessage);
   static void ThinkingOutput(int iPly, int iScore, int iTime, int iNodes,
std::string strPV);
   static void Pong(int iPingNumber);

   void RunWinboardMode();
};

};

#endif // _CWINBOARD_H_



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.