Home
Downloads
Documentation
Installation
User Guide
man-pages
API Documentation
README
Release Notes
Changes
License
Support
SourceForge Project
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
src
OpenFOAM
db
IOstreams
hashes
OSHA1stream.H
Go to the documentation of this file.
1
/*---------------------------------------------------------------------------*\
2
========= |
3
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4
\\ / O peration |
5
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
6
\\/ M anipulation |
7
-------------------------------------------------------------------------------
8
License
9
This file is part of OpenFOAM.
10
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.
15
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.
20
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/>.
23
24
Class
25
Foam::OSHA1stream
26
27
Description
28
An output stream for calculating SHA1 digests.
29
30
SourceFiles
31
OSHA1stream.C
32
33
\*---------------------------------------------------------------------------*/
34
35
#ifndef OSHA1stream_H
36
#define OSHA1stream_H
37
38
#include <
OpenFOAM/OSstream.H
>
39
#include <
OpenFOAM/SHA1.H
>
40
41
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42
43
namespace
Foam
44
{
45
46
class
osha1stream;
47
class
OSHA1stream;
48
49
/*---------------------------------------------------------------------------*\
50
Class sha1streambuf Declaration
51
\*---------------------------------------------------------------------------*/
52
53
//- A streambuf class for calculating SHA1 digests
54
class
sha1streambuf
55
:
56
public
std::streambuf
57
{
58
// Private data
59
60
//- This does all the work and has its own buffering
61
SHA1
sha1_;
62
63
friend
class
osha1stream
;
64
65
public
:
66
67
// Constructors
68
69
//- Construct null
70
sha1streambuf
()
71
{}
72
73
// Member Functions
74
75
// Write
76
77
//- Process unbuffered
78
virtual
std::streamsize
xsputn
(
const
char
* str, std::streamsize n)
79
{
80
sha1_.
append
(str, n);
81
return
n;
82
}
83
};
84
85
86
/*---------------------------------------------------------------------------*\
87
Class osha1stream Declaration
88
\*---------------------------------------------------------------------------*/
89
90
//- A basic output stream for calculating SHA1 digests
91
class
osha1stream
92
:
93
virtual
public
std::ios,
94
public
std::ostream
95
{
96
// Private data
97
98
sha1streambuf
sbuf_;
99
100
public
:
101
102
// Constructors
103
104
//- Construct null
105
osha1stream
()
106
:
107
std::ostream(&sbuf_)
108
{}
109
110
// Member Functions
111
112
// Access
113
114
//- This hides both signatures of std::basic_ios::rdbuf()
115
sha1streambuf
*
rdbuf
()
116
{
117
return
&sbuf_;
118
}
119
120
//- Full access to the sha1
121
SHA1
&
sha1
()
122
{
123
return
sbuf_.sha1_;
124
}
125
126
};
127
128
129
/*---------------------------------------------------------------------------*\
130
Class OSHA1stream Declaration
131
\*---------------------------------------------------------------------------*/
132
133
//- The output stream for calculating SHA1 digests
134
class
OSHA1stream
135
:
136
public
OSstream
137
{
138
139
// Private Member Functions
140
141
//- Disallow default bitwise copy construct
142
OSHA1stream
(
const
OSHA1stream
&);
143
144
//- Disallow default bitwise assignment
145
void
operator=(
const
OSHA1stream
&);
146
147
public
:
148
149
// Constructors
150
151
//- Construct and set stream status
152
OSHA1stream
153
(
154
streamFormat
format
=
ASCII
,
155
versionNumber
version
=
currentVersion
156
)
157
:
158
OSstream
159
(
160
*(
new
osha1stream
),
161
"OSHA1stream.sinkFile_"
,
162
format
,
163
version
164
)
165
{}
166
167
168
// Destructor
169
170
~OSHA1stream
()
171
{
172
delete
&
dynamic_cast<
osha1stream
&
>
(
stream
());
173
}
174
175
176
// Member functions
177
178
// Access
179
180
//- Full access to the sha1
181
Foam::SHA1
&
sha1
()
182
{
183
return
dynamic_cast<
osha1stream
&
>
(
stream
()).
sha1
();
184
}
185
186
//- Return SHA1::Digest for the data processed until now
187
Foam::SHA1Digest
digest
()
188
{
189
return
sha1
().
digest
();
190
}
191
192
// Edit
193
194
//- Clear the SHA1 calculation
195
void
rewind
()
196
{
197
sha1
().
clear
();
198
}
199
200
};
201
202
203
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
204
205
}
// End namespace Foam
206
207
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
208
209
#endif
210
211
// ************************ vim: set sw=4 sts=4 et: ************************ //