// Copyright (c) 2005-2007 Hartmut Kaiser (hartmut.kaiser@gmail.com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #ifndef SAGA_IMPL_ENGINE_ATTRIBUTE_INTERFACE_HPP #define SAGA_IMPL_ENGINE_ATTRIBUTE_INTERFACE_HPP // include stl #include #include // suppress warnings about dependent classes not being exported from the dll #if defined(BOOST_MSVC) #pragma warning(push) #pragma warning(disable : 4251 4231 4660) #endif /////////////////////////////////////////////////////////////////////////////// namespace saga { namespace impl { // we define a common interface used by saga::impl::attribute and // saga::adaptors::attribute_cpi_wrapper class SAGA_EXPORT attribute_interface { typedef std::vector strvec_type; public: virtual ~attribute_interface (void) {} virtual saga::task get_attribute(std::string&, std::string, bool is_sync = false) = 0; virtual saga::task set_attribute(saga::void_t&, std::string, std::string, bool is_sync = false) = 0; virtual saga::task get_vector_attribute(strvec_type&, std::string, bool is_sync = false) = 0; virtual saga::task set_vector_attribute(saga::void_t&, std::string, strvec_type, bool is_sync = false) = 0; virtual saga::task remove_attribute(saga::void_t&, std::string, bool is_sync = false) = 0; virtual saga::task list_attributes(strvec_type&, bool is_sync = false) = 0; virtual saga::task find_attributes(strvec_type&, std::string, bool is_sync = false) = 0; virtual saga::task attribute_exists(bool&, std::string, bool is_sync = false) = 0; virtual saga::task attribute_is_readonly(bool&, std::string, bool is_sync = false) = 0; virtual saga::task attribute_is_writable(bool&, std::string, bool is_sync = false) = 0; virtual saga::task attribute_is_vector(bool&, std::string, bool is_sync = false) = 0; virtual saga::task attribute_is_extended(bool&, std::string, bool is_sync = false) = 0; }; }} // namespace saga::impl #if defined(BOOST_MSVC) #pragma warning(pop) #endif #endif // SAGA_IMPL_ENGINE_ATTRIBUTE_INTERFACE_HPP