gem5  v20.1.0.0
text.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2020 Arm Limited
3  * All rights reserved.
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2004-2005 The Regents of The University of Michigan
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  */
40 
41 #ifndef __BASE_STATS_TEXT_HH__
42 #define __BASE_STATS_TEXT_HH__
43 
44 #include <iosfwd>
45 #include <stack>
46 #include <string>
47 
48 #include "base/stats/output.hh"
49 #include "base/stats/types.hh"
50 #include "base/output.hh"
51 
52 namespace Stats {
53 
54 class Text : public Output
55 {
56  protected:
57  bool mystream;
58  std::ostream *stream;
59 
60  // Object/group path
61  std::stack<std::string> path;
62 
63  protected:
64  bool noOutput(const Info &info);
65 
66  public:
68  bool spaces;
69 
70  public:
71  Text();
72  Text(std::ostream &stream);
73  Text(const std::string &file);
74  ~Text();
75 
76  void open(std::ostream &stream);
77  void open(const std::string &file);
78  std::string statName(const std::string &name) const;
79 
80  // Implement Visit
81  void visit(const ScalarInfo &info) override;
82  void visit(const VectorInfo &info) override;
83  void visit(const DistInfo &info) override;
84  void visit(const VectorDistInfo &info) override;
85  void visit(const Vector2dInfo &info) override;
86  void visit(const FormulaInfo &info) override;
87  void visit(const SparseHistInfo &info) override;
88 
89  // Group handling
90  void beginGroup(const char *name) override;
91  void endGroup() override;
92 
93  // Implement Output
94  bool valid() const override;
95  void begin() override;
96  void end() override;
97 };
98 
99 std::string ValueToString(Result value, int precision);
100 
101 Output *initText(const std::string &filename, bool desc, bool spaces);
102 
103 } // namespace Stats
104 
105 #endif // __BASE_STATS_TEXT_HH__
types.hh
Stats::Text::begin
void begin() override
Definition: text.cc:152
Stats::Text::spaces
bool spaces
Definition: text.hh:68
Stats::initText
Output * initText(const string &filename, bool desc, bool spaces)
Definition: text.cc:817
Stats::VectorInfo
Definition: info.hh:156
Stats::Text::stream
std::ostream * stream
Definition: text.hh:58
Stats::Vector2dInfo
Definition: info.hh:218
Stats::Text::Text
Text()
Definition: text.cc:97
Stats::Text::valid
bool valid() const override
Definition: text.cc:146
output.hh
Stats::Text::open
void open(std::ostream &stream)
Definition: text.cc:122
Stats::VectorDistInfo
Definition: info.hh:200
Stats::DistInfo
Definition: info.hh:193
Stats::Text::visit
void visit(const ScalarInfo &info) override
Definition: text.cc:582
Stats::Text::~Text
~Text()
Definition: text.cc:113
Stats::Text::endGroup
void endGroup() override
Definition: text.cc:184
Stats::Text
Definition: text.hh:54
Stats::SparseHistInfo
Definition: info.hh:251
Stats::Output
Definition: output.hh:58
Stats::Text::mystream
bool mystream
Definition: text.hh:57
name
const std::string & name()
Definition: trace.cc:50
Stats::Text::statName
std::string statName(const std::string &name) const
Definition: text.cc:165
Stats::Info
Definition: info.hh:69
Stats::Result
double Result
All results are doubles.
Definition: types.hh:50
Stats::ValueToString
string ValueToString(Result value, int precision)
Definition: text.cc:203
Stats::FormulaInfo
Definition: info.hh:237
Stats::Text::beginGroup
void beginGroup(const char *name) override
Definition: text.cc:174
Stats::Text::descriptions
bool descriptions
Definition: text.hh:67
output.hh
Stats::ScalarInfo
Definition: info.hh:148
Stats
Definition: statistics.cc:61
Stats::Text::noOutput
bool noOutput(const Info &info)
Definition: text.cc:191
Stats::Text::path
std::stack< std::string > path
Definition: text.hh:61
Stats::Text::end
void end() override
Definition: text.cc:158

Generated on Wed Sep 30 2020 14:02:08 for gem5 by doxygen 1.8.17