00001 // Copyright (c) 2005-2009 Hartmut Kaiser 00002 // Copyright (c) 2005-2007 Andre Merzky (andre@merzky.net) 00003 // 00004 // Distributed under the Boost Software License, Version 1.0. (See accompanying 00005 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 00006 00007 #include <saga/saga/util.hpp> 00008 #include <saga/saga/exception.hpp> 00009 #include <saga/saga/object.hpp> 00010 #include <saga/saga/task.hpp> 00011 #include <saga/saga/attribute.hpp> 00012 #include <saga/saga/context.hpp> 00013 00014 #include <saga/impl/exception.hpp> 00015 #include <saga/impl/engine/object.hpp> 00016 #include <saga/impl/engine/attribute.hpp> 00017 #include <saga/impl/engine/metric.hpp> 00018 #include <saga/impl/engine/context_base.hpp> 00019 00020 #include <saga/saga/detail/attribute_impl.hpp> 00021 00022 namespace saga 00023 { 00024 attribute::attribute (saga::object rhs) 00025 : impl_ (rhs.get_impl_sp()) 00026 { 00027 } 00028 00029 attribute::attribute (saga::impl::object *impl) 00030 : impl_ (impl->shared_from_this()) 00031 { 00032 } 00033 00034 attribute::attribute (void) 00035 : impl_ (new saga::impl::object (saga::object::Unknown)) 00036 { 00037 } 00038 00039 attribute::~attribute (void) 00040 { 00041 } 00042 00043 namespace detail 00044 { 00046 // implement the attribute functions (we need to explicitly specialize 00047 // the template because the functions are not implemented inline) 00048 template struct SAGA_EXPORT_REPEAT attribute<saga::attribute>; 00049 00050 template struct SAGA_EXPORT attribute_priv<saga::attribute, task_base::Sync>; 00051 template struct SAGA_EXPORT attribute_priv<saga::attribute, task_base::Async>; 00052 template struct SAGA_EXPORT attribute_priv<saga::attribute, task_base::Task>; 00053 00054 template struct SAGA_EXPORT attribute_sync<saga::attribute>; 00055 } 00056 00058 } // namespace saga 00059