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

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

Issue 2477443002: Remove FX_BOOL from core (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 | « core/fxcrt/fx_xml.h ('k') | core/fxcrt/fxcrt_stream.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 "core/fxcrt/xml_int.h" 7 #include "core/fxcrt/xml_int.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 size_t CXML_DataStmAcc::GetBlockSize() { 163 size_t CXML_DataStmAcc::GetBlockSize() {
164 return m_dwSize; 164 return m_dwSize;
165 } 165 }
166 166
167 FX_FILESIZE CXML_DataStmAcc::GetBlockOffset() { 167 FX_FILESIZE CXML_DataStmAcc::GetBlockOffset() {
168 return m_nStart; 168 return m_nStart;
169 } 169 }
170 170
171 CXML_Parser::CXML_Parser() 171 CXML_Parser::CXML_Parser()
172 : m_pDataAcc(nullptr), 172 : m_pDataAcc(nullptr),
173 m_bOwnedStream(FALSE), 173 m_bOwnedStream(false),
174 m_nOffset(0), 174 m_nOffset(0),
175 m_bSaveSpaceChars(FALSE), 175 m_bSaveSpaceChars(false),
176 m_pBuffer(nullptr), 176 m_pBuffer(nullptr),
177 m_dwBufferSize(0), 177 m_dwBufferSize(0),
178 m_nBufferOffset(0), 178 m_nBufferOffset(0),
179 m_dwIndex(0) {} 179 m_dwIndex(0) {}
180 180
181 CXML_Parser::~CXML_Parser() { 181 CXML_Parser::~CXML_Parser() {
182 if (m_bOwnedStream) { 182 if (m_bOwnedStream) {
183 m_pDataAcc->Release(); 183 m_pDataAcc->Release();
184 } 184 }
185 } 185 }
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 } 419 }
420 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 420 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
421 if (ch == mark || m_dwIndex < m_dwBufferSize || IsEOF()) { 421 if (ch == mark || m_dwIndex < m_dwBufferSize || IsEOF()) {
422 break; 422 break;
423 } 423 }
424 } while (ReadNextBlock()); 424 } while (ReadNextBlock());
425 value = decoder.GetResult(); 425 value = decoder.GetResult();
426 } 426 }
427 void CXML_Parser::GetTagName(CFX_ByteString& space, 427 void CXML_Parser::GetTagName(CFX_ByteString& space,
428 CFX_ByteString& name, 428 CFX_ByteString& name,
429 FX_BOOL& bEndTag, 429 bool& bEndTag,
430 FX_BOOL bStartTag) { 430 bool bStartTag) {
431 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 431 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
432 if (IsEOF()) { 432 if (IsEOF()) {
433 return; 433 return;
434 } 434 }
435 bEndTag = FALSE; 435 bEndTag = false;
436 uint8_t ch; 436 uint8_t ch;
437 int32_t iState = bStartTag ? 1 : 0; 437 int32_t iState = bStartTag ? 1 : 0;
438 do { 438 do {
439 while (m_dwIndex < m_dwBufferSize) { 439 while (m_dwIndex < m_dwBufferSize) {
440 ch = m_pBuffer[m_dwIndex]; 440 ch = m_pBuffer[m_dwIndex];
441 switch (iState) { 441 switch (iState) {
442 case 0: 442 case 0:
443 m_dwIndex++; 443 m_dwIndex++;
444 if (ch != '<') { 444 if (ch != '<') {
445 break; 445 break;
446 } 446 }
447 iState = 1; 447 iState = 1;
448 break; 448 break;
449 case 1: 449 case 1:
450 if (ch == '?') { 450 if (ch == '?') {
451 m_dwIndex++; 451 m_dwIndex++;
452 SkipLiterals("?>"); 452 SkipLiterals("?>");
453 iState = 0; 453 iState = 0;
454 break; 454 break;
455 } else if (ch == '!') { 455 } else if (ch == '!') {
456 m_dwIndex++; 456 m_dwIndex++;
457 SkipLiterals("-->"); 457 SkipLiterals("-->");
458 iState = 0; 458 iState = 0;
459 break; 459 break;
460 } 460 }
461 if (ch == '/') { 461 if (ch == '/') {
462 m_dwIndex++; 462 m_dwIndex++;
463 GetName(space, name); 463 GetName(space, name);
464 bEndTag = TRUE; 464 bEndTag = true;
465 } else { 465 } else {
466 GetName(space, name); 466 GetName(space, name);
467 bEndTag = FALSE; 467 bEndTag = false;
468 } 468 }
469 return; 469 return;
470 } 470 }
471 } 471 }
472 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 472 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
473 if (m_dwIndex < m_dwBufferSize || IsEOF()) { 473 if (m_dwIndex < m_dwBufferSize || IsEOF()) {
474 break; 474 break;
475 } 475 }
476 } while (ReadNextBlock()); 476 } while (ReadNextBlock());
477 } 477 }
478 CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, 478 CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, bool bStartTag) {
479 FX_BOOL bStartTag) {
480 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 479 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
481 if (IsEOF()) { 480 if (IsEOF()) {
482 return nullptr; 481 return nullptr;
483 } 482 }
484 CFX_ByteString tag_name, tag_space; 483 CFX_ByteString tag_name, tag_space;
485 FX_BOOL bEndTag; 484 bool bEndTag;
486 GetTagName(tag_space, tag_name, bEndTag, bStartTag); 485 GetTagName(tag_space, tag_name, bEndTag, bStartTag);
487 if (tag_name.IsEmpty() || bEndTag) { 486 if (tag_name.IsEmpty() || bEndTag) {
488 return nullptr; 487 return nullptr;
489 } 488 }
490 CXML_Element* pElement = new CXML_Element; 489 CXML_Element* pElement = new CXML_Element;
491 pElement->m_pParent = pParent; 490 pElement->m_pParent = pParent;
492 pElement->SetTag(tag_space.AsStringC(), tag_name.AsStringC()); 491 pElement->SetTag(tag_space.AsStringC(), tag_name.AsStringC());
493 do { 492 do {
494 CFX_ByteString attr_space, attr_name; 493 CFX_ByteString attr_space, attr_name;
495 while (m_dwIndex < m_dwBufferSize) { 494 while (m_dwIndex < m_dwBufferSize) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; 535 m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex;
537 delete pElement; 536 delete pElement;
538 return nullptr; 537 return nullptr;
539 } 538 }
540 SkipWhiteSpaces(); 539 SkipWhiteSpaces();
541 if (IsEOF()) { 540 if (IsEOF()) {
542 return pElement; 541 return pElement;
543 } 542 }
544 CFX_UTF8Decoder decoder; 543 CFX_UTF8Decoder decoder;
545 CFX_WideTextBuf content; 544 CFX_WideTextBuf content;
546 FX_BOOL bCDATA = FALSE; 545 bool bCDATA = false;
547 int32_t iState = 0; 546 int32_t iState = 0;
548 do { 547 do {
549 while (m_dwIndex < m_dwBufferSize) { 548 while (m_dwIndex < m_dwBufferSize) {
550 ch = m_pBuffer[m_dwIndex++]; 549 ch = m_pBuffer[m_dwIndex++];
551 switch (iState) { 550 switch (iState) {
552 case 0: 551 case 0:
553 if (ch == '<') { 552 if (ch == '<') {
554 iState = 1; 553 iState = 1;
555 } else if (ch == '&') { 554 } else if (ch == '&') {
556 decoder.ClearStatus(); 555 decoder.ClearStatus();
(...skipping 17 matching lines...) Expand all
574 iState = 10; 573 iState = 10;
575 } else { 574 } else {
576 content << decoder.GetResult(); 575 content << decoder.GetResult();
577 CFX_WideString dataStr = content.MakeString(); 576 CFX_WideString dataStr = content.MakeString();
578 if (!bCDATA && !m_bSaveSpaceChars) { 577 if (!bCDATA && !m_bSaveSpaceChars) {
579 dataStr.TrimRight(L" \t\r\n"); 578 dataStr.TrimRight(L" \t\r\n");
580 } 579 }
581 InsertContentSegment(bCDATA, dataStr.AsStringC(), pElement); 580 InsertContentSegment(bCDATA, dataStr.AsStringC(), pElement);
582 content.Clear(); 581 content.Clear();
583 decoder.Clear(); 582 decoder.Clear();
584 bCDATA = FALSE; 583 bCDATA = false;
585 iState = 0; 584 iState = 0;
586 m_dwIndex--; 585 m_dwIndex--;
587 CXML_Element* pSubElement = ParseElement(pElement, TRUE); 586 CXML_Element* pSubElement = ParseElement(pElement, true);
588 if (!pSubElement) { 587 if (!pSubElement) {
589 break; 588 break;
590 } 589 }
591 pSubElement->m_pParent = pElement; 590 pSubElement->m_pParent = pElement;
592 pElement->m_Children.push_back( 591 pElement->m_Children.push_back(
593 {CXML_Element::Element, pSubElement}); 592 {CXML_Element::Element, pSubElement});
594 SkipWhiteSpaces(); 593 SkipWhiteSpaces();
595 } 594 }
596 break; 595 break;
597 case 2: 596 case 2:
(...skipping 20 matching lines...) Expand all
618 } 617 }
619 } while (ReadNextBlock()); 618 } while (ReadNextBlock());
620 content << decoder.GetResult(); 619 content << decoder.GetResult();
621 CFX_WideString dataStr = content.MakeString(); 620 CFX_WideString dataStr = content.MakeString();
622 if (!m_bSaveSpaceChars) { 621 if (!m_bSaveSpaceChars) {
623 dataStr.TrimRight(L" \t\r\n"); 622 dataStr.TrimRight(L" \t\r\n");
624 } 623 }
625 InsertContentSegment(bCDATA, dataStr.AsStringC(), pElement); 624 InsertContentSegment(bCDATA, dataStr.AsStringC(), pElement);
626 content.Clear(); 625 content.Clear();
627 decoder.Clear(); 626 decoder.Clear();
628 bCDATA = FALSE; 627 bCDATA = false;
629 return pElement; 628 return pElement;
630 } 629 }
631 void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, 630 void CXML_Parser::InsertContentSegment(bool bCDATA,
632 const CFX_WideStringC& content, 631 const CFX_WideStringC& content,
633 CXML_Element* pElement) { 632 CXML_Element* pElement) {
634 if (content.IsEmpty()) { 633 if (content.IsEmpty()) {
635 return; 634 return;
636 } 635 }
637 CXML_Content* pContent = new CXML_Content; 636 CXML_Content* pContent = new CXML_Content;
638 pContent->Set(bCDATA, content); 637 pContent->Set(bCDATA, content);
639 pElement->m_Children.push_back({CXML_Element::Content, pContent}); 638 pElement->m_Children.push_back({CXML_Element::Content, pContent});
640 } 639 }
641 static CXML_Element* XML_ContinueParse(CXML_Parser& parser, 640 static CXML_Element* XML_ContinueParse(CXML_Parser& parser,
642 FX_BOOL bSaveSpaceChars, 641 bool bSaveSpaceChars,
643 FX_FILESIZE* pParsedSize) { 642 FX_FILESIZE* pParsedSize) {
644 parser.m_bSaveSpaceChars = bSaveSpaceChars; 643 parser.m_bSaveSpaceChars = bSaveSpaceChars;
645 CXML_Element* pElement = parser.ParseElement(nullptr, FALSE); 644 CXML_Element* pElement = parser.ParseElement(nullptr, false);
646 if (pParsedSize) { 645 if (pParsedSize) {
647 *pParsedSize = parser.m_nOffset; 646 *pParsedSize = parser.m_nOffset;
648 } 647 }
649 return pElement; 648 return pElement;
650 } 649 }
651 CXML_Element* CXML_Element::Parse(const void* pBuffer, 650 CXML_Element* CXML_Element::Parse(const void* pBuffer,
652 size_t size, 651 size_t size,
653 FX_BOOL bSaveSpaceChars, 652 bool bSaveSpaceChars,
654 FX_FILESIZE* pParsedSize) { 653 FX_FILESIZE* pParsedSize) {
655 CXML_Parser parser; 654 CXML_Parser parser;
656 if (!parser.Init((uint8_t*)pBuffer, size)) { 655 if (!parser.Init((uint8_t*)pBuffer, size)) {
657 return nullptr; 656 return nullptr;
658 } 657 }
659 return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); 658 return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize);
660 } 659 }
661 CXML_Element* CXML_Element::Parse(IFX_SeekableReadStream* pFile, 660 CXML_Element* CXML_Element::Parse(IFX_SeekableReadStream* pFile,
662 FX_BOOL bSaveSpaceChars, 661 bool bSaveSpaceChars,
663 FX_FILESIZE* pParsedSize) { 662 FX_FILESIZE* pParsedSize) {
664 CXML_Parser parser; 663 CXML_Parser parser;
665 if (!parser.Init(pFile)) { 664 if (!parser.Init(pFile)) {
666 return nullptr; 665 return nullptr;
667 } 666 }
668 return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); 667 return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize);
669 } 668 }
670 CXML_Element* CXML_Element::Parse(IFX_BufferRead* pBuffer, 669 CXML_Element* CXML_Element::Parse(IFX_BufferRead* pBuffer,
671 FX_BOOL bSaveSpaceChars, 670 bool bSaveSpaceChars,
672 FX_FILESIZE* pParsedSize) { 671 FX_FILESIZE* pParsedSize) {
673 CXML_Parser parser; 672 CXML_Parser parser;
674 if (!parser.Init(pBuffer)) { 673 if (!parser.Init(pBuffer)) {
675 return nullptr; 674 return nullptr;
676 } 675 }
677 return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); 676 return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize);
678 } 677 }
679 CXML_Element::CXML_Element() : m_QSpaceName(), m_TagName(), m_AttrMap() {} 678 CXML_Element::CXML_Element() : m_QSpaceName(), m_TagName(), m_AttrMap() {}
680 CXML_Element::CXML_Element(const CFX_ByteStringC& qSpace, 679 CXML_Element::CXML_Element(const CFX_ByteStringC& qSpace,
681 const CFX_ByteStringC& tagName) 680 const CFX_ByteStringC& tagName)
(...skipping 16 matching lines...) Expand all
698 if (record.type == Content) { 697 if (record.type == Content) {
699 delete static_cast<CXML_Content*>(record.child); 698 delete static_cast<CXML_Content*>(record.child);
700 } else if (record.type == Element) { 699 } else if (record.type == Element) {
701 CXML_Element* child = static_cast<CXML_Element*>(record.child); 700 CXML_Element* child = static_cast<CXML_Element*>(record.child);
702 child->RemoveChildren(); 701 child->RemoveChildren();
703 delete child; 702 delete child;
704 } 703 }
705 } 704 }
706 m_Children.clear(); 705 m_Children.clear();
707 } 706 }
708 CFX_ByteString CXML_Element::GetTagName(FX_BOOL bQualified) const { 707 CFX_ByteString CXML_Element::GetTagName(bool bQualified) const {
709 if (!bQualified || m_QSpaceName.IsEmpty()) { 708 if (!bQualified || m_QSpaceName.IsEmpty()) {
710 return m_TagName; 709 return m_TagName;
711 } 710 }
712 CFX_ByteString bsTag = m_QSpaceName; 711 CFX_ByteString bsTag = m_QSpaceName;
713 bsTag += ":"; 712 bsTag += ":";
714 bsTag += m_TagName; 713 bsTag += m_TagName;
715 return bsTag; 714 return bsTag;
716 } 715 }
717 716
718 CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const { 717 CFX_ByteString CXML_Element::GetNamespace(bool bQualified) const {
719 return bQualified ? m_QSpaceName : GetNamespaceURI(m_QSpaceName); 718 return bQualified ? m_QSpaceName : GetNamespaceURI(m_QSpaceName);
720 } 719 }
721 720
722 CFX_ByteString CXML_Element::GetNamespaceURI( 721 CFX_ByteString CXML_Element::GetNamespaceURI(
723 const CFX_ByteString& qName) const { 722 const CFX_ByteString& qName) const {
724 const CFX_WideString* pwsSpace; 723 const CFX_WideString* pwsSpace;
725 const CXML_Element* pElement = this; 724 const CXML_Element* pElement = this;
726 do { 725 do {
727 if (qName.IsEmpty()) { 726 if (qName.IsEmpty()) {
728 pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns"); 727 pwsSpace = pElement->m_AttrMap.Lookup("", "xmlns");
(...skipping 12 matching lines...) Expand all
741 CFX_ByteString& name, 740 CFX_ByteString& name,
742 CFX_WideString& value) const { 741 CFX_WideString& value) const {
743 if (index < 0 || index >= m_AttrMap.GetSize()) { 742 if (index < 0 || index >= m_AttrMap.GetSize()) {
744 return; 743 return;
745 } 744 }
746 CXML_AttrItem& item = m_AttrMap.GetAt(index); 745 CXML_AttrItem& item = m_AttrMap.GetAt(index);
747 space = item.m_QSpaceName; 746 space = item.m_QSpaceName;
748 name = item.m_AttrName; 747 name = item.m_AttrName;
749 value = item.m_Value; 748 value = item.m_Value;
750 } 749 }
751 FX_BOOL CXML_Element::HasAttr(const CFX_ByteStringC& name) const { 750 bool CXML_Element::HasAttr(const CFX_ByteStringC& name) const {
752 CFX_ByteStringC bsSpace; 751 CFX_ByteStringC bsSpace;
753 CFX_ByteStringC bsName; 752 CFX_ByteStringC bsName;
754 FX_XML_SplitQualifiedName(name, bsSpace, bsName); 753 FX_XML_SplitQualifiedName(name, bsSpace, bsName);
755 return !!m_AttrMap.Lookup(CFX_ByteString(bsSpace), CFX_ByteString(bsName)); 754 return !!m_AttrMap.Lookup(CFX_ByteString(bsSpace), CFX_ByteString(bsName));
756 } 755 }
757 FX_BOOL CXML_Element::GetAttrValue(const CFX_ByteStringC& name, 756 bool CXML_Element::GetAttrValue(const CFX_ByteStringC& name,
758 CFX_WideString& attribute) const { 757 CFX_WideString& attribute) const {
759 CFX_ByteStringC bsSpace; 758 CFX_ByteStringC bsSpace;
760 CFX_ByteStringC bsName; 759 CFX_ByteStringC bsName;
761 FX_XML_SplitQualifiedName(name, bsSpace, bsName); 760 FX_XML_SplitQualifiedName(name, bsSpace, bsName);
762 return GetAttrValue(bsSpace, bsName, attribute); 761 return GetAttrValue(bsSpace, bsName, attribute);
763 } 762 }
764 FX_BOOL CXML_Element::GetAttrValue(const CFX_ByteStringC& space, 763 bool CXML_Element::GetAttrValue(const CFX_ByteStringC& space,
765 const CFX_ByteStringC& name, 764 const CFX_ByteStringC& name,
766 CFX_WideString& attribute) const { 765 CFX_WideString& attribute) const {
767 const CFX_WideString* pValue = 766 const CFX_WideString* pValue =
768 m_AttrMap.Lookup(CFX_ByteString(space), CFX_ByteString(name)); 767 m_AttrMap.Lookup(CFX_ByteString(space), CFX_ByteString(name));
769 if (pValue) { 768 if (pValue) {
770 attribute = *pValue; 769 attribute = *pValue;
771 return TRUE; 770 return true;
772 } 771 }
773 return FALSE; 772 return false;
774 } 773 }
775 FX_BOOL CXML_Element::GetAttrInteger(const CFX_ByteStringC& name, 774 bool CXML_Element::GetAttrInteger(const CFX_ByteStringC& name,
776 int& attribute) const { 775 int& attribute) const {
777 CFX_ByteStringC bsSpace; 776 CFX_ByteStringC bsSpace;
778 CFX_ByteStringC bsName; 777 CFX_ByteStringC bsName;
779 FX_XML_SplitQualifiedName(name, bsSpace, bsName); 778 FX_XML_SplitQualifiedName(name, bsSpace, bsName);
780 const CFX_WideString* pwsValue = 779 const CFX_WideString* pwsValue =
781 m_AttrMap.Lookup(CFX_ByteString(bsSpace), CFX_ByteString(bsName)); 780 m_AttrMap.Lookup(CFX_ByteString(bsSpace), CFX_ByteString(bsName));
782 if (pwsValue) { 781 if (pwsValue) {
783 attribute = pwsValue->GetInteger(); 782 attribute = pwsValue->GetInteger();
784 return TRUE; 783 return true;
785 } 784 }
786 return FALSE; 785 return false;
787 } 786 }
788 FX_BOOL CXML_Element::GetAttrInteger(const CFX_ByteStringC& space, 787 bool CXML_Element::GetAttrInteger(const CFX_ByteStringC& space,
789 const CFX_ByteStringC& name, 788 const CFX_ByteStringC& name,
790 int& attribute) const { 789 int& attribute) const {
791 const CFX_WideString* pwsValue = 790 const CFX_WideString* pwsValue =
792 m_AttrMap.Lookup(CFX_ByteString(space), CFX_ByteString(name)); 791 m_AttrMap.Lookup(CFX_ByteString(space), CFX_ByteString(name));
793 if (pwsValue) { 792 if (pwsValue) {
794 attribute = pwsValue->GetInteger(); 793 attribute = pwsValue->GetInteger();
795 return TRUE; 794 return true;
796 } 795 }
797 return FALSE; 796 return false;
798 } 797 }
799 FX_BOOL CXML_Element::GetAttrFloat(const CFX_ByteStringC& name, 798 bool CXML_Element::GetAttrFloat(const CFX_ByteStringC& name,
800 FX_FLOAT& attribute) const { 799 FX_FLOAT& attribute) const {
801 CFX_ByteStringC bsSpace, bsName; 800 CFX_ByteStringC bsSpace, bsName;
802 FX_XML_SplitQualifiedName(name, bsSpace, bsName); 801 FX_XML_SplitQualifiedName(name, bsSpace, bsName);
803 return GetAttrFloat(bsSpace, bsName, attribute); 802 return GetAttrFloat(bsSpace, bsName, attribute);
804 } 803 }
805 FX_BOOL CXML_Element::GetAttrFloat(const CFX_ByteStringC& space, 804 bool CXML_Element::GetAttrFloat(const CFX_ByteStringC& space,
806 const CFX_ByteStringC& name, 805 const CFX_ByteStringC& name,
807 FX_FLOAT& attribute) const { 806 FX_FLOAT& attribute) const {
808 const CFX_WideString* pValue = 807 const CFX_WideString* pValue =
809 m_AttrMap.Lookup(CFX_ByteString(space), CFX_ByteString(name)); 808 m_AttrMap.Lookup(CFX_ByteString(space), CFX_ByteString(name));
810 if (pValue) { 809 if (pValue) {
811 attribute = pValue->GetFloat(); 810 attribute = pValue->GetFloat();
812 return TRUE; 811 return true;
813 } 812 }
814 return FALSE; 813 return false;
815 } 814 }
816 CXML_Element::ChildType CXML_Element::GetChildType(uint32_t index) const { 815 CXML_Element::ChildType CXML_Element::GetChildType(uint32_t index) const {
817 return index < m_Children.size() ? m_Children[index].type : Invalid; 816 return index < m_Children.size() ? m_Children[index].type : Invalid;
818 } 817 }
819 CFX_WideString CXML_Element::GetContent(uint32_t index) const { 818 CFX_WideString CXML_Element::GetContent(uint32_t index) const {
820 if (index < m_Children.size() && m_Children[index].type == Content) { 819 if (index < m_Children.size() && m_Children[index].type == Content) {
821 CXML_Content* pContent = 820 CXML_Content* pContent =
822 static_cast<CXML_Content*>(m_Children[index].child); 821 static_cast<CXML_Content*>(m_Children[index].child);
823 if (pContent) 822 if (pContent)
824 return pContent->m_Content; 823 return pContent->m_Content;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 m_pMap->push_back({space, name, CFX_WideString(value)}); 913 m_pMap->push_back({space, name, CFX_WideString(value)});
915 } 914 }
916 915
917 int CXML_AttrMap::GetSize() const { 916 int CXML_AttrMap::GetSize() const {
918 return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0; 917 return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0;
919 } 918 }
920 919
921 CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { 920 CXML_AttrItem& CXML_AttrMap::GetAt(int index) const {
922 return (*m_pMap)[index]; 921 return (*m_pMap)[index];
923 } 922 }
OLDNEW
« no previous file with comments | « core/fxcrt/fx_xml.h ('k') | core/fxcrt/fxcrt_stream.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698