diff options
Diffstat (limited to 'boost/process/detail/windows/file_descriptor.hpp')
-rw-r--r-- | boost/process/detail/windows/file_descriptor.hpp | 208 |
1 files changed, 104 insertions, 104 deletions
diff --git a/boost/process/detail/windows/file_descriptor.hpp b/boost/process/detail/windows/file_descriptor.hpp index 337e634781..80e4c8ae8f 100644 --- a/boost/process/detail/windows/file_descriptor.hpp +++ b/boost/process/detail/windows/file_descriptor.hpp @@ -1,104 +1,104 @@ -// Copyright (c) 2016 Klemens D. Morgenstern
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- -#ifndef BOOST_PROCESS_DETAIL_WINDOWS_FILE_DESCRIPTOR_HPP_
-#define BOOST_PROCESS_DETAIL_WINDOWS_FILE_DESCRIPTOR_HPP_
- -#include <boost/detail/winapi/basic_types.hpp>
-#include <boost/detail/winapi/handles.hpp>
-#include <boost/detail/winapi/file_management.hpp>
-#include <string>
-#include <boost/filesystem/path.hpp>
- -namespace boost { namespace process { namespace detail { namespace windows {
- -struct file_descriptor
-{
- enum mode_t
- {
- read = 1,
- write = 2,
- read_write = 3
- };
- static ::boost::detail::winapi::DWORD_ desired_access(mode_t mode)
- {
- switch(mode)
- {
- case read:
- return ::boost::detail::winapi::GENERIC_READ_;
- case write:
- return ::boost::detail::winapi::GENERIC_WRITE_;
- case read_write:
- return ::boost::detail::winapi::GENERIC_READ_
- | ::boost::detail::winapi::GENERIC_WRITE_;
- default:
- return 0u;
- }
- }
- - file_descriptor() = default;
- file_descriptor(const boost::filesystem::path& p, mode_t mode = read_write)
- : file_descriptor(p.native(), mode)
- {
- }
- - file_descriptor(const std::string & path , mode_t mode = read_write)
- : file_descriptor(path.c_str(), mode) {}
- file_descriptor(const std::wstring & path, mode_t mode = read_write)
- : file_descriptor(path.c_str(), mode) {}
- - file_descriptor(const char* path, mode_t mode = read_write)
- : _handle(
- ::boost::detail::winapi::create_file(
- path,
- desired_access(mode),
- ::boost::detail::winapi::FILE_SHARE_READ_ |
- ::boost::detail::winapi::FILE_SHARE_WRITE_,
- nullptr,
- ::boost::detail::winapi::OPEN_ALWAYS_,
- - ::boost::detail::winapi::FILE_ATTRIBUTE_NORMAL_,
- nullptr
- ))
- {
- - }
- file_descriptor(const wchar_t * path, mode_t mode = read_write)
- : _handle(
- ::boost::detail::winapi::create_file(
- path,
- desired_access(mode),
- ::boost::detail::winapi::FILE_SHARE_READ_ |
- ::boost::detail::winapi::FILE_SHARE_WRITE_,
- nullptr,
- ::boost::detail::winapi::OPEN_ALWAYS_,
- - ::boost::detail::winapi::FILE_ATTRIBUTE_NORMAL_,
- nullptr
- ))
-{
- -}
- file_descriptor(const file_descriptor & ) = delete;
- file_descriptor(file_descriptor && ) = default;
- - file_descriptor& operator=(const file_descriptor & ) = delete;
- file_descriptor& operator=(file_descriptor && ) = default;
- - ~file_descriptor()
- {
- if (_handle != ::boost::detail::winapi::INVALID_HANDLE_VALUE_)
- ::boost::detail::winapi::CloseHandle(_handle);
- }
- - ::boost::detail::winapi::HANDLE_ handle() const { return _handle;}
- -private:
- ::boost::detail::winapi::HANDLE_ _handle = ::boost::detail::winapi::INVALID_HANDLE_VALUE_;
-};
- -}}}}
- -#endif /* BOOST_PROCESS_DETAIL_WINDOWS_FILE_DESCRIPTOR_HPP_ */
+// Copyright (c) 2016 Klemens D. Morgenstern +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#ifndef BOOST_PROCESS_DETAIL_WINDOWS_FILE_DESCRIPTOR_HPP_ +#define BOOST_PROCESS_DETAIL_WINDOWS_FILE_DESCRIPTOR_HPP_ + +#include <boost/winapi/basic_types.hpp> +#include <boost/winapi/handles.hpp> +#include <boost/winapi/file_management.hpp> +#include <string> +#include <boost/filesystem/path.hpp> + +namespace boost { namespace process { namespace detail { namespace windows { + +struct file_descriptor +{ + enum mode_t + { + read = 1, + write = 2, + read_write = 3 + }; + static ::boost::winapi::DWORD_ desired_access(mode_t mode) + { + switch(mode) + { + case read: + return ::boost::winapi::GENERIC_READ_; + case write: + return ::boost::winapi::GENERIC_WRITE_; + case read_write: + return ::boost::winapi::GENERIC_READ_ + | ::boost::winapi::GENERIC_WRITE_; + default: + return 0u; + } + } + + file_descriptor() = default; + file_descriptor(const boost::filesystem::path& p, mode_t mode = read_write) + : file_descriptor(p.native(), mode) + { + } + + file_descriptor(const std::string & path , mode_t mode = read_write) + : file_descriptor(path.c_str(), mode) {} + file_descriptor(const std::wstring & path, mode_t mode = read_write) + : file_descriptor(path.c_str(), mode) {} + + file_descriptor(const char* path, mode_t mode = read_write) + : _handle( + ::boost::winapi::create_file( + path, + desired_access(mode), + ::boost::winapi::FILE_SHARE_READ_ | + ::boost::winapi::FILE_SHARE_WRITE_, + nullptr, + ::boost::winapi::OPEN_ALWAYS_, + + ::boost::winapi::FILE_ATTRIBUTE_NORMAL_, + nullptr + )) + { + + } + file_descriptor(const wchar_t * path, mode_t mode = read_write) + : _handle( + ::boost::winapi::create_file( + path, + desired_access(mode), + ::boost::winapi::FILE_SHARE_READ_ | + ::boost::winapi::FILE_SHARE_WRITE_, + nullptr, + ::boost::winapi::OPEN_ALWAYS_, + + ::boost::winapi::FILE_ATTRIBUTE_NORMAL_, + nullptr + )) +{ + +} + file_descriptor(const file_descriptor & ) = delete; + file_descriptor(file_descriptor && ) = default; + + file_descriptor& operator=(const file_descriptor & ) = delete; + file_descriptor& operator=(file_descriptor && ) = default; + + ~file_descriptor() + { + if (_handle != ::boost::winapi::INVALID_HANDLE_VALUE_) + ::boost::winapi::CloseHandle(_handle); + } + + ::boost::winapi::HANDLE_ handle() const { return _handle;} + +private: + ::boost::winapi::HANDLE_ _handle = ::boost::winapi::INVALID_HANDLE_VALUE_; +}; + +}}}} + +#endif /* BOOST_PROCESS_DETAIL_WINDOWS_FILE_DESCRIPTOR_HPP_ */ |