[Libreoffice-commits] core.git: codemaker/source
Stephan Bergmann
sbergman at redhat.com
Wed Feb 8 08:39:46 UTC 2017
codemaker/source/cppumaker/cpputype.cxx | 26 ++++++-------
codemaker/source/cppumaker/dependencies.cxx | 48 +++++++++++++-----------
codemaker/source/cppumaker/dependencies.hxx | 9 ++--
codemaker/source/cppumaker/includes.cxx | 54 +++++++++++++---------------
codemaker/source/cppumaker/includes.hxx | 5 +-
5 files changed, 72 insertions(+), 70 deletions(-)
New commits:
commit 55717b14e0482c085595069d124ac9dd0c4e69c5
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Wed Feb 8 08:48:28 2017 +0100
Remove newly-unnecessary #includes from cppumaker-generated files
...after e57ca02849c3d87142ff5ff9099a212e72b8139c "Remove dynamic exception
specifications" dropped uses of UNO exception types from those generated files.
This needed first adapting client code that implicitly depended on those
#includes in the generated files it included ("Add missing #includes":
6dce9c6757823b9e89863716ae70ff4e8ddd4e60,
a34d9150b419ee7471b96599d877ff1091d6b567,
fed3783e77e00635e50622e7229b06c9e25451f1).
Change-Id: Ia1defda2d586b69092f53feef3644875192cbea4
Reviewed-on: https://gerrit.libreoffice.org/34014
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman at redhat.com>
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 6432bae..659061a 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -468,7 +468,6 @@ void CppuType::addDefaultHIncludes(codemaker::cppumaker::Includes & includes)
if (m_typeMgr->getSort(name_)
== codemaker::UnoType::Sort::Interface)
{
- includes.addException();
includes.addReference();
}
}
@@ -481,7 +480,6 @@ void CppuType::addDefaultHxxIncludes(codemaker::cppumaker::Includes & includes)
if (m_typeMgr->getSort(name_)
== codemaker::UnoType::Sort::Interface)
{
- includes.addException();
includes.addReference();
}
}
@@ -542,7 +540,9 @@ void CppuType::dumpHFileContent(
addDefaultHIncludes(includes);
dumpHeaderDefine(out, "HDL");
out << "\n";
- includes.dump(out, nullptr);
+ includes.dump(out, nullptr, false);
+ // 'exceptions = false' would be wrong for services/singletons, but
+ // those don't dump .hdl files anyway
out << ("\nnamespace com { namespace sun { namespace star { namespace uno"
" { class Type; } } } }\n\n");
if (codemaker::cppumaker::dumpNamespaceOpen(out, name_, false)) {
@@ -1156,7 +1156,7 @@ void InterfaceType::dumpHppFile(
OUString headerDefine(dumpHeaderDefine(out, "HPP"));
out << "\n";
addDefaultHxxIncludes(includes);
- includes.dump(out, &name_);
+ includes.dump(out, &name_, !(m_cppuTypeLeak || m_cppuTypeDynamic));
out << "\n";
dumpGetCppuType(out);
out << "\n::css::uno::Type const & "
@@ -1632,7 +1632,7 @@ void ConstantGroup::dumpHdlFile(
OUString headerDefine(dumpHeaderDefine(out, "HDL"));
out << "\n";
addDefaultHIncludes(includes);
- includes.dump(out, nullptr);
+ includes.dump(out, nullptr, true);
out << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(out, name_, true)) {
out << "\n";
@@ -1845,7 +1845,7 @@ void PlainStructType::dumpHppFile(
{
OUString headerDefine(dumpHeaderDefine(out, "HPP"));
out << "\n";
- includes.dump(out, &name_);
+ includes.dump(out, &name_, true);
out << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(out, name_, false)) {
out << "\n";
@@ -2240,7 +2240,7 @@ void PolyStructType::dumpHppFile(
{
OUString headerDefine(dumpHeaderDefine(out, "HPP"));
out << "\n";
- includes.dump(out, &name_);
+ includes.dump(out, &name_, true);
out << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(out, name_, false)) {
out << "\n";
@@ -2732,7 +2732,7 @@ void ExceptionType::dumpHppFile(
OUString headerDefine(dumpHeaderDefine(out, "HPP"));
out << "\n";
addDefaultHxxIncludes(includes);
- includes.dump(out, &name_);
+ includes.dump(out, &name_, true);
out << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(out, name_, false)) {
out << "\n";
@@ -3161,7 +3161,7 @@ void EnumType::dumpHppFile(
o << "\n";
addDefaultHxxIncludes(includes);
- includes.dump(o, &name_);
+ includes.dump(o, &name_, true);
o << "\n";
dumpGetCppuType(o);
@@ -3295,7 +3295,7 @@ void Typedef::dumpHdlFile(
o << "\n";
addDefaultHIncludes(includes);
- includes.dump(o, nullptr);
+ includes.dump(o, nullptr, true);
o << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(o, name_, false)) {
@@ -3325,7 +3325,7 @@ void Typedef::dumpHppFile(
o << "\n";
addDefaultHxxIncludes(includes);
- includes.dump(o, &name_);
+ includes.dump(o, &name_, true);
o << "\n";
o << "\n#endif // "<< headerDefine << "\n";
@@ -3445,7 +3445,7 @@ void ServiceType::dumpHppFile(
u2b(id_), "service", isGlobal()));
OUString headerDefine(dumpHeaderDefine(o, "HPP"));
o << "\n";
- includes.dump(o, nullptr);
+ includes.dump(o, nullptr, true);
if (!entity_->getConstructors().empty()) {
o << ("\n#if defined ANDROID || defined IOS //TODO\n"
"#include <com/sun/star/lang/XInitialization.hpp>\n"
@@ -3754,7 +3754,7 @@ void SingletonType::dumpHppFile(
includes.addReference();
includes.addRtlUstringH();
includes.addRtlUstringHxx();
- includes.dump(o, nullptr);
+ includes.dump(o, nullptr, true);
o << ("\n#if defined ANDROID || defined IOS //TODO\n"
"#include <com/sun/star/lang/XInitialization.hpp>\n"
"#include <osl/detail/component-defines.h>\n#endif\n\n"
diff --git a/codemaker/source/cppumaker/dependencies.cxx b/codemaker/source/cppumaker/dependencies.cxx
index 00c333d..c4a224f 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;
diff --git a/codemaker/source/cppumaker/dependencies.hxx b/codemaker/source/cppumaker/dependencies.hxx
index e1513a3..2434ce9 100644
--- a/codemaker/source/cppumaker/dependencies.hxx
+++ b/codemaker/source/cppumaker/dependencies.hxx
@@ -41,10 +41,11 @@ namespace codemaker { namespace cppumaker {
class Dependencies {
public:
/**
- Flags to distinguish whether or not one entity depends on another entity
- because the second is a direct base of the first.
+ Flags to distinguish whether one entity depends on another entity because
+ the second is a direct base of the first or an exception thrown by the
+ first.
*/
- enum Kind { KIND_NO_BASE, KIND_BASE };
+ enum Kind { KIND_NORMAL, KIND_BASE, KIND_EXCEPTION };
typedef std::map< rtl::OUString, Kind > Map;
@@ -97,7 +98,7 @@ public:
bool hasSequenceDependency() const { return m_sequenceDependency; }
private:
- void insert(rtl::OUString const & name, bool base = false);
+ void insert(rtl::OUString const & name, Kind kind);
rtl::Reference< TypeManager > m_manager;
Map m_map;
diff --git a/codemaker/source/cppumaker/includes.cxx b/codemaker/source/cppumaker/includes.cxx
index d699996..7ab3716 100644
--- a/codemaker/source/cppumaker/includes.cxx
+++ b/codemaker/source/cppumaker/includes.cxx
@@ -41,7 +41,7 @@ Includes::Includes(
rtl::Reference< TypeManager > const & manager,
codemaker::cppumaker::Dependencies const & dependencies, bool hpp):
m_manager(manager), m_map(dependencies.getMap()), m_hpp(hpp),
- m_includeCassert(false), m_includeException(false),
+ m_includeCassert(false),
m_includeAny(dependencies.hasAnyDependency()), m_includeReference(false),
m_includeSequence(dependencies.hasSequenceDependency()),
m_includeType(dependencies.hasTypeDependency()),
@@ -112,7 +112,7 @@ void Includes::add(OString const & entityName) {
case codemaker::UnoType::Sort::Interface:
case codemaker::UnoType::Sort::Typedef:
m_map.insert(
- Dependencies::Map::value_type(n, Dependencies::KIND_NO_BASE));
+ Dependencies::Map::value_type(n, Dependencies::KIND_NORMAL));
break;
default:
throw CannotDumpException(
@@ -133,7 +133,9 @@ void dumpEmptyLineBeforeFirst(FileStream & out, bool * first) {
}
-void Includes::dump(FileStream & out, OUString const * companionHdl) {
+void Includes::dump(
+ FileStream & out, OUString const * companionHdl, bool exceptions)
+{
OSL_ASSERT(companionHdl == nullptr || m_hpp);
if (!m_includeReference) {
for (const auto& pair : m_map)
@@ -145,14 +147,8 @@ void Includes::dump(FileStream & out, OUString const * companionHdl) {
}
}
out << "#include \"sal/config.h\"\n";
- if (m_includeCassert || m_includeException) {
- out << "\n";
- if (m_includeCassert) {
- out << "#include <cassert>\n";
- }
- if (m_includeException) {
- out << "#include <exception>\n";
- }
+ if (m_includeCassert) {
+ out << "\n#include <cassert>\n";
}
if (companionHdl) {
out << "\n";
@@ -161,24 +157,26 @@ void Includes::dump(FileStream & out, OUString const * companionHdl) {
bool first = true;
for (const auto& pair : m_map)
{
- dumpEmptyLineBeforeFirst(out, &first);
- if (m_hpp || pair.second == Dependencies::KIND_BASE
- || !isInterfaceType(u2b(pair.first)))
- {
- dumpInclude(out, u2b(pair.first), m_hpp);
- } else {
- bool ns = dumpNamespaceOpen(out, pair.first, false);
- if (ns) {
- out << " ";
- }
- out << "class ";
- dumpTypeIdentifier(out, pair.first);
- out << ";";
- if (ns) {
- out << " ";
+ if (exceptions || pair.second != Dependencies::KIND_EXCEPTION) {
+ dumpEmptyLineBeforeFirst(out, &first);
+ if (m_hpp || pair.second == Dependencies::KIND_BASE
+ || !isInterfaceType(u2b(pair.first)))
+ {
+ dumpInclude(out, u2b(pair.first), m_hpp);
+ } else {
+ bool ns = dumpNamespaceOpen(out, pair.first, false);
+ if (ns) {
+ out << " ";
+ }
+ out << "class ";
+ dumpTypeIdentifier(out, pair.first);
+ out << ";";
+ if (ns) {
+ out << " ";
+ }
+ dumpNamespaceClose(out, pair.first, false);
+ out << "\n";
}
- dumpNamespaceClose(out, pair.first, false);
- out << "\n";
}
}
static char const * hxxExtension[2] = { "h", "hxx" };
diff --git a/codemaker/source/cppumaker/includes.hxx b/codemaker/source/cppumaker/includes.hxx
index 2a76529..dd33bcc 100644
--- a/codemaker/source/cppumaker/includes.hxx
+++ b/codemaker/source/cppumaker/includes.hxx
@@ -40,7 +40,6 @@ public:
void add(OString const & entityName);
void addCassert() { m_includeCassert = true; }
- void addException() { m_includeException = true; }
void addAny() { m_includeAny = true; }
void addReference() { m_includeReference = true; }
void addSequence() { m_includeSequence = true; }
@@ -59,7 +58,8 @@ public:
void addTypelibTypeclassH() { m_includeTypelibTypeclassH = true; }
void addTypelibTypedescriptionH()
{ m_includeTypelibTypedescriptionH = true; }
- void dump(FileStream & out, OUString const * companionHdl);
+ void dump(
+ FileStream & out, OUString const * companionHdl, bool exceptions);
static void dumpInclude(
FileStream & out, OString const & entityName, bool hpp);
@@ -74,7 +74,6 @@ private:
Dependencies::Map m_map;
bool m_hpp;
bool m_includeCassert;
- bool m_includeException;
bool m_includeAny;
bool m_includeReference;
bool m_includeSequence;
More information about the Libreoffice-commits
mailing list