diff options
Diffstat (limited to 'codemaker/source/cppumaker/dependencies.cxx')
-rw-r--r-- | codemaker/source/cppumaker/dependencies.cxx | 48 |
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; |