Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
cursorstreamwrapper.h
Go to the documentation of this file.
1
// Tencent is pleased to support the open source community by making RapidJSON available.
2
//
3
// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
4
//
5
// Licensed under the MIT License (the "License"); you may not use this file except
6
// in compliance with the License. You may obtain a copy of the License at
7
//
8
// http://opensource.org/licenses/MIT
9
//
10
// Unless required by applicable law or agreed to in writing, software distributed
11
// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
12
// CONDITIONS OF ANY KIND, either express or implied. See the License for the
13
// specific language governing permissions and limitations under the License.
14
15
#ifndef RAPIDJSON_CURSORSTREAMWRAPPER_H_
16
#define RAPIDJSON_CURSORSTREAMWRAPPER_H_
17
18
#include "
stream.h
"
19
20
#if defined(__GNUC__)
21
RAPIDJSON_DIAG_PUSH
22
RAPIDJSON_DIAG_OFF(effc++)
23
#endif
24
25
#if defined(_MSC_VER) && _MSC_VER <= 1800
26
RAPIDJSON_DIAG_PUSH
27
RAPIDJSON_DIAG_OFF(4702)
// unreachable code
28
RAPIDJSON_DIAG_OFF(4512)
// assignment operator could not be generated
29
#endif
30
31
RAPIDJSON_NAMESPACE_BEGIN
32
33
35
38
template
<
typename
InputStream,
typename
Encoding = UTF8<> >
39
class
CursorStreamWrapper
:
public
GenericStreamWrapper
<InputStream, Encoding> {
40
public
:
41
typedef
typename
Encoding::Ch
Ch
;
42
43
CursorStreamWrapper
(InputStream& is):
44
GenericStreamWrapper
<InputStream,
Encoding
>(is), line_(1), col_(0) {}
45
46
// counting line and column number
47
Ch
Take
() {
48
Ch
ch = this->
is_
.Take();
49
if
(ch ==
'\n'
) {
50
line_ ++;
51
col_ = 0;
52
}
else
{
53
col_ ++;
54
}
55
return
ch;
56
}
57
59
size_t
GetLine
()
const
{
return
line_; }
61
size_t
GetColumn
()
const
{
return
col_; }
62
63
private
:
64
size_t
line_;
65
size_t
col_;
66
};
67
68
#if defined(_MSC_VER) && _MSC_VER <= 1800
69
RAPIDJSON_DIAG_POP
70
#endif
71
72
#if defined(__GNUC__)
73
RAPIDJSON_DIAG_POP
74
#endif
75
76
RAPIDJSON_NAMESPACE_END
77
78
#endif
// RAPIDJSON_CURSORSTREAMWRAPPER_H_
CursorStreamWrapper::Ch
Encoding::Ch Ch
Definition
cursorstreamwrapper.h:41
CursorStreamWrapper::CursorStreamWrapper
CursorStreamWrapper(InputStream &is)
Definition
cursorstreamwrapper.h:43
CursorStreamWrapper::GetLine
size_t GetLine() const
Get the error line number, if error exists.
Definition
cursorstreamwrapper.h:59
CursorStreamWrapper::Take
Ch Take()
Definition
cursorstreamwrapper.h:47
CursorStreamWrapper::GetColumn
size_t GetColumn() const
Get the error column number, if error exists.
Definition
cursorstreamwrapper.h:61
GenericStreamWrapper< InputStream, UTF8<> >::is_
InputStream & is_
Definition
stream.h:140
GenericStreamWrapper< InputStream, UTF8<> >::GenericStreamWrapper
GenericStreamWrapper(InputStream &is)
Definition
stream.h:122
Encoding
Concept for encoding of Unicode characters.
RAPIDJSON_NAMESPACE_BEGIN
#define RAPIDJSON_NAMESPACE_BEGIN
provide custom rapidjson namespace (opening expression)
Definition
rapidjson.h:121
RAPIDJSON_NAMESPACE_END
#define RAPIDJSON_NAMESPACE_END
provide custom rapidjson namespace (closing expression)
Definition
rapidjson.h:124
stream.h
external
rapidjson
include
rapidjson
cursorstreamwrapper.h
Generated on
for Electroneum by
1.17.0