| 1797 | |
| 1798 | |
| 1799 | XMLError XMLDocument::Parse( const char* p, size_t len ) |
| 1800 | { |
| 1801 | const char* start = p; |
| 1802 | Clear(); |
| 1803 | |
| 1804 | if ( len == 0 || !p || !*p ) { |
| 1805 | SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); |
| 1806 | return _errorID; |
| 1807 | } |
| 1808 | if ( len == (size_t)(-1) ) { |
| 1809 | len = strlen( p ); |
| 1810 | } |
| 1811 | _charBuffer = new char[ len+1 ]; |
| 1812 | memcpy( _charBuffer, p, len ); |
| 1813 | _charBuffer[len] = 0; |
| 1814 | |
| 1815 | p = XMLUtil::SkipWhiteSpace( p ); |
| 1816 | p = XMLUtil::ReadBOM( p, &_writeBOM ); |
| 1817 | if ( !p || !*p ) { |
| 1818 | SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); |
| 1819 | return _errorID; |
| 1820 | } |
| 1821 | |
| 1822 | ptrdiff_t delta = p - start; // skip initial whitespace, BOM, etc. |
| 1823 | ParseDeep( _charBuffer+delta, 0 ); |
| 1824 | return _errorID; |
| 1825 | } |
| 1826 | |
| 1827 | |
| 1828 | void XMLDocument::Print( XMLPrinter* streamer ) const |
nothing calls this directly
no outgoing calls
no test coverage detected