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_FWD_H_
16 #define RAPIDJSON_FWD_H_
17 
18 #include "rapidjson.h"
19 
20 RAPIDJSON_NAMESPACE_BEGIN
21 
22 // encodings.h
23 
24 template<typename CharType> struct UTF8;
25 template<typename CharType> struct UTF16;
26 template<typename CharType> struct UTF16BE;
27 template<typename CharType> struct UTF16LE;
28 template<typename CharType> struct UTF32;
29 template<typename CharType> struct UTF32BE;
30 template<typename CharType> struct UTF32LE;
31 template<typename CharType> struct ASCII;
32 template<typename CharType> struct AutoUTF;
33 
34 template<typename SourceEncoding, typename TargetEncoding>
35 struct Transcoder;
36 
37 // allocators.h
38 
39 class CrtAllocator;
40 
41 template <typename BaseAllocator>
42 class MemoryPoolAllocator;
43 
44 // stream.h
45 
46 template <typename Encoding>
47 struct GenericStringStream;
48 
49 typedef GenericStringStream<UTF8<char> > StringStream;
50 
51 template <typename Encoding>
52 struct GenericInsituStringStream;
53 
54 typedef GenericInsituStringStream<UTF8<char> > InsituStringStream;
55 
56 // stringbuffer.h
57 
58 template <typename Encoding, typename Allocator>
59 class GenericStringBuffer;
60 
61 typedef GenericStringBuffer<UTF8<char>, CrtAllocator> StringBuffer;
62 
63 // filereadstream.h
64 
65 class FileReadStream;
66 
67 // filewritestream.h
68 
69 class FileWriteStream;
70 
71 // memorybuffer.h
72 
73 template <typename Allocator>
74 struct GenericMemoryBuffer;
75 
76 typedef GenericMemoryBuffer<CrtAllocator> MemoryBuffer;
77 
78 // memorystream.h
79 
80 struct MemoryStream;
81 
82 // reader.h
83 
84 template<typename Encoding, typename Derived>
85 struct BaseReaderHandler;
86 
87 template <typename SourceEncoding, typename TargetEncoding, typename StackAllocator>
88 class GenericReader;
89 
90 typedef GenericReader<UTF8<char>, UTF8<char>, CrtAllocator> Reader;
91 
92 // writer.h
93 
94 template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags>
95 class Writer;
96 
97 // prettywriter.h
98 
99 template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags>
100 class PrettyWriter;
101 
102 // document.h
103 
104 template <typename Encoding, typename Allocator>
105 struct GenericMember;
106 
107 template <bool Const, typename Encoding, typename Allocator>
108 class GenericMemberIterator;
109 
110 template<typename CharType>
111 struct GenericStringRef;
112 
113 template <typename Encoding, typename Allocator>
114 class GenericValue;
115 
116 typedef GenericValue<UTF8<char>, MemoryPoolAllocator<CrtAllocator> > Value;
117 
118 template <typename Encoding, typename Allocator, typename StackAllocator>
119 class GenericDocument;
120 
121 typedef GenericDocument<UTF8<char>, MemoryPoolAllocator<CrtAllocator>, CrtAllocator> Document;
122 
123 // pointer.h
124 
125 template <typename ValueType, typename Allocator>
126 class GenericPointer;
127 
128 typedef GenericPointer<Value, CrtAllocator> Pointer;
129 
130 // schema.h
131 
132 template <typename SchemaDocumentType>
133 class IGenericRemoteSchemaDocumentProvider;
134 
135 template <typename ValueT, typename Allocator>
136 class GenericSchemaDocument;
137 
138 typedef GenericSchemaDocument<Value, CrtAllocator> SchemaDocument;
139 typedef IGenericRemoteSchemaDocumentProvider<SchemaDocument> IRemoteSchemaDocumentProvider;
140 
141 template <
142     typename SchemaDocumentType,
143     typename OutputHandler,
144     typename StateAllocator>
145 class GenericSchemaValidator;
146 
147 typedef GenericSchemaValidator<SchemaDocument, BaseReaderHandler<UTF8<char>, void>, CrtAllocator> SchemaValidator;
148 
149 RAPIDJSON_NAMESPACE_END
150 
151 #endif // RAPIDJSON_RAPIDJSONFWD_H_
152