summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Parser.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-10-10 21:09:53 +0000
committerMarc Laukien <marc@zeroc.com>2001-10-10 21:09:53 +0000
commit4f8ca6e21c5fdd1fcaaef8812963c616c56f52b5 (patch)
tree01d9bd54866068220ec5fb748f27cb976945105e /cpp/src/Slice/Parser.cpp
parentmore error checks (diff)
downloadice-4f8ca6e21c5fdd1fcaaef8812963c616c56f52b5.tar.bz2
ice-4f8ca6e21c5fdd1fcaaef8812963c616c56f52b5.tar.xz
ice-4f8ca6e21c5fdd1fcaaef8812963c616c56f52b5.zip
more fixes
Diffstat (limited to 'cpp/src/Slice/Parser.cpp')
-rw-r--r--cpp/src/Slice/Parser.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index e250d3e8468..53c95bc7712 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -354,7 +354,7 @@ Slice::Container::createClassDecl(const string& name, bool local, bool intf)
}
ExceptionPtr
-Slice::Container::createException(const string& name)
+Slice::Container::createException(const string& name, bool local, const ExceptionPtr& base)
{
ContainedList matches = _unit->findContents(thisScope() + name);
if (!matches.empty())
@@ -381,7 +381,7 @@ Slice::Container::createException(const string& name)
return 0;
}
- ExceptionPtr p = new Exception(this, name);
+ ExceptionPtr p = new Exception(this, name, local, base);
_contents.push_back(p);
return p;
}
@@ -1510,6 +1510,13 @@ Slice::Proxy::Proxy(const ClassDeclPtr& cl) :
// Exception
// ----------------------------------------------------------------------
+void
+Slice::Exception::destroy()
+{
+ _base = 0;
+ Container::destroy();
+}
+
DataMemberPtr
Slice::Exception::createDataMember(const string& name, const TypePtr& type)
{
@@ -1567,6 +1574,18 @@ Slice::Exception::dataMembers()
return result;
}
+ExceptionPtr
+Slice::Exception::base()
+{
+ return _base;
+}
+
+bool
+Slice::Exception::isLocal()
+{
+ return _local;
+}
+
bool
Slice::Exception::uses(const ConstructedPtr&)
{
@@ -1594,10 +1613,12 @@ Slice::Exception::visit(ParserVisitor* visitor)
}
}
-Slice::Exception::Exception(const ContainerPtr& container, const string& name) :
+Slice::Exception::Exception(const ContainerPtr& container, const string& name, bool local, const ExceptionPtr& base) :
Container(container->unit()),
Contained(container, name),
- SyntaxTreeBase(container->unit())
+ SyntaxTreeBase(container->unit()),
+ _local(local),
+ _base(base)
{
}