diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2022-02-10 07:35:19 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2022-02-10 07:35:19 +0200 |
commit | 03eeea3b6c083ec9f9e755a2505d559b70c6cf0d (patch) | |
tree | 38e0fc927e3f33dcb1b8ce892712d33db4e40ca3 | |
parent | 4e88e3bce9027e5832531654a7dd62fcafad3b08 (diff) |
Reorder inline function definition to help with MinGW GCC symbol export
-rw-r--r-- | libbuild2/scope.hxx | 29 | ||||
-rw-r--r-- | libbuild2/scope.ixx | 31 |
2 files changed, 32 insertions, 28 deletions
diff --git a/libbuild2/scope.hxx b/libbuild2/scope.hxx index 2df8f0a..75c0711 100644 --- a/libbuild2/scope.hxx +++ b/libbuild2/scope.hxx @@ -431,34 +431,7 @@ namespace build2 // template <typename T> void - insert_rule (meta_operation_id mid, operation_id oid, - string hint, - const rule& r) - { - if (mid != 0) - rules.insert<T> (mid, oid, move (hint), r); - else - { - auto& ms (root_scope ()->root_extra->meta_operations); - - for (size_t i (1), n (ms.size ()); i != n; ++i) - { - if (ms[i] != nullptr) - { - // Skip a few well-known meta-operations that cannot possibly - // trigger a rule match. - // - mid = static_cast<meta_operation_id> (i); - - if (mid != noop_id && - mid != info_id && - mid != create_id && - mid != disfigure_id) - rules.insert<T> (mid, oid, hint, r); - } - } - } - } + insert_rule (meta_operation_id, operation_id, string hint, const rule&); // Operation callbacks. // diff --git a/libbuild2/scope.ixx b/libbuild2/scope.ixx index e123e4a..d297720 100644 --- a/libbuild2/scope.ixx +++ b/libbuild2/scope.ixx @@ -173,6 +173,37 @@ namespace build2 this}; } + template <typename T> + inline void scope:: + insert_rule (meta_operation_id mid, operation_id oid, + string hint, + const rule& r) + { + if (mid != 0) + rules.insert<T> (mid, oid, move (hint), r); + else + { + auto& ms (root_scope ()->root_extra->meta_operations); + + for (size_t i (1), n (ms.size ()); i != n; ++i) + { + if (ms[i] != nullptr) + { + // Skip a few well-known meta-operations that cannot possibly + // trigger a rule match. + // + mid = static_cast<meta_operation_id> (i); + + if (mid != noop_id && + mid != info_id && + mid != create_id && + mid != disfigure_id) + rules.insert<T> (mid, oid, hint, r); + } + } + } + } + inline dir_path src_out (const dir_path& out, const scope& r) { |