summaryrefslogtreecommitdiff
path: root/codemaker/source/cppumaker/dependencies.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'codemaker/source/cppumaker/dependencies.cxx')
-rw-r--r--codemaker/source/cppumaker/dependencies.cxx48
1 files changed, 26 insertions, 22 deletions
diff --git a/codemaker/source/cppumaker/dependencies.cxx b/codemaker/source/cppumaker/dependencies.cxx
index 00c333d23460..c4a224f1f69e 100644
--- a/codemaker/source/cppumaker/dependencies.cxx
+++ b/codemaker/source/cppumaker/dependencies.cxx
@@ -59,11 +59,11 @@ Dependencies::Dependencies(
rtl::Reference< unoidl::PlainStructTypeEntity > ent2(
static_cast< unoidl::PlainStructTypeEntity * >(ent.get()));
if (!ent2->getDirectBase().isEmpty()) {
- insert(ent2->getDirectBase());
+ insert(ent2->getDirectBase(), KIND_NORMAL);
}
for (const unoidl::PlainStructTypeEntity::Member& member : ent2->getDirectMembers())
{
- insert(member.type);
+ insert(member.type, KIND_NORMAL);
}
break;
}
@@ -75,7 +75,7 @@ Dependencies::Dependencies(
for (const unoidl::PolymorphicStructTypeTemplateEntity::Member& member : ent2->getMembers())
{
if (!member.parameterized) {
- insert(member.type);
+ insert(member.type, KIND_NORMAL);
}
}
break;
@@ -85,11 +85,11 @@ Dependencies::Dependencies(
rtl::Reference< unoidl::ExceptionTypeEntity > ent2(
static_cast< unoidl::ExceptionTypeEntity * >(ent.get()));
if (!ent2->getDirectBase().isEmpty()) {
- insert(ent2->getDirectBase());
+ insert(ent2->getDirectBase(), KIND_NORMAL);
}
for (const unoidl::ExceptionTypeEntity::Member& member : ent2->getDirectMembers())
{
- insert(member.type);
+ insert(member.type, KIND_NORMAL);
}
break;
}
@@ -99,41 +99,43 @@ Dependencies::Dependencies(
static_cast< unoidl::InterfaceTypeEntity * >(ent.get()));
for (const unoidl::AnnotatedReference& ar : ent2->getDirectMandatoryBases())
{
- insert(ar.name, true);
+ insert(ar.name, KIND_BASE);
}
if (!(ent2->getDirectAttributes().empty()
&& ent2->getDirectMethods().empty()))
{
- insert("com.sun.star.uno.RuntimeException");
+ insert("com.sun.star.uno.RuntimeException", KIND_EXCEPTION);
}
for (const unoidl::InterfaceTypeEntity::Attribute& attr : ent2->getDirectAttributes())
{
- insert(attr.type);
+ insert(attr.type, KIND_NORMAL);
for (const OUString& ex : attr.getExceptions)
{
- insert(ex);
+ insert(ex, KIND_EXCEPTION);
}
for (const OUString& ex : attr.setExceptions)
{
- insert(ex);
+ insert(ex, KIND_EXCEPTION);
}
}
for (const unoidl::InterfaceTypeEntity::Method& method : ent2->getDirectMethods())
{
- insert(method.returnType);
+ insert(method.returnType, KIND_NORMAL);
for (const unoidl::InterfaceTypeEntity::Method::Parameter& param : method.parameters)
{
- insert(param.type);
+ insert(param.type, KIND_NORMAL);
}
for (const OUString& ex : method.exceptions)
{
- insert(ex);
+ insert(ex, KIND_EXCEPTION);
}
}
break;
}
case UnoType::Sort::Typedef:
- insert(static_cast< unoidl::TypedefEntity * >(ent.get())->getType());
+ insert(
+ static_cast< unoidl::TypedefEntity * >(ent.get())->getType(),
+ KIND_NORMAL);
break;
case UnoType::Sort::ConstantGroup:
{
@@ -182,21 +184,21 @@ Dependencies::Dependencies(
static_cast< unoidl::SingleInterfaceBasedServiceEntity * >(
ent.get()));
if (!ent2->getConstructors().empty()) {
- insert(ent2->getBase());
+ insert(ent2->getBase(), KIND_NORMAL);
}
for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor& cons : ent2->getConstructors())
{
for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor::Parameter& param
: cons.parameters)
{
- insert(param.type);
+ insert(param.type, KIND_NORMAL);
if (param.rest) {
m_sequenceDependency = true;
}
}
for (const OUString& ex : cons.exceptions)
{
- insert(ex);
+ insert(ex, KIND_EXCEPTION);
}
}
break;
@@ -204,7 +206,8 @@ Dependencies::Dependencies(
case UnoType::Sort::InterfaceBasedSingleton:
insert(
static_cast< unoidl::InterfaceBasedSingletonEntity * >(ent.get())->
- getBase());
+ getBase(),
+ KIND_NORMAL);
break;
default:
assert(false); // this cannot happen
@@ -213,7 +216,7 @@ Dependencies::Dependencies(
Dependencies::~Dependencies() {}
-void Dependencies::insert(OUString const & name, bool base) {
+void Dependencies::insert(OUString const & name, Kind kind) {
sal_Int32 k;
std::vector< OString > args;
OUString n(b2u(UnoType::decompose(u2b(name), &k, &args)));
@@ -269,7 +272,7 @@ void Dependencies::insert(OUString const & name, bool base) {
case UnoType::Sort::PolymorphicStructTemplate:
for (const OString& arg : args)
{
- insert(b2u(arg));
+ insert(b2u(arg), KIND_NORMAL);
}
SAL_FALLTHROUGH;
case UnoType::Sort::Sequence:
@@ -281,8 +284,9 @@ void Dependencies::insert(OUString const & name, bool base) {
{
std::pair< Map::iterator, bool > i(
m_map.insert(
- Map::value_type(n, base ? KIND_BASE : KIND_NO_BASE)));
- if (!i.second && base) {
+ Map::value_type(n, kind)));
+ if (!i.second && kind == KIND_BASE) {
+ assert(i.first->second != KIND_EXCEPTION);
i.first->second = KIND_BASE;
}
break;