summaryrefslogtreecommitdiff
path: root/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp')
-rw-r--r--TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp294
1 files changed, 0 insertions, 294 deletions
diff --git a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp b/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
deleted file mode 100644
index d199a39ddb9..00000000000
--- a/TAO/CIAO/CCF/CCF/IDL2/SemanticAction/Impl/Interface.hpp
+++ /dev/null
@@ -1,294 +0,0 @@
-// file : CCF/IDL2/SemanticAction/Impl/Interface.hpp
-// author : Boris Kolpackov <boris@dre.vanderbilt.edu>
-// cvs-id : $Id$
-
-#ifndef CCF_IDL2_SEMANTIC_ACTION_IMPL_INTERFACE_HPP
-#define CCF_IDL2_SEMANTIC_ACTION_IMPL_INTERFACE_HPP
-
-#include "CCF/IDL2/SemanticAction/Impl/Elements.hpp"
-
-#include "CCF/IDL2/SemanticAction/Interface.hpp"
-
-namespace CCF
-{
- namespace IDL2
- {
- namespace SemanticAction
- {
- namespace Impl
- {
- //
- //
- //
- class Interface : public virtual SemanticAction::Interface,
- public virtual ScopeBase<SyntaxTree::InterfaceDeclPtr>
- {
- public:
- virtual
- ~Interface () throw () {}
-
- Interface (bool trace,
- SyntaxTree::ScopePtr& scope)
- : ScopeBase<SyntaxTree::InterfaceDeclPtr> (scope),
- trace_ (trace),
- name_ ("::") //@@ this is dirty
- {
- }
-
- virtual void
- begin_abstract (SimpleIdentifierPtr const& id)
- {
- if (trace_) cerr << "abstract interface " << id << endl;
-
- qualifier_ = Qualifier::ABSTRACT;
- name_ = SyntaxTree::SimpleName (id->lexeme ());
- }
-
-
- virtual void
- begin_local (SimpleIdentifierPtr const& id)
- {
- if (trace_) cerr << "local interface " << id << endl;
-
- qualifier_ = Qualifier::LOCAL;
- name_ = SyntaxTree::SimpleName (id->lexeme ());
- }
-
- virtual void
- begin_unconstrained (SimpleIdentifierPtr const& id)
- {
- if (trace_) cerr << "unconstrained interface " << id << endl;
-
- qualifier_ = Qualifier::UNCONSTRAINED;
- name_ = SyntaxTree::SimpleName (id->lexeme ());
- }
-
- virtual void
- inherits (IdentifierPtr const& id)
- {
- using namespace SyntaxTree;
-
- if (trace_) cerr << " inherits: " << id << endl;
-
- Name name (id->lexeme ());
-
- struct InheritancePredicate : public DeclarationTable::ResolvePredicate
- {
- InheritancePredicate (Qualifier::Value q) : q_ (q) {}
-
- struct IncompatibleType :
- public DeclarationTable::ResolutionFailure
- {
- IncompatibleType (std::string const& t) : type (t) {}
- std::string type;
- };
-
- virtual bool
- test (DeclarationPtr const& d) const throw (IncompatibleType)
- {
- bool passed = false;
-
- switch (q_)
- {
- case Qualifier::UNCONSTRAINED:
- {
- if (d->is_a<AbstractInterfaceDecl> () ||
- d->is_a<UnconstrainedInterfaceDecl> ()) passed = true;
-
- break;
- }
- case Qualifier::LOCAL:
- {
- if (d->is_a<LocalInterfaceDecl> () ||
- d->is_a<AbstractInterfaceDecl> () ||
- d->is_a<UnconstrainedInterfaceDecl> ()) passed = true;
-
- break;
- }
- case Qualifier::ABSTRACT:
- {
- if (d->is_a<AbstractInterfaceDecl> ()) passed = true;
-
- break;
- }
- }
-
- if (!passed) throw IncompatibleType (d->declaration_class ());
-
- //@@ could instead check for XXDef
- //
- return d->dynamic_type<InterfaceDecl> ()->defined ();
- }
-
- private:
- Qualifier::Value q_;
- } p (qualifier_);
-
- try
- {
- ScopedName sn = scope_->table ().resolve (
- name,
- scope_->name (),
- scope_->peek_order (),
- p);
-
- if (inherits_.insert (sn).second == false)
- {
- cerr << "error: invalid inheritance specification" << endl;
- cerr << "directly inheriting from interface \'"
- << sn << "\' more than once is illegal" << endl;
- }
- }
- catch (InheritancePredicate::IncompatibleType const& e)
- {
- cerr << "error: invalid inheritance specification" << endl;
-
- cerr << "inheritance of ";
-
- switch (qualifier_)
- {
- case Qualifier::UNCONSTRAINED:
- {
- cerr << "unconstrained ";
- break;
- }
- case Qualifier::LOCAL:
- {
- cerr << "local ";
- break;
- }
- case Qualifier::ABSTRACT:
- {
- cerr << "abstract ";
- break;
- }
- }
-
- cerr << "interface \'" << name_ <<"\' from "
- << e.type << " \'" << name << "\' is illegal" << endl;
- }
- catch (DeclarationTable::NameNotFound const&)
- {
- cerr << "error: invalid inheritance specification" << endl;
- cerr << "no interface with name \'"
- << name << "\' visible from scope \'"
- << scope_->name () << "\'" << endl;
- }
- catch (DeclarationTable::PredicateNotMet const&)
- {
- cerr << "error: invalid inheritance specification" << endl;
- cerr << "no defined interface with name \'"
- << name << "\' visible from scope \'"
- << scope_->name () << "\'" << endl;
- cerr << "inheritance from forward-declared interface is illegal"
- << endl;
- }
- }
-
- virtual void
- open_scope ()
- {
- if (trace_) cerr << "scope open" << endl;
-
- using namespace SyntaxTree;
-
- InterfaceDefPtr def;
-
- switch (qualifier_)
- {
- case Qualifier::UNCONSTRAINED:
- {
- def = new UnconstrainedInterfaceDef (name_, scope_, inherits_);
- break;
- }
- case Qualifier::LOCAL:
- {
- def = new LocalInterfaceDef (name_, scope_, inherits_);
- break;
- }
- case Qualifier::ABSTRACT:
- {
- def = new AbstractInterfaceDef (name_, scope_, inherits_);
- break;
- }
- }
-
- scope_->insert (def);
- push (def);
- scope_ = def;
-
- name_ = SimpleName ("::"); //indicate that we are done
- inherits_.clear ();
- }
-
- virtual void
- close_scope ()
- {
- scope_ = scope_->scope ();
- if (trace_) cerr << "scope close" << endl;
- }
-
- virtual void
- end ()
- {
- using namespace SyntaxTree;
-
- if (trace_) cerr << "end" << endl;
-
- if (name_ != SimpleName ("::"))
- {
- InterfaceDeclPtr decl;
-
- switch (qualifier_)
- {
- case Qualifier::UNCONSTRAINED:
- {
- decl = new UnconstrainedInterfaceForwardDecl (name_, scope_);
- break;
- }
- case Qualifier::LOCAL:
- {
- decl = new LocalInterfaceForwardDecl (name_, scope_);
- break;
- }
- case Qualifier::ABSTRACT:
- {
- decl = new AbstractInterfaceForwardDecl (name_, scope_);
- break;
- }
- }
-
- scope_->insert (decl);
-
- name_ = SimpleName ("::"); //indicate that we are done
- }
- else
- {
- pop ();
- }
- }
- private:
-
- struct Qualifier
- {
- enum Value
- {
- ABSTRACT,
- LOCAL,
- UNCONSTRAINED
- };
- };
-
- bool trace_;
-
- Qualifier::Value qualifier_;
- SyntaxTree::SimpleName name_;
- SyntaxTree::ScopedNameSet inherits_;
- };
-
- }
- }
- }
-}
-
-#endif // CCF_IDL2_SEMANTIC_ACTION_IMPL_INTERFACE_HPP