MCPcopy Create free account
hub / github.com/bulletphysics/bullet3 / Identify

Method Identify

examples/ThirdPartyLibs/tinyxml2/tinyxml2.cpp:691–765  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers 1

ParseDeepMethod · 0.80

Calls 2

SkipWhiteSpaceFunction · 0.85
StringEqualFunction · 0.85

Tested by

no test coverage detected