OMSimulatorLib
The OMSimulator project is a FMI-based co-simulation environment that supports ordinary (i.e., non-delayed) and TLM connections.
ResultWriter.h
Go to the documentation of this file.
1 /*
2  * This file is part of OpenModelica.
3  *
4  * Copyright (c) 1998-CurrentYear, Open Source Modelica Consortium (OSMC),
5  * c/o Linköpings universitet, Department of Computer and Information Science,
6  * SE-58183 Linköping, Sweden.
7  *
8  * All rights reserved.
9  *
10  * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF GPL VERSION 3 LICENSE OR
11  * THIS OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.2.
12  * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES
13  * RECIPIENT'S ACCEPTANCE OF THE OSMC PUBLIC LICENSE OR THE GPL VERSION 3,
14  * ACCORDING TO RECIPIENTS CHOICE.
15  *
16  * The OpenModelica software and the Open Source Modelica
17  * Consortium (OSMC) Public License (OSMC-PL) are obtained
18  * from OSMC, either from the above address,
19  * from the URLs: http://www.ida.liu.se/projects/OpenModelica or
20  * http://www.openmodelica.org, and in the OpenModelica distribution.
21  * GNU version 3 is obtained from: http://www.gnu.org/copyleft/gpl.html.
22  *
23  * This program is distributed WITHOUT ANY WARRANTY; without
24  * even the implied warranty of MERCHANTABILITY or FITNESS
25  * FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY SET FORTH
26  * IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF OSMC-PL.
27  *
28  * See the full OSMC Public License conditions for more details.
29  *
30  */
31 
32 #ifndef _OMS_RESULTWRITER_H_
33 #define _OMS_RESULTWRITER_H_
34 
35 #include <string>
36 #include <vector>
37 
38 namespace oms
39 {
41  {
45  };
46 
48  {
49  double realValue;
50  int intValue;
51  bool boolValue;
52  };
53 
54  struct Signal
55  {
56  std::string name;
57  std::string description;
59  };
60 
61  struct Parameter
62  {
65  };
66 
68  {
69  public:
70  ResultWriter(unsigned int bufferSize);
71  virtual ~ResultWriter();
72 
73  unsigned int addSignal(const std::string& name, const std::string& description, SignalType_t type);
74  void addParameter(const std::string& name, const std::string& description, SignalType_t type, SignalValue_t value);
75 
76  bool create(const std::string& filename, double startTime, double stopTime);
77  void close();
78 
79  void updateSignal(unsigned int id, SignalValue_t value);
80  void emit(double time);
81 
82  private:
83  // Stop the compiler generating methods for copying the object
84  ResultWriter(ResultWriter const& copy); // Not Implemented
85  ResultWriter& operator=(ResultWriter const& copy); // Not Implemented
86 
87  protected:
88  virtual bool createFile(const std::string& filename, double startTime, double stopTime) = 0;
89  virtual void closeFile() = 0;
90  virtual void writeFile() = 0;
91 
92  std::vector<Signal> signals;
93  std::vector<Parameter> parameters;
94 
95  double* data_2;
96  unsigned int bufferSize;
97  unsigned int nEmits;
98  };
99 
100  class VoidWriter :
101  public ResultWriter
102  {
103  public:
104  VoidWriter(unsigned int bufferSize) :ResultWriter(bufferSize) {}
106 
107  protected:
108  bool createFile(const std::string& filename, double startTime, double stopTime) {return true;}
109  void closeFile() {}
110  void writeFile() {}
111  };
112 }
113 
114 #endif
unsigned int bufferSize
Definition: ResultWriter.h:96
double realValue
Definition: ResultWriter.h:49
void closeFile()
Definition: ResultWriter.h:109
Definition: ResultWriter.h:67
int intValue
Definition: ResultWriter.h:50
Definition: ResultWriter.h:54
bool createFile(const std::string &filename, double startTime, double stopTime)
Definition: ResultWriter.h:108
void writeFile()
Definition: ResultWriter.h:110
std::vector< Signal > signals
Definition: ResultWriter.h:92
double * data_2
Definition: ResultWriter.h:95
Definition: ResultWriter.h:42
Definition: ResultWriter.h:47
Signal signal
Definition: ResultWriter.h:63
bool boolValue
Definition: ResultWriter.h:51
SignalValue_t value
Definition: ResultWriter.h:64
Definition: ResultWriter.h:43
std::string description
Definition: ResultWriter.h:57
Definition: ResultWriter.h:100
Definition: BusConnector.h:15
SignalType_t
Definition: ResultWriter.h:40
SignalType_t type
Definition: ResultWriter.h:58
unsigned int nEmits
Definition: ResultWriter.h:97
~VoidWriter()
Definition: ResultWriter.h:105
std::vector< Parameter > parameters
Definition: ResultWriter.h:93
VoidWriter(unsigned int bufferSize)
Definition: ResultWriter.h:104
Definition: ResultWriter.h:61
Definition: ResultWriter.h:44
std::string name
Definition: ResultWriter.h:56