diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2017-05-01 13:50:13 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2017-05-01 15:02:14 +0300 |
commit | 2319d01e262b705716e19474865f555f3ca81a7d (patch) | |
tree | 15ffb5b3f998a2cc0def729d2f1f76f578d8d139 /bpkg/types.hxx | |
parent | 5fb0df6f63e02c141e8a0e5ad4543dea525df3fc (diff) |
Add hxx extension for headers and lib prefix for library dirs
Diffstat (limited to 'bpkg/types.hxx')
-rw-r--r-- | bpkg/types.hxx | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/bpkg/types.hxx b/bpkg/types.hxx new file mode 100644 index 0000000..37c38e5 --- /dev/null +++ b/bpkg/types.hxx @@ -0,0 +1,104 @@ +// file : bpkg/types.hxx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BPKG_TYPES_HXX +#define BPKG_TYPES_HXX + +#include <vector> +#include <string> +#include <memory> // unique_ptr, shared_ptr +#include <utility> // pair +#include <cstddef> // size_t, nullptr_t +#include <cstdint> // uint{8,16,32,64}_t +#include <istream> +#include <ostream> +#include <functional> // function, reference_wrapper + +#include <ios> // ios_base::failure +#include <exception> // exception +#include <stdexcept> // logic_error, invalid_argument, runtime_error +#include <system_error> + +#include <odb/lazy-ptr.hxx> + +#include <butl/path> +#include <butl/optional> + +namespace bpkg +{ + // 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::string; + using std::function; + using std::reference_wrapper; + + using std::unique_ptr; + using std::shared_ptr; + using std::weak_ptr; + + using std::vector; + + using strings = vector<string>; + using cstrings = vector<const char*>; + + using std::istream; + using std::ostream; + + // Exceptions. While <exception> 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; + + // <butl/optional> + // + using butl::optional; + using butl::nullopt; + + // ODB smart pointers. + // + using odb::lazy_shared_ptr; + using odb::lazy_weak_ptr; + + // <butl/path> + // + using butl::path; + using butl::dir_path; + using butl::basic_path; + using butl::invalid_path; + + using paths = std::vector<path>; + using dir_paths = std::vector<dir_path>; +} + +// 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. +// +namespace std +{ + // Custom path printing (canonicalized, with trailing slash for directories). + // + inline ostream& + operator<< (ostream& os, const ::butl::path& p) + { + string r (p.representation ()); + ::butl::path::traits::canonicalize (r); + return os << r; + } +} + +#endif // BPKG_TYPES_HXX |