Colobot
stdlib_public.h
1 /*
2  * This file is part of the Colobot: Gold Edition source code
3  * Copyright (C) 2001-2016, Daniel Roux, EPSITEC SA & TerranovaTeam
4  * http://epsitec.ch; http://colobot.info; http://github.com/colobot
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14  * See the GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see http://gnu.org/licenses
18  */
19 
20 #pragma once
21 
22 #include "CBot/stdlib/Compilation.h"
23 
24 #include <memory>
25 
26 namespace CBot
27 {
28 
29 class CBotFile
30 {
31 public:
32  virtual ~CBotFile() {}
33 
34  virtual bool Opened() = 0;
35  virtual bool Errored() = 0;
36  virtual bool IsEOF() = 0;
37 
38  virtual std::string ReadLine() = 0;
39  virtual void Write(const std::string& s) = 0;
40 };
41 
43 {
44 public:
45  virtual ~CBotFileAccessHandler() {}
46 
47  enum class OpenMode : char { Read = 'r', Write = 'w' };
48  virtual std::unique_ptr<CBotFile> OpenFile(const std::string& filename, OpenMode mode) = 0;
49  virtual bool DeleteFile(const std::string& filename) = 0;
50 };
51 
52 void SetFileAccessHandler(std::unique_ptr<CBotFileAccessHandler> fileHandler);
53 
54 // TODO: provide default implementation of CBotFileAccessHandler
55 
56 } // namespace CBot
Definition: stdlib_public.h:42
Definition: stdlib_public.h:29
CBot engine.
Definition: CBotCallMethode.cpp:28