// Copyright (c) 2005-2009 Hartmut Kaiser // // 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) #include #include #include using saga::c_bindings::to_handle; using saga::c_bindings::from_handle; using saga::c_bindings::from_object_handle; /////////////////////////////////////////////////////////////////////////////// saga_session saga_session_create(void) { return to_handle(new (std::nothrow) saga::session()); } saga_session saga_session_create_object(saga_object obj) { saga::object o(*from_object_handle(obj)); return to_handle(new (std::nothrow) saga::session(o)); } void saga_session_delete(saga_session* p) { if (0 != p && 0 != *p) { delete from_handle(*p); *p = 0; } } /////////////////////////////////////////////////////////////////////////////// saga_error saga_session_add_context(saga_session s, saga_context ctx) { try { from_handle(s)->add_context(*from_handle(ctx)); } catch (saga::exception const& e) { return static_cast(e.get_error()); } catch (std::exception const&) { return saga_no_success; } return saga_success; } saga_error saga_session_remove_context(saga_session s, saga_context ctx) { try { from_handle(s)->remove_context(*from_handle(ctx)); } catch (saga::exception const& e) { return static_cast(e.get_error()); } catch (std::exception const&) { return saga_no_success; } return saga_success; } saga_context_list saga_session_list_contexts(saga_session s) { try { saga_context_list l = new saga_context_list_impl; l->data = from_handle(s)->list_contexts(); return l; } catch (saga::exception const&) { return 0; } catch (std::exception const&) { return 0; } return 0; }