Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
filemanager.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 //=============================================================================
21 // File manager adapter
22 //=============================================================================
23 
24 #ifndef FILEMANAGER_H
25 #define FILEMANAGER_H
26 
27 #include <memory>
28 #include <fstream>
29 
42 
44 {
45 public:
47  FileManager() { mSingleton.reset(this); }
48  virtual ~FileManager() {}
49 
50 
51  static FileManager &getSingleton(); // Get singleton reference
52 
53  virtual bool open(std::ifstream &stream, // Open an input stream
54  const std::string &absolute,
55  std::ios_base::openmode mode = std::ios_base::in);
56 
57  virtual bool open(std::ofstream &stream, // Open an output stream
58  const std::string &absolute,
59  std::ios_base::openmode mode = std::ios_base::out);
60 
72 
73  virtual std::string getLogFilePath(const std::string &logname) const = 0;
74 
86 
87  virtual std::string getAlgorithmInformationFileContent (const std::string &algorithmId) const = 0;
88 
89 private:
90  static std::unique_ptr<FileManager> mSingleton;
91 };
92 
93 #endif // FILEMANAGER_H
virtual std::string getLogFilePath(const std::string &logname) const =0
Abstract function: Get the standard path for logfiles.
static FileManager & getSingleton()
FileManager::getSingleton: Get a reference to the singleton.
Definition: filemanager.cpp:47
static std::unique_ptr< FileManager > mSingleton
Singleton unique pointer.
Definition: filemanager.h:90
virtual std::string getAlgorithmInformationFileContent(const std::string &algorithmId) const =0
Abstract function: Get the file content for an algorithm.
virtual ~FileManager()
Virtual destructor.
Definition: filemanager.h:48
virtual bool open(std::ifstream &stream, const std::string &absolute, std::ios_base::openmode mode=std::ios_base::in)
Open an input stream.
Definition: filemanager.cpp:71
FileManager()
Constructor, setting the singleton pointer to its own instance.
Definition: filemanager.h:47
Abstract singleton adapter for opening files.
Definition: filemanager.h:43