00001
00002
00003
00004
00005
00006
00007 #ifndef SAGA_PACKAGES_DATA_FILE_IOVEC_HPP
00008 #define SAGA_PACKAGES_DATA_FILE_IOVEC_HPP
00009
00010 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
00011 #pragma once
00012 #endif
00013
00014 #include <saga/saga/packages/file/config.hpp>
00015
00016
00017 #include <saga/saga/buffer.hpp>
00018
00019
00020 #if defined(BOOST_MSVC)
00021 #pragma warning(push)
00022 #pragma warning(disable: 4251 4231 4275 4660)
00023 #endif
00024
00026 namespace saga
00027 {
00028 namespace filesystem {
00033 class SAGA_FILE_PACKAGE_EXPORT const_iovec
00034 : public saga::const_buffer
00035 {
00036 protected:
00038
00039 TR1::shared_ptr <saga::impl::const_iovec> get_impl (void) const;
00040 friend class saga::impl::const_iovec;
00042
00043 public:
00048 const_iovec(void const* data, saga::ssize_t size,
00049 saga::ssize_t len_in = -1);
00050
00055 ~const_iovec();
00056
00061 saga::ssize_t get_len_in() const;
00062
00067 saga::ssize_t get_len_out() const;
00068
00069 };
00070
00079 class SAGA_FILE_PACKAGE_EXPORT iovec
00080 : public saga::mutable_buffer
00081 {
00082 protected:
00084
00085 TR1::shared_ptr <saga::impl::iovec> get_impl (void) const;
00086 friend class saga::impl::iovec;
00088
00089 public:
00094 iovec(void* data = 0, saga::ssize_t size = -1,
00095 saga::ssize_t len_in = -1,
00096 buffer_deleter cb = default_buffer_deleter);
00097
00102 ~iovec();
00103
00108 void set_len_in(saga::ssize_t len_in);
00109
00114 saga::ssize_t get_len_in() const;
00115
00120 saga::ssize_t get_len_out() const;
00121
00122 };
00123 };
00125 }
00126
00127
00128 #if defined(BOOST_MSVC)
00129 #pragma warning(pop)
00130 #endif
00131
00132 #endif // !defined(SAGA_PACKAGES_DATA_FILE_IOVEC_HPP)
00133