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

Side by Side Diff: xfa/fde/css/fde_csssyntax.cpp

Issue 2467203003: Remove FX_BOOL from xfa. (Closed)
Patch Set: Created 4 years, 1 month 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/css/fde_csssyntax.h ('k') | xfa/fde/fde_gedevice.h » ('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 "xfa/fde/css/fde_csssyntax.h" 7 #include "xfa/fde/css/fde_csssyntax.h"
8 8
9 #include "xfa/fde/css/fde_cssdatatable.h" 9 #include "xfa/fde/css/fde_cssdatatable.h"
10 #include "xfa/fgas/crt/fgas_codepage.h" 10 #include "xfa/fgas/crt/fgas_codepage.h"
(...skipping 15 matching lines...) Expand all
26 m_dwCheck((uint32_t)-1), 26 m_dwCheck((uint32_t)-1),
27 m_eMode(FDE_CSSSYNTAXMODE_RuleSet), 27 m_eMode(FDE_CSSSYNTAXMODE_RuleSet),
28 m_eStatus(FDE_CSSSYNTAXSTATUS_None), 28 m_eStatus(FDE_CSSSYNTAXSTATUS_None),
29 m_ModeStack(100) {} 29 m_ModeStack(100) {}
30 30
31 CFDE_CSSSyntaxParser::~CFDE_CSSSyntaxParser() { 31 CFDE_CSSSyntaxParser::~CFDE_CSSSyntaxParser() {
32 m_TextData.Reset(); 32 m_TextData.Reset();
33 m_TextPlane.Reset(); 33 m_TextPlane.Reset();
34 } 34 }
35 35
36 FX_BOOL CFDE_CSSSyntaxParser::Init(IFX_Stream* pStream, 36 bool CFDE_CSSSyntaxParser::Init(IFX_Stream* pStream,
37 int32_t iCSSPlaneSize, 37 int32_t iCSSPlaneSize,
38 int32_t iTextDataSize, 38 int32_t iTextDataSize,
39 FX_BOOL bOnlyDeclaration) { 39 bool bOnlyDeclaration) {
40 ASSERT(pStream && iCSSPlaneSize > 0 && iTextDataSize > 0); 40 ASSERT(pStream && iCSSPlaneSize > 0 && iTextDataSize > 0);
41 Reset(bOnlyDeclaration); 41 Reset(bOnlyDeclaration);
42 if (!m_TextData.EstimateSize(iTextDataSize)) { 42 if (!m_TextData.EstimateSize(iTextDataSize)) {
43 return FALSE; 43 return false;
44 } 44 }
45 uint8_t bom[4]; 45 uint8_t bom[4];
46 m_pStream = pStream; 46 m_pStream = pStream;
47 m_iStreamPos = m_pStream->GetBOM(bom); 47 m_iStreamPos = m_pStream->GetBOM(bom);
48 m_iPlaneSize = iCSSPlaneSize; 48 m_iPlaneSize = iCSSPlaneSize;
49 return TRUE; 49 return true;
50 } 50 }
51 FX_BOOL CFDE_CSSSyntaxParser::Init(const FX_WCHAR* pBuffer, 51 bool CFDE_CSSSyntaxParser::Init(const FX_WCHAR* pBuffer,
52 int32_t iBufferSize, 52 int32_t iBufferSize,
53 int32_t iTextDatSize, 53 int32_t iTextDatSize,
54 FX_BOOL bOnlyDeclaration) { 54 bool bOnlyDeclaration) {
55 ASSERT(pBuffer && iBufferSize > 0 && iTextDatSize > 0); 55 ASSERT(pBuffer && iBufferSize > 0 && iTextDatSize > 0);
56 Reset(bOnlyDeclaration); 56 Reset(bOnlyDeclaration);
57 if (!m_TextData.EstimateSize(iTextDatSize)) { 57 if (!m_TextData.EstimateSize(iTextDatSize)) {
58 return FALSE; 58 return false;
59 } 59 }
60 return m_TextPlane.AttachBuffer(pBuffer, iBufferSize); 60 return m_TextPlane.AttachBuffer(pBuffer, iBufferSize);
61 } 61 }
62 void CFDE_CSSSyntaxParser::Reset(FX_BOOL bOnlyDeclaration) { 62 void CFDE_CSSSyntaxParser::Reset(bool bOnlyDeclaration) {
63 m_TextPlane.Reset(); 63 m_TextPlane.Reset();
64 m_TextData.Reset(); 64 m_TextData.Reset();
65 m_pStream = nullptr; 65 m_pStream = nullptr;
66 m_iStreamPos = 0; 66 m_iStreamPos = 0;
67 m_iTextDatLen = 0; 67 m_iTextDatLen = 0;
68 m_dwCheck = (uint32_t)-1; 68 m_dwCheck = (uint32_t)-1;
69 m_eStatus = FDE_CSSSYNTAXSTATUS_None; 69 m_eStatus = FDE_CSSSYNTAXSTATUS_None;
70 m_eMode = bOnlyDeclaration ? FDE_CSSSYNTAXMODE_PropertyName 70 m_eMode = bOnlyDeclaration ? FDE_CSSSYNTAXMODE_PropertyName
71 : FDE_CSSSYNTAXMODE_RuleSet; 71 : FDE_CSSSYNTAXMODE_RuleSet;
72 } 72 }
73 FDE_CSSSYNTAXSTATUS CFDE_CSSSyntaxParser::DoSyntaxParse() { 73 FDE_CSSSYNTAXSTATUS CFDE_CSSSyntaxParser::DoSyntaxParse() {
74 while (m_eStatus >= FDE_CSSSYNTAXSTATUS_None) { 74 while (m_eStatus >= FDE_CSSSYNTAXSTATUS_None) {
75 if (m_TextPlane.IsEOF()) { 75 if (m_TextPlane.IsEOF()) {
76 if (!m_pStream) { 76 if (!m_pStream) {
77 if (m_eMode == FDE_CSSSYNTAXMODE_PropertyValue && 77 if (m_eMode == FDE_CSSSYNTAXMODE_PropertyValue &&
78 m_TextData.GetLength() > 0) { 78 m_TextData.GetLength() > 0) {
79 SaveTextData(); 79 SaveTextData();
80 return m_eStatus = FDE_CSSSYNTAXSTATUS_PropertyValue; 80 return m_eStatus = FDE_CSSSYNTAXSTATUS_PropertyValue;
81 } 81 }
82 return m_eStatus = FDE_CSSSYNTAXSTATUS_EOS; 82 return m_eStatus = FDE_CSSSYNTAXSTATUS_EOS;
83 } 83 }
84 FX_BOOL bEOS; 84 bool bEOS;
85 int32_t iLen = m_TextPlane.LoadFromStream(m_pStream, m_iStreamPos, 85 int32_t iLen = m_TextPlane.LoadFromStream(m_pStream, m_iStreamPos,
86 m_iPlaneSize, bEOS); 86 m_iPlaneSize, bEOS);
87 m_iStreamPos = m_pStream->GetPosition(); 87 m_iStreamPos = m_pStream->GetPosition();
88 if (iLen < 1) { 88 if (iLen < 1) {
89 if (m_eMode == FDE_CSSSYNTAXMODE_PropertyValue && 89 if (m_eMode == FDE_CSSSYNTAXMODE_PropertyValue &&
90 m_TextData.GetLength() > 0) { 90 m_TextData.GetLength() > 0) {
91 SaveTextData(); 91 SaveTextData();
92 return m_eStatus = FDE_CSSSYNTAXSTATUS_PropertyValue; 92 return m_eStatus = FDE_CSSSYNTAXSTATUS_PropertyValue;
93 } 93 }
94 return m_eStatus = FDE_CSSSYNTAXSTATUS_EOS; 94 return m_eStatus = FDE_CSSSYNTAXSTATUS_EOS;
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 FDE_CSSSYNTAXMODE* pMode = m_ModeStack.GetTopElement(); 244 FDE_CSSSYNTAXMODE* pMode = m_ModeStack.GetTopElement();
245 if (!pMode || *pMode != FDE_CSSSYNTAXMODE_Import) 245 if (!pMode || *pMode != FDE_CSSSYNTAXMODE_Import)
246 return m_eStatus = FDE_CSSSYNTAXSTATUS_Error; 246 return m_eStatus = FDE_CSSSYNTAXSTATUS_Error;
247 247
248 if (m_TextData.GetLength() > 0) { 248 if (m_TextData.GetLength() > 0) {
249 SaveTextData(); 249 SaveTextData();
250 if (IsImportEnabled()) { 250 if (IsImportEnabled()) {
251 return FDE_CSSSYNTAXSTATUS_MediaType; 251 return FDE_CSSSYNTAXSTATUS_MediaType;
252 } 252 }
253 } else { 253 } else {
254 FX_BOOL bEnabled = IsImportEnabled(); 254 bool bEnabled = IsImportEnabled();
255 m_TextPlane.MoveNext(); 255 m_TextPlane.MoveNext();
256 m_ModeStack.Pop(); 256 m_ModeStack.Pop();
257 SwitchMode(FDE_CSSSYNTAXMODE_RuleSet); 257 SwitchMode(FDE_CSSSYNTAXMODE_RuleSet);
258 if (bEnabled) { 258 if (bEnabled) {
259 DisableImport(); 259 DisableImport();
260 return FDE_CSSSYNTAXSTATUS_ImportClose; 260 return FDE_CSSSYNTAXSTATUS_ImportClose;
261 } 261 }
262 } 262 }
263 } break; 263 } break;
264 case '/': 264 case '/':
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 AppendChar(wch); 347 AppendChar(wch);
348 } 348 }
349 break; 349 break;
350 case FDE_CSSSYNTAXMODE_UnknownRule: 350 case FDE_CSSSYNTAXMODE_UnknownRule:
351 if (wch == ';') { 351 if (wch == ';') {
352 SwitchMode(FDE_CSSSYNTAXMODE_RuleSet); 352 SwitchMode(FDE_CSSSYNTAXMODE_RuleSet);
353 } 353 }
354 m_TextPlane.MoveNext(); 354 m_TextPlane.MoveNext();
355 break; 355 break;
356 default: 356 default:
357 ASSERT(FALSE); 357 ASSERT(false);
358 break; 358 break;
359 } 359 }
360 } 360 }
361 } 361 }
362 return m_eStatus; 362 return m_eStatus;
363 } 363 }
364 FX_BOOL CFDE_CSSSyntaxParser::IsImportEnabled() const { 364 bool CFDE_CSSSyntaxParser::IsImportEnabled() const {
365 if ((m_dwCheck & FDE_CSSSYNTAXCHECK_AllowImport) == 0) { 365 if ((m_dwCheck & FDE_CSSSYNTAXCHECK_AllowImport) == 0) {
366 return FALSE; 366 return false;
367 } 367 }
368 if (m_ModeStack.GetSize() > 1) { 368 if (m_ModeStack.GetSize() > 1) {
369 return FALSE; 369 return false;
370 } 370 }
371 return TRUE; 371 return true;
372 } 372 }
373 FX_BOOL CFDE_CSSSyntaxParser::AppendChar(FX_WCHAR wch) { 373 bool CFDE_CSSSyntaxParser::AppendChar(FX_WCHAR wch) {
374 m_TextPlane.MoveNext(); 374 m_TextPlane.MoveNext();
375 if (m_TextData.GetLength() > 0 || wch > ' ') { 375 if (m_TextData.GetLength() > 0 || wch > ' ') {
376 m_TextData.AppendChar(wch); 376 m_TextData.AppendChar(wch);
377 return TRUE; 377 return true;
378 } 378 }
379 return FALSE; 379 return false;
380 } 380 }
381 int32_t CFDE_CSSSyntaxParser::SaveTextData() { 381 int32_t CFDE_CSSSyntaxParser::SaveTextData() {
382 m_iTextDatLen = m_TextData.TrimEnd(); 382 m_iTextDatLen = m_TextData.TrimEnd();
383 m_TextData.Clear(); 383 m_TextData.Clear();
384 return m_iTextDatLen; 384 return m_iTextDatLen;
385 } 385 }
386 void CFDE_CSSSyntaxParser::SwitchMode(FDE_CSSSYNTAXMODE eMode) { 386 void CFDE_CSSSyntaxParser::SwitchMode(FDE_CSSSYNTAXMODE eMode) {
387 m_eMode = eMode; 387 m_eMode = eMode;
388 SaveTextData(); 388 SaveTextData();
389 } 389 }
390 int32_t CFDE_CSSSyntaxParser::SwitchToComment() { 390 int32_t CFDE_CSSSyntaxParser::SwitchToComment() {
391 int32_t iLength = m_TextData.GetLength(); 391 int32_t iLength = m_TextData.GetLength();
392 m_ModeStack.Push(m_eMode); 392 m_ModeStack.Push(m_eMode);
393 SwitchMode(FDE_CSSSYNTAXMODE_Comment); 393 SwitchMode(FDE_CSSSYNTAXMODE_Comment);
394 return iLength; 394 return iLength;
395 } 395 }
396 FX_BOOL CFDE_CSSSyntaxParser::RestoreMode() { 396 bool CFDE_CSSSyntaxParser::RestoreMode() {
397 FDE_CSSSYNTAXMODE* pMode = m_ModeStack.GetTopElement(); 397 FDE_CSSSYNTAXMODE* pMode = m_ModeStack.GetTopElement();
398 if (!pMode) 398 if (!pMode)
399 return FALSE; 399 return false;
400 400
401 SwitchMode(*pMode); 401 SwitchMode(*pMode);
402 m_ModeStack.Pop(); 402 m_ModeStack.Pop();
403 return TRUE; 403 return true;
404 } 404 }
405 const FX_WCHAR* CFDE_CSSSyntaxParser::GetCurrentString(int32_t& iLength) const { 405 const FX_WCHAR* CFDE_CSSSyntaxParser::GetCurrentString(int32_t& iLength) const {
406 iLength = m_iTextDatLen; 406 iLength = m_iTextDatLen;
407 return m_TextData.GetBuffer(); 407 return m_TextData.GetBuffer();
408 } 408 }
409 CFDE_CSSTextBuf::CFDE_CSSTextBuf() 409 CFDE_CSSTextBuf::CFDE_CSSTextBuf()
410 : m_bExtBuf(FALSE), 410 : m_bExtBuf(false),
411 m_pBuffer(nullptr), 411 m_pBuffer(nullptr),
412 m_iBufLen(0), 412 m_iBufLen(0),
413 m_iDatLen(0), 413 m_iDatLen(0),
414 m_iDatPos(0) {} 414 m_iDatPos(0) {}
415 CFDE_CSSTextBuf::~CFDE_CSSTextBuf() { 415 CFDE_CSSTextBuf::~CFDE_CSSTextBuf() {
416 Reset(); 416 Reset();
417 } 417 }
418 void CFDE_CSSTextBuf::Reset() { 418 void CFDE_CSSTextBuf::Reset() {
419 if (!m_bExtBuf) { 419 if (!m_bExtBuf) {
420 FX_Free(m_pBuffer); 420 FX_Free(m_pBuffer);
421 m_pBuffer = nullptr; 421 m_pBuffer = nullptr;
422 } 422 }
423 m_iDatPos = m_iDatLen = m_iBufLen; 423 m_iDatPos = m_iDatLen = m_iBufLen;
424 } 424 }
425 FX_BOOL CFDE_CSSTextBuf::AttachBuffer(const FX_WCHAR* pBuffer, 425 bool CFDE_CSSTextBuf::AttachBuffer(const FX_WCHAR* pBuffer, int32_t iBufLen) {
426 int32_t iBufLen) {
427 Reset(); 426 Reset();
428 m_pBuffer = const_cast<FX_WCHAR*>(pBuffer); 427 m_pBuffer = const_cast<FX_WCHAR*>(pBuffer);
429 m_iDatLen = m_iBufLen = iBufLen; 428 m_iDatLen = m_iBufLen = iBufLen;
430 return m_bExtBuf = TRUE; 429 return m_bExtBuf = true;
431 } 430 }
432 FX_BOOL CFDE_CSSTextBuf::EstimateSize(int32_t iAllocSize) { 431 bool CFDE_CSSTextBuf::EstimateSize(int32_t iAllocSize) {
433 ASSERT(iAllocSize > 0); 432 ASSERT(iAllocSize > 0);
434 Clear(); 433 Clear();
435 m_bExtBuf = FALSE; 434 m_bExtBuf = false;
436 return ExpandBuf(iAllocSize); 435 return ExpandBuf(iAllocSize);
437 } 436 }
438 int32_t CFDE_CSSTextBuf::LoadFromStream(IFX_Stream* pTxtStream, 437 int32_t CFDE_CSSTextBuf::LoadFromStream(IFX_Stream* pTxtStream,
439 int32_t iStreamOffset, 438 int32_t iStreamOffset,
440 int32_t iMaxChars, 439 int32_t iMaxChars,
441 FX_BOOL& bEOS) { 440 bool& bEOS) {
442 ASSERT(iStreamOffset >= 0 && iMaxChars > 0); 441 ASSERT(iStreamOffset >= 0 && iMaxChars > 0);
443 Clear(); 442 Clear();
444 m_bExtBuf = FALSE; 443 m_bExtBuf = false;
445 if (!ExpandBuf(iMaxChars)) { 444 if (!ExpandBuf(iMaxChars)) {
446 return 0; 445 return 0;
447 } 446 }
448 if (pTxtStream->GetPosition() != iStreamOffset) { 447 if (pTxtStream->GetPosition() != iStreamOffset) {
449 pTxtStream->Seek(FX_STREAMSEEK_Begin, iStreamOffset); 448 pTxtStream->Seek(FX_STREAMSEEK_Begin, iStreamOffset);
450 } 449 }
451 m_iDatLen = pTxtStream->ReadString(m_pBuffer, iMaxChars, bEOS); 450 m_iDatLen = pTxtStream->ReadString(m_pBuffer, iMaxChars, bEOS);
452 return m_iDatLen; 451 return m_iDatLen;
453 } 452 }
454 FX_BOOL CFDE_CSSTextBuf::ExpandBuf(int32_t iDesiredSize) { 453 bool CFDE_CSSTextBuf::ExpandBuf(int32_t iDesiredSize) {
455 if (m_bExtBuf) { 454 if (m_bExtBuf) {
456 return FALSE; 455 return false;
457 } 456 }
458 if (!m_pBuffer) { 457 if (!m_pBuffer) {
459 m_pBuffer = FX_Alloc(FX_WCHAR, iDesiredSize); 458 m_pBuffer = FX_Alloc(FX_WCHAR, iDesiredSize);
460 } else if (m_iBufLen != iDesiredSize) { 459 } else if (m_iBufLen != iDesiredSize) {
461 m_pBuffer = FX_Realloc(FX_WCHAR, m_pBuffer, iDesiredSize); 460 m_pBuffer = FX_Realloc(FX_WCHAR, m_pBuffer, iDesiredSize);
462 } else { 461 } else {
463 return TRUE; 462 return true;
464 } 463 }
465 if (!m_pBuffer) { 464 if (!m_pBuffer) {
466 m_iBufLen = 0; 465 m_iBufLen = 0;
467 return FALSE; 466 return false;
468 } 467 }
469 m_iBufLen = iDesiredSize; 468 m_iBufLen = iDesiredSize;
470 return TRUE; 469 return true;
471 } 470 }
472 void CFDE_CSSTextBuf::Subtract(int32_t iStart, int32_t iLength) { 471 void CFDE_CSSTextBuf::Subtract(int32_t iStart, int32_t iLength) {
473 ASSERT(iStart >= 0 && iLength > 0); 472 ASSERT(iStart >= 0 && iLength > 0);
474 if (iLength > m_iDatLen - iStart) { 473 if (iLength > m_iDatLen - iStart) {
475 iLength = m_iDatLen - iStart; 474 iLength = m_iDatLen - iStart;
476 } 475 }
477 if (iLength < 0) { 476 if (iLength < 0) {
478 iLength = 0; 477 iLength = 0;
479 } else { 478 } else {
480 FXSYS_memmove(m_pBuffer, m_pBuffer + iStart, iLength * sizeof(FX_WCHAR)); 479 FXSYS_memmove(m_pBuffer, m_pBuffer + iStart, iLength * sizeof(FX_WCHAR));
481 } 480 }
482 m_iDatLen = iLength; 481 m_iDatLen = iLength;
483 } 482 }
OLDNEW
« no previous file with comments | « xfa/fde/css/fde_csssyntax.h ('k') | xfa/fde/fde_gedevice.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698