- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- Search for |

# namespace_dir.hpp

Go to the documentation of this file.

    00001 #ifndef SAGA_PACKAGES_DATA_NAMESPACEDIR_HPP
    00002 #define SAGA_PACKAGES_DATA_NAMESPACEDIR_HPP
    00003
    00004 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
    00005 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/namespace_dir.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 // include stl
    00018 #include <string>
    00019
    00020 // include dependent spec sections
    00021 #include <saga/saga/call.hpp>
    00022 #include <saga/saga/base.hpp>
    00023 #include <saga/saga/session.hpp>
    00024 #include <saga/saga/task.hpp>
    00025 #include <saga/saga/permissions.hpp>
    00026 #include <saga/saga/url.hpp>
    00027
    00028 // include package config
    00029 #include <saga/saga/packages/namespace/config.hpp>
    00030 #include <saga/saga/packages/namespace/namespace_entry.hpp>
    00031
    00032 // suppress warnings about dependent classes not being exported from the dll
    00033 #if defined(BOOST_MSVC)
    00034 #pragma warning(push)
    00035 #pragma warning(disable: 4251 4231 4275 4660)
    00036 #endif
    00037
    00038 #ifdef SAGA_DEBUG
    00039 #include <saga/saga/packages/description/preprocessed/namespace_dir.hpp>
    00040 #else
    00041
    00042 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
    00043 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/namespace_dir.hpp")
    00044 #endif
    00046 namespace saga
    00047 {
    00048     namespace name_space {
    00049
    00061     class SAGA_NAMESPACE_PACKAGE_EXPORT directory
    00062         : public entry
    00063     {
    00064
    00065     protected:
    00067
    00068         TR1::shared_ptr <saga::impl::namespace_dir> get_impl_sp() const;
    00069         saga::impl::namespace_dir* get_impl() const;
    00070
    00071         friend class saga::impl::namespace_dir;
    00072
    00073         typedef saga::name_space::entry::monitorable_base monitorable_base;
    00075
    00076     private:
    00077         // factories
    00078         SAGA_CALL_CREATE_PRIV_3(session const&, saga::url, int)
    00079
    00080         // navigation/query methods
    00081         SAGA_CALL_PRIV_1(change_dir, saga::url)
    00082         SAGA_CALL_CONST_PRIV_2(list, std::string, int)
    00083         SAGA_CALL_CONST_PRIV_2(find, std::string, int)
    00084
    00085         SAGA_CALL_CONST_PRIV_1(read_link,  saga::url)
    00086         SAGA_CALL_CONST_PRIV_1(exists, saga::url)
    00087         SAGA_CALL_CONST_PRIV_1(is_dir, saga::url)
    00088         SAGA_CALL_CONST_PRIV_1(is_entry, saga::url)
    00089         SAGA_CALL_CONST_PRIV_1(is_link, saga::url)
    00090
    00091         // Deal with entries by entry number
    00092         SAGA_CALL_CONST_PRIV_0(get_num_entries)
    00093         SAGA_CALL_CONST_PRIV_1(get_entry, std::size_t)
    00094
    00095         // entry management methods
    00096         SAGA_CALL_PRIV_3(copy, saga::url, saga::url, int)
    00097         SAGA_CALL_PRIV_3(link, saga::url, saga::url, int)
    00098         SAGA_CALL_PRIV_3(move, saga::url, saga::url, int)
    00099         SAGA_CALL_PRIV_2(remove, saga::url, int)
    00100         SAGA_CALL_PRIV_2(make_dir, saga::url, int)
    00101
    00102         // open methods
    00103         SAGA_CALL_PRIV_2(open, saga::url, int)
    00104         SAGA_CALL_PRIV_2(open_dir, saga::url, int)
    00105
    00106         // management methods - wild card versions
    00107         SAGA_CALL_PRIV_3(copy, std::string, saga::url, int)
    00108         SAGA_CALL_PRIV_3(link, std::string, saga::url, int)
    00109         SAGA_CALL_PRIV_3(move, std::string, saga::url, int)
    00110         SAGA_CALL_PRIV_2(remove, std::string, int)
    00111
    00112         // permissions with flags
    00113         SAGA_CALL_PRIV_4(permissions_allow, saga::url, std::string, int, int)
    00114         SAGA_CALL_PRIV_4(permissions_deny, saga::url, std::string, int, int)
    00115         SAGA_CALL_PRIV_4(permissions_allow, std::string, std::string, int, int)
    00116         SAGA_CALL_PRIV_4(permissions_deny, std::string, std::string, int, int)
    00117
    00118     protected:
    00120
    00121         directory (saga::impl::namespace_dir *);
    00123
    00124     public:
    00129         directory (session const& s, saga::url url, int mode = Read,
    00130                        saga::object::type t = saga::object::NSDirectory);
    00131
    00136         explicit directory (saga::url url, int mode = Read,
    00137             saga::object::type t = saga::object::NSDirectory);
    00138
    00143         explicit directory (saga::object const& o);
    00144
    00149         directory (void);
    00150
    00155         ~directory (void);
    00156
    00160         static directory create(session const & s, saga::url url, int mode = Read)
    00161         {
    00162             return directory(s, url, mode);
    00163         }
    00164         SAGA_CALL_CREATE_3_DEF_1(session const&, saga::url, int, Read)
    00165
    00166
    00168         static directory create(saga::url url, int mode = Read)
    00169         {
    00170             return directory(url, mode);
    00171         }
    00172         template <typename Tag>
    00173         static saga::task create(saga::url url, int mode = Read)
    00174         {
    00175             return create<Tag>(detail::get_the_session(), url, mode);
    00176         }
    00177
    00182         directory &operator= (saga::object const& o);
    00183
    00190         void change_dir (saga::url target)
    00191         {
    00192             saga::task t = change_dirpriv(target, saga::task_base::Sync());
    00193             t.get_result ();
    00194         }
    00196         SAGA_CALL_PUB_1_DEF_0(change_dir, saga::url)
    00198
    00199
    00206         std::vector<saga::url> list (std::string pattern = "*",
    00207             int flags = saga::name_space::None) const
    00208         {
    00209             saga::task t = listpriv(pattern, flags, saga::task_base::Sync());
    00210             return t.get_result<std::vector<saga::url> >();
    00211         }
    00213         SAGA_CALL_CONST_PUB_2_DEF_2(list, std::string,
    00214             "*", int, saga::name_space::None)
    00216
    00217
    00225         std::vector<saga::url> find (std::string pattern,
    00226             int flags = saga::name_space::Recursive) const
    00227         {
    00228             saga::task t = findpriv(pattern, flags, saga::task_base::Sync());
    00229             return t.get_result<std::vector<saga::url> >();
    00230         }
    00232         SAGA_CALL_CONST_PUB_2_DEF_1(find, std::string,
    00233             int, saga::name_space::Recursive)
    00235
    00242         saga::url read_link (saga::url url) const
    00243         {
    00244             saga::task t = read_linkpriv(url, saga::task_base::Sync());
    00245             return t.get_result<saga::url>();
    00246         }
    00248         SAGA_CALL_CONST_PUB_1_DEF_0(read_link, saga::url)
    00250
    00251
    00258         bool exists (saga::url url) const
    00259         {
    00260             saga::task t = existspriv(url, saga::task_base::Sync());
    00261             return t.get_result<bool>();
    00262         }
    00264         SAGA_CALL_CONST_PUB_1_DEF_0(exists, saga::url)
    00266
    00267
    00274         bool is_dir (saga::url url) const
    00275         {
    00276             saga::task t = is_dirpriv(url, saga::task_base::Sync());
    00277             return t.get_result<bool>();
    00278         }
    00280         SAGA_CALL_CONST_PUB_1_DEF_0(is_dir, saga::url)
    00282
    00283
    00290         bool is_entry (saga::url url) const
    00291         {
    00292             saga::task t = is_entrypriv(url, saga::task_base::Sync());
    00293             return t.get_result<bool>();
    00294         }
    00296         SAGA_CALL_CONST_PUB_1_DEF_0(is_entry, saga::url)
    00298
    00299
    00307         bool is_link (saga::url url) const
    00308         {
    00309             saga::task t = is_linkpriv(url, saga::task_base::Sync());
    00310             return t.get_result<bool>();
    00311         }
    00313         SAGA_CALL_CONST_PUB_1_DEF_0 (is_link, saga::url)
    00315
    00316         // make base class functions available as well
    00317         using entry::read_link;
    00318         using entry::is_dir;
    00319         using entry::is_entry;
    00320         using entry::is_link;
    00321
    00328         std::size_t get_num_entries (void) const
    00329         {
    00330             saga::task t = get_num_entriespriv(saga::task_base::Sync());
    00331             return t.get_result<std::size_t>();
    00332         }
    00334         SAGA_CALL_CONST_PUB_0_DEF_0(get_num_entries)
    00336
    00337
    00345         saga::url get_entry (std::size_t entry) const
    00346         {
    00347             saga::task t = get_entrypriv(entry, saga::task_base::Sync());
    00348             return t.get_result<saga::url>();
    00349         }
    00351         SAGA_CALL_CONST_PUB_1_DEF_0(get_entry, unsigned int)
    00353
    00361         void copy (saga::url source_url, saga::url dest_url,
    00362             int flags = saga::name_space::None)
    00363         {
    00364             saga::task t = copypriv(source_url, dest_url, flags, saga::task_base::Sync());
    00365             t.get_result ();
    00366         }
    00368         SAGA_CALL_PUB_3_DEF_1 (copy, saga::url, saga::url, int,
    00369             saga::name_space::None)
    00371
    00372
    00380         void copy (std::string source_url, saga::url dest_url,
    00381             int flags = saga::name_space::None)
    00382         {
    00383             saga::task t = copypriv(source_url, dest_url, flags, saga::task_base::Sync());
    00384             t.get_result ();
    00385         }
    00387         SAGA_CALL_PUB_3_DEF_1 (copy, std::string, saga::url, int,
    00388             saga::name_space::None)
    00390
    00391
    00399         void copy (char const * source_url, saga::url dest_url,
    00400             int flags = saga::name_space::None)
    00401         {
    00402             saga::task t = copypriv(std::string(source_url), dest_url, flags, saga::task_base::Sync());
    00403             t.get_result ();
    00404         }
    00406         template <class Tag>
    00407         saga::task copy (char const * source_url, saga::url dest_url,
    00408             int flags = saga::name_space::None)
    00409         {
    00410             return copypriv(std::string(source_url), dest_url, flags, Tag());
    00411         }
    00413
    00424         void link (saga::url source_url, saga::url dest_url,
    00425             int flags = saga::name_space::None)
    00426         {
    00427             saga::task t = linkpriv(source_url, dest_url, flags, saga::task_base::Sync());
    00428             t.get_result ();
    00429         }
    00431         SAGA_CALL_PUB_3_DEF_1(link, saga::url, saga::url, int,
    00432             saga::name_space::None)
    00434
    00435
    00445         void link (std::string source_url, saga::url dest_url,
    00446             int flags = saga::name_space::None)
    00447         {
    00448             saga::task t = linkpriv(source_url, dest_url, flags, saga::task_base::Sync());
    00449             t.get_result ();
    00450         }
    00452         SAGA_CALL_PUB_3_DEF_1(link, std::string, saga::url, int,
    00453             saga::name_space::None)
    00455
    00456
    00466         void link (char const * source_url, saga::url dest_url,
    00467             int flags = saga::name_space::None)
    00468         {
    00469             saga::task t = linkpriv(std::string(source_url), dest_url, flags, saga::task_base::Sync());
    00470             t.get_result ();
    00471         }
    00473         template <class Tag>
    00474         saga::task link (char const * source_url, saga::url dest_url,
    00475             int flags = saga::name_space::None)
    00476         {
    00477             return linkpriv(std::string(source_url), dest_url, flags, Tag());
    00478         }
    00480
    00491         void move (saga::url source_url, saga::url dest_url,
    00492             int flags = saga::name_space::None)
    00493         {
    00494             saga::task t = movepriv(source_url, dest_url, flags, saga::task_base::Sync());
    00495             t.get_result ();
    00496         }
    00498         SAGA_CALL_PUB_3_DEF_1(move, saga::url, saga::url, int,
    00499             saga::name_space::None)
    00501
    00502
    00512         void move (std::string source_url, saga::url dest_url,
    00513             int flags = saga::name_space::None)
    00514         {
    00515             saga::task t = movepriv(source_url, dest_url, flags, saga::task_base::Sync());
    00516             t.get_result ();
    00517         }
    00519         SAGA_CALL_PUB_3_DEF_1(move, std::string, saga::url, int,
    00520             saga::name_space::None)
    00522
    00523
    00533         void move (char const * source_url, saga::url dest_url,
    00534             int flags = saga::name_space::None)
    00535         {
    00536             saga::task t = movepriv(std::string(source_url), dest_url, flags, saga::task_base::Sync());
    00537             t.get_result ();
    00538         }
    00540         template <class Tag>
    00541         saga::task move (char const * source_url, saga::url dest_url,
    00542             int flags = saga::name_space::None)
    00543         {
    00544             return movepriv(std::string(source_url), dest_url, flags, Tag());
    00545         }
    00547
    00553         void remove (saga::url url, int flags = saga::name_space::None)
    00554         {
    00555             saga::task t = removepriv(url, flags, saga::task_base::Sync());
    00556             t.get_result ();
    00557         }
    00559         SAGA_CALL_PUB_2_DEF_1(remove, saga::url, int, saga::name_space::None)
    00561
    00567         void remove (std::string url, int flags = saga::name_space::None)
    00568         {
    00569             saga::task t = removepriv(url, flags, saga::task_base::Sync());
    00570             t.get_result ();
    00571         }
    00573         SAGA_CALL_PUB_2_DEF_1(remove, std::string, int, saga::name_space::None)
    00575
    00581         void remove (char const * url, int flags = saga::name_space::None)
    00582         {
    00583             saga::task t = removepriv(std::string(url), flags, saga::task_base::Sync());
    00584             t.get_result ();
    00585         }
    00587         template <class Tag>
    00588         saga::task remove (char const * url, int flags = saga::name_space::None)
    00589         {
    00590             return removepriv(std::string(url), flags, Tag());
    00591         }
    00593
    00594         // make base class functions available as well
    00595         using entry::copy;
    00596         using entry::link;
    00597         using entry::move;
    00598         using entry::remove;
    00599
    00606         void make_dir (saga::url url,
    00607             int flags = saga::name_space::None)
    00608         {
    00609             saga::task t = make_dirpriv(url, flags, saga::task_base::Sync());
    00610             t.get_result ();
    00611         }
    00613         SAGA_CALL_PUB_2_DEF_1(make_dir, saga::url, int, saga::name_space::None)
    00615
    00624         saga::name_space::entry open (saga::url url,
    00625             int flags = saga::name_space::None)
    00626         {
    00627             saga::task t = openpriv(url, flags, saga::task_base::Sync());
    00628             return t.get_result<saga::name_space::entry>();
    00629         }
    00631         SAGA_CALL_PUB_2_DEF_1(open, saga::url, int, saga::name_space::Read)
    00633
    00634
    00642         saga::name_space::directory open_dir (saga::url url,
    00643                                               int flags = saga::name_space::Read)
    00644         {
    00645             saga::task t = open_dirpriv(url, flags, saga::task_base::Sync());
    00646             return t.get_result<saga::name_space::directory>();
    00647         }
    00649         SAGA_CALL_PUB_2_DEF_1(open_dir, saga::url, int, saga::name_space::Read)
    00651
    00652         // make base class functions available as well
    00653         using entry::permissions_allow;
    00654         using entry::permissions_deny;
    00655
    00666         void permissions_allow (saga::url target, std::string id,
    00667             int perm, int flags = None)
    00668         {
    00669             saga::task t = permissions_allowpriv(target, id, perm, flags, saga::task_base::Sync());
    00670             t.get_result ();
    00671         }
    00673         SAGA_CALL_PUB_4_DEF_1 (permissions_allow, saga::url, std::string,
    00674             int, int, None)
    00676
    00687         void permissions_deny (saga::url target, std::string id,
    00688             int perm, int flags = None)
    00689         {
    00690             saga::task t = permissions_denypriv(target, id, perm, flags, saga::task_base::Sync());
    00691             t.get_result ();
    00692         }
    00694         SAGA_CALL_PUB_4_DEF_1 (permissions_deny, saga::url, std::string,
    00695             int, int, None)
    00697
    00708         void permissions_allow (std::string target, std::string id,
    00709             int perm, int flags = None)
    00710         {
    00711             saga::task t = permissions_allowpriv(target, id, perm, flags, saga::task_base::Sync());
    00712             t.get_result ();
    00713         }
    00715         SAGA_CALL_PUB_4_DEF_1 (permissions_allow, std::string, std::string,
    00716             int, int, None)
    00718
    00729         void permissions_deny (std::string target, std::string id,
    00730             int perm, int flags = None)
    00731         {
    00732             saga::task t = permissions_denypriv(target, id, perm, flags, saga::task_base::Sync());
    00733             t.get_result ();
    00734         }
    00736         SAGA_CALL_PUB_4_DEF_1 (permissions_deny, std::string, std::string,
    00737             int, int, None)
    00739
    00750         void permissions_allow (char const * target, std::string id,
    00751                 int perm, int flags = None)
    00752         {
    00753             saga::task t = permissions_allowpriv(std::string(target), id, perm, flags,
    00754                   saga::task_base::Sync());
    00755             t.get_result ();
    00756         }
    00758         template <class Tag>
    00759         saga::task permissions_allow (char const * target, std::string id,
    00760                 int perm, int flags = None)
    00761         {
    00762             return permissions_allowpriv(std::string(target), id, perm, flags,
    00763                 Tag());
    00764         }
    00766
    00777         void permissions_deny (char const * target, std::string id,
    00778                 int perm, int flags = None)
    00779         {
    00780             saga::task t = permissions_denypriv(std::string(target), id, perm, flags,
    00781                   saga::task_base::Sync());
    00782             t.get_result ();
    00783         }
    00785         template <class Tag>
    00786         saga::task permissions_deny (char const * target, std::string id,
    00787                 int perm, int flags = None)
    00788         {
    00789             return permissions_denypriv(std::string(target), id, perm, flags,
    00790                 Tag());
    00791         }
    00793     };
    00794
    00795 }} // saga::namespace_dir
    00796
    00797 #endif // !defined(SAGA_DEBUG)
    00798
    00799 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES)
    00800 #pragma wave option(output: null)
    00801 #endif
    00802 // re-enable warnings about dependent classes not being exported from the dll
    00803 #if defined(BOOST_MSVC)
    00804 #pragma warning(pop)
    00805 #endif
    00806
    00807 #endif // SAGA_PACKAGES_DATA_NAMESPACEDIR_HPP
    00808