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

Side by Side Diff: xfa/fgas/xml/fgas_sax.h

Issue 1990003002: Move fgas_sax into individual files in fde. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 7 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
« no previous file with comments | « xfa/fde/xml/cfx_saxreader.cpp ('k') | xfa/fgas/xml/fgas_sax.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 XFA_FGAS_XML_FGAS_SAX_H_
8 #define XFA_FGAS_XML_FGAS_SAX_H_
9
10 #include "core/fxcrt/include/fx_basic.h"
11
12 #define FX_SAXPARSEMODE_NotConvert_amp 0x0001
13 #define FX_SAXPARSEMODE_NotConvert_lt 0x0002
14 #define FX_SAXPARSEMODE_NotConvert_gt 0x0004
15 #define FX_SAXPARSEMODE_NotConvert_apos 0x0008
16 #define FX_SAXPARSEMODE_NotConvert_quot 0x0010
17 #define FX_SAXPARSEMODE_NotConvert_sharp 0x0020
18 #define FX_SAXPARSEMODE_NotSkipSpace 0x0100
19
20 enum FX_SAXNODE {
21 FX_SAXNODE_Unknown = 0,
22 FX_SAXNODE_Instruction,
23 FX_SAXNODE_Declaration,
24 FX_SAXNODE_Comment,
25 FX_SAXNODE_Tag,
26 FX_SAXNODE_Text,
27 FX_SAXNODE_CharData,
28 };
29
30 enum FX_SAXMODE {
31 FX_SAXMODE_Text = 0,
32 FX_SAXMODE_NodeStart,
33 FX_SAXMODE_DeclOrComment,
34 FX_SAXMODE_DeclNode,
35 FX_SAXMODE_Comment,
36 FX_SAXMODE_CommentContent,
37 FX_SAXMODE_TagName,
38 FX_SAXMODE_TagAttributeName,
39 FX_SAXMODE_TagAttributeEqual,
40 FX_SAXMODE_TagAttributeValue,
41 FX_SAXMODE_TagMaybeClose,
42 FX_SAXMODE_TagClose,
43 FX_SAXMODE_TagEnd,
44 FX_SAXMODE_TargetData,
45 FX_SAXMODE_MAX,
46 };
47
48 class CXFA_SAXReaderHandler;
49
50 class CFX_SAXFile {
51 public:
52 CFX_SAXFile();
53 FX_BOOL StartFile(IFX_FileRead* pFile, uint32_t dwStart, uint32_t dwLen);
54 FX_BOOL ReadNextBlock();
55 void Reset();
56 IFX_FileRead* m_pFile;
57 uint32_t m_dwStart;
58 uint32_t m_dwEnd;
59 uint32_t m_dwCur;
60 uint8_t* m_pBuf;
61 uint32_t m_dwBufSize;
62 uint32_t m_dwBufIndex;
63 };
64
65 class CFX_SAXItem {
66 public:
67 CFX_SAXItem()
68 : m_pNode(NULL),
69 m_eNode(FX_SAXNODE_Unknown),
70 m_dwID(0),
71 m_bSkip(FALSE),
72 m_pPrev(NULL),
73 m_pNext(NULL) {}
74 void* m_pNode;
75 FX_SAXNODE m_eNode;
76 uint32_t m_dwID;
77 FX_BOOL m_bSkip;
78 CFX_SAXItem* m_pPrev;
79 CFX_SAXItem* m_pNext;
80 };
81
82 class CFX_SAXCommentContext {
83 public:
84 CFX_SAXCommentContext() : m_iHeaderCount(0), m_iTailCount(0) {}
85 int32_t m_iHeaderCount;
86 int32_t m_iTailCount;
87 };
88
89 class CFX_SAXReader {
90 public:
91 CFX_SAXReader();
92 ~CFX_SAXReader();
93
94 int32_t StartParse(IFX_FileRead* pFile,
95 uint32_t dwStart = 0,
96 uint32_t dwLen = -1,
97 uint32_t dwParseMode = 0);
98 int32_t ContinueParse(IFX_Pause* pPause = NULL);
99 void SkipCurrentNode();
100 void SetHandler(CXFA_SAXReaderHandler* pHandler);
101 void AppendData(uint8_t ch);
102 void AppendName(uint8_t ch);
103 void ParseText();
104 void ParseNodeStart();
105 void ParseInstruction();
106 void ParseDeclOrComment();
107 void ParseDeclNode();
108 void ParseComment();
109 void ParseCommentContent();
110 void ParseTagName();
111 void ParseTagAttributeName();
112 void ParseTagAttributeEqual();
113 void ParseTagAttributeValue();
114 void ParseMaybeClose();
115 void ParseTagClose();
116 void ParseTagEnd();
117 void ParseTargetData();
118
119 protected:
120 void Reset();
121 void Push();
122 void Pop();
123 FX_BOOL SkipSpace(uint8_t ch);
124 void SkipNode();
125 void NotifyData();
126 void NotifyEnter();
127 void NotifyAttribute();
128 void NotifyBreak();
129 void NotifyClose();
130 void NotifyEnd();
131 void NotifyTargetData();
132 void ReallocDataBuffer();
133 void ReallocNameBuffer();
134 void ParseChar(uint8_t ch);
135
136 CFX_SAXFile m_File;
137 CXFA_SAXReaderHandler* m_pHandler;
138 int32_t m_iState;
139 CFX_SAXItem* m_pRoot;
140 CFX_SAXItem* m_pCurItem;
141 uint32_t m_dwItemID;
142 FX_SAXMODE m_eMode;
143 FX_SAXMODE m_ePrevMode;
144 FX_BOOL m_bCharData;
145 uint8_t m_CurByte;
146 uint32_t m_dwDataOffset;
147 CFX_ByteArray m_SkipStack;
148 uint8_t m_SkipChar;
149 uint32_t m_dwNodePos;
150 uint8_t* m_pszData;
151 int32_t m_iDataSize;
152 int32_t m_iDataLength;
153 int32_t m_iEntityStart;
154 int32_t m_iDataPos;
155 uint8_t* m_pszName;
156 int32_t m_iNameSize;
157 int32_t m_iNameLength;
158 uint32_t m_dwParseMode;
159 CFX_SAXCommentContext* m_pCommentContext;
160 };
161
162 #endif // XFA_FGAS_XML_FGAS_SAX_H_
OLDNEW
« no previous file with comments | « xfa/fde/xml/cfx_saxreader.cpp ('k') | xfa/fgas/xml/fgas_sax.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698