summaryrefslogtreecommitdiff
path: root/cpp/src/Slice/Parser.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2012-11-09 16:22:47 -0800
committerMark Spruiell <mes@zeroc.com>2012-11-09 16:22:47 -0800
commit493caea19fd83663eb03b4eeaf7714f99ac07b97 (patch)
tree39f8b7dc983394288cb25961a0907ebe0b0f5847 /cpp/src/Slice/Parser.cpp
parentICE-4914 - Update Database/Oracle demos (diff)
downloadice-493caea19fd83663eb03b4eeaf7714f99ac07b97.tar.bz2
ice-493caea19fd83663eb03b4eeaf7714f99ac07b97.tar.xz
ice-493caea19fd83663eb03b4eeaf7714f99ac07b97.zip
ICE-4930 - fixes for scripting languages
Diffstat (limited to 'cpp/src/Slice/Parser.cpp')
-rw-r--r--cpp/src/Slice/Parser.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index a0855fc7771..673a9a0d222 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -3969,19 +3969,19 @@ Slice::Exception::uses(const ContainedPtr&) const
}
bool
-Slice::Exception::usesClasses() const
+Slice::Exception::usesClasses(bool includeOptional) const
{
DataMemberList dml = dataMembers();
for(DataMemberList::const_iterator i = dml.begin(); i != dml.end(); ++i)
{
- if((*i)->type()->usesClasses())
+ if((*i)->type()->usesClasses() && (includeOptional || !(*i)->optional()))
{
return true;
}
}
if(_base)
{
- return _base->usesClasses();
+ return _base->usesClasses(includeOptional);
}
return false;
}
@@ -5131,12 +5131,12 @@ Slice::Operation::uses(const ContainedPtr& contained) const
}
bool
-Slice::Operation::sendsClasses() const
+Slice::Operation::sendsClasses(bool includeOptional) const
{
ParamDeclList pdl = parameters();
for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i)
{
- if(!(*i)->isOutParam() && (*i)->type()->usesClasses())
+ if(!(*i)->isOutParam() && (*i)->type()->usesClasses() && (includeOptional || !(*i)->optional()))
{
return true;
}
@@ -5145,17 +5145,17 @@ Slice::Operation::sendsClasses() const
}
bool
-Slice::Operation::returnsClasses() const
+Slice::Operation::returnsClasses(bool includeOptional) const
{
TypePtr t = returnType();
- if(t && t->usesClasses())
+ if(t && t->usesClasses() && (includeOptional || !_returnIsOptional))
{
return true;
}
ParamDeclList pdl = parameters();
for(ParamDeclList::const_iterator i = pdl.begin(); i != pdl.end(); ++i)
{
- if((*i)->isOutParam() && (*i)->type()->usesClasses())
+ if((*i)->isOutParam() && (*i)->type()->usesClasses() && (includeOptional || !(*i)->optional()))
{
return true;
}