From bada6666c70977a058755ccf232e7d67b24adeed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Wed, 23 Jul 2014 15:21:29 +0200 Subject: New upstream release --- libcutl/cutl/compiler/context.hxx | 137 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 libcutl/cutl/compiler/context.hxx (limited to 'libcutl/cutl/compiler/context.hxx') diff --git a/libcutl/cutl/compiler/context.hxx b/libcutl/cutl/compiler/context.hxx new file mode 100644 index 0000000..2933e36 --- /dev/null +++ b/libcutl/cutl/compiler/context.hxx @@ -0,0 +1,137 @@ +// file : cutl/compiler/context.hxx +// copyright : Copyright (c) 2009-2013 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#ifndef CUTL_COMPILER_CONTEXT_HXX +#define CUTL_COMPILER_CONTEXT_HXX + +#include +#include +#include // std::size_t +#include + +#include +#include + +#include + +namespace cutl +{ + namespace compiler + { + class LIBCUTL_EXPORT context + { + public: + struct LIBCUTL_EXPORT no_entry: exception {}; + struct LIBCUTL_EXPORT typing: exception {}; + + public: + context () {} + + void + swap (context& c) + { + map_.swap (c.map_); + } + + private: + context (context const&); + + context& + operator= (context const&); + + public: + std::size_t + count (char const* key) const + { + return count (std::string (key)); + } + + std::size_t + count (std::string const& key) const + { + return map_.count (key); + } + + template + X& + get (char const* key) + { + return get (std::string (key)); + } + + template + X& + get (std::string const& key); + + template + X const& + get (char const* key) const + { + return get (std::string (key)); + } + + template + X const& + get (std::string const& key) const; + + template + X const& + get (char const* key, X const& default_value) const + { + return get (std::string (key), default_value); + } + + template + X const& + get (std::string const& key, X const& default_value) const; + + template + X& + set (char const* key, X const& value) + { + return set (std::string (key), value); + } + + template + X& + set (std::string const& key, X const& value); + + void + set (char const* key, container::any const& value) + { + return set (std::string (key), value); + } + + void + set (std::string const& key, container::any const& value); + + void + remove (char const* key) + { + remove (std::string (key)); + } + + void + remove (std::string const& key); + + std::type_info const& + type_info (char const* key) const + { + return type_info (std::string (key)); + } + + std::type_info const& + type_info (std::string const& key) const; + + private: + typedef std::map map; + + map map_; + }; + } +} + +#include + +#endif // CUTL_COMPILER_CONTEXT_HXX -- cgit v1.2.3