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_sp(void) const;
00040 saga::impl::const_iovec* get_impl (void) const;
00041 friend class saga::impl::const_iovec;
00043
00044 public:
00049 const_iovec(void const* data, saga::ssize_t size,
00050 saga::ssize_t len_in = -1);
00051
00056 ~const_iovec();
00057
00062 saga::ssize_t get_len_in() const;
00063
00068 saga::ssize_t get_len_out() const;
00069
00070 };
00071
00080 class SAGA_FILE_PACKAGE_EXPORT iovec
00081 : public saga::mutable_buffer
00082 {
00083 protected:
00085
00086 TR1::shared_ptr <saga::impl::iovec> get_impl_sp (void) const;
00087 saga::impl::iovec* get_impl (void) const;
00088 friend class saga::impl::iovec;
00090
00091 public:
00096 iovec(void* data = 0, saga::ssize_t size = -1,
00097 saga::ssize_t len_in = -1,
00098 buffer_deleter cb = default_buffer_deleter);
00099
00104 ~iovec();
00105
00110 void set_len_in(saga::ssize_t len_in);
00111
00116 saga::ssize_t get_len_in() const;
00117
00122 saga::ssize_t get_len_out() const;
00123
00124 };
00125 }
00127 }
00128
00129
00130 #if defined(BOOST_MSVC)
00131 #pragma warning(pop)
00132 #endif
00133
00134 #endif // !defined(SAGA_PACKAGES_DATA_FILE_IOVEC_HPP)
00135