MiKTeX 26.5-next
A scalable TeX distribution
Loading...
Searching...
No Matches
ExpatTpmParser.h
Go to the documentation of this file.
1
13
14#pragma once
15
16#include <stack>
17#include <vector>
18
19#include <expat.h>
20
21#include <miktex/Util/PathName>
22#include <miktex/Util/CharBuffer>
23
24#include <miktex/PackageManager/PackageManager>
25
26#include "TpmParser.h"
27
28MPM_INTERNAL_BEGIN_NAMESPACE;
29
30class ExpatTpmParser :
31 public TpmParser
32{
33
34public:
35
36 ExpatTpmParser();
37 ~ExpatTpmParser() override;
38
39 void Parse(const MiKTeX::Util::PathName& path, const std::string& texmfPrefix) override;
40
41 const MiKTeX::Packages::PackageInfo& GetPackageInfo() const override
42 {
43 return packageInfo;
44 }
45
46private:
47
48 void GetFiles(const XML_Char* text, std::vector<std::string>& files);
49
50 static void OnStartElement(void* pv, const XML_Char* name, const XML_Char** aAttr);
51 static void OnEndElement(void* pv, const XML_Char* name);
52 static void OnCharacterData(void* pv, const XML_Char* lpsz, int len);
53
55 std::stack<std::string> elementStack;
57 void* parser = nullptr;
58 std::string texMFPrefix;
59 std::unique_ptr<MiKTeX::Trace::TraceStream> traceError;
60 std::unique_ptr<MiKTeX::Trace::TraceStream> traceStopWatch;
61};
62
63MPM_INTERNAL_END_NAMESPACE;
Definition TpmParser.h:36
Instances of this class store characters.
Definition CharBuffer.h:30
Instances of this class can be used to store path names.
Definition PathName.h:64
Package record.
Definition PackageInfo.h:34