00001 #ifndef SAGA_PACKAGES_SD_SERVICE_DATA_HPP 00002 #define SAGA_PACKAGES_SD_SERVICE_DATA_HPP 00003 #include <string> 00004 #include <vector> 00005 00006 #include <saga/saga/util.hpp> 00007 #include <saga/saga/base.hpp> 00008 #include <saga/saga/types.hpp> 00009 #include <saga/saga/session.hpp> 00010 #include <saga/saga/call.hpp> 00011 #include <saga/saga/detail/attribute.hpp> 00012 #include <saga/saga/packages/sd/config.hpp> 00013 00014 00015 namespace saga { 00016 namespace sd { 00017 class service_description; 00018 } 00019 } 00020 00021 namespace saga 00022 { 00023 00024 namespace sd { 00025 00036 class SAGA_SD_PACKAGE_EXPORT service_data 00037 : public saga::object, 00038 public saga::detail::attribute<service_data> 00039 { 00040 protected: 00041 friend struct saga::detail::attribute<service_data>; 00042 friend class saga::impl::service_data; 00043 friend class saga::impl::service_description; 00044 00045 explicit service_data(saga::impl::service_data *impl); 00046 00047 using saga::detail::attribute<service_data>::set_attribute; 00048 using saga::detail::attribute<service_data>::set_vector_attribute; 00049 using saga::detail::attribute<service_data>::remove_attribute; 00050 00051 public: 00052 service_data (void); 00053 explicit service_data (saga::object const& o); 00054 00055 using saga::detail::attribute<service_data>::get_attribute; 00056 using saga::detail::attribute<service_data>::get_vector_attribute; 00057 00058 ~service_data (void); 00059 00060 // default operator=() and copy ctor are ok 00061 service_data &operator= (saga::object const& o); 00062 00063 }; // service_data 00064 } // namespace sd 00065 } // namespace saga 00067 #endif