NumeRe v1.1.4
NumeRe: Framework für Numerische Rechnungen
output.hpp
Go to the documentation of this file.
1/*****************************************************************************
2 NumeRe: Framework fuer Numerische Rechnungen
3 Copyright (C) 2014 Erik Haenel et al.
4
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 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>.
17******************************************************************************/
18
19
20#include <string>
21#include <ctime>
22
23#include "../ui/error.hpp"
24#include "filesystem.hpp"
25#include "../settings.hpp"
26#include "../version.h"
27#include "../utils/tools.hpp"
28
29#ifndef OUTPUT_HPP
30#define OUTPUT_HPP
31
32/*
33 * Headerdatei 'output.hpp' fuer die Class 'Output'
34 * --> Definiert zugleich das Interface <--
35 */
36extern const std::string sVersion; // String, der die Versionsnummmer beinhaelt;
37
38class Output : public FileSystem // Diese Klasse ist ein CHILD von FileSystem
39{
40 private:
41 std::string sFileName; // Dateiname fuer das erzeugte Datenfile. Default: Aufruf von generateFileName()
42 std::string sPluginName; // Speicherstelle, um den Namen des ausführenden Plugins auszulesen
43 std::string sCommentLine; // Speicherstelle, um eventuelle Kommentarzeilen zu setzen
44 std::string sPluginPrefix; // Speicherstelle, um den Prefix fuer den Default-Dateinamen zu setzen
45 bool bFile; // true, wenn in eine Datei geschrieben wird, false sonst
46 bool bFileOpen; // true, wenn eine Datei von der Klasse geoeffnet wurde
47 bool bCompact; // Kompakte-Ausgabe-Boolean
48 bool bSumBar;
49 bool bPrintTeX; // Ausgabe in eine TeX-Datei
51 std::ofstream file_out; // Ein Objekt eines Dateistreams
52 std::string getDate(bool bForFile); // Eine Methode, die das aktuelle Datum als String zurueckgibt.
53 std::string replaceTeXControls(const std::string& _sText);
54 //string ValidFileName(string _sFileName);// Eine Methode, die den Dateinamen auf Gueltigkeit prueft
55 public:
56 //--> Konstruktoren und Destruktor <--
57 Output(); // setzt bFile & bFileOpen = false und sFileName auf default
58 Output(bool bStatus, std::string sFile); // Erzeugt ggf. Datenfile ueber Aufruf von start().
59 // |-> Falls bStatus = false wird sFileName auf _default_ gesetzt und sFile ignoriert
60 ~Output(); // Schliesst Datenfile, wenn bFile == true und bFileOpen == true, sonst return 0;
61
62 //--> Methoden <--
63 void start(); // Oeffnet Datenfile, wenn bFile == true und bFileOpen == false, sonst return 0;
64 void end(); // Schliesst Datenfile, wenn bFile == true und bFileOpen == true, sonst return 0;
65 void setStatus(bool bStatus); // setzt den Boolean bFile. Wenn true -> false gesetzt wird, ruft dies die Methode end() auf.
66 bool isFile() const; // gibt den Wert von bFile zurueck
67 void setFileName(std::string sFile); // setzt den Dateinamen in sFileName
68 std::string getFileName() const; // gibt den Dateinamen aus sFileName zurueck
69 void generateFileName(); // generiert einen Dateinamen auf Basis der aktuellen Zeit.
70 void setPluginName(std::string _sPluginName);// Namen des Plugins in die Variable sPluginName schreiben
71 void setCommentLine(std::string _sCommentLine); // Setzt die Kommentarzeile
72 std::string getPluginName() const; // Gibt den Namen des Plugins zurueck
73 std::string getCommentLine() const; // Gibt den Inhalt der Variable sCommentLine zurueck
74 void reset(); // Setzt den Output auf die Default-Werte zurueck
75 void setPrefix(std::string _sPrefix); // setzt sPluginPrefix auf _sPrefix
76 std::string getPrefix() const; // gibt sPluginPrefix zurueck
77 void print_legal(); // Gibt ein paar Copyright-Infos in das Ziel
78 void setCompact(bool _bCompact); // setzt den Wert des Kompakte-Ausgabe-Booleans
79 inline bool isCompact() const
80 {return bCompact;}
81
82
83 /*
84 * Eine Art universelle Formatierungsfunktion: Bekommt als Uebergabe im Wesentlichen die bereits in einen string
85 * umgewandelten, aber unformatierten Tabelleneintraege mittels eines 2D-string-Arrays.
86 *
87 * Die Funktion sucht das laengste Element aus allen Tabelleneintraegen, addiert zwei Zeichen zu dieser Laenge
88 * und gleicht alle Eintraege durch Voranstellen der noetigen Anzahl an Leerstellen daran an.
89 *
90 * Zuletzt werden diese formatierten Eintraege zeilenweise an die Output-Klasse uebergeben, die sie entsprechend
91 * der Voreinstellung weiterverarbeitet.
92 */
93 void format(std::string** _sMatrix, long long int _nCol, long long int _nLine, const Settings& _option, bool bDontAsk = false, int nHeadLineCount = 1);
94 void print(std::string sOutput); // Zentrale Methode
95 // |-> Schreibt den String in das Ziel.
96 // |-> Prueft ggf., ob bFileOpen == true und ruft ggf. start() auf.
97 // |-> Falls nicht in das Datenfile geschrieben werden kann, wird eine Fehlermeldung
98 // in der Konsole angezeigt. Automatisch wird auch auf die Ausgabe ueber die
99 // Konsole gewechselt. Der String, der den Fehler ausgeloest hat, wird ebenfalls
100 // auf der Konsole ausgegeben.
101};
102
103#endif
This class implements the basic input/ output file system and provides functionalities to work with f...
Definition: filesystem.hpp:92
void print_legal()
Definition: output.cpp:230
std::string sCommentLine
Definition: output.hpp:43
void format(std::string **_sMatrix, long long int _nCol, long long int _nLine, const Settings &_option, bool bDontAsk=false, int nHeadLineCount=1)
Definition: output.cpp:403
std::string sPluginName
Definition: output.hpp:42
std::ofstream file_out
Definition: output.hpp:51
void start()
Definition: output.cpp:190
Output()
Definition: output.cpp:30
bool bPrintTeX
Definition: output.hpp:49
std::string getFileName() const
Definition: output.cpp:184
~Output()
Definition: output.cpp:54
std::string getPrefix() const
Definition: output.cpp:904
bool bPrintCSV
Definition: output.hpp:50
bool bFileOpen
Definition: output.hpp:46
std::string replaceTeXControls(const std::string &_sText)
Definition: output.cpp:94
void print(std::string sOutput)
Definition: output.cpp:277
void setPrefix(std::string _sPrefix)
Definition: output.cpp:897
void setPluginName(std::string _sPluginName)
Definition: output.cpp:204
bool bFile
Definition: output.hpp:45
bool isFile() const
Definition: output.cpp:147
void setStatus(bool bStatus)
Definition: output.cpp:65
std::string getCommentLine() const
Definition: output.cpp:224
std::string sFileName
Definition: output.hpp:41
bool isCompact() const
Definition: output.hpp:79
bool bCompact
Definition: output.hpp:47
void end()
Definition: output.cpp:264
void generateFileName()
Definition: output.cpp:336
void reset()
Definition: output.cpp:75
std::string getPluginName() const
Definition: output.cpp:218
void setCompact(bool _bCompact)
Definition: output.cpp:141
std::string getDate(bool bForFile)
Definition: output.cpp:356
void setCommentLine(std::string _sCommentLine)
Definition: output.cpp:211
std::string sPluginPrefix
Definition: output.hpp:44
bool bSumBar
Definition: output.hpp:48
void setFileName(std::string sFile)
Definition: output.cpp:153
This class manages the setting values of the internal (kernel) settings of this application.
Definition: settings.hpp:663
const std::string sVersion