Add finer engine tracing.
[tagua/yd.git] / src / engineinfo.h
blobcfe125e0d17f05113c385172f1bc8e85f2968649
1 /*
2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@gmail.com>
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"
18 #include "settings.h"
20 class Engine;
21 class UI;
23 struct EngineDetails {
24 enum EngineType {
25 XBoard,
26 UCI,
27 TaguaText,
28 TaguaDBUS,
29 GNUShogi,
30 Unknown
33 QString name;
34 QString path;
35 EngineType type;
36 QString workPath;
38 EngineDetails(const QString& name, const QString& path, const EngineType& type)
39 : name(name), path(path), type(type) { }
40 EngineDetails() { }
42 static QString typeName(EngineType t) {
43 switch (t) {
44 case XBoard:
45 return "xboard";
46 case UCI:
47 return "UCI";
48 case TaguaText:
49 return "tagua-text";
50 case TaguaDBUS:
51 return "tagua-dbus";
52 case GNUShogi:
53 return "gnushogi";
54 default:
55 return "unknown";
59 static EngineType typeFromName(const QString& name) {
60 if (name == "xboard")
61 return XBoard;
62 else if (name == "UCI")
63 return UCI;
64 else if (name == "tagua-text")
65 return TaguaText;
66 else if (name == "tagua-dbus")
67 return TaguaDBUS;
68 else if (name == "gnushogi")
69 return GNUShogi;
70 else return Unknown;
73 void load(Settings s);
74 void save(Settings s);
77 class EngineInfo : public QObject {
78 Q_OBJECT
79 EngineDetails m_details;
80 UI& m_ui;
81 EntityToken m_token[2];
82 protected:
83 virtual boost::shared_ptr<Engine> engine(int player);
84 void playAs(int player);
85 public:
86 EngineInfo(const EngineDetails& details, UI& ui);
87 void setWorkPath(const QString& wp) { m_details.workPath = wp; }
88 public Q_SLOTS:
89 void playAsWhite();
90 void playAsBlack();
91 // void analyze();
94 #endif // ENGINEINFO_H