1 // =================================
 2 // Copyright (c) 2021 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #include <sngxml/xml/XmlParserInterface.hpp>
 7 #include <sngxml/xml/XmlParser.hpp>
 8 #include <soulng/lexer/TrivialLexer.hpp>
 9 #include <soulng/lexer/XmlParsingLog.hpp>
10 #include <soulng/util/Unicode.hpp>
11 #include <soulng/util/MappedInputFile.hpp>
12 #include <iostream>
13 
14 namespace sngxml { namespace xml {
15 
16 using namespace soulng::util;
17 using namespace soulng::unicode;
18 
19 void ParseXmlFile(const std::string& xmlFileNameXmlContentHandler* contentHandler)
20 {
21     ParseXmlFile(xmlFileNamecontentHandlerFlags::none);
22 }
23 
24 void ParseXmlFile(const std::string& xmlFileNameXmlContentHandler* contentHandlerFlags flags)
25 {
26     std::string xmlContent = ReadFile(xmlFileName);
27     ParseXmlContent(xmlContentxmlFileNamecontentHandlerflags);
28 }
29 
30 void ParseXmlContent(const std::string& xmlContentconst std::string& systemIdXmlContentHandler* contentHandler)
31 {
32     ParseXmlContent(ToUtf32(xmlContent)systemIdcontentHandlerFlags::none);
33 }
34 
35 void ParseXmlContent(const std::string& xmlContentconst std::string& systemIdXmlContentHandler* contentHandlerFlags flags)
36 {
37     ParseXmlContent(ToUtf32(xmlContent)systemIdcontentHandlerflags);
38 }
39 
40 void ParseXmlContent(const std::u32string& xmlContentconst std::string& systemIdXmlContentHandler* contentHandler)
41 {
42     ParseXmlContent(xmlContentsystemIdcontentHandlerFlags::none);
43 }
44 
45 void ParseXmlContent(const std::u32string& xmlContentconst std::string& systemIdXmlContentHandler* contentHandlerFlags flags)
46 {
47     soulng::lexer::XmlParsingLog debugLog(std::cerr);
48     TrivialLexer xmlLexer(xmlContentsystemId0);
49     if ((flags & Flags::debug) != Flags::none)
50     {
51         xmlLexer.SetLog(&debugLog);
52     }
53     XmlProcessor xmlProcessor(xmlLexercontentHandler);
54     XmlParser::Parse(xmlLexer&xmlProcessor);
55 }
56 
57 } } // namespace sngxml::xml