MCPcopy Create free account
hub / github.com/crossuo/crossuo / Identify

Method Identify

external/tinyxml2.cpp:688–755  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

686
687
688char* XMLDocument::Identify( char* p, XMLNode** node )
689{
690 TIXMLASSERT( node );
691 TIXMLASSERT( p );
692 char* const start = p;
693 int const startLine = _parseCurLineNum;
694 p = XMLUtil::SkipWhiteSpace( p, &_parseCurLineNum );
695 if( !*p ) {
696 *node = 0;
697 TIXMLASSERT( p );
698 return p;
699 }
700
701 // These strings define the matching patterns:
702 static const char* xmlHeader = { "<?" };
703 static const char* commentHeader = { "<!--" };
704 static const char* cdataHeader = { "<![CDATA[" };
705 static const char* dtdHeader = { "<!" };
706 static const char* elementHeader = { "<" }; // and a header for everything else; check last.
707
708 static const int xmlHeaderLen = 2;
709 static const int commentHeaderLen = 4;
710 static const int cdataHeaderLen = 9;
711 static const int dtdHeaderLen = 2;
712 static const int elementHeaderLen = 1;
713
714 TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLUnknown ) ); // use same memory pool
715 TIXMLASSERT( sizeof( XMLComment ) == sizeof( XMLDeclaration ) ); // use same memory pool
716 XMLNode* returnNode = 0;
717 if ( XMLUtil::StringEqual( p, xmlHeader, xmlHeaderLen ) ) {
718 returnNode = CreateUnlinkedNode<XMLDeclaration>( _commentPool );
719 returnNode->_parseLineNum = _parseCurLineNum;
720 p += xmlHeaderLen;
721 }
722 else if ( XMLUtil::StringEqual( p, commentHeader, commentHeaderLen ) ) {
723 returnNode = CreateUnlinkedNode<XMLComment>( _commentPool );
724 returnNode->_parseLineNum = _parseCurLineNum;
725 p += commentHeaderLen;
726 }
727 else if ( XMLUtil::StringEqual( p, cdataHeader, cdataHeaderLen ) ) {
728 XMLText* text = CreateUnlinkedNode<XMLText>( _textPool );
729 returnNode = text;
730 returnNode->_parseLineNum = _parseCurLineNum;
731 p += cdataHeaderLen;
732 text->SetCData( true );
733 }
734 else if ( XMLUtil::StringEqual( p, dtdHeader, dtdHeaderLen ) ) {
735 returnNode = CreateUnlinkedNode<XMLUnknown>( _commentPool );
736 returnNode->_parseLineNum = _parseCurLineNum;
737 p += dtdHeaderLen;
738 }
739 else if ( XMLUtil::StringEqual( p, elementHeader, elementHeaderLen ) ) {
740 returnNode = CreateUnlinkedNode<XMLElement>( _elementPool );
741 returnNode->_parseLineNum = _parseCurLineNum;
742 p += elementHeaderLen;
743 }
744 else {
745 returnNode = CreateUnlinkedNode<XMLText>( _textPool );

Callers 1

ParseDeepMethod · 0.80

Calls 2

SkipWhiteSpaceFunction · 0.85
StringEqualFunction · 0.85

Tested by

no test coverage detected