From 4e665067ff264c55086fdfb776a95b0fbb4d432c Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 12 Feb 2016 16:10:48 +0200 Subject: / scheme cleanup --- build2/algorithm | 15 +++---- build2/algorithm.cxx | 8 ---- build2/algorithm.ixx | 18 ++++---- build2/b-options | 4 +- build2/b-options.cxx | 4 +- build2/b-options.ixx | 2 +- build2/b.cli | 2 +- build2/b.cxx | 6 +-- build2/bin/module.cxx | 2 +- build2/bin/rule | 7 ++- build2/bin/rule.cxx | 4 +- build2/bin/target | 3 ++ build2/buildfile | 1 - build2/cli/module.cxx | 2 +- build2/cli/rule | 5 ++- build2/cli/rule.cxx | 3 +- build2/cli/target | 3 ++ build2/config/module.cxx | 2 +- build2/config/operation | 3 ++ build2/config/utility | 24 +++++------ build2/config/utility.txx | 6 +-- build2/context | 11 ++--- build2/context.cxx | 6 +-- build2/context.txx | 6 +-- build2/cxx/compile | 4 +- build2/cxx/compile.cxx | 5 --- build2/cxx/install | 4 +- build2/cxx/install.cxx | 2 +- build2/cxx/link | 12 +++--- build2/cxx/link.cxx | 6 --- build2/cxx/module.cxx | 2 +- build2/cxx/target | 3 ++ build2/cxx/utility | 6 +-- build2/cxx/utility.txx | 4 +- build2/diagnostics | 34 ++++++--------- build2/diagnostics.cxx | 4 +- build2/dist/module.cxx | 11 +++-- build2/dist/operation | 3 ++ build2/dist/operation.cxx | 2 - build2/dist/rule | 6 ++- build2/dist/rule.cxx | 2 +- build2/dump | 3 ++ build2/dump.cxx | 3 -- build2/file | 5 ++- build2/file.cxx | 2 - build2/install/operation | 3 ++ build2/install/rule | 8 ++-- build2/install/rule.cxx | 4 +- build2/install/utility | 11 +++-- build2/lexer | 8 +--- build2/module | 2 +- build2/module.cxx | 2 - build2/name.cxx | 2 - build2/operation | 37 +++++++--------- build2/operation.cxx | 7 --- build2/parser | 28 ++++++------ build2/parser.cxx | 6 --- build2/path-io | 26 ------------ build2/path-io.cxx | 39 ----------------- build2/prerequisite | 46 +++++++++----------- build2/prerequisite.cxx | 8 ++-- build2/rule | 19 ++++----- build2/rule-map | 14 +++--- build2/rule.cxx | 3 -- build2/scope | 7 ++- build2/search | 1 + build2/search.cxx | 3 -- build2/spec | 40 ++++++++--------- build2/spec.cxx | 2 - build2/target | 106 +++++++++++++++++++++------------------------- build2/target-key | 7 +-- build2/target-type | 6 +-- build2/target.cxx | 6 +-- build2/test/module | 2 + build2/test/operation | 3 ++ build2/test/rule | 5 ++- build2/test/rule.cxx | 2 +- build2/token | 25 +++++------ build2/token.cxx | 2 - build2/types | 53 +++++++++++++++++++---- build2/utility | 20 ++++++++- build2/utility.cxx | 35 +++++++++++++++ build2/variable | 78 ++++++++++++++++------------------ build2/variable.cxx | 5 +-- build2/variable.ixx | 64 ++++++++++++++-------------- build2/variable.txx | 20 ++++----- 86 files changed, 479 insertions(+), 556 deletions(-) delete mode 100644 build2/path-io delete mode 100644 build2/path-io.cxx diff --git a/build2/algorithm b/build2/algorithm index 33c60ba..f0f2fbf 100644 --- a/build2/algorithm +++ b/build2/algorithm @@ -5,10 +5,9 @@ #ifndef BUILD2_ALGORITHM #define BUILD2_ALGORITHM -#include -#include // pair - #include +#include + #include #include @@ -43,8 +42,8 @@ namespace build2 target& search (const target_type& type, const dir_path& dir, - const std::string& name, - const std::string* ext, + const string& name, + const string* ext, scope*); // As above but specify the target type as template argument. @@ -52,8 +51,8 @@ namespace build2 template T& search (const dir_path& dir, - const std::string& name, - const std::string* ext, + const string& name, + const string* ext, scope*); // Search for a target identified by the name. The semantics @@ -91,7 +90,7 @@ namespace build2 // that unlike match(), this call doesn't increment the // dependents count. See also the companion execute_delegate(). // - std::pair + pair match_delegate (action, target&); // The standard prerequisite search and match implementations. They call diff --git a/build2/algorithm.cxx b/build2/algorithm.cxx index fa70260..fbc1a69 100644 --- a/build2/algorithm.cxx +++ b/build2/algorithm.cxx @@ -4,13 +4,6 @@ #include -#include // unique_ptr -#include // size_t -#include // move -#include - -#include // reverse_iterate - #include #include #include @@ -18,7 +11,6 @@ #include // import() #include #include -#include #include using namespace std; diff --git a/build2/algorithm.ixx b/build2/algorithm.ixx index cdb76b5..19eb7e7 100644 --- a/build2/algorithm.ixx +++ b/build2/algorithm.ixx @@ -2,8 +2,6 @@ // copyright : Copyright (c) 2014-2016 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file -#include // pair - #include #include #include @@ -30,8 +28,8 @@ namespace build2 inline target& search (const target_type& type, const dir_path& dir, - const std::string& name, - const std::string* ext, + const string& name, + const string* ext, scope* scope) { return search ( @@ -41,14 +39,14 @@ namespace build2 template inline T& search (const dir_path& dir, - const std::string& name, - const std::string* ext, + const string& name, + const string* ext, scope* scope) { return static_cast (search (T::static_type, dir, name, ext, scope)); } - std::pair + pair match_impl (action, target&, bool apply); inline void @@ -80,13 +78,13 @@ namespace build2 match_impl (a, t, false); } - inline std::pair + inline pair match_delegate (action a, target& t) { auto rp (match_impl (a, t, false)); const match_result& mr (rp.second); - return std::make_pair (rp.first->apply (mr.recipe_action, t, mr), - mr.recipe_action); + return make_pair (rp.first->apply (mr.recipe_action, t, mr), + mr.recipe_action); } group_view diff --git a/build2/b-options b/build2/b-options index 32a8709..e2bd37f 100644 --- a/build2/b-options +++ b/build2/b-options @@ -401,7 +401,7 @@ namespace build2 const bool& q () const; - const std::uint16_t& + const uint16_t& verbose () const; bool @@ -446,7 +446,7 @@ namespace build2 public: bool v_; bool q_; - std::uint16_t verbose_; + uint16_t verbose_; bool verbose_specified_; string pager_; bool pager_specified_; diff --git a/build2/b-options.cxx b/build2/b-options.cxx index 8c06f59..5ad43f7 100644 --- a/build2/b-options.cxx +++ b/build2/b-options.cxx @@ -712,7 +712,7 @@ namespace build2 _cli_options_map_["-q"] = &::build2::cl::thunk< options, bool, &options::q_ >; _cli_options_map_["--verbose"] = - &::build2::cl::thunk< options, std::uint16_t, &options::verbose_, + &::build2::cl::thunk< options, uint16_t, &options::verbose_, &options::verbose_specified_ >; _cli_options_map_["--pager"] = &::build2::cl::thunk< options, string, &options::pager_, @@ -830,7 +830,7 @@ namespace build2 << "according to the build specification, or \033[4mbuildspec\033[0m for short. This process can" << ::std::endl << "be controlled by specifying driver \033[4moptions\033[0m and build system \033[4mvariables\033[0m." << ::std::endl << ::std::endl - << "Note that \033[4moptions\033[0m, \033[4mvariables\033[0m and \033[4mbuildspec\033[0m fragments can be specified in any" << ::std::endl + << "Note that \033[4moptions\033[0m, \033[4mvariables\033[0m, and \033[4mbuildspec\033[0m fragments can be specified in any" << ::std::endl << "order. To avoid treating an argument that starts with \033[1m'-'\033[0m as an option, add the" << ::std::endl << "\033[1m'--'\033[0m separator. To avoid treating an argument that contains \033[1m'='\033[0m as a variable," << ::std::endl << "add the second \033[1m'--'\033[0m separator." << ::std::endl; diff --git a/build2/b-options.ixx b/build2/b-options.ixx index 7f4ab2a..fb7df02 100644 --- a/build2/b-options.ixx +++ b/build2/b-options.ixx @@ -228,7 +228,7 @@ namespace build2 return this->q_; } - inline const std::uint16_t& options:: + inline const uint16_t& options:: verbose () const { return this->verbose_; diff --git a/build2/b.cli b/build2/b.cli index 84daee9..0fba654 100644 --- a/build2/b.cli +++ b/build2/b.cli @@ -197,7 +197,7 @@ namespace build2 \cb{--verbose 0}." } - std::uint16_t --verbose = 1 + uint16_t --verbose = 1 { "", "Set the diagnostics verbosity to between 0 and 6. Level 0 diff --git a/build2/b.cxx b/build2/b.cxx index 417008e..3512081 100644 --- a/build2/b.cxx +++ b/build2/b.cxx @@ -11,18 +11,17 @@ #include // struct passwd, getpwuid() #include -#include #include // strcmp(), strchr() #include #include -#include #include #include +#include +#include #include -#include #include #include #include @@ -34,7 +33,6 @@ #include #include #include -#include #include #include diff --git a/build2/bin/module.cxx b/build2/bin/module.cxx index 472ee86..397ab74 100644 --- a/build2/bin/module.cxx +++ b/build2/bin/module.cxx @@ -33,7 +33,7 @@ namespace build2 bin_init (scope& r, scope& b, const location&, - std::unique_ptr&, + unique_ptr&, bool first, bool) { diff --git a/build2/bin/rule b/build2/bin/rule index 100697c..9bf1379 100644 --- a/build2/bin/rule +++ b/build2/bin/rule @@ -5,6 +5,9 @@ #ifndef BUILD2_BIN_RULE #define BUILD2_BIN_RULE +#include +#include + #include namespace build2 @@ -15,7 +18,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; @@ -25,7 +28,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; diff --git a/build2/bin/rule.cxx b/build2/bin/rule.cxx index 9b1b8c4..4b1da8f 100644 --- a/build2/bin/rule.cxx +++ b/build2/bin/rule.cxx @@ -20,7 +20,7 @@ namespace build2 // obj // match_result obj_rule:: - match (action a, target& t, const std::string&) const + match (action a, target& t, const string&) const { fail << diag_doing (a, t) << " target group" << info << "explicitly select either obja{} or objso{} member"; @@ -37,7 +37,7 @@ namespace build2 // members as our prerequisites. // match_result lib_rule:: - match (action a, target& xt, const std::string&) const + match (action a, target& xt, const string&) const { lib& t (static_cast (xt)); diff --git a/build2/bin/target b/build2/bin/target index 0816c66..f386592 100644 --- a/build2/bin/target +++ b/build2/bin/target @@ -5,6 +5,9 @@ #ifndef BUILD2_BIN_TARGET #define BUILD2_BIN_TARGET +#include +#include + #include namespace build2 diff --git a/build2/buildfile b/build2/buildfile index e47ca8c..9321026 100644 --- a/build2/buildfile +++ b/build2/buildfile @@ -17,7 +17,6 @@ exe{b}: \ {hxx cxx}{ name } \ {hxx cxx}{ operation } \ {hxx cxx}{ parser } \ - {hxx cxx}{ path-io } \ {hxx cxx}{ prerequisite } \ {hxx cxx}{ rule } \ {hxx }{ rule-map } \ diff --git a/build2/cli/module.cxx b/build2/cli/module.cxx index 85c8f68..e4f2716 100644 --- a/build2/cli/module.cxx +++ b/build2/cli/module.cxx @@ -32,7 +32,7 @@ namespace build2 cli_init (scope& root, scope& base, const location& loc, - std::unique_ptr&, + unique_ptr&, bool first, bool optional) { diff --git a/build2/cli/rule b/build2/cli/rule index 0b76263..4f8ebc2 100644 --- a/build2/cli/rule +++ b/build2/cli/rule @@ -5,6 +5,9 @@ #ifndef BUILD2_CLI_RULE #define BUILD2_CLI_RULE +#include +#include + #include namespace build2 @@ -15,7 +18,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; diff --git a/build2/cli/rule.cxx b/build2/cli/rule.cxx index 5cf9390..edd8bc8 100644 --- a/build2/cli/rule.cxx +++ b/build2/cli/rule.cxx @@ -6,7 +6,6 @@ #include -#include #include #include #include @@ -48,7 +47,7 @@ namespace build2 } match_result compile:: - match (action a, target& xt, const std::string&) const + match (action a, target& xt, const string&) const { tracer trace ("cli::compile::match"); diff --git a/build2/cli/target b/build2/cli/target index 4d8e903..065639b 100644 --- a/build2/cli/target +++ b/build2/cli/target @@ -5,6 +5,9 @@ #ifndef BUILD2_CLI_TARGET #define BUILD2_CLI_TARGET +#include +#include + #include #include diff --git a/build2/config/module.cxx b/build2/config/module.cxx index d3fb45b..11b7aa1 100644 --- a/build2/config/module.cxx +++ b/build2/config/module.cxx @@ -54,7 +54,7 @@ namespace build2 config_init (scope& root, scope&, const location& l, - std::unique_ptr&, + unique_ptr&, bool first, bool) { diff --git a/build2/config/operation b/build2/config/operation index 0a89694..ad010df 100644 --- a/build2/config/operation +++ b/build2/config/operation @@ -5,6 +5,9 @@ #ifndef BUILD2_CONFIG_OPERATION #define BUILD2_CONFIG_OPERATION +#include +#include + #include namespace build2 diff --git a/build2/config/utility b/build2/config/utility index 95ec258..2f53521 100644 --- a/build2/config/utility +++ b/build2/config/utility @@ -5,11 +5,9 @@ #ifndef BUILD2_CONFIG_UTILITY #define BUILD2_CONFIG_UTILITY -#include -#include // pair -#include // reference_wrapper - #include +#include + #include #include @@ -29,29 +27,29 @@ namespace build2 // whether the variable has actually been set. // template - std::pair, bool> + pair, bool> required (scope& root, const variable&, const T& default_value, bool override = false); template - inline std::pair, bool> + inline pair, bool> required (scope& root, - const std::string& name, + const string& name, const T& default_value, bool override = false) { return required (root, var_pool.find (name), default_value, override); } - inline std::pair, bool> + inline pair, bool> required (scope& root, - const std::string& name, + const string& name, const char* default_value, bool override = false) { - return required (root, name, std::string (default_value), override); + return required (root, name, string (default_value), override); } // Set, if necessary, an optional config.* variable. In particular, @@ -65,7 +63,7 @@ namespace build2 optional (scope& root, const variable&); inline const value& - optional (scope& root, const std::string& var) + optional (scope& root, const string& var) { return optional (root, var_pool.find (var)); } @@ -78,7 +76,7 @@ namespace build2 optional_absolute (scope& root, const variable&); inline const value& - optional_absolute (scope& root, const std::string& var) + optional_absolute (scope& root, const string& var) { return optional_absolute (root, var_pool.find (var)); } @@ -95,7 +93,7 @@ namespace build2 // "remember" that it is unconfigured. // bool - specified (scope& root, const std::string& ns); + specified (scope& root, const string& ns); // @@ Why are these here? // diff --git a/build2/config/utility.txx b/build2/config/utility.txx index 3fc40c0..fd32599 100644 --- a/build2/config/utility.txx +++ b/build2/config/utility.txx @@ -9,10 +9,10 @@ namespace build2 namespace config { template - std::pair, bool> + pair, bool> required (scope& root, const variable& var, const T& def_value, bool ovr) { - using result = std::pair, bool>; + using result = pair, bool>; if (auto l = root[var]) { @@ -32,7 +32,7 @@ namespace build2 { if (auto l = s[var]) { - for (const std::string& s: as (*l)) + for (const string& s: as (*l)) { if (s == option) return true; diff --git a/build2/context b/build2/context index e2732db..d7ca3d3 100644 --- a/build2/context +++ b/build2/context @@ -5,14 +5,11 @@ #ifndef BUILD2_CONTEXT #define BUILD2_CONTEXT -#include -#include -#include // uint64_t - #include #include #include + #include namespace build2 @@ -40,7 +37,7 @@ namespace build2 // execution with the expectation of it reaching 0. Used as a sanity // check. // - extern std::uint64_t dependency_count; + extern uint64_t dependency_count; // Reset the dependency state. In particular, this removes all the // targets, scopes, and variable names. @@ -135,13 +132,13 @@ namespace build2 // In addition to calling relative(), this function also uses shorter // notations such as '~/'. // - std::string + string diag_relative (const path&); // As above but also adds trailing '/'. If the path is the same as // base, returns "./" if current is true and empty string otherwise. // - std::string + string diag_relative (const dir_path&, bool current = true); // Action phrases, e.g., "configure update exe{foo}", "updating exe{foo}", diff --git a/build2/context.cxx b/build2/context.cxx index d8921e4..2abe2f0 100644 --- a/build2/context.cxx +++ b/build2/context.cxx @@ -4,10 +4,6 @@ #include -#include -#include -#include - #include #include #include @@ -194,7 +190,7 @@ namespace build2 { butl::rmdir_r (d); } - catch (const std::system_error& e) + catch (const system_error& e) { fail << "unable to remove directory " << d << ": " << e.what (); } diff --git a/build2/context.txx b/build2/context.txx index 0ee470f..566beb1 100644 --- a/build2/context.txx +++ b/build2/context.txx @@ -2,8 +2,6 @@ // copyright : Copyright (c) 2014-2016 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file -#include - #include namespace build2 @@ -25,7 +23,7 @@ namespace build2 { rs = try_rmfile (f); } - catch (const std::system_error& e) + catch (const system_error& e) { if (verb >= 2) text << "rm " << f; @@ -64,7 +62,7 @@ namespace build2 { rs = !w ? try_rmdir (d) : rmdir_status::not_empty; } - catch (const std::system_error& e) + catch (const system_error& e) { if (verb >= 2) text << "rmdir " << d; diff --git a/build2/cxx/compile b/build2/cxx/compile index cfef0c4..5134e78 100644 --- a/build2/cxx/compile +++ b/build2/cxx/compile @@ -6,6 +6,8 @@ #define BUILD2_CXX_COMPILE #include +#include + #include namespace build2 @@ -16,7 +18,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; diff --git a/build2/cxx/compile.cxx b/build2/cxx/compile.cxx index b924aa2..a1abfcb 100644 --- a/build2/cxx/compile.cxx +++ b/build2/cxx/compile.cxx @@ -5,17 +5,12 @@ #include #include -#include -#include // size_t #include // exit() -#include // move() #include -#include // reverse_iterate #include #include -#include #include #include #include diff --git a/build2/cxx/install b/build2/cxx/install index cfec3da..119ef94 100644 --- a/build2/cxx/install +++ b/build2/cxx/install @@ -6,6 +6,8 @@ #define BUILD2_CXX_INSTALL #include +#include + #include namespace build2 @@ -19,7 +21,7 @@ namespace build2 filter (action, target&, prerequisite_member) const; virtual match_result - match (action, target&, const std::string&) const; + match (action, target&, const string&) const; static install instance; }; diff --git a/build2/cxx/install.cxx b/build2/cxx/install.cxx index aa097d7..f6f502a 100644 --- a/build2/cxx/install.cxx +++ b/build2/cxx/install.cxx @@ -49,7 +49,7 @@ namespace build2 } match_result install:: - match (action a, target& t, const std::string& hint) const + match (action a, target& t, const string& hint) const { // @@ How do we split the hint between the two? // diff --git a/build2/cxx/link b/build2/cxx/link index b39e16c..cfa6343 100644 --- a/build2/cxx/link +++ b/build2/cxx/link @@ -5,11 +5,9 @@ #ifndef BUILD2_CXX_LINK #define BUILD2_CXX_LINK -#include - -#include - #include +#include + #include #include @@ -22,7 +20,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; @@ -55,8 +53,8 @@ namespace build2 private: friend class compile; - using search_paths = std::vector; - using search_paths_cache = butl::optional; + using search_paths = vector; + using search_paths_cache = optional; static target* search_library (search_paths_cache&, prerequisite&); diff --git a/build2/cxx/link.cxx b/build2/cxx/link.cxx index 7e0ff71..42b2235 100644 --- a/build2/cxx/link.cxx +++ b/build2/cxx/link.cxx @@ -4,20 +4,14 @@ #include -#include -#include -#include // size_t #include // exit() -#include // move() #include -#include // reverse_iterate #include #include #include #include -#include #include #include #include diff --git a/build2/cxx/module.cxx b/build2/cxx/module.cxx index 6f2a891..f615129 100644 --- a/build2/cxx/module.cxx +++ b/build2/cxx/module.cxx @@ -33,7 +33,7 @@ namespace build2 cxx_init (scope& r, scope& b, const location& loc, - std::unique_ptr&, + unique_ptr&, bool first, bool) { diff --git a/build2/cxx/target b/build2/cxx/target index 9d3df4b..d9a4ed6 100644 --- a/build2/cxx/target +++ b/build2/cxx/target @@ -5,6 +5,9 @@ #ifndef BUILD2_CXX_TARGET #define BUILD2_CXX_TARGET +#include +#include + #include namespace build2 diff --git a/build2/cxx/utility b/build2/cxx/utility index d8b9fc1..7072c7b 100644 --- a/build2/cxx/utility +++ b/build2/cxx/utility @@ -5,9 +5,9 @@ #ifndef BUILD2_CXX_UTILITY #define BUILD2_CXX_UTILITY -#include - #include +#include + #include #include @@ -22,7 +22,7 @@ namespace build2 // template void - append_std (cstrings& args, T&, std::string& storage); + append_std (cstrings& args, T&, string& storage); // Append library options from one of the cxx.export.* variables // recursively, prerequisite libraries first. diff --git a/build2/cxx/utility.txx b/build2/cxx/utility.txx index 2d85b1b..8324107 100644 --- a/build2/cxx/utility.txx +++ b/build2/cxx/utility.txx @@ -10,11 +10,11 @@ namespace build2 { template void - append_std (cstrings& args, T& t, std::string& s) + append_std (cstrings& args, T& t, string& s) { if (auto l = t["cxx.std"]) { - const std::string& v (as (*l)); + const string& v (as (*l)); // Translate 11 to 0x and 14 to 1y for compatibility with // older versions of the compiler. diff --git a/build2/diagnostics b/build2/diagnostics index 27c71fa..5ad6809 100644 --- a/build2/diagnostics +++ b/build2/diagnostics @@ -5,19 +5,11 @@ #ifndef BUILD2_DIAGNOSTICS #define BUILD2_DIAGNOSTICS -#include // size_t -#include -#include -#include #include -#include -#include #include -#include - #include -#include +#include namespace build2 { @@ -39,10 +31,10 @@ namespace build2 // nameN arg arg ... nullptr nullptr // void - print_process (diag_record&, const char* const* args, std::size_t n = 0); + print_process (diag_record&, const char* const* args, size_t n = 0); void - print_process (const char* const* args, std::size_t n = 0); + print_process (const char* const* args, size_t n = 0); inline void print_process (diag_record& dr, const cstrings& args) @@ -105,21 +97,21 @@ namespace build2 extern const int stream_verb_index; inline uint16_t - stream_verb (std::ostream& os) + stream_verb (ostream& os) { uint16_t v (static_cast (os.iword (stream_verb_index))); return v == 0 ? stream_verb_max : v - 1; } inline void - stream_verb (std::ostream& os, uint16_t v) + stream_verb (ostream& os, uint16_t v) { os.iword (stream_verb_index) = static_cast (v + 1); } // Diagnostic facility, base infrastructure (potentially reusable). // - extern std::ostream* diag_stream; + extern ostream* diag_stream; template struct diag_prologue; template struct diag_mark; @@ -171,7 +163,7 @@ namespace build2 @@ libstdc++ doesn't yet have the ostringstream move support. diag_record (diag_record&& r) - : os_ (std::move (r.os_)) + : os_ (move (r.os_)) { empty_ = r.empty_; r.empty_ = true; @@ -216,11 +208,11 @@ namespace build2 template diag_prologue (A&&... a) - : B (std::forward (a)...), epilogue_ (nullptr) {} + : B (forward (a)...), epilogue_ (nullptr) {} template diag_prologue (diag_epilogue e, A&&... a) - : B (std::forward (a)...), epilogue_ (e) {} + : B (forward (a)...), epilogue_ (e) {} template diag_record @@ -251,7 +243,7 @@ namespace build2 diag_mark (): B () {} template - diag_mark (A&&... a): B (std::forward (a)...) {} + diag_mark (A&&... a): B (forward (a)...) {} template diag_record @@ -291,12 +283,12 @@ namespace build2 // Note that location maintains a shallow reference to path. // location (): file (nullptr), line (0), column (0) {} - location (const path* f, std::uint64_t l, std::uint64_t c) + location (const path* f, uint64_t l, uint64_t c) : file (f), line (l), column (c) {} const path* file; - std::uint64_t line; - std::uint64_t column; + uint64_t line; + uint64_t column; }; struct location_prologue_base diff --git a/build2/diagnostics.cxx b/build2/diagnostics.cxx index fb108dc..d6278a8 100644 --- a/build2/diagnostics.cxx +++ b/build2/diagnostics.cxx @@ -7,8 +7,6 @@ #include // strchr() #include -#include - using namespace std; namespace build2 @@ -81,7 +79,7 @@ namespace build2 // if (!empty_ && (!std::uncaught_exception () || exception_unwinding_dtor)) { - *diag_stream << os_.str () << std::endl; + *diag_stream << os_.str () << endl; if (epilogue_ != nullptr) epilogue_ (*this); // Can throw. diff --git a/build2/dist/module.cxx b/build2/dist/module.cxx index 6dd1453..c7c3a23 100644 --- a/build2/dist/module.cxx +++ b/build2/dist/module.cxx @@ -88,9 +88,7 @@ namespace build2 // must be explicitly specified or we will complain if and when // we try to dist. // - using namespace config; - - bool s (specified (r, "config.dist")); + bool s (config::specified (r, "config.dist")); // dist.root // @@ -99,7 +97,7 @@ namespace build2 if (s) { - const value& cv (optional_absolute (r, "config.dist.root")); + const value& cv (config::optional_absolute (r, "config.dist.root")); if (cv && !cv.empty ()) v = cv; @@ -113,7 +111,8 @@ namespace build2 if (s) { - const value& cv (required (r, "config.dist.cmd", "install").first); + const value& cv ( + config::required (r, "config.dist.cmd", "install").first); if (cv && !cv.empty ()) v = cv; @@ -129,7 +128,7 @@ namespace build2 if (s) { - const value& cv (optional (r, "config.dist.archives")); + const value& cv (config::optional (r, "config.dist.archives")); if (cv && !cv.empty ()) v = cv; diff --git a/build2/dist/operation b/build2/dist/operation index e00da8a..741b47e 100644 --- a/build2/dist/operation +++ b/build2/dist/operation @@ -5,6 +5,9 @@ #ifndef BUILD2_DIST_OPERATION #define BUILD2_DIST_OPERATION +#include +#include + #include namespace build2 diff --git a/build2/dist/operation.cxx b/build2/dist/operation.cxx index f5b99fc..fba0ab5 100644 --- a/build2/dist/operation.cxx +++ b/build2/dist/operation.cxx @@ -4,8 +4,6 @@ #include -#include - #include #include diff --git a/build2/dist/rule b/build2/dist/rule index e460e66..f428ff2 100644 --- a/build2/dist/rule +++ b/build2/dist/rule @@ -5,8 +5,10 @@ #ifndef BUILD2_DIST_RULE #define BUILD2_DIST_RULE -#include #include +#include + +#include #include #include @@ -18,7 +20,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string&) const; + match (action, target&, const string&) const; virtual recipe apply (action, target&, const match_result&) const; diff --git a/build2/dist/rule.cxx b/build2/dist/rule.cxx index f3d37eb..f3a99f9 100644 --- a/build2/dist/rule.cxx +++ b/build2/dist/rule.cxx @@ -16,7 +16,7 @@ namespace build2 namespace dist { match_result rule:: - match (action, target& t, const std::string&) const + match (action, target& t, const string&) const { return t; // We always match. } diff --git a/build2/dump b/build2/dump index 6481bc9..264a1a6 100644 --- a/build2/dump +++ b/build2/dump @@ -5,6 +5,9 @@ #ifndef BUILD2_DUMP #define BUILD2_DUMP +#include +#include + #include namespace build2 diff --git a/build2/dump.cxx b/build2/dump.cxx index b3d78bb..13accf7 100644 --- a/build2/dump.cxx +++ b/build2/dump.cxx @@ -4,9 +4,6 @@ #include -#include -#include - #include #include #include diff --git a/build2/file b/build2/file index 5a97f21..4f8c8db 100644 --- a/build2/file +++ b/build2/file @@ -6,9 +6,10 @@ #define BUILD2_FILE #include -#include #include +#include + #include #include // list_value @@ -18,7 +19,7 @@ namespace build2 class location; class prerequisite_key; - using subprojects = std::map; + using subprojects = std::map; extern const dir_path build_dir; // build extern const dir_path bootstrap_dir; // build/bootstrap diff --git a/build2/file.cxx b/build2/file.cxx index 45c3a5e..0184ece 100644 --- a/build2/file.cxx +++ b/build2/file.cxx @@ -5,8 +5,6 @@ #include #include -#include // move() -#include #include diff --git a/build2/install/operation b/build2/install/operation index daf7c40..8c93627 100644 --- a/build2/install/operation +++ b/build2/install/operation @@ -5,6 +5,9 @@ #ifndef BUILD2_INSTALL_OPERATION #define BUILD2_INSTALL_OPERATION +#include +#include + #include namespace build2 diff --git a/build2/install/rule b/build2/install/rule index 7a5f910..9602190 100644 --- a/build2/install/rule +++ b/build2/install/rule @@ -5,8 +5,10 @@ #ifndef BUILD2_INSTALL_RULE #define BUILD2_INSTALL_RULE -#include #include +#include + +#include #include #include @@ -18,7 +20,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string&) const; + match (action, target&, const string&) const; virtual recipe apply (action, target&, const match_result&) const; @@ -28,7 +30,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string&) const; + match (action, target&, const string&) const; // Return NULL if this prerequisite should be ignored and pointer to its // target otherwise. The default implementation ignores prerequsites that diff --git a/build2/install/rule.cxx b/build2/install/rule.cxx index 1b08b16..ae78981 100644 --- a/build2/install/rule.cxx +++ b/build2/install/rule.cxx @@ -41,7 +41,7 @@ namespace build2 // alias_rule // match_result alias_rule:: - match (action, target& t, const std::string&) const + match (action, target& t, const string&) const { return t; } @@ -84,7 +84,7 @@ namespace build2 // match_result file_rule:: - match (action a, target& t, const std::string&) const + match (action a, target& t, const string&) const { // First determine if this target should be installed (called // "installable" for short). diff --git a/build2/install/utility b/build2/install/utility index 98eca77..3d3b1a1 100644 --- a/build2/install/utility +++ b/build2/install/utility @@ -5,11 +5,10 @@ #ifndef BUILD2_INSTALL_UTILITY #define BUILD2_INSTALL_UTILITY -#include -#include +#include +#include #include -#include namespace build2 { @@ -23,16 +22,16 @@ namespace build2 { auto r (s.target_vars[T::static_type]["*"].assign ("install")); if (r.second) // Already set by the user? - r.first.get () = std::move (d); + r.first.get () = move (d); } template inline void - mode (scope& s, std::string m) + mode (scope& s, string m) { auto r (s.target_vars[T::static_type]["*"].assign ("install.mode")); if (r.second) // Already set by the user? - r.first.get () = std::move (m); + r.first.get () = move (m); } } } diff --git a/build2/lexer b/build2/lexer index 0bbd22a..98feb75 100644 --- a/build2/lexer +++ b/build2/lexer @@ -6,12 +6,6 @@ #define BUILD2_LEXER #include -#include -#include -#include // size_t -#include // uint64_t -#include -#include #include @@ -43,7 +37,7 @@ namespace build2 class lexer: protected butl::char_scanner { public: - lexer (std::istream& is, + lexer (istream& is, const path& name, void (*processor) (token&, const lexer&) = nullptr) : char_scanner (is), fail (name), processor_ (processor), sep_ (false) diff --git a/build2/module b/build2/module index c9bc26c..7c8719e 100644 --- a/build2/module +++ b/build2/module @@ -66,7 +66,7 @@ namespace build2 // bool load_module (bool optional, - const std::string& name, + const string& name, scope& root, scope& base, const location&); diff --git a/build2/module.cxx b/build2/module.cxx index 05dbaa7..e05e22c 100644 --- a/build2/module.cxx +++ b/build2/module.cxx @@ -4,8 +4,6 @@ #include -#include // make_pair() - #include #include #include diff --git a/build2/name.cxx b/build2/name.cxx index a64bb54..8ba9576 100644 --- a/build2/name.cxx +++ b/build2/name.cxx @@ -4,8 +4,6 @@ #include -#include - #include using namespace std; diff --git a/build2/operation b/build2/operation index c5af3ed..688663b 100644 --- a/build2/operation +++ b/build2/operation @@ -5,15 +5,10 @@ #ifndef BUILD2_OPERATION #define BUILD2_OPERATION -#include -#include -#include -#include -#include // reference_wrapper - #include #include +#include namespace build2 { @@ -29,9 +24,9 @@ namespace build2 // // Note that 0 is not a valid meta/operation/action id. // - using meta_operation_id = std::uint8_t; - using operation_id = std::uint8_t; - using action_id = std::uint8_t; + using meta_operation_id = uint8_t; + using operation_id = uint8_t; + using action_id = uint8_t; // Meta-operations and operations are not the end of the story. We // also have operation nesting (currently only one level deep) which @@ -99,8 +94,8 @@ namespace build2 inline bool operator!= (action x, action y) {return !(x == y);} - std::ostream& - operator<< (std::ostream&, action); + ostream& + operator<< (ostream&, action); // Id constants for build-in and pre-defined meta/operations. // @@ -175,18 +170,18 @@ namespace build2 // Normally a list of resolved and matched targets to execute. But // can be something else, depending on the meta-operation. // - typedef std::vector action_targets; + typedef vector action_targets; struct meta_operation_info { - const std::string name; + const string name; // Name derivatives for diagnostics. If empty, then the meta- // operation need not be mentioned. // - const std::string name_do; // E.g., [to] 'configure'. - const std::string name_doing; // E.g., [while] 'configuring'. - const std::string name_done; // E.g., 'is configured'. + const string name_do; // E.g., [to] 'configure'. + const string name_doing; // E.g., [while] 'configuring'. + const string name_done; // E.g., 'is configured'. // If operation_pre() is not NULL, then it may translate default_id // (and only default_id) to some other operation. If not translated, @@ -258,7 +253,7 @@ namespace build2 // struct operation_info { - const std::string name; + const string name; // Name derivatives for diagnostics. Note that unlike meta-operations, // these can only be empty for the default operation (id 1), And @@ -266,9 +261,9 @@ namespace build2 // have empty derivatives (failed which only target name will be // printed). // - const std::string name_do; // E.g., [to] 'update'. - const std::string name_doing; // E.g., [while] 'updating'. - const std::string name_done; // E.g., 'is up to date'. + const string name_do; // E.g., [to] 'update'. + const string name_doing; // E.g., [while] 'updating'. + const string name_done; // E.g., 'is up to date'. const execution_mode mode; @@ -317,7 +312,7 @@ namespace build2 template struct sparse_vector { - using base_type = std::vector; + using base_type = vector; using size_type = typename base_type::size_type; void diff --git a/build2/operation.cxx b/build2/operation.cxx index adeda32..77350e8 100644 --- a/build2/operation.cxx +++ b/build2/operation.cxx @@ -4,13 +4,6 @@ #include -#include -#include -#include -#include // reference_wrapper - -#include // reverse_iterate - #include #include #include diff --git a/build2/parser b/build2/parser index ae3add9..5eb50e5 100644 --- a/build2/parser +++ b/build2/parser @@ -5,9 +5,6 @@ #ifndef BUILD2_PARSER #define BUILD2_PARSER -#include -#include - #include #include @@ -36,20 +33,19 @@ namespace build2 // Issue diagnostics and throw failed in case of an error. // void - parse_buildfile (std::istream&, const path& name, - scope& root, scope& base); + parse_buildfile (istream&, const path& name, scope& root, scope& base); buildspec - parse_buildspec (std::istream&, const path& name); + parse_buildspec (istream&, const path& name); token - parse_variable (lexer&, scope&, std::string var_name, token_type kind); + parse_variable (lexer&, scope&, string var_name, token_type kind); names_type - parse_export_stub (std::istream& is, const path& p, scope& r, scope& b) + parse_export_stub (istream& is, const path& p, scope& r, scope& b) { parse_buildfile (is, p, r, b); - return std::move (export_value_); + return move (export_value_); } // Recursive descent parser. @@ -83,9 +79,9 @@ namespace build2 if_else (token&, token_type&); void - variable (token&, token_type&, std::string name, token_type kind); + variable (token&, token_type&, string name, token_type kind); - std::string + string variable_name (names_type&&, const location&); names_type @@ -119,18 +115,18 @@ namespace build2 names (token&, token_type&, names_type&, bool chunk, - std::size_t pair, - const std::string* prj, + size_t pair, + const string* prj, const dir_path* dir, - const std::string* type); + const string* type); size_t names_trailer (token&, token_type&, names_type&, size_t pair, - const std::string* prj, + const string* prj, const dir_path* dir, - const std::string* type); + const string* type); // Skip until newline or eos. // diff --git a/build2/parser.cxx b/build2/parser.cxx index ad556ce..98ca30d 100644 --- a/build2/parser.cxx +++ b/build2/parser.cxx @@ -5,15 +5,9 @@ #include #include // is{alpha alnum}() - -#include // unique_ptr #include -#include // move() -#include // make_move_iterator() #include -#include -#include #include #include diff --git a/build2/path-io b/build2/path-io deleted file mode 100644 index b3b0587..0000000 --- a/build2/path-io +++ /dev/null @@ -1,26 +0,0 @@ -// file : build2/path-io -*- C++ -*- -// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#ifndef BUILD2_PATH_IO -#define BUILD2_PATH_IO - -#include - -#include - -// Custom path IO. -// -namespace build2 -{ - using butl::path; - using butl::dir_path; - - std::ostream& - operator<< (std::ostream&, const path&); - - std::ostream& - operator<< (std::ostream&, const dir_path&); -} - -#endif // BUILD2_PATH_IO diff --git a/build2/path-io.cxx b/build2/path-io.cxx deleted file mode 100644 index 845b0a3..0000000 --- a/build2/path-io.cxx +++ /dev/null @@ -1,39 +0,0 @@ -// file : build2/path-io.cxx -*- C++ -*- -// copyright : Copyright (c) 2014-2016 Code Synthesis Ltd -// license : MIT; see accompanying LICENSE file - -#include - -#include - -#include -#include - -using namespace std; - -namespace build2 -{ - ostream& - operator<< (ostream& os, const path& p) - { - return os << (stream_verb (os) < 2 ? diag_relative (p) : p.string ()); - } - - ostream& - operator<< (ostream& os, const dir_path& d) - { - if (stream_verb (os) < 2) - os << diag_relative (d); // Adds trailing '/'. - else - { - const string& s (d.string ()); - - // Print the directory with trailing '/'. - // - if (!s.empty ()) - os << s << (dir_path::traits::is_separator (s.back ()) ? "" : "/"); - } - - return os; - } -} diff --git a/build2/prerequisite b/build2/prerequisite index 61be2cc..baaaf3f 100644 --- a/build2/prerequisite +++ b/build2/prerequisite @@ -6,15 +6,11 @@ #define BUILD2_PREREQUISITE #include -#include -#include -#include // move -#include -#include // reference_wrapper #include +#include + #include -#include // extension_pool #include namespace build2 @@ -30,7 +26,7 @@ namespace build2 public: typedef build2::scope scope_type; - mutable const std::string* proj; // Can be NULL, from project_name_pool. + mutable const string* proj; // Can be NULL, from project_name_pool. target_key tk; mutable scope_type* scope; // Can be NULL if tk.dir is absolute. }; @@ -45,8 +41,8 @@ namespace build2 return x.proj < y.proj || (x.proj == y.proj && x.tk < y.tk); } - std::ostream& - operator<< (std::ostream&, const prerequisite_key&); + ostream& + operator<< (ostream&, const prerequisite_key&); class prerequisite { @@ -55,26 +51,26 @@ namespace build2 typedef build2::target_type target_type_type; typedef build2::scope scope_type; - prerequisite (const std::string* p, + prerequisite (const string* p, const target_type_type& t, dir_path d, - std::string n, - const std::string* e, + string n, + const string* e, scope_type& s) : proj (p), type (t), - dir (std::move (d)), - name (std::move (n)), + dir (move (d)), + name (move (n)), ext (e), scope (s), target (nullptr) {} public: - const std::string* const proj; // NULL if not project-qualified. + const string* const proj; // NULL if not project-qualified. const target_type_type& type; const dir_path dir; // Normalized absolute or relative (to scope). - const std::string name; - const std::string* ext; // NULL if unspecified. + const string name; + const string* ext; // NULL if unspecified. scope_type& scope; target_type* target; // NULL if not yet resolved. Note that this should // always be the "primary target", not a member of @@ -103,8 +99,8 @@ namespace build2 return x.key () < y.key (); } - inline std::ostream& - operator<< (std::ostream& os, const prerequisite& p) + inline ostream& + operator<< (ostream& os, const prerequisite& p) { return os << p.key (); } @@ -113,17 +109,17 @@ namespace build2 // struct prerequisite_set: std::set { - std::pair - insert (const std::string* proj, + pair + insert (const string* proj, const target_type&, dir_path dir, - std::string name, - const std::string* ext, + string name, + const string* ext, scope&, tracer&); - std::pair - insert (const std::string* proj, const target_key& tk, scope& s, tracer& t) + pair + insert (const string* proj, const target_key& tk, scope& s, tracer& t) { return insert (proj, *tk.type, *tk.dir, *tk.name, tk.ext, s, t); } diff --git a/build2/prerequisite.cxx b/build2/prerequisite.cxx index fb432eb..2eccd7e 100644 --- a/build2/prerequisite.cxx +++ b/build2/prerequisite.cxx @@ -4,8 +4,6 @@ #include -#include - #include #include // target_type #include @@ -51,11 +49,11 @@ namespace build2 // prerequisite_set // auto prerequisite_set:: - insert (const std::string* proj, + insert (const string* proj, const target_type& tt, dir_path dir, - std::string name, - const std::string* ext, + string name, + const string* ext, scope& s, tracer& trace) -> pair { diff --git a/build2/rule b/build2/rule index 69aad7d..03e4bf2 100644 --- a/build2/rule +++ b/build2/rule @@ -5,10 +5,9 @@ #ifndef BUILD2_RULE #define BUILD2_RULE -#include -#include // nullptr_t - #include +#include + #include #include @@ -39,7 +38,7 @@ namespace build2 action recipe_action = action (); // Used as recipe's action if set. - match_result (std::nullptr_t v = nullptr): prerequisite (v), target (v) {} + match_result (nullptr_t v = nullptr): prerequisite (v), target (v) {} match_result (prerequisite_type& p): prerequisite (&p), target (nullptr) {} match_result (prerequisite_type* p): prerequisite (p), target (nullptr) {} match_result (target_type& t): prerequisite (nullptr), target (&t) {} @@ -50,7 +49,7 @@ namespace build2 match_result (target_type& t, bool v): bvalue (v), target (&t) {} match_result (target_type& t, void* v): pvalue (v), target (&t) {} match_result (target_type& t, const void* v): cpvalue (v), target (&t) {} - match_result (target_type& t, std::nullptr_t v): pvalue (v), target (&t) {} + match_result (target_type& t, nullptr_t v): pvalue (v), target (&t) {} explicit operator bool () const @@ -63,7 +62,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const = 0; + match (action, target&, const string& hint) const = 0; virtual recipe apply (action, target&, const match_result&) const = 0; @@ -76,7 +75,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; @@ -91,7 +90,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; @@ -103,7 +102,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string& hint) const; + match (action, target&, const string& hint) const; virtual recipe apply (action, target&, const match_result&) const; @@ -123,7 +122,7 @@ namespace build2 { public: virtual match_result - match (action, target& t, const std::string&) const {return t;} + match (action, target& t, const string&) const {return t;} virtual recipe apply (action, target&, const match_result&) const {return noop_recipe;} diff --git a/build2/rule-map b/build2/rule-map index 06e00a3..fe126f5 100644 --- a/build2/rule-map +++ b/build2/rule-map @@ -6,14 +6,12 @@ #define BUILD2_RULE_MAP #include -#include -#include -#include // unique_ptr -#include // reference_wrapper #include #include +#include + #include namespace build2 @@ -22,8 +20,8 @@ namespace build2 using target_type_rule_map = std::map< const target_type*, - butl::prefix_map, '.'>>; + butl::prefix_map, '.'>>; // This is an "indexed map" with operation_id being the index. Entry // with id 0 is a wildcard. @@ -55,7 +53,7 @@ namespace build2 empty () const {return map_.empty ();} private: - std::vector map_; + vector map_; }; // This is another indexed map but this time meta_operation_id is the @@ -108,7 +106,7 @@ namespace build2 private: meta_operation_id mid_; operation_rule_map map_; - std::unique_ptr next_; + unique_ptr next_; }; } diff --git a/build2/rule.cxx b/build2/rule.cxx index f420529..c0a34f9 100644 --- a/build2/rule.cxx +++ b/build2/rule.cxx @@ -4,9 +4,6 @@ #include -#include // move() -#include - #include #include diff --git a/build2/scope b/build2/scope index 192ba10..158f967 100644 --- a/build2/scope +++ b/build2/scope @@ -5,7 +5,6 @@ #ifndef BUILD2_SCOPE #define BUILD2_SCOPE -#include // function #include #include @@ -96,7 +95,7 @@ namespace build2 } build2::lookup - operator[] (const std::string& name) const + operator[] (const string& name) const { return operator[] (var_pool.find (name)); } @@ -142,7 +141,7 @@ namespace build2 assign (const variable& var) {return vars.assign (var).first.get ();} value& - assign (const std::string& name, const build2::value_type* type = nullptr) + assign (const string& name, const build2::value_type* type = nullptr) { return vars.assign (name, type).first.get (); } @@ -157,7 +156,7 @@ namespace build2 append (const variable&); value& - append (const std::string& name) + append (const string& name) { return append (var_pool.find (name)); } diff --git a/build2/search b/build2/search index c1a5c2b..df9b73f 100644 --- a/build2/search +++ b/build2/search @@ -6,6 +6,7 @@ #define BUILD2_SEARCH #include +#include namespace build2 { diff --git a/build2/search.cxx b/build2/search.cxx index 3df8877..a661474 100644 --- a/build2/search.cxx +++ b/build2/search.cxx @@ -4,9 +4,6 @@ #include -#include // move() -#include - #include #include diff --git a/build2/spec b/build2/spec index 3e3d420..5e02f46 100644 --- a/build2/spec +++ b/build2/spec @@ -5,12 +5,8 @@ #ifndef BUILD2_SPEC #define BUILD2_SPEC -#include -#include -#include -#include // move() - #include +#include namespace build2 { @@ -19,43 +15,43 @@ namespace build2 typedef build2::name name_type; explicit - targetspec (name_type n): name (std::move (n)) {} + targetspec (name_type n): name (move (n)) {} targetspec (dir_path sb, name_type n) - : src_base (std::move (sb)), name (std::move (n)) {} + : src_base (move (sb)), name (move (n)) {} dir_path src_base; name_type name; }; - struct opspec: std::vector + struct opspec: vector { opspec () = default; - opspec (std::string n): name (std::move (n)) {} + opspec (string n): name (move (n)) {} - std::string name; + string name; }; - struct metaopspec: std::vector + struct metaopspec: vector { metaopspec () = default; - metaopspec (std::string n): name (std::move (n)) {} + metaopspec (string n): name (move (n)) {} - std::string name; + string name; }; - typedef std::vector buildspec; + typedef vector buildspec; - std::ostream& - operator<< (std::ostream&, const targetspec&); + ostream& + operator<< (ostream&, const targetspec&); - std::ostream& - operator<< (std::ostream&, const opspec&); + ostream& + operator<< (ostream&, const opspec&); - std::ostream& - operator<< (std::ostream&, const metaopspec&); + ostream& + operator<< (ostream&, const metaopspec&); - std::ostream& - operator<< (std::ostream&, const buildspec&); + ostream& + operator<< (ostream&, const buildspec&); } #endif // BUILD2_SPEC diff --git a/build2/spec.cxx b/build2/spec.cxx index 3f02d87..27987ec 100644 --- a/build2/spec.cxx +++ b/build2/spec.cxx @@ -4,8 +4,6 @@ #include -#include - #include #include diff --git a/build2/target b/build2/target index b35efdf..5328bc4 100644 --- a/build2/target +++ b/build2/target @@ -6,19 +6,9 @@ #define BUILD2_TARGET #include -#include -#include -#include // unique_ptr -#include // size_t -#include // uint8_t -#include // reference_wrapper -#include -#include -#include // move(), forward(), declval() -#include +#include // tags, etc. #include -#include // reverse_iterate() #include // map_iterator_adapter #include @@ -41,7 +31,7 @@ namespace build2 // Target state. // - enum class target_state: std::uint8_t + enum class target_state: uint8_t { // The order of the enumerators is arranged so that their integral // values indicate whether one "overrides" the other in the merge @@ -55,13 +45,13 @@ namespace build2 group // Target's state is the group's state. }; - std::ostream& - operator<< (std::ostream&, target_state); + ostream& + operator<< (ostream&, target_state); inline target_state& operator |= (target_state& l, target_state r) { - if (static_cast (r) > static_cast (l)) + if (static_cast (r) > static_cast (l)) l = r; return l; @@ -81,7 +71,7 @@ namespace build2 // so it should match the group's state. // using recipe_function = target_state (action, target&); - using recipe = std::function; + using recipe = function; // Commonly-used recipes. The default recipe executes the action on // all the prerequisites in a loop, skipping ignored. Specifically, @@ -105,9 +95,9 @@ namespace build2 // Prerequisite references as used in the target::prerequisites list // below. // - struct prerequisite_ref: std::reference_wrapper + struct prerequisite_ref: reference_wrapper { - typedef std::reference_wrapper base; + typedef reference_wrapper base; using base::base; @@ -127,7 +117,7 @@ namespace build2 struct group_view { target* const* members; // NULL means not yet known. - std::size_t count; + size_t count; }; // Target. @@ -143,8 +133,8 @@ namespace build2 target (const target&) = delete; target& operator= (const target&) = delete; - target (dir_path d, std::string n, const std::string* e) - : dir (std::move (d)), name (std::move (n)), ext (e) {} + target (dir_path d, string n, const string* e) + : dir (move (d)), name (move (n)), ext (e) {} // Reset the target before matching a rule for it. The // default implementation clears prerequisite_targets. @@ -153,8 +143,8 @@ namespace build2 reset (action_type); const dir_path dir; // Absolute and normalized. - const std::string name; - const std::string* ext; // Extension, NULL means unspecified, + const string name; + const string* ext; // Extension, NULL means unspecified, // empty means no extension. // Target group to which this target belongs, if any. Note that @@ -250,7 +240,7 @@ namespace build2 // Prerequisites. // public: - typedef std::vector prerequisites_type; + typedef vector prerequisites_type; prerequisites_type prerequisites; // Targets to which prerequisites resolve for this recipe. Note @@ -263,7 +253,7 @@ namespace build2 // track of the action here since the targets will be updated // if the recipe is updated, normally as part of rule::apply(). // - typedef std::vector prerequisite_targets_type; + typedef vector prerequisite_targets_type; prerequisite_targets_type prerequisite_targets; // Check if there are any prerequisites, taking into account @@ -290,7 +280,7 @@ namespace build2 operator[] (const variable&) const; lookup - operator[] (const std::string& name) const + operator[] (const string& name) const { return operator[] (var_pool.find (name)); } @@ -302,7 +292,7 @@ namespace build2 assign (const variable& var) {return vars.assign (var).first;} value& - assign (const std::string& name) {return vars.assign (name).first;} + assign (const string& name) {return vars.assign (name).first;} // Return a value suitable for appending. See class scope for // details. @@ -311,7 +301,7 @@ namespace build2 append (const variable&); value& - append (const std::string& name) + append (const string& name) { return append (var_pool.find (name)); } @@ -338,7 +328,7 @@ namespace build2 // should have been decremented to 0 naturally, as part of the previous // action execution. // - std::size_t dependents; + size_t dependents; public: action_type action; // Action this recipe is for. @@ -380,8 +370,8 @@ namespace build2 recipe_type recipe_; }; - std::ostream& - operator<< (std::ostream&, const target&); + ostream& + operator<< (ostream&, const target&); // A "range" that presents the prerequisites of a group and one of // its members as one continuous sequence, or, in other words, as @@ -490,7 +480,7 @@ namespace build2 reverse_iterator rend () const {return reverse_iterator (begin ());} - std::size_t + size_t size () const { return t_.prerequisites.size () + @@ -536,13 +526,13 @@ namespace build2 return target != nullptr ? target->type () : prerequisite.get ().type; } - const std::string& + const string& name () const { return target != nullptr ? target->name : prerequisite.get ().name; } - const std::string* + const string* proj () const { // Target cannot be project-qualified. @@ -560,8 +550,8 @@ namespace build2 as_prerequisite (tracer&) const; }; - inline std::ostream& - operator<< (std::ostream& os, const prerequisite_member& pm) + inline ostream& + operator<< (ostream& os, const prerequisite_member& pm) { return os << pm.key (); } @@ -597,7 +587,7 @@ namespace build2 inline prerequisite_members_range prerequisite_members (action a, T&& x, bool members = true) { - return prerequisite_members_range (a, std::forward (x), members); + return prerequisite_members_range (a, forward (x), members); } template @@ -605,9 +595,9 @@ namespace build2 { public: prerequisite_members_range (action a, T&& r, bool m) - : a_ (a), members_ (m), r_ (std::forward (r)), e_ (r_.end ()) {} + : a_ (a), members_ (m), r_ (forward (r)), e_ (r_.end ()) {} - using base_iterator = decltype (std::declval ().begin ()); + using base_iterator = decltype (declval ().begin ()); struct iterator { @@ -692,7 +682,7 @@ namespace build2 const prerequisite_members_range* r_; base_iterator i_; group_view g_; - std::size_t j_; // 1-based index, to support enter_group(). + size_t j_; // 1-based index, to support enter_group(). mutable std::aligned_storage::type m_; }; @@ -724,7 +714,7 @@ namespace build2 reverse_prerequisite_members (action a, target& t, bool members = true) { return prerequisite_members ( - a, butl::reverse_iterate (t.prerequisites), members); + a, reverse_iterate (t.prerequisites), members); } // prerequisite_members(group_prerequisites (t)) @@ -741,7 +731,7 @@ namespace build2 reverse_group_prerequisite_members (action a, target& t, bool members = true) { return prerequisite_members ( - a, butl::reverse_iterate (group_prerequisites (t)), members); + a, reverse_iterate (group_prerequisites (t)), members); } // @@ -750,7 +740,7 @@ namespace build2 { // @@ When we update ext in key, don't we change it? I think we do. // - typedef std::map> map; + typedef std::map> map; typedef butl::map_iterator_adapter iterator; iterator @@ -759,8 +749,8 @@ namespace build2 iterator find (const target_type& type, const dir_path& dir, - const std::string& name, - const std::string* ext, + const string& name, + const string* ext, tracer& trace) const { return find (target_key {&type, &dir, &name, ext}, trace); @@ -771,7 +761,7 @@ namespace build2 // template T* - find (const dir_path& dir, const std::string& name) const + find (const dir_path& dir, const string& name) const { auto i (map_.find (target_key {&T::static_type, &dir, &name, nullptr})); return i != map_.end () ? static_cast (i->second.get ()) : nullptr; @@ -780,18 +770,18 @@ namespace build2 iterator begin () const {return map_.begin ();} iterator end () const {return map_.end ();} - std::pair + pair insert (const target_type&, dir_path dir, - std::string name, - const std::string* ext, + string name, + const string* ext, tracer&); template T& insert (const dir_path& dir, - const std::string& name, - const std::string* ext, + const string& name, + const string* ext, tracer& t) { return static_cast ( @@ -800,7 +790,7 @@ namespace build2 template T& - insert (const dir_path& dir, const std::string& name, tracer& t) + insert (const dir_path& dir, const string& name, tracer& t) { return static_cast ( insert (T::static_type, dir, name, nullptr, t).first); @@ -877,7 +867,7 @@ namespace build2 path () const {return path_;} void - path (path_type p) {assert (path_.empty ()); path_ = std::move (p);} + path (path_type p) {assert (path_.empty ()); path_ = move (p);} // Derive a path from target's dir, name, and, if set, ext. If ext is not // set, try to derive it using the target type extension function and @@ -1059,29 +1049,29 @@ namespace build2 // Return fixed target extension. // template - const std::string* + const string* target_extension_fix (const target_key&, scope&); // Get the extension from the variable or use the default if none set. If // the default is NULL, then return NULL. // template - const std::string* + const string* target_extension_var (const target_key&, scope&); // Always return NULL extension. // - const std::string* + const string* target_extension_null (const target_key&, scope&); // Issue diagnostics and fail if called. // - const std::string* + const string* target_extension_fail (const target_key&, scope&); // Assert if called. // - const std::string* + const string* target_extension_assert (const target_key&, scope&); // Target print functions. diff --git a/build2/target-key b/build2/target-key index 1c8037c..bf88007 100644 --- a/build2/target-key +++ b/build2/target-key @@ -6,9 +6,6 @@ #define BUILD2_TARGET_KEY #include -#include -#include -#include // reference_wrapper #include // compare_c_string @@ -26,8 +23,8 @@ namespace build2 public: const target_type* const type; const dir_path* const dir; - const std::string* const name; - const std::string* const& ext; + const string* const name; + const string* const& ext; friend bool operator< (const target_key& x, const target_key& y) diff --git a/build2/target-type b/build2/target-type index 2659e3d..de210e1 100644 --- a/build2/target-type +++ b/build2/target-type @@ -6,8 +6,6 @@ #define BUILD2_TARGET_TYPE #include -#include -#include #include #include @@ -63,8 +61,8 @@ namespace build2 inline bool operator!= (const target_type& x, const target_type& y) {return &x != &y;} - inline std::ostream& - operator<< (std::ostream& os, const target_type& tt) {return os << tt.name;} + inline ostream& + operator<< (ostream& os, const target_type& tt) {return os << tt.name;} // Target type map. // diff --git a/build2/target.cxx b/build2/target.cxx index 7a4913c..0a416bb 100644 --- a/build2/target.cxx +++ b/build2/target.cxx @@ -4,8 +4,6 @@ #include -#include - #include #include @@ -66,7 +64,7 @@ namespace build2 } action = a; - recipe_ = std::move (r); + recipe_ = move (r); // Also reset the target state. If this is a noop recipe, then // mark the target unchanged so that we don't waste time executing @@ -566,7 +564,7 @@ namespace build2 false }; - static const std::string* + static const string* buildfile_target_extension (const target_key& tk, scope&) { // If the name is special 'buildfile', then there is no extension, diff --git a/build2/test/module b/build2/test/module index ba83c5b..8736851 100644 --- a/build2/test/module +++ b/build2/test/module @@ -6,6 +6,8 @@ #define BUILD2_TEST_MODULE #include +#include + #include namespace build2 diff --git a/build2/test/operation b/build2/test/operation index 5dca166..9a7370e 100644 --- a/build2/test/operation +++ b/build2/test/operation @@ -5,6 +5,9 @@ #ifndef BUILD2_TEST_OPERATION #define BUILD2_TEST_OPERATION +#include +#include + #include namespace build2 diff --git a/build2/test/rule b/build2/test/rule index 7364bf6..8d18a35 100644 --- a/build2/test/rule +++ b/build2/test/rule @@ -5,6 +5,9 @@ #ifndef BUILD2_TEST_RULE #define BUILD2_TEST_RULE +#include +#include + #include #include @@ -16,7 +19,7 @@ namespace build2 { public: virtual match_result - match (action, target&, const std::string&) const; + match (action, target&, const string&) const; virtual recipe apply (action, target&, const match_result&) const; diff --git a/build2/test/rule.cxx b/build2/test/rule.cxx index e5b8eb2..c7de054 100644 --- a/build2/test/rule.cxx +++ b/build2/test/rule.cxx @@ -21,7 +21,7 @@ namespace build2 namespace test { match_result rule:: - match (action a, target& t, const std::string&) const + match (action a, target& t, const string&) const { // First determine if this is a test. This is controlled by // the test target variable and text. scope variables. diff --git a/build2/token b/build2/token index 5b75e1c..31e7baa 100644 --- a/build2/token +++ b/build2/token @@ -5,11 +5,8 @@ #ifndef BUILD2_TOKEN #define BUILD2_TOKEN -#include -#include -#include // size_t -#include // uint64_t -#include // move +#include +#include namespace build2 { @@ -40,16 +37,16 @@ namespace build2 bool quoted; // Name (or some part of it) was quoted. char pair; // Only valid for pair_separator. - std::string value; // Only valid for name. + string value; // Only valid for name. - std::uint64_t line; - std::uint64_t column; + uint64_t line; + uint64_t column; public: - token (token_type t, bool s, std::uint64_t l, std::uint64_t c) + token (token_type t, bool s, uint64_t l, uint64_t c) : type (t), separated (s), quoted (false), line (l), column (c) {} - token (char p, bool s, std::uint64_t l, std::uint64_t c) + token (char p, bool s, uint64_t l, uint64_t c) : type (token_type::pair_separator), separated (s), quoted (false), @@ -57,19 +54,19 @@ namespace build2 line (l), column (c) {} - token (std::string n, bool s, bool q, std::uint64_t l, std::uint64_t c) + token (string n, bool s, bool q, uint64_t l, uint64_t c) : type (token_type::name), separated (s), quoted (q), - value (std::move (n)), + value (move (n)), line (l), column (c) {} }; // Output the token value in a format suitable for diagnostics. // - std::ostream& - operator<< (std::ostream&, const token&); + ostream& + operator<< (ostream&, const token&); } #endif // BUILD2_TOKEN diff --git a/build2/token.cxx b/build2/token.cxx index a80ff44..7a36a2d 100644 --- a/build2/token.cxx +++ b/build2/token.cxx @@ -4,8 +4,6 @@ #include -#include - using namespace std; namespace build2 diff --git a/build2/types b/build2/types index 35aaa58..0c34efb 100644 --- a/build2/types +++ b/build2/types @@ -5,16 +5,22 @@ #ifndef BUILD2_TYPES #define BUILD2_TYPES -#include // ostream #include #include -#include // pair -#include // unique_ptr, shared_ptr -#include // size_t -#include // uint{8,16,32,64}_t -#include // reference_wrapper +#include // unique_ptr, shared_ptr +#include // pair +#include // size_t, nullptr_t +#include // uint{8,16,32,64}_t +#include +#include +#include // function, reference_wrapper + +#include // exception +#include // logic_error, invalid_argument, runtime_error +#include #include +#include #include #include @@ -27,22 +33,40 @@ namespace build2 using std::uint16_t; using std::uint32_t; using std::uint64_t; + using std::size_t; + using std::nullptr_t; using std::pair; using std::string; + using std::function; + using std::reference_wrapper; + using std::unique_ptr; using std::shared_ptr; - using std::reference_wrapper; + using std::weak_ptr; + using std::vector; using strings = vector; using cstrings = vector; - // - // + using std::istream; using std::ostream; + // Exceptions. While is included, there is no using for + // std::exception -- use qualified. + // + using std::logic_error; + using std::invalid_argument; + using std::runtime_error; + using std::system_error; + + // + // + using butl::optional; + using butl::nullopt; + // // using butl::path; @@ -53,6 +77,14 @@ namespace build2 using paths = std::vector; using dir_paths = std::vector; + // Custom path printing (implemented in utility.cxx). + // + ostream& + operator<< (ostream&, const path&); + + ostream& + operator<< (ostream&, const dir_path&); + // // using butl::system_clock; @@ -61,6 +93,9 @@ namespace build2 using butl::timestamp_unknown; using butl::timestamp_nonexistent; using butl::operator<<; + + // + // } #endif // BUILD2_TYPES diff --git a/build2/utility b/build2/utility index 9245d86..a61fb08 100644 --- a/build2/utility +++ b/build2/utility @@ -5,8 +5,14 @@ #ifndef BUILD2_UTILITY #define BUILD2_UTILITY -#include // move(), make_pair() -#include // assert() +#include // make_shared() +#include // to_string() +#include // move(), forward(), declval(), make_pair() +#include // assert() +#include // make_move_iterator() + +#include // reverse_iterate() + #include // uncaught_exception() #include @@ -15,7 +21,17 @@ namespace build2 { using std::move; + using std::forward; + using std::declval; + using std::make_pair; + using std::make_shared; + using std::make_move_iterator; + using std::to_string; + + // + // + using butl::reverse_iterate; // Empty string and path. // diff --git a/build2/utility.cxx b/build2/utility.cxx index 3f078a7..b517deb 100644 --- a/build2/utility.cxx +++ b/build2/utility.cxx @@ -6,10 +6,45 @@ #include // strtol() +#include +#include + using namespace std; namespace build2 { + // + // + // + + ostream& + operator<< (ostream& os, const path& p) + { + return os << (stream_verb (os) < 2 ? diag_relative (p) : p.string ()); + } + + ostream& + operator<< (ostream& os, const dir_path& d) + { + if (stream_verb (os) < 2) + os << diag_relative (d); // Adds trailing '/'. + else + { + const string& s (d.string ()); + + // Print the directory with trailing '/'. + // + if (!s.empty ()) + os << s << (dir_path::traits::is_separator (s.back ()) ? "" : "/"); + } + + return os; + } + + // + // + // + const string empty_string; const path empty_path; const dir_path empty_dir_path; diff --git a/build2/variable b/build2/variable index 5ff310a..0c945c7 100644 --- a/build2/variable +++ b/build2/variable @@ -6,10 +6,7 @@ #define BUILD2_VARIABLE #include -#include -#include // nullptr_t -#include // pair, make_pair() -#include +#include // tags, etc. #include // hash #include // conditional, is_reference, remove_reference, etc. #include @@ -50,7 +47,7 @@ namespace build2 // struct variable { - std::string name; + string name; const value_type* type; // If NULL, then not (yet) typed. variable_visibility visibility; char pairs; // Pair symbold or '\0' if not used. @@ -59,7 +56,7 @@ namespace build2 inline bool operator== (const variable& x, const variable& y) {return x.name == y.name;} - typedef std::reference_wrapper variable_cref; + typedef reference_wrapper variable_cref; // value // @@ -74,7 +71,7 @@ namespace build2 value (value&&) = default; value& - operator= (std::nullptr_t) + operator= (nullptr_t) { data_.clear (); state_ = state_type::null; @@ -107,10 +104,10 @@ namespace build2 // Forwarded to the representation type's assign()/append() (see below). // template value& operator= (T); - value& operator= (const char* v) {return *this = std::string (v);} + value& operator= (const char* v) {return *this = string (v);} template value& operator+= (T); - value& operator+= (const char* v) {return *this += std::string (v);} + value& operator+= (const char* v) {return *this += string (v);} private: explicit value (const value&) = default; @@ -122,8 +119,8 @@ namespace build2 bool empty () const {return state_ == state_type::empty;} explicit operator bool () const {return !null ();} - bool operator== (std::nullptr_t) const {return null ();} - bool operator!= (std::nullptr_t) const {return !null ();} + bool operator== (nullptr_t) const {return null ();} + bool operator!= (nullptr_t) const {return !null ();} // Raw data read interface. // @@ -284,10 +281,10 @@ namespace build2 // string // template <> - struct value_traits + struct value_traits { - using type = std::string&; - using const_type = const std::string&; + using type = string&; + using const_type = const string&; static type as (name& n) {return n.value;} static const_type as (const name& n) {return n.value;} @@ -296,8 +293,8 @@ namespace build2 static const_type as (const value&); static bool assign (name&); - static void assign (value&, std::string); - static void append (value&, std::string); + static void assign (value&, string); + static void append (value&, string); static const build2::value_type value_type; }; @@ -392,10 +389,10 @@ namespace build2 public: vector_value& - operator= (std::vector v) {assign (std::move (v)); return *this;} + operator= (vector v) {assign (move (v)); return *this;} vector_value& - assign (std::vector); + assign (vector); template vector_value& @@ -432,13 +429,13 @@ namespace build2 vector_value (vector_value&&) = default; vector_value& operator= (vector_value&&) = default; //@@ TMP - explicit vector_value (std::nullptr_t): d (nullptr) {} //@@ TMP + explicit vector_value (nullptr_t): d (nullptr) {} //@@ TMP D* d; // names }; template - struct value_traits> + struct value_traits> { using type = vector_value; using const_type = vector_value; @@ -449,15 +446,15 @@ namespace build2 template static void assign (value&, V); template static void append (value&, V); - static const std::string type_name; + static const string type_name; static const build2::value_type value_type; }; template - struct value_traits>: value_traits> {}; + struct value_traits>: value_traits> {}; - using strings_value = vector_value; - using const_strings_value = vector_value; + using strings_value = vector_value; + using const_strings_value = vector_value; extern const value_type* strings_type; // vector aka strings extern const value_type* dir_paths_type; // vector aka dir_paths @@ -473,12 +470,12 @@ namespace build2 { using first_type = typename std::conditional< std::is_reference::value, - std::reference_wrapper::type>, + reference_wrapper::type>, F>::type; using second_type = typename std::conditional< std::is_reference::value, - std::reference_wrapper::type>, + reference_wrapper::type>, S>::type; first_type first; @@ -536,7 +533,7 @@ namespace build2 public: map_value& - operator= (std::map m) {assign (std::move (m)); return *this;} + operator= (std::map m) {assign (move (m)); return *this;} map_value& assign (std::map); @@ -579,7 +576,7 @@ namespace build2 template static void assign (value&, M); template static void append (value&, M); - static const std::string type_name; + static const string type_name; static const build2::value_type value_type; }; @@ -658,7 +655,7 @@ namespace build2 auto r ( insert ( variable { - std::move (name), + move (name), t, vv != nullptr ? *vv : variable_visibility::normal, p})); @@ -742,7 +739,7 @@ namespace build2 } lookup - operator[] (const std::string& name) const + operator[] (const string& name) const { return operator[] (var_pool.find (name)); } @@ -756,7 +753,7 @@ namespace build2 } lookup - operator[] (const std::string& name) + operator[] (const string& name) { return operator[] (var_pool.find (name)); } @@ -764,7 +761,7 @@ namespace build2 // The second member in the pair indicates whether the new // value (which will be NULL) was assigned. // - std::pair, bool> + pair, bool> assign (const variable& var) { auto r (m_.emplace (var, value (var.type))); @@ -775,21 +772,20 @@ namespace build2 if (!r.second && var.type != nullptr && v.type != var.type) build2::assign (v, var.type, var); - return std::make_pair (std::reference_wrapper (v), r.second); + return make_pair (reference_wrapper (v), r.second); } - std::pair, bool> - assign (const std::string& name, const build2::value_type* type = nullptr) + pair, bool> + assign (const string& name, const build2::value_type* type = nullptr) { return assign (var_pool.find (name, type)); } - std::pair - find_namespace (const std::string& ns) const + pair + find_namespace (const string& ns) const { auto r (m_.find_prefix (var_pool.find (ns))); - return std::make_pair (const_iterator (r.first), - const_iterator (r.second)); + return make_pair (const_iterator (r.first), const_iterator (r.second)); } const_iterator @@ -815,9 +811,9 @@ namespace build2 // we "instantiate" the value on the fly, then we will need to // consider its lifetime. // - using variable_pattern_map = std::map; + using variable_pattern_map = std::map; - struct variable_type_map: std::map, + struct variable_type_map: std::map, variable_pattern_map> { build2::lookup diff --git a/build2/variable.cxx b/build2/variable.cxx index 664b02e..39d8cdd 100644 --- a/build2/variable.cxx +++ b/build2/variable.cxx @@ -4,9 +4,6 @@ #include -#include // make_move_iterator() - -#include #include using namespace std; @@ -196,7 +193,7 @@ namespace build2 // if (n.directory ()) { - n.value = std::move (n.dir).string (); // Move string out of path. + n.value = move (n.dir).string (); // Move string out of path. // Add / back to the end of the path unless it is already there. // Note that the string cannot be empty (n.directory () would diff --git a/build2/variable.ixx b/build2/variable.ixx index 52550e4..b368c6e 100644 --- a/build2/variable.ixx +++ b/build2/variable.ixx @@ -55,7 +55,7 @@ namespace build2 inline value& value:: operator= (T v) { - value_traits::assign (*this, std::move (v)); + value_traits::assign (*this, move (v)); return *this; } @@ -63,14 +63,14 @@ namespace build2 inline value& value:: operator+= (T v) { - value_traits::append (*this, std::move (v)); + value_traits::append (*this, move (v)); return *this; } inline void value:: assign (names v, const variable& var) { - data_ = std::move (v); + data_ = move (v); state_ = (type != nullptr && type->assign != nullptr ? type->assign (data_, var) : !data_.empty ()) @@ -120,22 +120,22 @@ namespace build2 // string value // - inline std::string& value_traits:: + inline string& value_traits:: as (value& v) { assert (v.type == string_type); return v.data_.front ().value; } - inline const std::string& value_traits:: + inline const string& value_traits:: as (const value& v) { assert (v.type == string_type); return v.data_.front ().value; } - inline void value_traits:: - assign (value& v, std::string x) + inline void value_traits:: + assign (value& v, string x) { if (v.null ()) { @@ -145,18 +145,18 @@ namespace build2 v.state_ = value::state_type::empty; } - v.state_ = (as (v) = std::move (x)).empty () + v.state_ = (as (v) = move (x)).empty () ? value::state_type::empty : value::state_type::filled; } - inline void value_traits:: - append (value& v, std::string x) + inline void value_traits:: + append (value& v, string x) { if (v.null ()) - assign (v, std::move (x)); + assign (v, move (x)); else - v.state_ = (as (v) += std::move (x)).empty () + v.state_ = (as (v) += move (x)).empty () ? value::state_type::empty : value::state_type::filled; } @@ -188,7 +188,7 @@ namespace build2 v.state_ = value::state_type::empty; } - v.state_ = (as (v) = std::move (x)).empty () + v.state_ = (as (v) = move (x)).empty () ? value::state_type::empty : value::state_type::filled; } @@ -197,9 +197,9 @@ namespace build2 append (value& v, dir_path x) { if (v.null ()) - assign (v, std::move (x)); + assign (v, move (x)); else - v.state_ = (as (v) /= std::move (x)).empty () + v.state_ = (as (v) /= move (x)).empty () ? value::state_type::empty : value::state_type::filled; } @@ -231,7 +231,7 @@ namespace build2 v.state_ = value::state_type::empty; } - v.state_ = (as (v) = std::move (x)).empty () + v.state_ = (as (v) = move (x)).empty () ? value::state_type::empty : value::state_type::filled; } @@ -240,12 +240,12 @@ namespace build2 // template inline vector_value& vector_value:: - assign (std::vector v) + assign (vector v) { d->clear (); d->insert (d->end (), - std::make_move_iterator (v.begin ()), - std::make_move_iterator (v.end ())); + make_move_iterator (v.begin ()), + make_move_iterator (v.end ())); return *this; } @@ -269,47 +269,47 @@ namespace build2 } template - inline vector_value value_traits>:: + inline vector_value value_traits>:: as (value& v) { - assert (v.type == &value_traits>::value_type); + assert (v.type == &value_traits>::value_type); return vector_value (v.data_); } template - inline vector_value value_traits>:: + inline vector_value value_traits>:: as (const value& v) { - assert (v.type == &value_traits>::value_type); + assert (v.type == &value_traits>::value_type); return vector_value (v.data_); } template template - inline void value_traits>:: + inline void value_traits>:: assign (value& v, V x) { if (v.null ()) { if (v.type == nullptr) - v.type = &value_traits>::value_type; + v.type = &value_traits>::value_type; v.state_ = value::state_type::empty; } - v.state_ = (as (v).assign (std::move (x))).empty () + v.state_ = (as (v).assign (move (x))).empty () ? value::state_type::empty : value::state_type::filled; } template template - inline void value_traits>:: + inline void value_traits>:: append (value& v, V x) { if (v.null ()) - assign (v, std::move (x)); + assign (v, move (x)); else - v.state_ = (as (v).append (std::move (x))).empty () + v.state_ = (as (v).append (move (x))).empty () ? value::state_type::empty : value::state_type::filled; } @@ -344,7 +344,7 @@ namespace build2 v.state_ = value::state_type::empty; } - v.state_ = (as (v).assign (std::move (x))).empty () + v.state_ = (as (v).assign (move (x))).empty () ? value::state_type::empty : value::state_type::filled; } @@ -355,9 +355,9 @@ namespace build2 append (value& v, M x) { if (v.null ()) - assign (v, std::move (x)); + assign (v, move (x)); else - v.state_ = (as (v).append (std::move (x))).empty () + v.state_ = (as (v).append (move (x))).empty () ? value::state_type::empty : value::state_type::filled; } diff --git a/build2/variable.txx b/build2/variable.txx index 9870052..f2c55ff 100644 --- a/build2/variable.txx +++ b/build2/variable.txx @@ -2,8 +2,6 @@ // copyright : Copyright (c) 2014-2016 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file -#include // make_move_iterator() - #include namespace build2 @@ -38,20 +36,20 @@ namespace build2 v = move (a); else v.insert (v.end (), - std::make_move_iterator (a.begin ()), - std::make_move_iterator (a.end ())); + make_move_iterator (a.begin ()), + make_move_iterator (a.end ())); return !v.empty (); } template - const std::string value_traits>::type_name = std::string ( + const string value_traits>::type_name = string ( value_traits::value_type.name) + 's'; template - const value_type value_traits>::value_type + const value_type value_traits>::value_type { - value_traits>::type_name.c_str (), + value_traits>::type_name.c_str (), &vector_assign, &vector_append }; @@ -67,7 +65,7 @@ namespace build2 { d->emplace_back (p.first); // Const, can't move. d->back ().pair = '='; - d->emplace_back (std::move (p.second)); + d->emplace_back (move (p.second)); } return *this; @@ -147,14 +145,14 @@ namespace build2 v = move (a); else v.insert (v.end (), - std::make_move_iterator (a.begin ()), - std::make_move_iterator (a.end ())); + make_move_iterator (a.begin ()), + make_move_iterator (a.end ())); return !v.empty (); } template - const std::string value_traits>::type_name = std::string ( + const string value_traits>::type_name = string ( value_traits::value_type.name) + '_' + value_traits::value_type.name + "_map"; -- cgit v1.1