3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
5 * COPYRIGHT: Copyright 2016,2017 Mark Jansen (mark.jansen@reactos.org)
25 using tinyxml2::XMLHandle
;
27 typedef std::basic_string
<WCHAR
> sdbstring
;
33 InExclude() : Include(false) { ; }
34 bool fromXml(XMLHandle dbNode
);
35 bool toSdb(PDB pdb
, Database
& db
);
43 ShimRef() : ShimTagid(0) { ; }
45 bool fromXml(XMLHandle dbNode
);
46 bool toSdb(PDB pdb
, Database
& db
);
49 std::string CommandLine
;
51 std::list
<InExclude
> InExcludes
;
56 Shim() : Tagid(0) { ; }
58 bool fromXml(XMLHandle dbNode
);
59 bool toSdb(PDB pdb
, Database
& db
);
65 std::list
<InExclude
> InExcludes
;
70 Layer() : Tagid(0) { ; }
72 bool fromXml(XMLHandle dbNode
);
73 bool toSdb(PDB pdb
, Database
& db
);
77 std::list
<ShimRef
> ShimRefs
;
82 MatchingFile() : Size(0), Checksum(0) {;}
84 bool fromXml(XMLHandle dbNode
);
85 bool toSdb(PDB pdb
, Database
& db
);
90 std::string CompanyName
;
91 std::string InternalName
;
92 std::string ProductName
;
93 std::string ProductVersion
;
94 std::string FileVersion
;
95 std::string BinFileVersion
;
97 std::string VerLanguage
;
98 std::string FileDescription
;
99 std::string OriginalFilename
;
100 std::string UptoBinFileVersion
;
101 std::string LinkerVersion
;
106 Exe() : Tagid(0) { ; }
108 bool fromXml(XMLHandle dbNode
);
109 bool toSdb(PDB pdb
, Database
& db
);
116 std::list
<MatchingFile
> MatchingFiles
;
117 std::list
<ShimRef
> ShimRefs
;
122 std::list
<InExclude
> InExcludes
;
123 std::list
<Shim
> Shims
;
129 bool fromXml(const char* fileName
);
130 bool fromXml(XMLHandle dbNode
);
131 bool toSdb(LPCWSTR path
);
133 void WriteString(PDB pdb
, TAG tag
, const sdbstring
& str
, bool always
= false);
134 void WriteString(PDB pdb
, TAG tag
, const std::string
& str
, bool always
= false);
135 void WriteBinary(PDB pdb
, TAG tag
, const GUID
& guid
, bool always
= false);
136 void WriteBinary(PDB pdb
, TAG tag
, const std::vector
<BYTE
>& data
, bool always
= false);
137 void WriteDWord(PDB pdb
, TAG tag
, DWORD value
, bool always
= false);
138 TAGID
BeginWriteListTag(PDB pdb
, TAG tag
);
139 BOOL
EndWriteListTag(PDB pdb
, TAGID tagid
);
141 void InsertShimTagid(const sdbstring
& name
, TAGID tagid
);
142 inline void InsertShimTagid(const std::string
& name
, TAGID tagid
)
144 InsertShimTagid(sdbstring(name
.begin(), name
.end()), tagid
);
146 TAGID
FindShimTagid(const sdbstring
& name
);
147 inline TAGID
FindShimTagid(const std::string
& name
)
149 return FindShimTagid(sdbstring(name
.begin(), name
.end()));
153 void InsertPatchTagid(const sdbstring
& name
, TAGID tagid
);
154 inline void InsertPatchTagid(const std::string
& name
, TAGID tagid
)
156 InsertPatchTagid(sdbstring(name
.begin(), name
.end()), tagid
);
158 TAGID
FindPatchTagid(const sdbstring
& name
);
159 inline TAGID
FindPatchTagid(const std::string
& name
)
161 return FindPatchTagid(sdbstring(name
.begin(), name
.end()));
167 struct Library Library
;
168 std::list
<Layer
> Layers
;
172 std::map
<sdbstring
, TAGID
> KnownShims
;
173 std::map
<sdbstring
, TAGID
> KnownPatches
;