// file : build2/types -*- C++ -*- // copyright : Copyright (c) 2014-2016 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #ifndef BUILD2_TYPES #define BUILD2_TYPES #include #include #include #include #include #include // unique_ptr, shared_ptr #include // pair, move() #include // size_t, nullptr_t #include // uint{8,16,32,64}_t, *_MIN, *_MAX #include #include #include // function, reference_wrapper #include #include // ios_base::failure #include // exception #include // logic_error, invalid_argument, runtime_error #include #include #include #include #include #include #include #include #include namespace build2 { // Commonly-used types. // using std::uint8_t; 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::tuple; using std::string; using std::function; using std::reference_wrapper; using std::initializer_list; using std::unique_ptr; using std::shared_ptr; using std::weak_ptr; using std::array; using std::vector; using butl::vector_view; // using butl::small_vector; // using strings = vector; using cstrings = vector; using std::istream; using std::ostream; using std::future; // 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 io_error = std::ios_base::failure; // // using butl::optional; using butl::nullopt; // // using butl::path; using butl::dir_path; using butl::basic_path; using butl::invalid_path; using butl::path_cast; // Absolute directory path. Note that for now we don't do any checking that // the path is in fact absolute. // // The idea is to have a different type that we automatically complete when // a (variable) value of this type gets initialized from untyped names. See // value_type for details. // // Note that currently we also normalize and actualize the path. And we // leave empty path as is. // struct abs_dir_path: dir_path { using dir_path::dir_path; explicit abs_dir_path (dir_path d): dir_path (std::move (d)) {} abs_dir_path () = default; }; using paths = std::vector; using dir_paths = std::vector; // // using butl::system_clock; using butl::timestamp; using butl::duration; using butl::timestamp_unknown; using butl::timestamp_nonexistent; using butl::operator<<; // // using butl::sha256; // // // using butl::process; using butl::process_path; using butl::process_error; using butl::auto_fd; using butl::ifdstream; using butl::ofdstream; } // In order to be found (via ADL) these have to be either in std:: or in // butl::. The latter is bad idea since libbutl includes the default // implementation. They are defined in utility.cxx. // namespace std { // Path printing with trailing slash for directories. // ostream& operator<< (ostream&, const ::butl::path&); // Print as recall[@effect]. // ostream& operator<< (ostream&, const ::butl::process_path&); } // // #include #endif // BUILD2_TYPES