// file : cutl/compiler/context.txx // author : Boris Kolpackov // copyright : Copyright (c) 2009 Code Synthesis Tools CC // license : MIT; see accompanying LICENSE file namespace cutl { namespace compiler { template X& context:: get (char const* key) { map::iterator i (map_.find (key)); if (i == map_.end ()) throw no_entry (); try { return i->second.value (); } catch (container::any::typing const&) { throw typing (); } } template X const& context:: get (char const* key) const { map::const_iterator i (map_.find (key)); if (i == map_.end ()) throw no_entry (); try { return i->second.value (); } catch (container::any::typing const&) { throw typing (); } } template X const& context:: get (char const* key, X const& default_value) const { map::const_iterator i (map_.find (key)); if (i == map_.end ()) return default_value; try { return i->second.value (); } catch (container::any::typing const&) { throw typing (); } } template void context:: set (char const* key, X const& value) { try { std::pair r ( map_.insert (map::value_type (key, value))); if (!r.second) r.first->second.value () = value; } catch (container::any::typing const&) { throw typing (); } } } }