GNUShogi engine.
[tagua/yd.git] / src / engineinfo.h
blob163d5dad63d23da77318e38c8e6f928aa19cfc36
1 /*
2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@sns.it>
3 (c) 2006 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9 */
11 #ifndef ENGINEINFO_H
12 #define ENGINEINFO_H
14 #include <QString>
15 #include <QObject>
16 #include <boost/shared_ptr.hpp>
17 #include "controllers/entitytoken.h"
19 class Engine;
20 class UI;
22 struct EngineDetails {
23 enum EngineType {
24 XBoard,
25 UCI,
26 TaguaText,
27 TaguaDBUS,
28 GNUShogi,
29 Unknown
32 QString name;
33 QString path;
34 EngineType type;
35 QString workPath;
37 EngineDetails(const QString& name, const QString& path, const EngineType& type)
38 : name(name), path(path), type(type) { }
39 EngineDetails() { }
41 static QString typeName(EngineType t) {
42 switch (t) {
43 case XBoard:
44 return "xboard";
45 case UCI:
46 return "UCI";
47 case TaguaText:
48 return "tagua-text";
49 case TaguaDBUS:
50 return "tagua-dbus";
51 case GNUShogi:
52 return "gnushogi";
53 default:
54 return "unknown";
58 static EngineType typeFromName(const QString& name) {
59 if (name == "xboard")
60 return XBoard;
61 else if (name == "UCI")
62 return UCI;
63 else if (name == "tagua-text")
64 return TaguaText;
65 else if (name == "tagua-dbus")
66 return TaguaDBUS;
67 else if (name == "gnushogi")
68 return GNUShogi;
69 else return Unknown;
73 class EngineInfo : public QObject {
74 Q_OBJECT
75 EngineDetails m_details;
76 UI& m_ui;
77 EntityToken m_token;
78 protected:
79 virtual boost::shared_ptr<Engine> engine();
80 public:
81 EngineInfo(const EngineDetails& details, UI& ui);
82 void setWorkPath(const QString& wp) { m_details.workPath = wp; }
83 public Q_SLOTS:
84 void playAsWhite();
85 void playAsBlack();
86 void analyze();
89 #endif // ENGINEINFO_H