00001
00002
00003
00004
00005
00006
00007
00008 #ifndef SAGA_SESSION_HPP
00009 #define SAGA_SESSION_HPP
00010
00011
00012 #include <list>
00013
00014
00015 #include <saga/saga/util.hpp>
00016 #include <saga/saga/base.hpp>
00017 #include <saga/saga/object.hpp>
00018
00019
00020 #if defined(BOOST_MSVC)
00021 #pragma warning(push)
00022 #pragma warning(disable: 4251 4231 4275 4660)
00023 #endif
00024
00026 namespace saga
00027 {
00029 namespace detail
00030 {
00031
00032 SAGA_EXPORT session get_the_session ();
00033 #define SAGA_DEFAULT_SESSION detail::get_the_session ()
00034 }
00036
00046 class SAGA_EXPORT session
00047 : public saga::object
00048 {
00049 protected:
00051
00052 TR1::shared_ptr <saga::impl::session> get_impl (void) const;
00053
00054 friend class saga::object;
00055 friend struct impl::runtime;
00057
00058 public:
00063 explicit session(bool default_session = true);
00064
00070 explicit session(saga::object const& obj);
00071
00076 ~session (void);
00077
00082 session &operator= (saga::object const& o);
00083
00089 void add_context(saga::context const& c);
00090
00096 void remove_context(saga::context const& c);
00097
00103 std::vector <saga::context> list_contexts() const;
00104
00109 friend SAGA_EXPORT
00110 bool operator== (session const& lhs, session const& rhs);
00111 };
00112
00114 }
00115
00116
00117 #if defined(BOOST_MSVC)
00118 #pragma warning(pop)
00119 #endif
00120
00121 #endif // SAGA_SESSION_HPP
00122