SAGA Adaptor CPI v.1.0
|
00001 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES) 00002 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/namespace_dir.cpp") 00003 #endif 00004 // Copyright (c) 2005-2009 Hartmut Kaiser 00005 // Copyright (c) 2005-2007 Andre Merzky (andre@merzky.net) 00006 // 00007 // Distributed under the Boost Software License, Version 1.0. (See accompanying 00008 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00009 00010 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES) 00011 #pragma wave option(preserve: 0, output: null) 00012 #endif 00013 00014 // include the package and implementation 00015 #include <saga/saga/util.hpp> 00016 #include <saga/saga/namespace.hpp> 00017 #include <saga/impl/namespace.hpp> 00018 #include <saga/saga/detail/call.hpp> 00019 00020 #include <string> 00021 #include <vector> 00022 00023 #ifdef SAGA_DEBUG 00024 #include <saga/saga/packages/namespace/preprocessed/namespace_dir.cpp> 00025 #else 00026 00027 #if defined(__WAVE__) && defined(SAGA_CREATE_PREPROCESSED_FILES) 00028 #pragma wave option(preserve: 2, line: 1, output: "preprocessed/namespace_dir.cpp") 00029 #endif 00030 00031 namespace saga { namespace name_space 00032 { 00033 directory::directory (saga::impl::namespace_dir *init) 00034 : entry (init) 00035 { 00036 } 00037 00038 directory::directory (session const& s, saga::url url, int mode, 00039 saga::object::type t) 00040 : entry (new saga::impl::namespace_dir (s, url, mode, t)) 00041 { 00042 saga::impl::object* obj (this->saga::object::get_impl()); 00043 obj->init(); 00044 if (t == saga::object::NSDirectory) 00045 obj->set_type((saga::object::type)obj->get_cpitype()); 00046 } 00047 00048 directory::directory (saga::url url, int mode, 00049 saga::object::type t) 00050 : entry (new saga::impl::namespace_dir ( 00051 detail::get_the_session(), url, mode, t)) 00052 { 00053 saga::impl::object* obj (this->saga::object::get_impl()); 00054 obj->init(); 00055 if (t == saga::object::NSDirectory) 00056 obj->set_type((saga::object::type)obj->get_cpitype()); 00057 } 00058 00059 directory::directory (saga::object const& o) 00060 : saga::name_space::entry(o) 00061 { 00062 } 00063 00064 directory::directory (void) 00065 { 00066 } 00067 00068 directory::~directory (void) 00069 { 00070 } 00071 00072 directory &directory::operator= (saga::object const& o) 00073 { 00074 return this->saga::name_space::entry::operator=(o), *this; 00075 } 00076 00077 saga::impl::namespace_dir* directory::get_impl() const 00078 { 00079 typedef saga::object base_type; 00080 return static_cast<saga::impl::namespace_dir*>(this->base_type::get_impl()); 00081 } 00082 00083 TR1::shared_ptr <saga::impl::namespace_dir> directory::get_impl_sp() const 00084 { 00085 typedef saga::object base_type; 00086 return TR1::static_pointer_cast<saga::impl::namespace_dir>( 00087 this->base_type::get_impl_sp()); 00088 } 00089 00090 // factories 00091 SAGA_CALL_CREATE_IMP_3(directory, impl::namespace_dir, session const&, saga::url, int) 00092 00093 // navigation/query methods 00094 SAGA_CALL_IMP_1(directory, change_dir, saga::url) 00095 SAGA_CALL_CONST_IMP_2(directory, list, std::string, int) 00096 SAGA_CALL_CONST_IMP_2(directory, find, std::string, int) 00097 00098 SAGA_CALL_CONST_IMP_1(directory, read_link, saga::url) 00099 SAGA_CALL_CONST_IMP_1(directory, exists, saga::url) 00100 SAGA_CALL_CONST_IMP_1(directory, is_dir, saga::url) 00101 SAGA_CALL_CONST_IMP_1(directory, is_entry, saga::url) 00102 SAGA_CALL_CONST_IMP_1(directory, is_link, saga::url) 00103 00104 // Deal with entries by entry number 00105 SAGA_CALL_CONST_IMP_0(directory, get_num_entries) 00106 SAGA_CALL_CONST_IMP_1(directory, get_entry, std::size_t) 00107 00108 // entry management methods 00109 SAGA_CALL_IMP_3(directory, copy, saga::url, saga::url, int) 00110 SAGA_CALL_IMP_3(directory, link, saga::url, saga::url, int) 00111 SAGA_CALL_IMP_3(directory, move, saga::url, saga::url, int) 00112 SAGA_CALL_IMP_2(directory, remove, saga::url, int) 00113 SAGA_CALL_IMP_2(directory, make_dir, saga::url, int) 00114 00115 // open methods 00116 SAGA_CALL_IMP_2(directory, open, saga::url, int) 00117 SAGA_CALL_IMP_2(directory, open_dir, saga::url, int) 00118 00119 // entry management methods - wildcard versions 00120 SAGA_CALL_IMP_3_EX(directory, copy, copy_wildcard, std::string, saga::url, int) 00121 SAGA_CALL_IMP_3_EX(directory, link, link_wildcard, std::string, saga::url, int) 00122 SAGA_CALL_IMP_3_EX(directory, move, move_wildcard, std::string, saga::url, int) 00123 SAGA_CALL_IMP_2_EX(directory, remove, remove_wildcard, std::string, int) 00124 00125 // permissions with flags 00126 SAGA_CALL_IMP_4(directory, permissions_allow, saga::url, std::string, int, int) 00127 SAGA_CALL_IMP_4(directory, permissions_deny, saga::url, std::string, int, int) 00128 SAGA_CALL_IMP_4_EX(directory, permissions_allow, permissions_allow_wildcard, std::string, std::string, int, int) 00129 SAGA_CALL_IMP_4_EX(directory, permissions_deny, permissions_deny_wildcard, std::string, std::string, int, int) 00130 00132 }} // namespace saga::name_space 00133 00134 #endif