Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Side by Side Diff: xfa/src/fdp/src/xml/fde_xml.h

Issue 1581823002: Resolve fde_xml.h header collision (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef _FDE_XML_IMP
8 #define _FDE_XML_IMP
9 #define _FDE_BLOCK_BUFFER
10 #ifdef _FDE_BLOCK_BUFFER
11 class CFDE_BlockBuffer;
12 #endif
13 class CFDE_XMLNode;
14 class CFDE_XMLInstruction;
15 class CFDE_XMLElement;
16 class CFDE_XMLText;
17 class CFDE_XMLDoc;
18 class IFDE_XMLParser;
19 class CFDE_XMLDOMParser;
20 class CFDE_XMLSAXParser;
21 class CFDE_XMLSyntaxParser;
22 class CFDE_XMLNode : public CFX_Target {
23 public:
24 CFDE_XMLNode();
25 virtual void Release() { delete this; }
26 virtual FDE_XMLNODETYPE GetType() const { return FDE_XMLNODE_Unknown; }
27 virtual int32_t CountChildNodes() const;
28 virtual CFDE_XMLNode* GetChildNode(int32_t index) const;
29 virtual int32_t GetChildNodeIndex(CFDE_XMLNode* pNode) const;
30 virtual CFDE_XMLNode* GetPath(const FX_WCHAR* pPath,
31 int32_t iLength = -1,
32 FX_BOOL bQualifiedName = TRUE) const;
33 virtual int32_t InsertChildNode(CFDE_XMLNode* pNode, int32_t index = -1);
34 virtual void RemoveChildNode(CFDE_XMLNode* pNode);
35 virtual void DeleteChildren();
36 virtual CFDE_XMLNode* GetNodeItem(IFDE_XMLNode::NodeItem eItem) const;
37 virtual int32_t GetNodeLevel() const;
38 virtual FX_BOOL InsertNodeItem(IFDE_XMLNode::NodeItem eItem,
39 CFDE_XMLNode* pNode);
40 virtual CFDE_XMLNode* RemoveNodeItem(IFDE_XMLNode::NodeItem eItem);
41 virtual CFDE_XMLNode* Clone(FX_BOOL bRecursive);
42 virtual void SaveXMLNode(IFX_Stream* pXMLStream);
43
44 public:
45 ~CFDE_XMLNode();
46 void CloneChildren(CFDE_XMLNode* pClone);
47 CFDE_XMLNode* m_pParent;
48 CFDE_XMLNode* m_pChild;
49 CFDE_XMLNode* m_pPrior;
50 CFDE_XMLNode* m_pNext;
51 };
52 class CFDE_XMLInstruction : public CFDE_XMLNode {
53 public:
54 CFDE_XMLInstruction(const CFX_WideString& wsTarget);
55 virtual void Release() { delete this; }
56 virtual FDE_XMLNODETYPE GetType() const { return FDE_XMLNODE_Instruction; }
57 virtual CFDE_XMLNode* Clone(FX_BOOL bRecursive);
58 virtual void GetTargetName(CFX_WideString& wsTarget) const {
59 wsTarget = m_wsTarget;
60 }
61 virtual int32_t CountAttributes() const;
62 virtual FX_BOOL GetAttribute(int32_t index,
63 CFX_WideString& wsAttriName,
64 CFX_WideString& wsAttriValue) const;
65 virtual FX_BOOL HasAttribute(const FX_WCHAR* pwsAttriName) const;
66 virtual void GetString(const FX_WCHAR* pwsAttriName,
67 CFX_WideString& wsAttriValue,
68 const FX_WCHAR* pwsDefValue = NULL) const;
69 virtual void SetString(const CFX_WideString& wsAttriName,
70 const CFX_WideString& wsAttriValue);
71 virtual int32_t GetInteger(const FX_WCHAR* pwsAttriName,
72 int32_t iDefValue = 0) const;
73 virtual void SetInteger(const FX_WCHAR* pwsAttriName, int32_t iAttriValue);
74 virtual FX_FLOAT GetFloat(const FX_WCHAR* pwsAttriName,
75 FX_FLOAT fDefValue = 0) const;
76 virtual void SetFloat(const FX_WCHAR* pwsAttriName, FX_FLOAT fAttriValue);
77 virtual void RemoveAttribute(const FX_WCHAR* pwsAttriName);
78 virtual int32_t CountData() const;
79 virtual FX_BOOL GetData(int32_t index, CFX_WideString& wsData) const;
80 virtual void AppendData(const CFX_WideString& wsData);
81 virtual void RemoveData(int32_t index);
82
83 public:
84 ~CFDE_XMLInstruction() {}
85 CFX_WideString m_wsTarget;
86 CFX_WideStringArray m_Attributes;
87 CFX_WideStringArray m_TargetData;
88 };
89 class CFDE_XMLElement : public CFDE_XMLNode {
90 public:
91 CFDE_XMLElement(const CFX_WideString& wsTag);
92 virtual void Release() { delete this; }
93 virtual FDE_XMLNODETYPE GetType() const { return FDE_XMLNODE_Element; }
94 virtual CFDE_XMLNode* Clone(FX_BOOL bRecursive);
95 virtual void GetTagName(CFX_WideString& wsTag) const;
96 virtual void GetLocalTagName(CFX_WideString& wsTag) const;
97 virtual void GetNamespacePrefix(CFX_WideString& wsPrefix) const;
98 virtual void GetNamespaceURI(CFX_WideString& wsNamespace) const;
99 virtual int32_t CountAttributes() const;
100 virtual FX_BOOL GetAttribute(int32_t index,
101 CFX_WideString& wsAttriName,
102 CFX_WideString& wsAttriValue) const;
103 virtual FX_BOOL HasAttribute(const FX_WCHAR* pwsAttriName) const;
104 virtual void GetString(const FX_WCHAR* pwsAttriName,
105 CFX_WideString& wsAttriValue,
106 const FX_WCHAR* pwsDefValue = NULL) const;
107 virtual void SetString(const CFX_WideString& wsAttriName,
108 const CFX_WideString& wsAttriValue);
109 virtual int32_t GetInteger(const FX_WCHAR* pwsAttriName,
110 int32_t iDefValue = 0) const;
111 virtual void SetInteger(const FX_WCHAR* pwsAttriName, int32_t iAttriValue);
112 virtual FX_FLOAT GetFloat(const FX_WCHAR* pwsAttriName,
113 FX_FLOAT fDefValue = 0) const;
114 virtual void SetFloat(const FX_WCHAR* pwsAttriName, FX_FLOAT fAttriValue);
115 virtual void RemoveAttribute(const FX_WCHAR* pwsAttriName);
116 virtual void GetTextData(CFX_WideString& wsText) const;
117 virtual void SetTextData(const CFX_WideString& wsText);
118
119 public:
120 ~CFDE_XMLElement();
121 CFX_WideString m_wsTag;
122 CFX_WideStringArray m_Attributes;
123 };
124 class CFDE_XMLText : public CFDE_XMLNode {
125 public:
126 CFDE_XMLText(const CFX_WideString& wsText);
127 virtual void Release() { delete this; }
128 virtual FDE_XMLNODETYPE GetType() const { return FDE_XMLNODE_Text; }
129 virtual CFDE_XMLNode* Clone(FX_BOOL bRecursive);
130 virtual void GetText(CFX_WideString& wsText) const { wsText = m_wsText; }
131 virtual void SetText(const CFX_WideString& wsText) { m_wsText = wsText; }
132
133 public:
134 ~CFDE_XMLText() {}
135 CFX_WideString m_wsText;
136 };
137 class CFDE_XMLDeclaration : public CFDE_XMLNode {
138 public:
139 CFDE_XMLDeclaration() : CFDE_XMLNode() {}
140 };
141 class CFDE_XMLCharData : public CFDE_XMLDeclaration {
142 public:
143 CFDE_XMLCharData(const CFX_WideString& wsCData);
144
145 virtual void Release() { delete this; }
146 virtual FDE_XMLNODETYPE GetType() const { return FDE_XMLNODE_CharData; }
147 virtual CFDE_XMLNode* Clone(FX_BOOL bRecursive);
148 virtual void GetCharData(CFX_WideString& wsCharData) const {
149 wsCharData = m_wsCharData;
150 }
151 virtual void SetCharData(const CFX_WideString& wsCData) {
152 m_wsCharData = wsCData;
153 }
154
155 public:
156 ~CFDE_XMLCharData() {}
157
158 CFX_WideString m_wsCharData;
159 };
160 class CFDE_XMLDoc : public CFX_Target {
161 public:
162 CFDE_XMLDoc();
163 ~CFDE_XMLDoc();
164 virtual void Release() { delete this; }
165 virtual FX_BOOL LoadXML(IFX_Stream* pXMLStream,
166 int32_t iXMLPlaneSize = 8192,
167 int32_t iTextDataSize = 256,
168 FDE_LPXMLREADERHANDLER pHandler = NULL);
169 virtual FX_BOOL LoadXML(IFDE_XMLParser* pXMLParser);
170 virtual int32_t DoLoad(IFX_Pause* pPause = NULL);
171 virtual void CloseXML();
172 virtual CFDE_XMLNode* GetRoot() const { return m_pRoot; }
173 virtual void SaveXML(IFX_Stream* pXMLStream = NULL, FX_BOOL bSaveBOM = TRUE);
174 virtual void SaveXMLNode(IFX_Stream* pXMLStream, IFDE_XMLNode* pNode);
175
176 protected:
177 IFX_Stream* m_pStream;
178 int32_t m_iStatus;
179 CFDE_XMLNode* m_pRoot;
180 IFDE_XMLSyntaxParser* m_pSyntaxParser;
181 IFDE_XMLParser* m_pXMLParser;
182 void Reset(FX_BOOL bInitRoot);
183 void ReleaseParser();
184 };
185 typedef CFX_StackTemplate<CFDE_XMLNode*> CFDE_XMLDOMNodeStack;
186 class CFDE_XMLDOMParser : public IFDE_XMLParser, public CFX_Target {
187 public:
188 CFDE_XMLDOMParser(CFDE_XMLNode* pRoot, IFDE_XMLSyntaxParser* pParser);
189 ~CFDE_XMLDOMParser();
190
191 virtual void Release() { delete this; }
192 virtual int32_t DoParser(IFX_Pause* pPause);
193
194 private:
195 IFDE_XMLSyntaxParser* m_pParser;
196 CFDE_XMLNode* m_pParent;
197 CFDE_XMLNode* m_pChild;
198 CFDE_XMLDOMNodeStack m_NodeStack;
199 CFX_WideString m_ws1;
200 CFX_WideString m_ws2;
201 };
202 class CFDE_XMLTAG : public CFX_Target {
203 public:
204 CFDE_XMLTAG() : eType(FDE_XMLNODE_Unknown) {}
205 CFDE_XMLTAG(const CFDE_XMLTAG& src)
206 : wsTagName(src.wsTagName), eType(src.eType) {}
207 CFX_WideString wsTagName;
208 FDE_XMLNODETYPE eType;
209 };
210 typedef CFX_ObjectStackTemplate<CFDE_XMLTAG> CFDE_XMLTagStack;
211 class CFDE_XMLSAXParser : public IFDE_XMLParser, public CFX_Target {
212 public:
213 CFDE_XMLSAXParser(FDE_LPXMLREADERHANDLER pHandler,
214 IFDE_XMLSyntaxParser* pParser);
215 ~CFDE_XMLSAXParser();
216
217 virtual void Release() { delete this; }
218 virtual int32_t DoParser(IFX_Pause* pPause);
219
220 private:
221 void Push(const CFDE_XMLTAG& xmlTag);
222 void Pop();
223 FDE_LPXMLREADERHANDLER m_pHandler;
224 IFDE_XMLSyntaxParser* m_pParser;
225 CFDE_XMLTagStack m_TagStack;
226 CFDE_XMLTAG* m_pTagTop;
227 CFX_WideString m_ws1;
228 CFX_WideString m_ws2;
229 };
230 #ifdef _FDE_BLOCK_BUFFER
231 class CFDE_BlockBuffer : public CFX_Target {
232 public:
233 CFDE_BlockBuffer(int32_t iAllocStep = 1024 * 1024);
234 ~CFDE_BlockBuffer();
235
236 FX_BOOL InitBuffer(int32_t iBufferSize = 1024 * 1024);
237 FX_BOOL IsInitialized() { return m_iBufferSize / m_iAllocStep >= 1; }
238 void ReleaseBuffer() { delete this; }
239 FX_WCHAR* GetAvailableBlock(int32_t& iIndexInBlock);
240 inline int32_t GetAllocStep() const { return m_iAllocStep; }
241 inline int32_t& GetDataLengthRef() { return m_iDataLength; }
242 inline void Reset(FX_BOOL bReserveData = TRUE) {
243 if (!bReserveData) {
244 m_iStartPosition = 0;
245 }
246 m_iDataLength = 0;
247 }
248 void SetTextChar(int32_t iIndex, FX_WCHAR ch);
249 int32_t DeleteTextChars(int32_t iCount, FX_BOOL bDirection = TRUE);
250 void GetTextData(CFX_WideString& wsTextData,
251 int32_t iStart = 0,
252 int32_t iLength = -1) const;
253
254 protected:
255 inline void TextDataIndex2BufIndex(const int32_t iIndex,
256 int32_t& iBlockIndex,
257 int32_t& iInnerIndex) const;
258 void ClearBuffer();
259 CFX_PtrArray m_BlockArray;
260 int32_t m_iDataLength;
261 int32_t m_iBufferSize;
262 int32_t m_iAllocStep;
263 int32_t m_iStartPosition;
264 };
265 #endif
266 #define FDE_XMLSYNTAXMODE_Text 0
267 #define FDE_XMLSYNTAXMODE_Node 1
268 #define FDE_XMLSYNTAXMODE_Target 2
269 #define FDE_XMLSYNTAXMODE_Tag 3
270 #define FDE_XMLSYNTAXMODE_AttriName 4
271 #define FDE_XMLSYNTAXMODE_AttriEqualSign 5
272 #define FDE_XMLSYNTAXMODE_AttriQuotation 6
273 #define FDE_XMLSYNTAXMODE_AttriValue 7
274 #define FDE_XMLSYNTAXMODE_Entity 8
275 #define FDE_XMLSYNTAXMODE_EntityDecimal 9
276 #define FDE_XMLSYNTAXMODE_EntityHex 10
277 #define FDE_XMLSYNTAXMODE_CloseInstruction 11
278 #define FDE_XMLSYNTAXMODE_BreakElement 12
279 #define FDE_XMLSYNTAXMODE_CloseElement 13
280 #define FDE_XMLSYNTAXMODE_SkipDeclNode 14
281 #define FDE_XMLSYNTAXMODE_DeclCharData 15
282 #define FDE_XMLSYNTAXMODE_SkipComment 16
283 #define FDE_XMLSYNTAXMODE_SkipCommentOrDecl 17
284 #define FDE_XMLSYNTAXMODE_TargetData 18
285 class CFDE_XMLSyntaxParser : public IFDE_XMLSyntaxParser, public CFX_Target {
286 public:
287 CFDE_XMLSyntaxParser();
288 ~CFDE_XMLSyntaxParser();
289 virtual void Release() { delete this; }
290 virtual void Init(IFX_Stream* pStream,
291 int32_t iXMLPlaneSize,
292 int32_t iTextDataSize = 256);
293 virtual FX_DWORD DoSyntaxParse();
294 virtual int32_t GetStatus() const;
295 virtual int32_t GetCurrentPos() const {
296 return m_iParsedChars + (m_pStart - m_pBuffer);
297 }
298 virtual FX_FILESIZE GetCurrentBinaryPos() const;
299 virtual int32_t GetCurrentNodeNumber() const { return m_iCurrentNodeNum; }
300 virtual int32_t GetLastNodeNumber() const { return m_iLastNodeNum; }
301 #ifdef _FDE_BLOCK_BUFFER
302 virtual void GetTargetName(CFX_WideString& wsTarget) const {
303 m_BlockBuffer.GetTextData(wsTarget, 0, m_iTextDataLength);
304 }
305 virtual void GetTagName(CFX_WideString& wsTag) const {
306 m_BlockBuffer.GetTextData(wsTag, 0, m_iTextDataLength);
307 }
308 virtual void GetAttributeName(CFX_WideString& wsAttriName) const {
309 m_BlockBuffer.GetTextData(wsAttriName, 0, m_iTextDataLength);
310 }
311 virtual void GetAttributeValue(CFX_WideString& wsAttriValue) const {
312 m_BlockBuffer.GetTextData(wsAttriValue, 0, m_iTextDataLength);
313 }
314 virtual void GetTextData(CFX_WideString& wsText) const {
315 m_BlockBuffer.GetTextData(wsText, 0, m_iTextDataLength);
316 }
317 virtual void GetTargetData(CFX_WideString& wsData) const {
318 m_BlockBuffer.GetTextData(wsData, 0, m_iTextDataLength);
319 }
320 #else
321 virtual void GetTargetName(CFX_WideString& wsTarget) const {
322 GetData(wsTarget);
323 }
324 virtual void GetTagName(CFX_WideString& wsTag) const { GetData(wsTag); }
325 virtual void GetAttributeName(CFX_WideString& wsAttriName) const {
326 GetData(wsAttriName);
327 }
328 virtual void GetAttributeValue(CFX_WideString& wsAttriValue) const {
329 GetData(wsAttriValue);
330 }
331 virtual void GetTextData(CFX_WideString& wsText) const { GetData(wsText); }
332 virtual void GetTargetData(CFX_WideString& wsData) const { GetData(wsData); }
333 #endif
334 protected:
335 IFX_Stream* m_pStream;
336 int32_t m_iXMLPlaneSize;
337 int32_t m_iCurrentPos;
338 int32_t m_iCurrentNodeNum;
339 int32_t m_iLastNodeNum;
340 int32_t m_iParsedChars;
341 int32_t m_iParsedBytes;
342 FX_WCHAR* m_pBuffer;
343 int32_t m_iBufferChars;
344 FX_BOOL m_bEOS;
345 FX_WCHAR* m_pStart;
346 FX_WCHAR* m_pEnd;
347 FDE_XMLNODE m_CurNode;
348 CFDE_XMLNodeStack m_XMLNodeStack;
349 #ifdef _FDE_BLOCK_BUFFER
350 CFDE_BlockBuffer m_BlockBuffer;
351 int32_t m_iAllocStep;
352 int32_t& m_iDataLength;
353 FX_WCHAR* m_pCurrentBlock;
354 int32_t m_iIndexInBlock;
355 #else
356 int32_t m_iTextDataSize;
357 FX_WCHAR* m_pwsTextData;
358 int32_t m_iDataPos;
359 #endif
360 int32_t m_iTextDataLength;
361 FX_DWORD m_dwStatus;
362 FX_DWORD m_dwMode;
363 FX_WCHAR m_wQuotationMark;
364 int32_t m_iEntityStart;
365 CFX_DWordStack m_SkipStack;
366 FX_WCHAR m_SkipChar;
367 inline void ParseTextChar(FX_WCHAR ch);
368 #ifndef _FDE_BLOCK_BUFFER
369 void ReallocTextDataBuffer();
370 void GetData(CFX_WideString& wsData) const;
371 #endif
372 };
373 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698