MCPcopy Create free account
hub / github.com/Overload-Technologies/Overload / Identify

Method Identify

Dependencies/tinyxml2/src/tinyxml2.cpp:656–723  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

654
655
656char* XMLDocument::Identify( char* p, XMLNode** node )
657{
658 TIXMLASSERT( node );
659 TIXMLASSERT( p );
660 char* const start = p;
661 int const startLine = _parseCurLineNum;
662 p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );
663 if( !*p ) {
664 *node = 0;
665 TIXMLASSERT( p );
666 return p;
667 }
668
669 // These strings define the matching patterns:
670 static const char* xmlHeader = { "<?" };
671 static const char* commentHeader = { "<!--" };
672 static const char* cdataHeader = { "<![CDATA[" };
673 static const char* dtdHeader = { "<!" };
674 static const char* elementHeader = { "<" }; // and a header for everything else; check last.
675
676 static const int xmlHeaderLen = 2;
677 static const int commentHeaderLen = 4;
678 static const int cdataHeaderLen = 9;
679 static const int dtdHeaderLen = 2;
680 static const int elementHeaderLen = 1;
681
682 TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLUnknown ) ); // use same memory pool
683 TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLDeclaration ) ); // use same memory pool
684 XMLNode* returnNode = 0;
685 if ( XMLUtil::StringEqual( p, xmlHeader, xmlHeaderLen ) ) {
686 returnNode = CreateUnlinkedNode<XMLDeclaration>( _commentPool );
687 returnNode->_parseLineNum = _parseCurLineNum;
688 p += xmlHeaderLen;
689 }
690 else if ( XMLUtil::StringEqual( p, commentHeader, commentHeaderLen ) ) {
691 returnNode = CreateUnlinkedNode<XMLComment>( _commentPool );
692 returnNode->_parseLineNum = _parseCurLineNum;
693 p += commentHeaderLen;
694 }
695 else if ( XMLUtil::StringEqual( p, cdataHeader, cdataHeaderLen ) ) {
696 XMLText* text = CreateUnlinkedNode<XMLText>( _textPool );
697 returnNode = text;
698 returnNode->_parseLineNum = _parseCurLineNum;
699 p += cdataHeaderLen;
700 text->SetCData( true );
701 }
702 else if ( XMLUtil::StringEqual( p, dtdHeader, dtdHeaderLen ) ) {
703 returnNode = CreateUnlinkedNode<XMLUnknown>( _commentPool );
704 returnNode->_parseLineNum = _parseCurLineNum;
705 p += dtdHeaderLen;
706 }
707 else if ( XMLUtil::StringEqual( p, elementHeader, elementHeaderLen ) ) {
708 returnNode = CreateUnlinkedNode<XMLElement>( _elementPool );
709 returnNode->_parseLineNum = _parseCurLineNum;
710 p += elementHeaderLen;
711 }
712 else {
713 returnNode = CreateUnlinkedNode<XMLText>( _textPool );

Callers 1

ParseDeepMethod · 0.80

Calls 2

SkipWhiteSpaceFunction · 0.85
StringEqualFunction · 0.85

Tested by

no test coverage detected