@@ -53,32 +53,33 @@ std::optional<TrapDomain> createTargetTrapDomain(SwiftExtractorState& state,
53
53
return std::nullopt;
54
54
}
55
55
56
- std::optional<LinkDomain> createTargetLinkDomain (const SwiftExtractorState& state,
57
- const std::filesystem::path& target) {
56
+ namespace {
57
+ template <typename Domain>
58
+ std::optional<Domain> createTarget (const SwiftExtractorState& state,
59
+ const std::filesystem::path& target,
60
+ const char * extension) {
58
61
if (target.empty ()) {
59
62
return std::nullopt;
60
63
}
61
- auto file = getRelativeTrapPath (target, TrapType::linkage, " .link " );
64
+ auto file = getRelativeTrapPath (target, TrapType::linkage, extension );
62
65
auto ret =
63
66
TargetFile::create (file, state.configuration .trapDir , state.configuration .getTempTrapDir ());
64
67
if (ret) {
65
- return LinkDomain {*std::move (ret)};
68
+ return Domain {*std::move (ret)};
66
69
}
67
70
return std::nullopt;
68
71
}
69
72
73
+ } // namespace
74
+
75
+ std::optional<LinkDomain> createTargetLinkDomain (const SwiftExtractorState& state,
76
+ const std::filesystem::path& target) {
77
+ return createTarget<LinkDomain>(state, target, " .link" );
78
+ }
79
+
70
80
std::optional<ObjectDomain> createTargetObjectDomain (const SwiftExtractorState& state,
71
81
const std::filesystem::path& target) {
72
- if (target.empty ()) {
73
- return std::nullopt;
74
- }
75
- auto file = getRelativeTrapPath (target, TrapType::linkage, " .odep" );
76
- auto ret =
77
- TargetFile::create (file, state.configuration .trapDir , state.configuration .getTempTrapDir ());
78
- if (ret) {
79
- return ObjectDomain{*std::move (ret)};
80
- }
81
- return std::nullopt;
82
+ return createTarget<ObjectDomain>(state, target, " .odep" );
82
83
}
83
84
84
85
} // namespace codeql
0 commit comments