00001 #ifndef SAGA_DIRECTORY_HPP
00002 #define SAGA_DIRECTORY_HPP
00003
00004 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00005 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/directory.hpp")
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00015 #pragma wave option(output: null)
00016 #endif
00017
00018 #if defined(_MSC_VER) && (_MSC_VER >= 1200)
00019 #pragma once
00020 #endif
00021
00022
00023 #include <string>
00024
00025
00026 #include <saga/saga/call.hpp>
00027 #include <saga/saga/base.hpp>
00028 #include <saga/saga/types.hpp>
00029 #include <saga/saga/object.hpp>
00030 #include <saga/saga/session.hpp>
00031
00032 #include <saga/saga/packages/namespace/namespace_dir.hpp>
00033 #include <saga/saga/packages/file/file.hpp>
00034
00035
00036 #if defined(BOOST_MSVC)
00037 #pragma warning(push)
00038 #pragma warning(disable: 4251 4231 4275 4660)
00039 #endif
00040
00041 #ifdef SAGA_DEBUG
00042 #include <saga/saga/packages/file/preprocessed/directory.hpp>
00043 #else
00044
00045 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00046 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/directory.hpp")
00047 #endif
00049 namespace saga { namespace filesystem {
00050
00055 class SAGA_FILE_PACKAGE_EXPORT directory
00056 : public saga::name_space::directory
00057 {
00058 private:
00060
00061 SAGA_CALL_PRIV_1 (get_size, saga::url)
00062 SAGA_CALL_PRIV_1 (is_file, saga::url)
00063
00064 SAGA_CALL_PRIV_2 (open, saga::url, int)
00065 SAGA_CALL_PRIV_2 (open_dir, saga::url, int)
00067
00068 protected:
00070
00071 TR1::shared_ptr <saga::impl::directory> get_impl() const;
00073
00074 public:
00079 directory (session const & s, saga::url url,
00080 int mode = ReadWrite);
00081
00086 explicit directory (saga::url url, int mode = ReadWrite);
00087
00092 explicit directory (saga::object const& o);
00093
00098 directory (void);
00099
00104 ~directory (void);
00105
00110 directory &operator= (saga::object const& o);
00111
00119 saga::off_t get_size(saga::url url)
00120 {
00121 saga::task t = get_sizepriv(url, saga::task_base::Sync());
00122 return t.get_result<saga::off_t>();
00123 }
00125 SAGA_CALL_PUB_1_DEF_0 (get_size, saga::url)
00127
00133 bool is_file(saga::url url)
00134 {
00135 saga::task t = is_filepriv(url, saga::task_base::Sync());
00136 return t.get_result<bool>();
00137 }
00139 SAGA_CALL_PUB_1_DEF_0(is_file, saga::url)
00141
00150 saga::filesystem::file open(saga::url url,
00151 int flags = saga::filesystem::Read)
00152 {
00153 saga::task t = openpriv(url, flags, saga::task_base::Sync());
00154 return t.get_result<saga::filesystem::file>();
00155 }
00157 SAGA_CALL_PUB_2_DEF_1(open, saga::url, int, saga::filesystem::Read)
00159
00168 saga::filesystem::directory open_dir(saga::url url,
00169 int flags = saga::filesystem::ReadWrite)
00170 {
00171 saga::task t = open_dirpriv(url, flags, saga::task_base::Sync());
00172 return t.get_result<saga::filesystem::directory>();
00173 }
00175 SAGA_CALL_PUB_2_DEF_1(open_dir, saga::url, int,
00176 saga::filesystem::ReadWrite)
00178
00179 };
00180
00181 }}
00182
00183 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00184 #pragma wave option(output: null)
00185 #endif
00186
00187 #endif // !defined(SAGA_DEBUG)
00188
00189
00190 #if defined(BOOST_MSVC)
00191 #pragma warning(pop)
00192 #endif
00193
00194 #endif // SAGA_DIRECTORY_HPP