summaryrefslogtreecommitdiff
path: root/odb/semantics/namespace.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/semantics/namespace.hxx')
-rw-r--r--odb/semantics/namespace.hxx24
1 files changed, 24 insertions, 0 deletions
diff --git a/odb/semantics/namespace.hxx b/odb/semantics/namespace.hxx
index a4ead38..df48e437 100644
--- a/odb/semantics/namespace.hxx
+++ b/odb/semantics/namespace.hxx
@@ -5,12 +5,16 @@
#ifndef ODB_SEMANTICS_NAMESPACE_HXX
#define ODB_SEMANTICS_NAMESPACE_HXX
+#include <vector>
+
#include <odb/semantics/elements.hxx>
namespace semantics
{
class namespace_: public scope
{
+ typedef std::vector<namespace_*> extensions_type;
+
public:
bool
extension () const
@@ -28,9 +32,28 @@ namespace semantics
original (namespace_& ns)
{
original_ = &ns;
+ ns.extensions_.push_back (this);
}
public:
+ typedef extensions_type::const_iterator extensions_iterator;
+
+ extensions_iterator
+ extensions_begin () const {return extensions_.begin ();}
+
+ extensions_iterator
+ extensions_end () const {return extensions_.end ();}
+
+ public:
+ virtual names*
+ lookup (string const& name,
+ type_id const&,
+ unsigned int flags = 0,
+ bool* hidden = 0) const;
+
+ using scope::lookup;
+
+ public:
namespace_ (path const&, size_t line, size_t column, tree);
// Resolve conflict between scope::scope and nameable::scope.
@@ -42,6 +65,7 @@ namespace semantics
private:
namespace_* original_;
+ extensions_type extensions_;
};
}