Line data Source code
1 : /****************************************************************************/
2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3 : // Copyright (C) 2004-2024 German Aerospace Center (DLR) and others.
4 : // This program and the accompanying materials are made available under the
5 : // terms of the Eclipse Public License 2.0 which is available at
6 : // https://www.eclipse.org/legal/epl-2.0/
7 : // This Source Code may also be made available under the following Secondary
8 : // Licenses when the conditions for such availability set forth in the Eclipse
9 : // Public License 2.0 are satisfied: GNU General Public License, version 2
10 : // or later which is available at
11 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13 : /****************************************************************************/
14 : /// @file OutputDevice_File.h
15 : /// @author Daniel Krajzewicz
16 : /// @author Michael Behrisch
17 : /// @date 2004
18 : ///
19 : // An output device that encapsulates an ofstream
20 : /****************************************************************************/
21 : #pragma once
22 : #include <config.h>
23 :
24 : #include <iostream>
25 : #include "OutputDevice.h"
26 :
27 :
28 : // ===========================================================================
29 : // class definitions
30 : // ===========================================================================
31 : /**
32 : * @class OutputDevice_File
33 : * @brief An output device that encapsulates an ofstream
34 : *
35 : * Please note that the device gots responsible for the stream and deletes
36 : * it (it should not be deleted elsewhere).
37 : */
38 : class OutputDevice_File : public OutputDevice {
39 : public:
40 : /** @brief Constructor
41 : * @param[in] fullName The name of the output file to use
42 : * @param[in] compressed whether to apply gzip compression
43 : * @exception IOError Should not be thrown by this implementation
44 : */
45 : OutputDevice_File(const std::string& fullName, const bool compressed = false);
46 :
47 :
48 : /// @brief Destructor
49 : ~OutputDevice_File();
50 :
51 : /** @brief returns the information whether the device will discard all output
52 : * @return Whether the device redirects to /dev/null
53 : */
54 628799 : bool isNull() override {
55 628799 : return myAmNull;
56 : }
57 :
58 :
59 : protected:
60 : /// @name Methods that override/implement OutputDevice-methods
61 : /// @{
62 :
63 : /** @brief Returns the associated ostream
64 : * @return The used stream
65 : */
66 : std::ostream& getOStream() override;
67 : /// @}
68 :
69 :
70 : private:
71 : /// The wrapped ofstream
72 : std::ostream* myFileStream = nullptr;
73 :
74 : /// am I redirecting to /dev/null
75 : bool myAmNull = false;
76 :
77 : };
|