SAGA C++ API 1.6
directory.hpp
Go to the documentation of this file.
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 //  Copyright (c) 2005-2009 Hartmut Kaiser
00008 //  Copyright (c) 2005-2007 Andre Merzky (andre@merzky.net)
00009 //  Copyright (c) 2007 Ole Weidner (oweidner@cct.lsu.edu)
00010 // 
00011 //  Distributed under the Boost Software License, Version 1.0. (See accompanying 
00012 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
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 // include stl
00023 #include <string>
00024 
00025 // include dependent spec sections
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/filesystem/file.hpp>
00034 
00035 // suppress warnings about dependent classes not being exported from the dll
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/filesystem/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
00048 
00049 namespace saga { namespace filesystem {
00050     
00055     class SAGA_FILESYSTEM_PACKAGE_EXPORT directory 
00056         : public saga::name_space::directory
00057     {
00058     private:
00060         // factory
00061         SAGA_CALL_CREATE_PRIV_3(session const&, saga::url, int)
00062 
00063         
00064         SAGA_CALL_PRIV_2 (get_size, saga::url, int)
00065         SAGA_CALL_PRIV_1 (is_file, saga::url)
00066 
00067         SAGA_CALL_PRIV_2 (open, saga::url, int)
00068         SAGA_CALL_PRIV_2 (open_dir, saga::url, int)
00070 
00071     protected:
00073 
00074         TR1::shared_ptr <saga::impl::directory> get_impl_sp() const;
00075         saga::impl::directory* get_impl() const;
00076         friend class saga::impl::directory;
00077         explicit directory (saga::impl::directory * init);
00079 
00080 public:
00085         directory (session const & s, saga::url url, 
00086                    int mode = ReadWrite);
00087 
00092         explicit directory (saga::url url, int mode = ReadWrite);
00093      
00098         explicit directory (saga::object const& o);
00099 
00104         directory (void);
00105 
00110         ~directory (void);
00111 
00115         static directory create(session const& s, saga::url url, int mode = Read)
00116         {
00117             return directory(s, url, mode);
00118         }
00119         SAGA_CALL_CREATE_3_DEF_1(session const&, saga::url, int, Read)
00120 
00121         
00123         static directory create(saga::url url, int mode = Read)
00124         {
00125             return directory(url, mode);
00126         }
00127         template <typename Tag>
00128         static saga::task create(saga::url url, int mode = Read)
00129         {
00130             return create<Tag>(detail::get_the_session(), url, mode);
00131         }
00132 
00137         directory &operator= (saga::object const& o);
00138 
00146         saga::off_t get_size(saga::url url, int flags = None)
00147         {
00148             saga::task t = get_sizepriv(url, flags, saga::task_base::Sync());
00149             return t.get_result<saga::off_t>();
00150         }
00152         SAGA_CALL_PUB_2_DEF_1 (get_size, saga::url, int, None)
00154 
00160         bool is_file(saga::url url)
00161         {
00162             saga::task t = is_filepriv(url, saga::task_base::Sync());
00163             return t.get_result<bool>();
00164         }
00166         SAGA_CALL_PUB_1_DEF_0(is_file, saga::url)
00168 
00177         saga::filesystem::file open(saga::url url, 
00178             int flags = saga::filesystem::Read)
00179         {
00180             saga::task t = openpriv(url, flags, saga::task_base::Sync());
00181             return t.get_result<saga::filesystem::file>();
00182         }
00184         SAGA_CALL_PUB_2_DEF_1(open, saga::url, int, saga::filesystem::Read)
00186 
00195         saga::filesystem::directory open_dir(saga::url url, 
00196             int flags = saga::filesystem::Read)
00197         {
00198             saga::task t = open_dirpriv(url, flags, saga::task_base::Sync());
00199             return t.get_result<saga::filesystem::directory>();
00200         }
00202         SAGA_CALL_PUB_2_DEF_1(open_dir, saga::url, int,
00203                               saga::filesystem::Read)
00205         
00206     }; // directory
00207 
00208 }} // namespace saga::filesystem
00209 
00210 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
00211 #pragma wave option(output: null)
00212 #endif
00213 
00214 #endif // !defined(SAGA_DEBUG)
00215 
00216 // re-enable warnings about dependent classes not being exported from the dll
00217 #if defined(BOOST_MSVC)
00218 #pragma warning(pop)
00219 #endif
00220 
00221 #endif // SAGA_DIRECTORY_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines