ENH: autoLayerDriver: better layering information message
[OpenFOAM-2.0.x.git] / src / OpenFOAM / db / IOstreams / StringStreams / IStringStream.H
blob5bf068b81b4d309cde7d416db826b3f3d271eeda
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::IStringStream
27 Description
28     Input from memory buffer stream.
30 SourceFiles
31     StringStreamsPrint.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef IStringStream_H
36 #define IStringStream_H
38 #include "ISstream.H"
39 #include <sstream>
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 /*---------------------------------------------------------------------------*\
47                            Class IStringStream Declaration
48 \*---------------------------------------------------------------------------*/
50 class IStringStream
52     public ISstream
55 public:
57     // Constructors
59         //- Construct from string
60         IStringStream
61         (
62             const string& buffer,
63             streamFormat format=ASCII,
64             versionNumber version=currentVersion
65         )
66         :
67             ISstream
68             (
69                 *(new std::istringstream(buffer)),
70                 "IStringStream.sourceFile",
71                 format,
72                 version
73             )
74         {}
77         //- Construct from char*
78         IStringStream
79         (
80             const char* buffer,
81             streamFormat format=ASCII,
82             versionNumber version=currentVersion
83         )
84         :
85             ISstream
86             (
87                 *(new std::istringstream(buffer)),
88                 "IStringStream.sourceFile",
89                 format,
90                 version
91             )
92         {}
95     //- Destructor
96     ~IStringStream()
97     {
98         delete &dynamic_cast<std::istringstream&>(stdStream());
99     }
102     // Member functions
104         // Access
106             //- Return the string
107             string str() const
108             {
109                 return dynamic_cast<const std::istringstream&>
110                 (
111                     stdStream()
112                 ).str();
113             }
116         // Print
118             //- Print description to Ostream
119             void print(Ostream&) const;
122     // Member operators
124         //- Return a non-const reference to const Istream
125         //  Needed for read-constructors where the stream argument is temporary:
126         //  e.g. thing thisThing(IFstream("thingFileName")());
127         Istream& operator()() const
128         {
129             return const_cast<IStringStream&>(*this);
130         }
134 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
136 } // End namespace Foam
138 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
140 #endif
142 // ************************************************************************* //