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

Side by Side Diff: core/src/fxcrt/fx_xml_parser.cpp

Issue 1172793002: Merge to XFA: Use stdint.h types throughout PDFium. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@xfa
Patch Set: Created 5 years, 6 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 | « core/src/fxcrt/fx_xml_composer.cpp ('k') | core/src/fxcrt/fxcrt_platforms.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "../../include/fxcrt/fx_xml.h" 7 #include "../../include/fxcrt/fx_xml.h"
8 #include "xml_int.h" 8 #include "xml_int.h"
9 CXML_Parser::~CXML_Parser() 9 CXML_Parser::~CXML_Parser()
10 { 10 {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 #define FXCRTM_XML_CHARTYPE_Normal 0x00 63 #define FXCRTM_XML_CHARTYPE_Normal 0x00
64 #define FXCRTM_XML_CHARTYPE_SpaceChar 0x01 64 #define FXCRTM_XML_CHARTYPE_SpaceChar 0x01
65 #define FXCRTM_XML_CHARTYPE_Letter 0x02 65 #define FXCRTM_XML_CHARTYPE_Letter 0x02
66 #define FXCRTM_XML_CHARTYPE_Digital 0x04 66 #define FXCRTM_XML_CHARTYPE_Digital 0x04
67 #define FXCRTM_XML_CHARTYPE_NameIntro 0x08 67 #define FXCRTM_XML_CHARTYPE_NameIntro 0x08
68 #define FXCRTM_XML_CHARTYPE_NameChar 0x10 68 #define FXCRTM_XML_CHARTYPE_NameChar 0x10
69 #define FXCRTM_XML_CHARTYPE_HexDigital 0x20 69 #define FXCRTM_XML_CHARTYPE_HexDigital 0x20
70 #define FXCRTM_XML_CHARTYPE_HexLowerLetter 0x40 70 #define FXCRTM_XML_CHARTYPE_HexLowerLetter 0x40
71 #define FXCRTM_XML_CHARTYPE_HexUpperLetter 0x60 71 #define FXCRTM_XML_CHARTYPE_HexUpperLetter 0x60
72 #define FXCRTM_XML_CHARTYPE_HexChar 0x60 72 #define FXCRTM_XML_CHARTYPE_HexChar 0x60
73 FX_BYTE g_FXCRT_XML_ByteTypes[256] = { 73 uint8_t g_FXCRT_XML_ByteTypes[256] = {
74 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 , 0x01, 0x01, 0x01, 74 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 , 0x01, 0x01, 0x01,
75 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 , 0x01, 0x01, 0x01, 75 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 , 0x01, 0x01, 0x01,
76 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x10, 0x10, 0x00, 76 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x10, 0x10, 0x00,
77 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x08, 0x00, 0x00 , 0x00, 0x00, 0x00, 77 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x08, 0x00, 0x00 , 0x00, 0x00, 0x00,
78 0x00, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 78 0x00, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x7A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
79 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x00, 0x00 , 0x00, 0x00, 0x18, 79 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x00, 0x00 , 0x00, 0x00, 0x18,
80 0x00, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 80 0x00, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
81 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x00, 0x00 , 0x00, 0x00, 0x00, 81 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x00, 0x00 , 0x00, 0x00, 0x00,
82 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 82 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
83 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 83 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
84 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 84 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
85 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 85 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
86 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 86 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
87 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 87 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
88 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A, 88 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x1A, 0x1A,
89 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x01, 0x01, 89 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A, 0x1A , 0x1A, 0x01, 0x01,
90 }; 90 };
91 FX_BOOL g_FXCRT_XML_IsWhiteSpace(FX_BYTE ch) 91 FX_BOOL g_FXCRT_XML_IsWhiteSpace(uint8_t ch)
92 { 92 {
93 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_SpaceChar) != 0; 93 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_SpaceChar) != 0;
94 } 94 }
95 FX_BOOL g_FXCRT_XML_IsLetter(FX_BYTE ch) 95 FX_BOOL g_FXCRT_XML_IsLetter(uint8_t ch)
96 { 96 {
97 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Letter) != 0; 97 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Letter) != 0;
98 } 98 }
99 FX_BOOL g_FXCRT_XML_IsDigital(FX_BYTE ch) 99 FX_BOOL g_FXCRT_XML_IsDigital(uint8_t ch)
100 { 100 {
101 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Digital) != 0; 101 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_Digital) != 0;
102 } 102 }
103 FX_BOOL g_FXCRT_XML_IsNameIntro(FX_BYTE ch) 103 FX_BOOL g_FXCRT_XML_IsNameIntro(uint8_t ch)
104 { 104 {
105 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameIntro) != 0; 105 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameIntro) != 0;
106 } 106 }
107 FX_BOOL g_FXCRT_XML_IsNameChar(FX_BYTE ch) 107 FX_BOOL g_FXCRT_XML_IsNameChar(uint8_t ch)
108 { 108 {
109 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameChar) != 0; 109 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameChar) != 0;
110 } 110 }
111 FX_BOOL g_FXCRT_XML_IsHexChar(FX_BYTE ch) 111 FX_BOOL g_FXCRT_XML_IsHexChar(uint8_t ch)
112 { 112 {
113 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_HexChar) != 0; 113 return (g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_HexChar) != 0;
114 } 114 }
115 void CXML_Parser::SkipWhiteSpaces() 115 void CXML_Parser::SkipWhiteSpaces()
116 { 116 {
117 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 117 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
118 if (IsEOF()) { 118 if (IsEOF()) {
119 return; 119 return;
120 } 120 }
121 do { 121 do {
122 while (m_dwIndex < m_dwBufferSize && g_FXCRT_XML_IsWhiteSpace(m_pBuffer[ m_dwIndex])) { 122 while (m_dwIndex < m_dwBufferSize && g_FXCRT_XML_IsWhiteSpace(m_pBuffer[ m_dwIndex])) {
123 m_dwIndex ++; 123 m_dwIndex ++;
124 } 124 }
125 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 125 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
126 if (m_dwIndex < m_dwBufferSize || IsEOF()) { 126 if (m_dwIndex < m_dwBufferSize || IsEOF()) {
127 break; 127 break;
128 } 128 }
129 } while (ReadNextBlock()); 129 } while (ReadNextBlock());
130 } 130 }
131 void CXML_Parser::GetName(CFX_ByteString &space, CFX_ByteString &name) 131 void CXML_Parser::GetName(CFX_ByteString &space, CFX_ByteString &name)
132 { 132 {
133 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 133 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
134 if (IsEOF()) { 134 if (IsEOF()) {
135 return; 135 return;
136 } 136 }
137 CFX_ByteTextBuf buf; 137 CFX_ByteTextBuf buf;
138 FX_BYTE ch; 138 uint8_t ch;
139 do { 139 do {
140 while (m_dwIndex < m_dwBufferSize) { 140 while (m_dwIndex < m_dwBufferSize) {
141 ch = m_pBuffer[m_dwIndex]; 141 ch = m_pBuffer[m_dwIndex];
142 if (ch == ':') { 142 if (ch == ':') {
143 space = buf.GetByteString(); 143 space = buf.GetByteString();
144 buf.Clear(); 144 buf.Clear();
145 } else if (g_FXCRT_XML_IsNameChar(ch)) { 145 } else if (g_FXCRT_XML_IsNameChar(ch)) {
146 buf.AppendChar(ch); 146 buf.AppendChar(ch);
147 } else { 147 } else {
148 break; 148 break;
149 } 149 }
150 m_dwIndex ++; 150 m_dwIndex ++;
151 } 151 }
152 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 152 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
153 if (m_dwIndex < m_dwBufferSize || IsEOF()) { 153 if (m_dwIndex < m_dwBufferSize || IsEOF()) {
154 break; 154 break;
155 } 155 }
156 } while (ReadNextBlock()); 156 } while (ReadNextBlock());
157 name = buf.GetByteString(); 157 name = buf.GetByteString();
158 } 158 }
159 void CXML_Parser::SkipLiterals(FX_BSTR str) 159 void CXML_Parser::SkipLiterals(FX_BSTR str)
160 { 160 {
161 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 161 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
162 if (IsEOF()) { 162 if (IsEOF()) {
163 return; 163 return;
164 } 164 }
165 FX_INT32 i = 0, iLen = str.GetLength(); 165 int32_t i = 0, iLen = str.GetLength();
166 do { 166 do {
167 while (m_dwIndex < m_dwBufferSize) { 167 while (m_dwIndex < m_dwBufferSize) {
168 if (str.GetAt(i) != m_pBuffer[m_dwIndex ++]) { 168 if (str.GetAt(i) != m_pBuffer[m_dwIndex ++]) {
169 i = 0; 169 i = 0;
170 } else { 170 } else {
171 i ++; 171 i ++;
172 if (i == iLen) { 172 if (i == iLen) {
173 break; 173 break;
174 } 174 }
175 } 175 }
(...skipping 11 matching lines...) Expand all
187 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwBufferSize; 187 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwBufferSize;
188 } 188 }
189 m_dwIndex = m_dwBufferSize; 189 m_dwIndex = m_dwBufferSize;
190 } 190 }
191 FX_DWORD CXML_Parser::GetCharRef() 191 FX_DWORD CXML_Parser::GetCharRef()
192 { 192 {
193 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 193 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
194 if (IsEOF()) { 194 if (IsEOF()) {
195 return 0; 195 return 0;
196 } 196 }
197 FX_BYTE ch; 197 uint8_t ch;
198 FX_INT32 iState = 0; 198 int32_t iState = 0;
199 CFX_ByteTextBuf buf; 199 CFX_ByteTextBuf buf;
200 FX_DWORD code = 0; 200 FX_DWORD code = 0;
201 do { 201 do {
202 while (m_dwIndex < m_dwBufferSize) { 202 while (m_dwIndex < m_dwBufferSize) {
203 ch = m_pBuffer[m_dwIndex]; 203 ch = m_pBuffer[m_dwIndex];
204 switch (iState) { 204 switch (iState) {
205 case 0: 205 case 0:
206 if (ch == '#') { 206 if (ch == '#') {
207 m_dwIndex ++; 207 m_dwIndex ++;
208 iState = 2; 208 iState = 2;
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 if (g_FXCRT_XML_IsDigital(ch)) { 245 if (g_FXCRT_XML_IsDigital(ch)) {
246 code = code * 10 + ch - '0'; 246 code = code * 10 + ch - '0';
247 } 247 }
248 break; 248 break;
249 case 4: 249 case 4:
250 m_dwIndex ++; 250 m_dwIndex ++;
251 if (ch == ';') { 251 if (ch == ';') {
252 iState = 10; 252 iState = 10;
253 break; 253 break;
254 } 254 }
255 FX_BYTE nHex = g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTY PE_HexChar; 255 uint8_t nHex = g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTY PE_HexChar;
256 if (nHex) { 256 if (nHex) {
257 if (nHex == FXCRTM_XML_CHARTYPE_HexDigital) { 257 if (nHex == FXCRTM_XML_CHARTYPE_HexDigital) {
258 code = (code << 4) + ch - '0'; 258 code = (code << 4) + ch - '0';
259 } else if (nHex == FXCRTM_XML_CHARTYPE_HexLowerLetter) { 259 } else if (nHex == FXCRTM_XML_CHARTYPE_HexLowerLetter) {
260 code = (code << 4) + ch - 87; 260 code = (code << 4) + ch - 87;
261 } else { 261 } else {
262 code = (code << 4) + ch - 55; 262 code = (code << 4) + ch - 55;
263 } 263 }
264 } 264 }
265 break; 265 break;
266 } 266 }
267 if (iState == 10) { 267 if (iState == 10) {
268 break; 268 break;
269 } 269 }
270 } 270 }
271 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 271 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
272 if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) { 272 if (iState == 10 || m_dwIndex < m_dwBufferSize || IsEOF()) {
273 break; 273 break;
274 } 274 }
275 } while (ReadNextBlock()); 275 } while (ReadNextBlock());
276 return code; 276 return code;
277 } 277 }
278 void CXML_Parser::GetAttrValue(CFX_WideString &value) 278 void CXML_Parser::GetAttrValue(CFX_WideString &value)
279 { 279 {
280 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 280 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
281 if (IsEOF()) { 281 if (IsEOF()) {
282 return; 282 return;
283 } 283 }
284 CFX_UTF8Decoder decoder; 284 CFX_UTF8Decoder decoder;
285 FX_BYTE mark = 0, ch = 0; 285 uint8_t mark = 0, ch = 0;
286 do { 286 do {
287 while (m_dwIndex < m_dwBufferSize) { 287 while (m_dwIndex < m_dwBufferSize) {
288 ch = m_pBuffer[m_dwIndex]; 288 ch = m_pBuffer[m_dwIndex];
289 if (mark == 0) { 289 if (mark == 0) {
290 if (ch != '\'' && ch != '"') { 290 if (ch != '\'' && ch != '"') {
291 return; 291 return;
292 } 292 }
293 mark = ch; 293 mark = ch;
294 m_dwIndex ++; 294 m_dwIndex ++;
295 ch = 0; 295 ch = 0;
(...skipping 20 matching lines...) Expand all
316 } while (ReadNextBlock()); 316 } while (ReadNextBlock());
317 value = decoder.GetResult(); 317 value = decoder.GetResult();
318 } 318 }
319 void CXML_Parser::GetTagName(CFX_ByteString &space, CFX_ByteString &name, FX_BOO L &bEndTag, FX_BOOL bStartTag) 319 void CXML_Parser::GetTagName(CFX_ByteString &space, CFX_ByteString &name, FX_BOO L &bEndTag, FX_BOOL bStartTag)
320 { 320 {
321 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 321 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
322 if (IsEOF()) { 322 if (IsEOF()) {
323 return; 323 return;
324 } 324 }
325 bEndTag = FALSE; 325 bEndTag = FALSE;
326 FX_BYTE ch; 326 uint8_t ch;
327 FX_INT32 iState = bStartTag ? 1 : 0; 327 int32_t iState = bStartTag ? 1 : 0;
328 do { 328 do {
329 while (m_dwIndex < m_dwBufferSize) { 329 while (m_dwIndex < m_dwBufferSize) {
330 ch = m_pBuffer[m_dwIndex]; 330 ch = m_pBuffer[m_dwIndex];
331 switch (iState) { 331 switch (iState) {
332 case 0: 332 case 0:
333 m_dwIndex ++; 333 m_dwIndex ++;
334 if (ch != '<') { 334 if (ch != '<') {
335 break; 335 break;
336 } 336 }
337 iState = 1; 337 iState = 1;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 } 415 }
416 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 416 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
417 if (m_dwIndex < m_dwBufferSize || IsEOF()) { 417 if (m_dwIndex < m_dwBufferSize || IsEOF()) {
418 break; 418 break;
419 } 419 }
420 } while (ReadNextBlock()); 420 } while (ReadNextBlock());
421 SkipWhiteSpaces(); 421 SkipWhiteSpaces();
422 if (IsEOF()) { 422 if (IsEOF()) {
423 return pElement; 423 return pElement;
424 } 424 }
425 FX_BYTE ch = m_pBuffer[m_dwIndex ++]; 425 uint8_t ch = m_pBuffer[m_dwIndex ++];
426 if (ch == '/') { 426 if (ch == '/') {
427 m_dwIndex ++; 427 m_dwIndex ++;
428 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 428 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
429 return pElement; 429 return pElement;
430 } 430 }
431 if (ch != '>') { 431 if (ch != '>') {
432 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 432 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
433 delete pElement; 433 delete pElement;
434 return NULL; 434 return NULL;
435 } 435 }
436 SkipWhiteSpaces(); 436 SkipWhiteSpaces();
437 if (IsEOF()) { 437 if (IsEOF()) {
438 return pElement; 438 return pElement;
439 } 439 }
440 CFX_UTF8Decoder decoder; 440 CFX_UTF8Decoder decoder;
441 CFX_WideTextBuf content; 441 CFX_WideTextBuf content;
442 FX_BOOL bCDATA = FALSE; 442 FX_BOOL bCDATA = FALSE;
443 FX_INT32 iState = 0; 443 int32_t iState = 0;
444 do { 444 do {
445 while (m_dwIndex < m_dwBufferSize) { 445 while (m_dwIndex < m_dwBufferSize) {
446 ch = m_pBuffer[m_dwIndex ++]; 446 ch = m_pBuffer[m_dwIndex ++];
447 switch (iState) { 447 switch (iState) {
448 case 0: 448 case 0:
449 if (ch == '<') { 449 if (ch == '<') {
450 iState = 1; 450 iState = 1;
451 } else if (ch == '&') { 451 } else if (ch == '&') {
452 decoder.ClearStatus(); 452 decoder.ClearStatus();
453 decoder.AppendChar(GetCharRef()); 453 decoder.AppendChar(GetCharRef());
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
597 { 597 {
598 Empty(); 598 Empty();
599 } 599 }
600 void CXML_Element::Empty() 600 void CXML_Element::Empty()
601 { 601 {
602 RemoveChildren(); 602 RemoveChildren();
603 } 603 }
604 void CXML_Element::RemoveChildren() 604 void CXML_Element::RemoveChildren()
605 { 605 {
606 for (int i = 0; i < m_Children.GetSize(); i += 2) { 606 for (int i = 0; i < m_Children.GetSize(); i += 2) {
607 ChildType type = (ChildType)(FX_UINTPTR)m_Children.GetAt(i); 607 ChildType type = (ChildType)(uintptr_t)m_Children.GetAt(i);
608 if (type == Content) { 608 if (type == Content) {
609 CXML_Content* content = (CXML_Content*)m_Children.GetAt(i + 1); 609 CXML_Content* content = (CXML_Content*)m_Children.GetAt(i + 1);
610 delete content; 610 delete content;
611 } else if (type == Element) { 611 } else if (type == Element) {
612 CXML_Element* child = (CXML_Element*)m_Children.GetAt(i + 1); 612 CXML_Element* child = (CXML_Element*)m_Children.GetAt(i + 1);
613 child->RemoveChildren(); 613 child->RemoveChildren();
614 delete child; 614 delete child;
615 } 615 }
616 } 616 }
617 m_Children.RemoveAll(); 617 m_Children.RemoveAll();
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 FX_DWORD CXML_Element::CountChildren() const 719 FX_DWORD CXML_Element::CountChildren() const
720 { 720 {
721 return m_Children.GetSize() / 2; 721 return m_Children.GetSize() / 2;
722 } 722 }
723 CXML_Element::ChildType CXML_Element::GetChildType(FX_DWORD index) const 723 CXML_Element::ChildType CXML_Element::GetChildType(FX_DWORD index) const
724 { 724 {
725 index <<= 1; 725 index <<= 1;
726 if (index >= (FX_DWORD)m_Children.GetSize()) { 726 if (index >= (FX_DWORD)m_Children.GetSize()) {
727 return Invalid; 727 return Invalid;
728 } 728 }
729 return (ChildType)(FX_UINTPTR)m_Children.GetAt(index); 729 return (ChildType)(uintptr_t)m_Children.GetAt(index);
730 } 730 }
731 CFX_WideString CXML_Element::GetContent(FX_DWORD index) const 731 CFX_WideString CXML_Element::GetContent(FX_DWORD index) const
732 { 732 {
733 index <<= 1; 733 index <<= 1;
734 if (index >= (FX_DWORD)m_Children.GetSize() || 734 if (index >= (FX_DWORD)m_Children.GetSize() ||
735 (ChildType)(FX_UINTPTR)m_Children.GetAt(index) != Content) { 735 (ChildType)(uintptr_t)m_Children.GetAt(index) != Content) {
736 return CFX_WideString(); 736 return CFX_WideString();
737 } 737 }
738 CXML_Content* pContent = (CXML_Content*)m_Children.GetAt(index + 1); 738 CXML_Content* pContent = (CXML_Content*)m_Children.GetAt(index + 1);
739 if (pContent) { 739 if (pContent) {
740 return pContent->m_Content; 740 return pContent->m_Content;
741 } 741 }
742 return CFX_WideString(); 742 return CFX_WideString();
743 } 743 }
744 CXML_Element* CXML_Element::GetElement(FX_DWORD index) const 744 CXML_Element* CXML_Element::GetElement(FX_DWORD index) const
745 { 745 {
746 index <<= 1; 746 index <<= 1;
747 if (index >= (FX_DWORD)m_Children.GetSize() || 747 if (index >= (FX_DWORD)m_Children.GetSize() ||
748 (ChildType)(FX_UINTPTR)m_Children.GetAt(index) != Element) { 748 (ChildType)(uintptr_t)m_Children.GetAt(index) != Element) {
749 return NULL; 749 return NULL;
750 } 750 }
751 return (CXML_Element*)m_Children.GetAt(index + 1); 751 return (CXML_Element*)m_Children.GetAt(index + 1);
752 } 752 }
753 FX_DWORD CXML_Element::CountElements(FX_BSTR space, FX_BSTR tag) const 753 FX_DWORD CXML_Element::CountElements(FX_BSTR space, FX_BSTR tag) const
754 { 754 {
755 int count = 0; 755 int count = 0;
756 for (int i = 0; i < m_Children.GetSize(); i += 2) { 756 for (int i = 0; i < m_Children.GetSize(); i += 2) {
757 ChildType type = (ChildType)(FX_UINTPTR)m_Children.GetAt(i); 757 ChildType type = (ChildType)(uintptr_t)m_Children.GetAt(i);
758 if (type != Element) { 758 if (type != Element) {
759 continue; 759 continue;
760 } 760 }
761 CXML_Element* pKid = (CXML_Element*)m_Children.GetAt(i + 1); 761 CXML_Element* pKid = (CXML_Element*)m_Children.GetAt(i + 1);
762 if ((space.IsEmpty() || pKid->m_QSpaceName == space) && pKid->m_TagName == tag) { 762 if ((space.IsEmpty() || pKid->m_QSpaceName == space) && pKid->m_TagName == tag) {
763 count ++; 763 count ++;
764 } 764 }
765 } 765 }
766 return count; 766 return count;
767 } 767 }
768 CXML_Element* CXML_Element::GetElement(FX_BSTR space, FX_BSTR tag, int index) co nst 768 CXML_Element* CXML_Element::GetElement(FX_BSTR space, FX_BSTR tag, int index) co nst
769 { 769 {
770 if (index < 0) { 770 if (index < 0) {
771 return NULL; 771 return NULL;
772 } 772 }
773 for (int i = 0; i < m_Children.GetSize(); i += 2) { 773 for (int i = 0; i < m_Children.GetSize(); i += 2) {
774 ChildType type = (ChildType)(FX_UINTPTR)m_Children.GetAt(i); 774 ChildType type = (ChildType)(uintptr_t)m_Children.GetAt(i);
775 if (type != Element) { 775 if (type != Element) {
776 continue; 776 continue;
777 } 777 }
778 CXML_Element* pKid = (CXML_Element*)m_Children.GetAt(i + 1); 778 CXML_Element* pKid = (CXML_Element*)m_Children.GetAt(i + 1);
779 if ((!space.IsEmpty() && pKid->m_QSpaceName != space) || pKid->m_TagName != tag) { 779 if ((!space.IsEmpty() && pKid->m_QSpaceName != space) || pKid->m_TagName != tag) {
780 continue; 780 continue;
781 } 781 }
782 if (index -- == 0) { 782 if (index -- == 0) {
783 return pKid; 783 return pKid;
784 } 784 }
785 } 785 }
786 return NULL; 786 return NULL;
787 } 787 }
788 FX_DWORD CXML_Element::FindElement(CXML_Element *pChild) const 788 FX_DWORD CXML_Element::FindElement(CXML_Element *pChild) const
789 { 789 {
790 for (int i = 0; i < m_Children.GetSize(); i += 2) { 790 for (int i = 0; i < m_Children.GetSize(); i += 2) {
791 if ((ChildType)(FX_UINTPTR)m_Children.GetAt(i) == Element && 791 if ((ChildType)(uintptr_t)m_Children.GetAt(i) == Element &&
792 (CXML_Element*)m_Children.GetAt(i + 1) == pChild) { 792 (CXML_Element*)m_Children.GetAt(i + 1) == pChild) {
793 return (FX_DWORD)(i >> 1); 793 return (FX_DWORD)(i >> 1);
794 } 794 }
795 } 795 }
796 return (FX_DWORD) - 1; 796 return (FX_DWORD) - 1;
797 } 797 }
798 const CFX_WideString* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const 798 const CFX_WideString* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const
799 { 799 {
800 if (m_pMap == NULL) { 800 if (m_pMap == NULL) {
801 return NULL; 801 return NULL;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 } 855 }
856 void CXML_AttrMap::RemoveAll() 856 void CXML_AttrMap::RemoveAll()
857 { 857 {
858 if (!m_pMap) { 858 if (!m_pMap) {
859 return; 859 return;
860 } 860 }
861 m_pMap->RemoveAll(); 861 m_pMap->RemoveAll();
862 delete m_pMap; 862 delete m_pMap;
863 m_pMap = NULL; 863 m_pMap = NULL;
864 } 864 }
OLDNEW
« no previous file with comments | « core/src/fxcrt/fx_xml_composer.cpp ('k') | core/src/fxcrt/fxcrt_platforms.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698