VR-Vantage 3.1 API Documentation
Home
Modules
Namespaces
Classes
Files
Libraries
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
include
rapidjson
memorybuffer.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_MEMORYBUFFER_H_
16
#define RAPIDJSON_MEMORYBUFFER_H_
17
18
#include "
stream.h
"
19
#include "
internal/stack.h
"
20
21
RAPIDJSON_NAMESPACE_BEGIN
22
24
36
template
<
typename
Allocator = CrtAllocator>
37
struct
GenericMemoryBuffer
{
38
typedef
char
Ch
;
// byte
39
40
GenericMemoryBuffer
(Allocator* allocator = 0,
size_t
capacity =
kDefaultCapacity
) :
stack_
(allocator, capacity) {}
41
42
void
Put
(
Ch
c
) { *
stack_
.template Push<Ch>() = c; }
43
void
Flush
() {}
44
45
void
Clear
() {
stack_
.Clear(); }
46
void
ShrinkToFit
() {
stack_
.ShrinkToFit(); }
47
Ch
*
Push
(
size_t
count
) {
return
stack_
.template Push<Ch>(
count
); }
48
void
Pop
(
size_t
count
) {
stack_
.template Pop<Ch>(
count
); }
49
50
const
Ch
*
GetBuffer
()
const
{
51
return
stack_
.template Bottom<Ch>();
52
}
53
54
size_t
GetSize
()
const
{
return
stack_
.GetSize(); }
55
56
static
const
size_t
kDefaultCapacity
= 256;
57
mutable
internal::Stack<Allocator>
stack_
;
58
};
59
60
typedef
GenericMemoryBuffer<>
MemoryBuffer
;
61
63
template
<>
64
inline
void
PutN
(
MemoryBuffer
& memoryBuffer,
char
c
,
size_t
n
) {
65
std::memset(memoryBuffer.
stack_
.Push<
char
>(n), c, n *
sizeof
(c));
66
}
67
68
RAPIDJSON_NAMESPACE_END
69
70
#endif // RAPIDJSON_MEMORYBUFFER_H_
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (
www.mak.com
)