summaryrefslogtreecommitdiff
path: root/codemaker
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-02-22 16:39:20 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-04-04 06:38:03 +0000
commit5676ced82539d9e40bde6196d2aa3b2e4c7b3fdb (patch)
treedb860b2365f8cb0e2fab4772e80e4e38d4d89b37 /codemaker
parent1a1d1a86e9129ec3885610b641179b30f9bf5e79 (diff)
make UNO enums scoped for internal LO code
this modifies codemaker so that, for an UNO enum, we generate code that effectively looks like: #ifdef LIBO_INTERNAL_ONLY && HAVE_CX11_CONSTEXPR enum class XXX { ONE = 1 }; constexpr auto ONE = XXX_ONE; #else ...the old normal way.. #endif which means that for LO internal code, the enums are scoped. The "constexpr auto" trick acts like an alias so we don't have to use scoped naming everywhere. Change-Id: I3054ecb230e8666ce98b4a9cb87b384df5f64fb4 Reviewed-on: https://gerrit.libreoffice.org/34546 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'codemaker')
-rw-r--r--codemaker/source/commoncpp/commoncpp.cxx1
-rw-r--r--codemaker/source/cppumaker/cpputype.cxx958
2 files changed, 482 insertions, 477 deletions
diff --git a/codemaker/source/commoncpp/commoncpp.cxx b/codemaker/source/commoncpp/commoncpp.cxx
index 4f1840c54e43..a4279e3a98dd 100644
--- a/codemaker/source/commoncpp/commoncpp.cxx
+++ b/codemaker/source/commoncpp/commoncpp.cxx
@@ -63,7 +63,6 @@ OString scopedCppName(OString const & type, bool ns_alias)
return s;
}
-
OString translateUnoToCppType(
codemaker::UnoType::Sort sort, OUString const & nucleus)
{
diff --git a/codemaker/source/cppumaker/cpputype.cxx b/codemaker/source/cppumaker/cpputype.cxx
index 659061a8fd34..a657389d6a4d 100644
--- a/codemaker/source/cppumaker/cpputype.cxx
+++ b/codemaker/source/cppumaker/cpputype.cxx
@@ -46,9 +46,11 @@
#include "dumputils.hxx"
#include "includes.hxx"
-namespace {
+namespace
+{
-bool isBootstrapType(OUString const & name) {
+bool isBootstrapType(OUString const & name)
+{
static char const * const names[] = {
"com.sun.star.beans.Property",
"com.sun.star.beans.PropertyAttribute",
@@ -136,8 +138,9 @@ bool isBootstrapType(OUString const & name) {
"com.sun.star.uno.XReference",
"com.sun.star.uno.XUnloadingPreference",
"com.sun.star.uno.XWeak",
- "com.sun.star.util.XMacroExpander" };
- // cf. cppuhelper/unotypes/Makefile UNOTYPES (plus missing dependencies)
+ "com.sun.star.util.XMacroExpander"
+ };
+ // cf. cppuhelper/unotypes/Makefile UNOTYPES (plus missing dependencies)
for (std::size_t i = 0; i < SAL_N_ELEMENTS(names); ++i) {
if (name.equalsAscii(names[i])) {
return true;
@@ -146,7 +149,8 @@ bool isBootstrapType(OUString const & name) {
return false;
}
-class CppuType {
+class CppuType
+{
public:
CppuType(
OUString const & name, rtl::Reference< TypeManager > const & typeMgr);
@@ -166,8 +170,9 @@ public:
codemaker::GeneratedTypeSet & generated, CppuOptions const & options);
virtual void dumpHdlFile(
- FileStream & out, codemaker::cppumaker::Includes & includes)
- { dumpHFileContent(out, includes); }
+ FileStream & out, codemaker::cppumaker::Includes & includes) {
+ dumpHFileContent(out, includes);
+ }
virtual void dumpHppFile(FileStream& o, codemaker::cppumaker::Includes & includes) = 0;
@@ -177,16 +182,18 @@ public:
virtual void dumpLightGetCppuType(FileStream & out);
- virtual void dumpNormalGetCppuType(FileStream &)
- { assert(false); } // this cannot happen
+ virtual void dumpNormalGetCppuType(FileStream &) {
+ assert(false); // this cannot happen
+ }
- virtual void dumpComprehensiveGetCppuType(FileStream &)
- { assert(false); } // this cannot happen
+ virtual void dumpComprehensiveGetCppuType(FileStream &) {
+ assert(false); // this cannot happen
+ }
void dumpType(
FileStream & out, OUString const & name, bool isConst = false,
bool isRef = false, bool native = false, bool cppuUnoType = false)
- const;
+ const;
OUString getTypeClass(OUString const & name, bool cStyle = false);
@@ -199,8 +206,10 @@ public:
void dec(sal_Int32 num=4);
OUString indent() const;
protected:
- virtual sal_uInt32 checkInheritedMemberCount() const
- { assert(false); return 0; } // this cannot happen
+ virtual sal_uInt32 checkInheritedMemberCount() const {
+ assert(false); // this cannot happen
+ return 0;
+ }
bool passByReference(OUString const & name) const;
@@ -213,8 +222,9 @@ protected:
codemaker::cpp::IdentifierTranslationMode isGlobal() const;
- virtual void dumpDeclaration(FileStream &)
- { assert(false); } // this cannot happen
+ virtual void dumpDeclaration(FileStream &) {
+ assert(false); // this cannot happen
+ }
virtual void dumpFiles(OUString const & uri, CppuOptions const & options);
@@ -259,7 +269,7 @@ protected:
private:
void addGetCppuTypeIncludes(codemaker::cppumaker::Includes & includes)
- const;
+ const;
};
CppuType::CppuType(
@@ -275,11 +285,10 @@ CppuType::CppuType(
{}
void CppuType::addGetCppuTypeIncludes(codemaker::cppumaker::Includes & includes)
- const
+const
{
if (name_ == "com.sun.star.uno.XInterface"
- || name_ == "com.sun.star.uno.Exception")
- {
+ || name_ == "com.sun.star.uno.Exception") {
includes.addType();
includes.addCppuUnotypeHxx();
includes.addSalTypesH();
@@ -294,7 +303,8 @@ void CppuType::addGetCppuTypeIncludes(codemaker::cppumaker::Includes & includes)
}
}
-void CppuType::dumpFiles(OUString const & uri, CppuOptions const & options) {
+void CppuType::dumpFiles(OUString const & uri, CppuOptions const & options)
+{
dumpFile(uri, name_, false, options);
dumpFile(uri, name_, true, options);
}
@@ -323,9 +333,13 @@ void CppuType::addComprehensiveGetCppuTypeIncludes(
includes.addCppuUnotypeHxx();
}
-bool CppuType::isPolymorphic() const { return false; }
+bool CppuType::isPolymorphic() const
+{
+ return false;
+}
-void CppuType::dumpGetCppuTypePreamble(FileStream & out) {
+void CppuType::dumpGetCppuTypePreamble(FileStream & out)
+{
if (isPolymorphic()) {
out << "namespace cppu {\n\n";
dumpTemplateHead(out);
@@ -348,7 +362,8 @@ void CppuType::dumpGetCppuTypePreamble(FileStream & out) {
inc();
}
-void CppuType::dumpGetCppuTypePostamble(FileStream & out) {
+void CppuType::dumpGetCppuTypePostamble(FileStream & out)
+{
dec();
if (isPolymorphic()) {
out << indent() << "}\n\nprivate:\n"
@@ -377,7 +392,8 @@ void CppuType::dumpGetCppuTypePostamble(FileStream & out) {
out << indent() << "}\n";
}
-void CppuType::dump(CppuOptions const & options) {
+void CppuType::dump(CppuOptions const & options)
+{
if (isBootstrapType(name_)) {
m_cppuTypeDynamic = false;
} else {
@@ -434,7 +450,7 @@ bool CppuType::dumpFile(
}
out.close();
return makeValidTypeFile(
- u2b(fileUri), u2b(tmpUri), exists && options.isValid("-Gc"));
+ u2b(fileUri), u2b(tmpUri), exists && options.isValid("-Gc"));
}
void CppuType::dumpDependedTypes(
@@ -443,8 +459,7 @@ void CppuType::dumpDependedTypes(
if (!options.isValid("-nD")) {
codemaker::cppumaker::Dependencies::Map const & map
= m_dependencies.getMap();
- for (const auto& entry : map)
- {
+ for (const auto& entry : map) {
produce(entry.first, m_typeMgr, generated, options);
}
}
@@ -461,25 +476,23 @@ OUString CppuType::dumpHeaderDefine(
}
void CppuType::addDefaultHIncludes(codemaker::cppumaker::Includes & includes)
- const
+const
{
//TODO: Only include what is really needed
includes.addCppuMacrosHxx();
if (m_typeMgr->getSort(name_)
- == codemaker::UnoType::Sort::Interface)
- {
+ == codemaker::UnoType::Sort::Interface) {
includes.addReference();
}
}
void CppuType::addDefaultHxxIncludes(codemaker::cppumaker::Includes & includes)
- const
+const
{
//TODO: Only include what is really needed
includes.addType();
if (m_typeMgr->getSort(name_)
- == codemaker::UnoType::Sort::Interface)
- {
+ == codemaker::UnoType::Sort::Interface) {
includes.addReference();
}
}
@@ -517,6 +530,7 @@ void CppuType::dumpInitializer(
<< (dynamic_cast< unoidl::EnumTypeEntity * >(ent.get())->
getMembers()[0].name);
break;
+ break;
case codemaker::UnoType::Sort::String:
case codemaker::UnoType::Sort::Type:
case codemaker::UnoType::Sort::Any:
@@ -541,8 +555,8 @@ void CppuType::dumpHFileContent(
dumpHeaderDefine(out, "HDL");
out << "\n";
includes.dump(out, nullptr, false);
- // 'exceptions = false' would be wrong for services/singletons, but
- // those don't dump .hdl files anyway
+ // '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)) {
@@ -551,8 +565,7 @@ void CppuType::dumpHFileContent(
dumpDeclaration(out);
if (!(name_ == "com.sun.star.uno.XInterface"
|| name_ == "com.sun.star.uno.Exception"
- || isPolymorphic()))
- {
+ || isPolymorphic())) {
out << "\n" << indent()
<< ("inline ::css::uno::Type const &"
" cppu_detail_getUnoType(SAL_UNUSED_PARAMETER ");
@@ -570,7 +583,8 @@ void CppuType::dumpHFileContent(
out << " *);\n\n#endif\n";
}
-void CppuType::dumpGetCppuType(FileStream & out) {
+void CppuType::dumpGetCppuType(FileStream & out)
+{
if (name_ == "com.sun.star.uno.XInterface") {
out << indent()
<< ("SAL_DEPRECATED(\"use cppu::UnoType\") inline ::css::uno::Type const & SAL_CALL"
@@ -604,7 +618,8 @@ void CppuType::dumpGetCppuType(FileStream & out) {
}
}
-void CppuType::dumpLightGetCppuType(FileStream & out) {
+void CppuType::dumpLightGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< "static typelib_TypeDescriptionReference * the_type = 0;\n"
@@ -619,112 +634,115 @@ void CppuType::dumpLightGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-codemaker::cpp::IdentifierTranslationMode CppuType::isGlobal() const {
+codemaker::cpp::IdentifierTranslationMode CppuType::isGlobal() const
+{
return name_.indexOf('.') == -1
- ? codemaker::cpp::IdentifierTranslationMode::Global : codemaker::cpp::IdentifierTranslationMode::NonGlobal;
+ ? codemaker::cpp::IdentifierTranslationMode::Global : codemaker::cpp::IdentifierTranslationMode::NonGlobal;
}
sal_uInt32 CppuType::getInheritedMemberCount()
{
- if (m_inheritedMemberCount == 0)
- {
+ if (m_inheritedMemberCount == 0) {
m_inheritedMemberCount = checkInheritedMemberCount();
}
return m_inheritedMemberCount;
}
-OUString CppuType::getTypeClass(OUString const & name, bool cStyle) {
+OUString CppuType::getTypeClass(OUString const & name, bool cStyle)
+{
rtl::Reference< unoidl::Entity > ent;
switch (m_typeMgr->getSort(name, &ent)) {
case codemaker::UnoType::Sort::Void:
return cStyle
- ? OUString("typelib_TypeClass_VOID")
- : OUString("::css::uno::TypeClass_VOID");
+ ? OUString("typelib_TypeClass_VOID")
+ : OUString("::css::uno::TypeClass_VOID");
case codemaker::UnoType::Sort::Boolean:
return cStyle
- ? OUString("typelib_TypeClass_BOOLEAN")
- : OUString("::css::uno::TypeClass_BOOLEAN");
+ ? OUString("typelib_TypeClass_BOOLEAN")
+ : OUString("::css::uno::TypeClass_BOOLEAN");
case codemaker::UnoType::Sort::Byte:
return cStyle
- ? OUString("typelib_TypeClass_BYTE")
- : OUString("::css::uno::TypeClass_BYTE");
+ ? OUString("typelib_TypeClass_BYTE")
+ : OUString("::css::uno::TypeClass_BYTE");
case codemaker::UnoType::Sort::Short:
return cStyle
- ? OUString("typelib_TypeClass_SHORT")
- : OUString("::css::uno::TypeClass_SHORT");
+ ? OUString("typelib_TypeClass_SHORT")
+ : OUString("::css::uno::TypeClass_SHORT");
case codemaker::UnoType::Sort::UnsignedShort:
return cStyle
- ? OUString("typelib_TypeClass_UNSIGNED_SHORT")
- : OUString("::css::uno::TypeClass_UNSIGNED_SHORT");
+ ? OUString("typelib_TypeClass_UNSIGNED_SHORT")
+ : OUString("::css::uno::TypeClass_UNSIGNED_SHORT");
case codemaker::UnoType::Sort::Long:
return cStyle
- ? OUString("typelib_TypeClass_LONG")
- : OUString("::css::uno::TypeClass_LONG");
+ ? OUString("typelib_TypeClass_LONG")
+ : OUString("::css::uno::TypeClass_LONG");
case codemaker::UnoType::Sort::UnsignedLong:
return cStyle
- ? OUString("typelib_TypeClass_UNSIGNED_LONG")
- : OUString("::css::uno::TypeClass_UNSIGNED_LONG");
+ ? OUString("typelib_TypeClass_UNSIGNED_LONG")
+ : OUString("::css::uno::TypeClass_UNSIGNED_LONG");
case codemaker::UnoType::Sort::Hyper:
return cStyle
- ? OUString("typelib_TypeClass_HYPER")
- : OUString("::css::uno::TypeClass_HYPER");
+ ? OUString("typelib_TypeClass_HYPER")
+ : OUString("::css::uno::TypeClass_HYPER");
case codemaker::UnoType::Sort::UnsignedHyper:
return cStyle
- ? OUString("typelib_TypeClass_UNSIGNED_HYPER")
- : OUString("::css::uno::TypeClass_UNSIGNED_HYPER");
+ ? OUString("typelib_TypeClass_UNSIGNED_HYPER")
+ : OUString("::css::uno::TypeClass_UNSIGNED_HYPER");
case codemaker::UnoType::Sort::Float:
return cStyle
- ? OUString("typelib_TypeClass_FLOAT")
- : OUString("::css::uno::TypeClass_FLOAT");
+ ? OUString("typelib_TypeClass_FLOAT")
+ : OUString("::css::uno::TypeClass_FLOAT");
case codemaker::UnoType::Sort::Double:
return cStyle
- ? OUString("typelib_TypeClass_DOUBLE")
- : OUString("::css::uno::TypeClass_DOUBLE");
+ ? OUString("typelib_TypeClass_DOUBLE")
+ : OUString("::css::uno::TypeClass_DOUBLE");
case codemaker::UnoType::Sort::Char:
return cStyle
- ? OUString("typelib_TypeClass_CHAR")
- : OUString("::css::uno::TypeClass_CHAR");
+ ? OUString("typelib_TypeClass_CHAR")
+ : OUString("::css::uno::TypeClass_CHAR");
case codemaker::UnoType::Sort::String:
return cStyle
- ? OUString("typelib_TypeClass_STRING")
- : OUString("::css::uno::TypeClass_STRING");
+ ? OUString("typelib_TypeClass_STRING")
+ : OUString("::css::uno::TypeClass_STRING");
case codemaker::UnoType::Sort::Type:
return cStyle
- ? OUString("typelib_TypeClass_TYPE")
- : OUString("::css::uno::TypeClass_TYPE");
+ ? OUString("typelib_TypeClass_TYPE")
+ : OUString("::css::uno::TypeClass_TYPE");
case codemaker::UnoType::Sort::Any:
return cStyle
- ? OUString("typelib_TypeClass_ANY")
- : OUString("::css::uno::TypeClass_ANY");
+ ? OUString("typelib_TypeClass_ANY")
+ : OUString("::css::uno::TypeClass_ANY");
case codemaker::UnoType::Sort::Sequence:
return cStyle
- ? OUString("typelib_TypeClass_SEQUENCE")
- : OUString("::css::uno::TypeClass_SEQUENCE");
+ ? OUString("typelib_TypeClass_SEQUENCE")
+ : OUString("::css::uno::TypeClass_SEQUENCE");
case codemaker::UnoType::Sort::Enum:
return cStyle
- ? OUString("typelib_TypeClass_ENUM")
- : OUString("::css::uno::TypeClass_ENUM");
+ ? OUString("typelib_TypeClass_ENUM")
+ : OUString("::css::uno::TypeClass_ENUM");
case codemaker::UnoType::Sort::PlainStruct:
case codemaker::UnoType::Sort::PolymorphicStructTemplate:
case codemaker::UnoType::Sort::InstantiatedPolymorphicStruct:
return cStyle
- ? OUString("typelib_TypeClass_STRUCT")
- : OUString("::css::uno::TypeClass_STRUCT");
+ ? OUString("typelib_TypeClass_STRUCT")
+ : OUString("::css::uno::TypeClass_STRUCT");
case codemaker::UnoType::Sort::Exception:
return cStyle
- ? OUString("typelib_TypeClass_EXCEPTION")
- : OUString("::css::uno::TypeClass_EXCEPTION");
+ ? OUString("typelib_TypeClass_EXCEPTION")
+ : OUString("::css::uno::TypeClass_EXCEPTION");
case codemaker::UnoType::Sort::Interface:
return cStyle
- ? OUString("typelib_TypeClass_INTERFACE")
- : OUString("::css::uno::TypeClass_INTERFACE");
+ ? OUString("typelib_TypeClass_INTERFACE")
+ : OUString("::css::uno::TypeClass_INTERFACE");
case codemaker::UnoType::Sort::Typedef:
return getTypeClass(
- dynamic_cast<unoidl::TypedefEntity&>(*ent.get()).getType(),
- cStyle);
+ dynamic_cast<unoidl::TypedefEntity&>(*ent.get()).getType(),
+ cStyle);
default:
- for (;;) { std::abort(); }
+ for (;;) {
+ std::abort();
+ }
}
}
@@ -801,8 +819,7 @@ void CppuType::dumpType(
if (!args.empty()) {
out << "< ";
for (std::vector< OString >::iterator i(args.begin());
- i != args.end(); ++i)
- {
+ i != args.end(); ++i) {
if (i != args.begin()) {
out << ", ";
}
@@ -839,7 +856,7 @@ void CppuType::dumpCppuGetType(
OUString nucleus;
sal_Int32 rank;
codemaker::UnoType::Sort sort = m_typeMgr->decompose(
- name, true, &nucleus, &rank, nullptr, nullptr);
+ name, true, &nucleus, &rank, nullptr, nullptr);
switch (rank == 0 ? sort : codemaker::UnoType::Sort::Sequence) {
case codemaker::UnoType::Sort::Void:
case codemaker::UnoType::Sort::Boolean:
@@ -879,7 +896,8 @@ void CppuType::dumpCppuGetType(
}
}
-bool CppuType::passByReference(OUString const & name) const {
+bool CppuType::passByReference(OUString const & name) const
+{
switch (m_typeMgr->getSort(resolveOuterTypedefs(name))) {
case codemaker::UnoType::Sort::Boolean:
case codemaker::UnoType::Sort::Byte:
@@ -909,10 +927,12 @@ bool CppuType::passByReference(OUString const & name) const {
}
}
-bool CppuType::canBeWarnUnused(OUString const & name) const {
+bool CppuType::canBeWarnUnused(OUString const & name) const
+{
return canBeWarnUnused(name, 0);
}
-bool CppuType::canBeWarnUnused(OUString const & name, int depth) const {
+bool CppuType::canBeWarnUnused(OUString const & name, int depth) const
+{
// prevent infinite recursion and blowing the stack
if (depth > 10)
return false;
@@ -933,23 +953,20 @@ bool CppuType::canBeWarnUnused(OUString const & name, int depth) const {
case codemaker::UnoType::Sort::String:
case codemaker::UnoType::Sort::Type:
return true;
- case codemaker::UnoType::Sort::PlainStruct:
- {
+ case codemaker::UnoType::Sort::PlainStruct: {
rtl::Reference< unoidl::Entity > ent;
m_typeMgr->getSort(aResolvedName, &ent);
rtl::Reference< unoidl::PlainStructTypeEntity > ent2(
dynamic_cast< unoidl::PlainStructTypeEntity * >(ent.get()));
if (!ent2->getDirectBase().isEmpty() && !canBeWarnUnused(ent2->getDirectBase(), depth+1))
return false;
- for ( const unoidl::PlainStructTypeEntity::Member& rMember : ent2->getDirectMembers())
- {
+ for ( const unoidl::PlainStructTypeEntity::Member& rMember : ent2->getDirectMembers()) {
if (!canBeWarnUnused(rMember.type, depth+1))
return false;
}
return true;
}
- case codemaker::UnoType::Sort::Sequence:
- {
+ case codemaker::UnoType::Sort::Sequence: {
OUString aInnerType = aResolvedName.copy(2);
return canBeWarnUnused(aInnerType, depth+1);
}
@@ -964,7 +981,8 @@ bool CppuType::canBeWarnUnused(OUString const & name, int depth) const {
}
}
-OUString CppuType::resolveOuterTypedefs(OUString const & name) const {
+OUString CppuType::resolveOuterTypedefs(OUString const & name) const
+{
for (OUString n(name);;) {
rtl::Reference< unoidl::Entity > ent;
if (m_typeMgr->getSort(n, &ent) != codemaker::UnoType::Sort::Typedef) {
@@ -974,7 +992,8 @@ OUString CppuType::resolveOuterTypedefs(OUString const & name) const {
}
}
-OUString CppuType::resolveAllTypedefs(OUString const & name) const {
+OUString CppuType::resolveAllTypedefs(OUString const & name) const
+{
sal_Int32 k1;
OUString n(b2u(codemaker::UnoType::decompose(u2b(name), &k1)));
for (;;) {
@@ -984,10 +1003,10 @@ OUString CppuType::resolveAllTypedefs(OUString const & name) const {
}
sal_Int32 k2;
n = b2u(
- codemaker::UnoType::decompose(
- u2b(dynamic_cast<unoidl::TypedefEntity&>(*ent.get()).
- getType()),
- &k2));
+ codemaker::UnoType::decompose(
+ u2b(dynamic_cast<unoidl::TypedefEntity&>(*ent.get()).
+ getType()),
+ &k2));
k1 += k2; //TODO: overflow
}
OUStringBuffer b;
@@ -1008,7 +1027,8 @@ void CppuType::dec(sal_Int32 num)
m_indentLength = std::max< sal_Int32 >(m_indentLength - num, 0);
}
-OUString CppuType::indent() const {
+OUString CppuType::indent() const
+{
OUStringBuffer buf(m_indentLength);
for (sal_Int32 i = 0; i != m_indentLength; ++i) {
buf.append(' ');
@@ -1016,9 +1036,9 @@ OUString CppuType::indent() const {
return buf.makeStringAndClear();
}
-bool isDeprecated(std::vector< OUString > const & annotations) {
- for (const OUString& r : annotations)
- {
+bool isDeprecated(std::vector< OUString > const & annotations)
+{
+ for (const OUString& r : annotations) {
if (r == "deprecated") {
return true;
}
@@ -1026,22 +1046,28 @@ bool isDeprecated(std::vector< OUString > const & annotations) {
return false;
}
-void dumpDeprecation(FileStream & out, bool deprecated) {
+void dumpDeprecation(FileStream & out, bool deprecated)
+{
if (deprecated) {
out << "SAL_DEPRECATED_INTERNAL(\"marked @deprecated in UNOIDL\") ";
}
}
-class BaseOffset {
+class BaseOffset
+{
public:
BaseOffset(
rtl::Reference< TypeManager > const & manager,
rtl::Reference< unoidl::InterfaceTypeEntity > const & entity):
- manager_(manager), offset_(0) { calculateBases(entity); }
+ manager_(manager), offset_(0) {
+ calculateBases(entity);
+ }
BaseOffset(const BaseOffset&) = delete;
const BaseOffset& operator=(const BaseOffset&) = delete;
- sal_Int32 get() const { return offset_; }
+ sal_Int32 get() const {
+ return offset_;
+ }
private:
void calculateBases(
@@ -1056,8 +1082,7 @@ void BaseOffset::calculateBases(
rtl::Reference< unoidl::InterfaceTypeEntity > const & entity)
{
assert(entity.is());
- for (const unoidl::AnnotatedReference& ar : entity->getDirectMandatoryBases())
- {
+ for (const unoidl::AnnotatedReference& ar : entity->getDirectMandatoryBases()) {
if (set_.insert(ar.name).second) {
rtl::Reference< unoidl::Entity > ent;
codemaker::UnoType::Sort sort = manager_->getSort(ar.name, &ent);
@@ -1071,12 +1096,13 @@ void BaseOffset::calculateBases(
assert(ent2.is());
calculateBases(ent2);
offset_ += ent2->getDirectAttributes().size()
- + ent2->getDirectMethods().size(); //TODO: overflow
+ + ent2->getDirectMethods().size(); //TODO: overflow
}
}
}
-class InterfaceType: public CppuType {
+class InterfaceType: public CppuType
+{
public:
InterfaceType(
rtl::Reference< unoidl::InterfaceTypeEntity > const & entity,
@@ -1100,8 +1126,9 @@ private:
virtual void addComprehensiveGetCppuTypeIncludes(
codemaker::cppumaker::Includes & includes) const override;
- virtual sal_uInt32 checkInheritedMemberCount() const override
- { return BaseOffset(m_typeMgr, entity_).get(); }
+ virtual sal_uInt32 checkInheritedMemberCount() const override {
+ return BaseOffset(m_typeMgr, entity_).get();
+ }
void dumpExceptionTypeName(
FileStream & out, OUString const & prefix, sal_uInt32 index,
@@ -1124,12 +1151,12 @@ InterfaceType::InterfaceType(
assert(entity.is());
}
-void InterfaceType::dumpDeclaration(FileStream & out) {
+void InterfaceType::dumpDeclaration(FileStream & out)
+{
out << "\nclass SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI " << id_;
for (std::vector< unoidl::AnnotatedReference >::const_iterator i(
entity_->getDirectMandatoryBases().begin());
- i != entity_->getDirectMandatoryBases().end(); ++i)
- {
+ i != entity_->getDirectMandatoryBases().end(); ++i) {
out << (i == entity_->getDirectMandatoryBases().begin() ? " :" : ",")
<< " public " << codemaker::cpp::scopedCppName(u2b(i->name));
}
@@ -1170,12 +1197,12 @@ void InterfaceType::dumpHppFile(
out << "}\n\n#endif // "<< headerDefine << "\n";
}
-void InterfaceType::dumpAttributes(FileStream & out) {
+void InterfaceType::dumpAttributes(FileStream & out)
+{
if (!entity_->getDirectAttributes().empty()) {
out << "\n" << indent() << "// Attributes\n";
}
- for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes())
- {
+ for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes()) {
bool depr = m_isDeprecated || isDeprecated(attr.annotations);
out << indent();
dumpDeprecation(out, depr);
@@ -1193,12 +1220,12 @@ void InterfaceType::dumpAttributes(FileStream & out) {
}
}
-void InterfaceType::dumpMethods(FileStream & out) {
+void InterfaceType::dumpMethods(FileStream & out)
+{
if (!entity_->getDirectMethods().empty()) {
out << "\n" << indent() << "// Methods\n";
}
- for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods())
- {
+ for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods()) {
out << indent();
dumpDeprecation(out, m_isDeprecated || isDeprecated(method.annotations));
out << "virtual ";
@@ -1207,15 +1234,13 @@ void InterfaceType::dumpMethods(FileStream & out) {
if (!method.parameters.empty()) {
out << " ";
for (std::vector< unoidl::InterfaceTypeEntity::Method::Parameter >::
- const_iterator j(method.parameters.begin());
- j != method.parameters.end();)
- {
+ const_iterator j(method.parameters.begin());
+ j != method.parameters.end();) {
bool isConst;
bool isRef;
if (j->direction
== (unoidl::InterfaceTypeEntity::Method::Parameter::
- DIRECTION_IN))
- {
+ DIRECTION_IN)) {
isConst = passByReference(j->type);
isRef = isConst;
} else {
@@ -1235,7 +1260,8 @@ void InterfaceType::dumpMethods(FileStream & out) {
}
}
-void InterfaceType::dumpNormalGetCppuType(FileStream & out) {
+void InterfaceType::dumpNormalGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< "static typelib_TypeDescriptionReference * the_type = 0;\n"
@@ -1245,16 +1271,14 @@ void InterfaceType::dumpNormalGetCppuType(FileStream & out) {
entity_->getDirectMandatoryBases().size());
if (bases == 1
&& (entity_->getDirectMandatoryBases()[0].name
- == "com.sun.star.uno.XInterface"))
- {
+ == "com.sun.star.uno.XInterface")) {
bases = 0;
}
if (bases != 0) {
out << indent() << "typelib_TypeDescriptionReference * aSuperTypes["
<< entity_->getDirectMandatoryBases().size() << "];\n";
std::vector< unoidl::AnnotatedReference >::size_type n = 0;
- for (const unoidl::AnnotatedReference& ar : entity_->getDirectMandatoryBases())
- {
+ for (const unoidl::AnnotatedReference& ar : entity_->getDirectMandatoryBases()) {
out << indent() << "aSuperTypes[" << n++ << "] = ::cppu::UnoType< ";
dumpType(out, ar.name, true, false, false, true);
out << " >::get().getTypeLibType();\n";
@@ -1270,7 +1294,8 @@ void InterfaceType::dumpNormalGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void InterfaceType::dumpComprehensiveGetCppuType(FileStream & out) {
+void InterfaceType::dumpComprehensiveGetCppuType(FileStream & out)
+{
codemaker::cppumaker::dumpNamespaceOpen(out, name_, false);
OUString staticTypeClass("the" + id_ + "Type");
out << " namespace detail {\n\n" << indent() << "struct " << staticTypeClass
@@ -1286,14 +1311,13 @@ void InterfaceType::dumpComprehensiveGetCppuType(FileStream & out) {
out << indent() << "typelib_TypeDescriptionReference * aSuperTypes["
<< entity_->getDirectMandatoryBases().size() << "];\n";
std::vector< unoidl::AnnotatedReference >::size_type n = 0;
- for (const unoidl::AnnotatedReference& ar : entity_->getDirectMandatoryBases())
- {
+ for (const unoidl::AnnotatedReference& ar : entity_->getDirectMandatoryBases()) {
out << indent() << "aSuperTypes[" << n++ << "] = ::cppu::UnoType< ";
dumpType(out, ar.name, false, false, false, true);
out << " >::get().getTypeLibType();\n";
}
std::size_t count = entity_->getDirectAttributes().size()
- + entity_->getDirectMethods().size(); //TODO: overflow
+ + entity_->getDirectMethods().size(); //TODO: overflow
if (count != 0) {
out << indent() << "typelib_TypeDescriptionReference * pMembers["
<< count << "] = { ";
@@ -1318,7 +1342,7 @@ void InterfaceType::dumpComprehensiveGetCppuType(FileStream & out) {
dec();
out << indent()
<< ("typelib_typedescription_register( (typelib_TypeDescription**)&pTD"
- " );\n");
+ " );\n");
for (std::size_t i = 0; i != count; ++i) {
out << indent() << "typelib_typedescriptionreference_release( pMembers["
<< i << "] );\n";
@@ -1372,8 +1396,7 @@ void InterfaceType::dumpComprehensiveGetCppuType(FileStream & out) {
void InterfaceType::dumpCppuAttributeRefs(FileStream & out, sal_uInt32 & index)
{
std::vector< unoidl::InterfaceTypeEntity::Attribute >::size_type n = 0;
- for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes())
- {
+ for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes()) {
out << indent() << "::rtl::OUString sAttributeName" << n << "( \""
<< name_ << "::" << attr.name << "\" );\n" << indent()
<< "typelib_typedescriptionreference_new( &pMembers[" << index++
@@ -1387,10 +1410,10 @@ void InterfaceType::dumpCppuAttributeRefs(FileStream & out, sal_uInt32 & index)
}
}
-void InterfaceType::dumpCppuMethodRefs(FileStream & out, sal_uInt32 & index) {
+void InterfaceType::dumpCppuMethodRefs(FileStream & out, sal_uInt32 & index)
+{
std::vector< unoidl::InterfaceTypeEntity::Method >::size_type n = 0;
- for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods())
- {
+ for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods()) {
out << indent() << "::rtl::OUString sMethodName" << n << "( \"" << name_
<< "::" << method.name << "\" );\n" << indent()
<< "typelib_typedescriptionreference_new( &pMembers[" << index++
@@ -1415,13 +1438,13 @@ void InterfaceType::addComprehensiveGetCppuTypeIncludes(
includes.add("com.sun.star.uno.RuntimeException");
}
-void InterfaceType::dumpCppuAttributes(FileStream & out, sal_uInt32 & index) {
+void InterfaceType::dumpCppuAttributes(FileStream & out, sal_uInt32 & index)
+{
if (!entity_->getDirectAttributes().empty()) {
out << "\n" << indent()
<< "typelib_InterfaceAttributeTypeDescription * pAttribute = 0;\n";
std::vector< unoidl::InterfaceTypeEntity::Attribute >::size_type n = 0;
- for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes())
- {
+ for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes()) {
OUString type(resolveAllTypedefs(attr.type));
out << indent() << "{\n";
inc();
@@ -1430,9 +1453,9 @@ void InterfaceType::dumpCppuAttributes(FileStream & out, sal_uInt32 & index) {
<< "::rtl::OUString sAttributeName" << n << "( \"" << name_
<< "::" << attr.name << "\" );\n";
sal_Int32 getExcn = dumpExceptionTypeNames(
- out, "get", attr.getExceptions, false);
+ out, "get", attr.getExceptions, false);
sal_Int32 setExcn = dumpExceptionTypeNames(
- out, "set", attr.setExceptions, false);
+ out, "set", attr.setExceptions, false);
out << indent()
<< ("typelib_typedescription_newExtendedInterfaceAttribute("
" &pAttribute,\n");
@@ -1459,13 +1482,13 @@ void InterfaceType::dumpCppuAttributes(FileStream & out, sal_uInt32 & index) {
}
}
-void InterfaceType::dumpCppuMethods(FileStream & out, sal_uInt32 & index) {
+void InterfaceType::dumpCppuMethods(FileStream & out, sal_uInt32 & index)
+{
if (!entity_->getDirectMethods().empty()) {
out << "\n" << indent()
<< "typelib_InterfaceMethodTypeDescription * pMethod = 0;\n";
std::vector< unoidl::InterfaceTypeEntity::Method >::size_type n = 0;
- for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods())
- {
+ for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods()) {
OUString returnType(resolveAllTypedefs(method.returnType));
out << indent() << "{\n";
inc();
@@ -1474,9 +1497,8 @@ void InterfaceType::dumpCppuMethods(FileStream & out, sal_uInt32 & index) {
<< method.parameters.size() << "];\n";
}
std::vector< unoidl::InterfaceTypeEntity::Method::Parameter >::
- size_type m = 0;
- for (const unoidl::InterfaceTypeEntity::Method::Parameter& param : method.parameters)
- {
+ size_type m = 0;
+ for (const unoidl::InterfaceTypeEntity::Method::Parameter& param : method.parameters) {
OUString type(resolveAllTypedefs(param.type));
out << indent() << "::rtl::OUString sParamName" << m << "( \""
<< param.name << "\" );\n" << indent()
@@ -1501,8 +1523,8 @@ void InterfaceType::dumpCppuMethods(FileStream & out, sal_uInt32 & index) {
++m;
}
sal_Int32 excn = dumpExceptionTypeNames(
- out, "", method.exceptions,
- method.name != "acquire" && method.name != "release");
+ out, "", method.exceptions,
+ method.name != "acquire" && method.name != "release");
out << indent() << "::rtl::OUString sReturnType" << n << "( \""
<< returnType << "\" );\n" << indent()
<< "::rtl::OUString sMethodName" << n << "( \"" << name_ << "::"
@@ -1535,19 +1557,16 @@ void InterfaceType::dumpAttributesCppuDecl(
FileStream & out, std::set< OUString > * seen)
{
assert(seen != nullptr);
- for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes())
- {
+ for (const unoidl::InterfaceTypeEntity::Attribute& attr : entity_->getDirectAttributes()) {
if (seen->insert(attr.type).second) {
dumpCppuGetType(out, attr.type);
}
- for (const OUString& exc : attr.getExceptions)
- {
+ for (const OUString& exc : attr.getExceptions) {
if (seen->insert(exc).second) {
dumpCppuGetType(out, exc);
}
}
- for (const OUString& exc : attr.setExceptions)
- {
+ for (const OUString& exc : attr.setExceptions) {
if (seen->insert(exc).second) {
dumpCppuGetType(out, exc);
}
@@ -1559,10 +1578,8 @@ void InterfaceType::dumpMethodsCppuDecl(
FileStream & out, std::set< OUString > * seen)
{
assert(seen != nullptr);
- for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods())
- {
- for (const OUString& ex : method.exceptions)
- {
+ for (const unoidl::InterfaceTypeEntity::Method& method : entity_->getDirectMethods()) {
+ for (const OUString& ex : method.exceptions) {
if (seen->insert(ex).second) {
dumpCppuGetType(out, ex);
}
@@ -1583,8 +1600,7 @@ sal_Int32 InterfaceType::dumpExceptionTypeNames(
std::vector< OUString > const & exceptions, bool runtimeException)
{
sal_Int32 count = 0;
- for (const OUString& ex : exceptions)
- {
+ for (const OUString& ex : exceptions) {
if (ex != "com.sun.star.uno.RuntimeException") {
dumpExceptionTypeName(out, prefix, count++, ex);
}
@@ -1604,15 +1620,19 @@ sal_Int32 InterfaceType::dumpExceptionTypeNames(
return count;
}
-class ConstantGroup: public CppuType {
+class ConstantGroup: public CppuType
+{
public:
ConstantGroup(
rtl::Reference< unoidl::ConstantGroupEntity > const & entity,
OUString const & name, rtl::Reference< TypeManager > const & typeMgr):
- CppuType(name, typeMgr), entity_(entity)
- { assert(entity.is()); }
+ CppuType(name, typeMgr), entity_(entity) {
+ assert(entity.is());
+ }
- bool hasConstants() const { return !entity_->getMembers().empty(); }
+ bool hasConstants() const {
+ return !entity_->getMembers().empty();
+ }
private:
virtual void dumpHdlFile(
@@ -1655,9 +1675,9 @@ void ConstantGroup::dumpHppFile(
out << "\n#endif // "<< headerDefine << "\n";
}
-void ConstantGroup::dumpDeclaration(FileStream & out) {
- for (const unoidl::ConstantGroupEntity::Member& member : entity_->getMembers())
- {
+void ConstantGroup::dumpDeclaration(FileStream & out)
+{
+ for (const unoidl::ConstantGroupEntity::Member& member : entity_->getMembers()) {
out << "static const ";
switch (member.value.type) {
case unoidl::ConstantValue::TYPE_BOOLEAN:
@@ -1744,24 +1764,28 @@ void ConstantGroup::dumpDeclaration(FileStream & out) {
}
}
-void dumpTypeParameterName(FileStream & out, OUString const & name) {
+void dumpTypeParameterName(FileStream & out, OUString const & name)
+{
// Prefix all type parameters with "typeparam_" to avoid problems when a
// struct member has the same name as a type parameter, as in
// struct<T> { T T; };
out << "typeparam_" << name;
}
-class PlainStructType: public CppuType {
+class PlainStructType: public CppuType
+{
public:
PlainStructType(
rtl::Reference< unoidl::PlainStructTypeEntity > const & entity,
OUString const & name, rtl::Reference< TypeManager > const & typeMgr):
- CppuType(name, typeMgr), entity_(entity)
- { assert(entity.is()); }
+ CppuType(name, typeMgr), entity_(entity) {
+ assert(entity.is());
+ }
private:
- virtual sal_uInt32 checkInheritedMemberCount() const override
- { return getTotalMemberCount(entity_->getDirectBase()); }
+ virtual sal_uInt32 checkInheritedMemberCount() const override {
+ return getTotalMemberCount(entity_->getDirectBase());
+ }
virtual void dumpDeclaration(FileStream& o) override;
@@ -1790,7 +1814,8 @@ private:
rtl::Reference< unoidl::PlainStructTypeEntity > entity_;
};
-void PlainStructType::dumpDeclaration(FileStream & out) {
+void PlainStructType::dumpDeclaration(FileStream & out)
+{
out << "\n#ifdef SAL_W32\n# pragma pack(push, 8)\n#endif\n\n" << indent();
out << "struct SAL_DLLPUBLIC_RTTI ";
if (canBeWarnUnused(name_))
@@ -1806,8 +1831,7 @@ void PlainStructType::dumpDeclaration(FileStream & out) {
if (!entity_->getDirectMembers().empty() || getInheritedMemberCount() > 0) {
out << "\n" << indent() << "inline " << id_ << "(";
bool bFirst = !dumpBaseMembers(out, base, true);
- for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers()) {
if (!bFirst) {
out << ", ";
}
@@ -1820,16 +1844,14 @@ void PlainStructType::dumpDeclaration(FileStream & out) {
if (!entity_->getDirectMembers().empty()) {
out << "\n";
for (std::vector< unoidl::PlainStructTypeEntity::Member >::
- const_iterator i(entity_->getDirectMembers().begin());
- i != entity_->getDirectMembers().end(); ++i)
- {
+ const_iterator i(entity_->getDirectMembers().begin());
+ i != entity_->getDirectMembers().end(); ++i) {
out << indent();
dumpType(out, i->type);
out << " " << i->name;
if (i == entity_->getDirectMembers().begin() && !base.isEmpty()
&& i->type != "hyper" && i->type != "unsigned hyper"
- && i->type != "double")
- {
+ && i->type != "double") {
out << " CPPU_GCC3_ALIGN("
<< codemaker::cpp::scopedCppName(u2b(base)) << ")";
}
@@ -1859,8 +1881,7 @@ void PlainStructType::dumpHppFile(
<< "()\n";
bFirst = false;
}
- for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers()) {
out << indent() << (bFirst ? ":" : ",") << " " << member.name;
dumpInitializer(out, false, member.type);
out << "\n";
@@ -1872,8 +1893,7 @@ void PlainStructType::dumpHppFile(
out << "inline " << id_;
out << "::" << id_ << "(";
bFirst = !dumpBaseMembers(out, base, true);
- for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers()) {
if (!bFirst) {
out << ", ";
}
@@ -1891,8 +1911,7 @@ void PlainStructType::dumpHppFile(
out << ")\n";
bFirst = false;
}
- for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers()) {
out << indent() << (bFirst ? ":" : ",") << " " << member.name << "("
<< member.name << "_)\n";
bFirst = false;
@@ -1911,8 +1930,7 @@ void PlainStructType::dumpHppFile(
<< ">(the_lhs), static_cast< " << codemaker::cpp::scopedCppName(u2b(base)) << ">(the_rhs) )\n";
bFirst = false;
}
- for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers()) {
if (!bFirst)
out << "\n" << indent() << indent() << "&& ";
out << "the_lhs." << member.name << " == the_rhs." << member.name;
@@ -1935,7 +1953,8 @@ void PlainStructType::dumpHppFile(
out << "\n#endif // "<< headerDefine << "\n";
}
-void PlainStructType::dumpLightGetCppuType(FileStream & out) {
+void PlainStructType::dumpLightGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< ("//TODO: On certain platforms with weak memory models, the"
@@ -1953,7 +1972,8 @@ void PlainStructType::dumpLightGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void PlainStructType::dumpNormalGetCppuType(FileStream & out) {
+void PlainStructType::dumpNormalGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< ("//TODO: On certain platforms with weak memory models, the"
@@ -1968,8 +1988,7 @@ void PlainStructType::dumpNormalGetCppuType(FileStream & out) {
inc();
for (std::vector< unoidl::PlainStructTypeEntity::Member >::const_iterator i(
entity_->getDirectMembers().begin());
- i != entity_->getDirectMembers().end();)
- {
+ i != entity_->getDirectMembers().end();) {
out << indent() << "::cppu::UnoType< ";
dumpType(out, i->type, false, false, false, true);
++i;
@@ -1993,7 +2012,8 @@ void PlainStructType::dumpNormalGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void PlainStructType::dumpComprehensiveGetCppuType(FileStream & out) {
+void PlainStructType::dumpComprehensiveGetCppuType(FileStream & out)
+{
OUString staticTypeClass("the" + id_ + "Type");
codemaker::cppumaker::dumpNamespaceOpen(out, name_, false);
out << " namespace detail {\n\n" << indent() << "struct "
@@ -2007,13 +2027,11 @@ void PlainStructType::dumpComprehensiveGetCppuType(FileStream & out) {
out << indent() << "::rtl::OUString the_name( \"" << name_ << "\" );\n";
std::map< OUString, sal_uInt32 > types;
std::vector< unoidl::PlainStructTypeEntity::Member >::size_type n = 0;
- for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : entity_->getDirectMembers()) {
if (types.insert(
std::map< OUString, sal_uInt32 >::value_type(
member.type, static_cast< sal_uInt32 >(types.size()))).
- second)
- {
+ second) {
dumpCppuGetType(out, member.type, &name_);
// For typedefs, use the resolved type name, as there will be no
// information available about the typedef itself at runtime (the
@@ -2032,8 +2050,7 @@ void PlainStructType::dumpComprehensiveGetCppuType(FileStream & out) {
n = 0;
for (std::vector< unoidl::PlainStructTypeEntity::Member >::const_iterator i(
entity_->getDirectMembers().begin());
- i != entity_->getDirectMembers().end();)
- {
+ i != entity_->getDirectMembers().end();) {
out << indent() << "{ { " << getTypeClass(i->type, true)
<< ", the_tname" << types.find(i->type)->second
<< ".pData, the_name" << n++ << ".pData }, false }";
@@ -2086,8 +2103,7 @@ bool PlainStructType::dumpBaseMembers(
return false;
}
hasMember = dumpBaseMembers(out, ent2->getDirectBase(), withType);
- for (const unoidl::PlainStructTypeEntity::Member& member : ent2->getDirectMembers())
- {
+ for (const unoidl::PlainStructTypeEntity::Member& member : ent2->getDirectMembers()) {
if (hasMember) {
out << ", ";
}
@@ -2135,7 +2151,8 @@ void PlainStructType::addComprehensiveGetCppuTypeIncludes(
includes.addTypelibTypedescriptionH();
}
-sal_uInt32 PlainStructType::getTotalMemberCount(OUString const & base) const {
+sal_uInt32 PlainStructType::getTotalMemberCount(OUString const & base) const
+{
if (base.isEmpty()) {
return 0;
}
@@ -2152,17 +2169,19 @@ sal_uInt32 PlainStructType::getTotalMemberCount(OUString const & base) const {
return 0;
}
return getTotalMemberCount(ent2->getDirectBase())
- + ent2->getDirectMembers().size(); //TODO: overflow
+ + ent2->getDirectMembers().size(); //TODO: overflow
}
-class PolyStructType: public CppuType {
+class PolyStructType: public CppuType
+{
public:
PolyStructType(
rtl::Reference< unoidl::PolymorphicStructTypeTemplateEntity > const &
- entity,
+ entity,
OUString const & name, rtl::Reference< TypeManager > const & typeMgr):
- CppuType(name, typeMgr), entity_(entity)
- { assert(entity.is()); }
+ CppuType(name, typeMgr), entity_(entity) {
+ assert(entity.is());
+ }
private:
virtual void dumpDeclaration(FileStream& o) override;
@@ -2184,7 +2203,9 @@ private:
virtual void addComprehensiveGetCppuTypeIncludes(
codemaker::cppumaker::Includes & includes) const override;
- virtual bool isPolymorphic() const override { return true; }
+ virtual bool isPolymorphic() const override {
+ return true;
+ }
virtual void dumpTemplateHead(FileStream & out) const override;
@@ -2193,7 +2214,8 @@ private:
rtl::Reference< unoidl::PolymorphicStructTypeTemplateEntity > entity_;
};
-void PolyStructType::dumpDeclaration(FileStream & out) {
+void PolyStructType::dumpDeclaration(FileStream & out)
+{
out << "\n#ifdef SAL_W32\n# pragma pack(push, 8)\n#endif\n\n" << indent();
dumpTemplateHead(out);
out << "struct SAL_DLLPUBLIC_RTTI " << id_ << " {\n";
@@ -2202,10 +2224,9 @@ void PolyStructType::dumpDeclaration(FileStream & out) {
if (!entity_->getMembers().empty()) {
out << "\n" << indent() << "inline " << id_ << "(";
for (std::vector<
- unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ unoidl::PolymorphicStructTypeTemplateEntity::Member >::
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
if (i != entity_->getMembers().begin()) {
out << ", ";
}
@@ -2220,8 +2241,7 @@ void PolyStructType::dumpDeclaration(FileStream & out) {
out << ");\n\n";
// print the member fields
for (const unoidl::PolymorphicStructTypeTemplateEntity::Member& member :
- entity_->getMembers())
- {
+ entity_->getMembers()) {
out << indent();
if (member.parameterized) {
dumpTypeParameterName(out, member.type);
@@ -2253,9 +2273,8 @@ void PolyStructType::dumpHppFile(
out << "::" << id_ << "()\n";
inc();
for (std::vector< unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
out << indent() << (i == entity_->getMembers().begin() ? ":" : ",")
<< " " << i->name;
dumpInitializer(out, i->parameterized, i->type);
@@ -2270,10 +2289,9 @@ void PolyStructType::dumpHppFile(
dumpTemplateParameters(out);
out << "::" << id_ << "(";
for (std::vector<
- unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ unoidl::PolymorphicStructTypeTemplateEntity::Member >::
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
if (i != entity_->getMembers().begin()) {
out << ", ";
}
@@ -2288,10 +2306,9 @@ void PolyStructType::dumpHppFile(
out << ")\n";
inc();
for (std::vector<
- unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ unoidl::PolymorphicStructTypeTemplateEntity::Member >::
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
out << indent() << (i == entity_->getMembers().begin() ? ":" : ",")
<< " " << i->name << "(" << i->name << "_)\n";
}
@@ -2303,10 +2320,9 @@ void PolyStructType::dumpHppFile(
dumpTemplateParameters(out);
out << "\n" << indent() << "make_" << id_ << "(";
for (std::vector<
- unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ unoidl::PolymorphicStructTypeTemplateEntity::Member >::
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
if (i != entity_->getMembers().begin()) {
out << ", ";
}
@@ -2324,10 +2340,9 @@ void PolyStructType::dumpHppFile(
dumpTemplateParameters(out);
out << "(";
for (std::vector<
- unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ unoidl::PolymorphicStructTypeTemplateEntity::Member >::
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
if (i != entity_->getMembers().begin()) {
out << ", ";
}
@@ -2348,8 +2363,7 @@ void PolyStructType::dumpHppFile(
inc();
out << indent() << "return ";
bool bFirst = true;
- for (const unoidl::PolymorphicStructTypeTemplateEntity::Member& member : entity_->getMembers())
- {
+ for (const unoidl::PolymorphicStructTypeTemplateEntity::Member& member : entity_->getMembers()) {
if (!bFirst)
out << "\n" << indent() << indent() << "&& ";
out << "the_lhs." << member.name << " == the_rhs." << member.name;
@@ -2377,7 +2391,8 @@ void PolyStructType::dumpHppFile(
out << "\n#endif // "<< headerDefine << "\n";
}
-void PolyStructType::dumpLightGetCppuType(FileStream & out) {
+void PolyStructType::dumpLightGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< ("//TODO: On certain platforms with weak memory models, the"
@@ -2391,8 +2406,7 @@ void PolyStructType::dumpLightGetCppuType(FileStream & out) {
<< "<\");\n";
for (std::vector< OUString >::const_iterator i(
entity_->getTypeParameters().begin());
- i != entity_->getTypeParameters().end();)
- {
+ i != entity_->getTypeParameters().end();) {
out << indent()
<< ("the_buffer.append(::rtl::OUStringToOString("
"::cppu::getTypeFavourChar(static_cast< ");
@@ -2412,7 +2426,8 @@ void PolyStructType::dumpLightGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void PolyStructType::dumpNormalGetCppuType(FileStream & out) {
+void PolyStructType::dumpNormalGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< ("//TODO: On certain platforms with weak memory models, the"
@@ -2426,8 +2441,7 @@ void PolyStructType::dumpNormalGetCppuType(FileStream & out) {
<< "<\");\n";
for (std::vector< OUString >::const_iterator i(
entity_->getTypeParameters().begin());
- i != entity_->getTypeParameters().end();)
- {
+ i != entity_->getTypeParameters().end();) {
out << indent()
<< ("the_buffer.append(::rtl::OUStringToOString("
"::cppu::getTypeFavourChar(static_cast< ");
@@ -2442,9 +2456,8 @@ void PolyStructType::dumpNormalGetCppuType(FileStream & out) {
<< "::typelib_TypeDescriptionReference * the_members[] = {\n";
inc();
for (std::vector< unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end();)
- {
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end();) {
out << indent();
if (i->parameterized) {
out << "::cppu::getTypeFavourChar(static_cast< ";
@@ -2462,9 +2475,8 @@ void PolyStructType::dumpNormalGetCppuType(FileStream & out) {
dec();
out << indent() << "static ::sal_Bool const the_parameterizedTypes[] = { ";
for (std::vector< unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end(); ++i)
- {
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end(); ++i) {
if (i != entity_->getMembers().begin()) {
out << ", ";
}
@@ -2482,7 +2494,8 @@ void PolyStructType::dumpNormalGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void PolyStructType::dumpComprehensiveGetCppuType(FileStream & out) {
+void PolyStructType::dumpComprehensiveGetCppuType(FileStream & out)
+{
out << "namespace cppu { namespace detail {\n\n" << indent();
dumpTemplateHead(out);
OUString staticTypeClass("the" + id_ + "Type");
@@ -2499,8 +2512,7 @@ void PolyStructType::dumpComprehensiveGetCppuType(FileStream & out) {
<< "the_buffer.append(\"" << name_ << "<\");\n";
for (std::vector< OUString >::const_iterator i(
entity_->getTypeParameters().begin());
- i != entity_->getTypeParameters().end();)
- {
+ i != entity_->getTypeParameters().end();) {
out << indent()
<< "the_buffer.append(::cppu::getTypeFavourChar(static_cast< ";
dumpTypeParameterName(out, *i);
@@ -2518,15 +2530,13 @@ void PolyStructType::dumpComprehensiveGetCppuType(FileStream & out) {
std::map< OUString, sal_uInt32 > parameters;
std::map< OUString, sal_uInt32 > types;
std::vector< unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- size_type n = 0;
- for (const unoidl::PolymorphicStructTypeTemplateEntity::Member& member : entity_->getMembers())
- {
+ size_type n = 0;
+ for (const unoidl::PolymorphicStructTypeTemplateEntity::Member& member : entity_->getMembers()) {
if (member.parameterized) {
if (parameters.insert(
std::map< OUString, sal_uInt32 >::value_type(
member.type, static_cast< sal_uInt32 >(parameters.size()))).
- second)
- {
+ second) {
sal_uInt32 k = static_cast< sal_uInt32 >(parameters.size() - 1);
out << indent()
<< "::css::uno::Type const & the_ptype" << k
@@ -2542,8 +2552,7 @@ void PolyStructType::dumpComprehensiveGetCppuType(FileStream & out) {
} else if (types.insert(
std::map< OUString, sal_uInt32 >::value_type(
member.type, static_cast< sal_uInt32 >(types.size()))).
- second)
- {
+ second) {
dumpCppuGetType(out, member.type, &name_);
// For typedefs, use the resolved type name, as there will be no
// information available about the typedef itself at runtime (the
@@ -2561,9 +2570,8 @@ void PolyStructType::dumpComprehensiveGetCppuType(FileStream & out) {
inc();
n = 0;
for (std::vector< unoidl::PolymorphicStructTypeTemplateEntity::Member >::
- const_iterator i(entity_->getMembers().begin());
- i != entity_->getMembers().end();)
- {
+ const_iterator i(entity_->getMembers().begin());
+ i != entity_->getMembers().end();) {
out << indent() << "{ { ";
if (i->parameterized) {
sal_uInt32 k = parameters.find(i->type)->second;
@@ -2639,12 +2647,12 @@ void PolyStructType::addComprehensiveGetCppuTypeIncludes(
includes.addRtlUstrbufHxx();
}
-void PolyStructType::dumpTemplateHead(FileStream & out) const {
+void PolyStructType::dumpTemplateHead(FileStream & out) const
+{
out << "template< ";
for (std::vector< OUString >::const_iterator i(
entity_->getTypeParameters().begin());
- i != entity_->getTypeParameters().end(); ++i)
- {
+ i != entity_->getTypeParameters().end(); ++i) {
if (i != entity_->getTypeParameters().begin()) {
out << ", ";
}
@@ -2654,12 +2662,12 @@ void PolyStructType::dumpTemplateHead(FileStream & out) const {
out << " > ";
}
-void PolyStructType::dumpTemplateParameters(FileStream & out) const {
+void PolyStructType::dumpTemplateParameters(FileStream & out) const
+{
out << "< ";
for (std::vector< OUString >::const_iterator i(
entity_->getTypeParameters().begin());
- i != entity_->getTypeParameters().end(); ++i)
- {
+ i != entity_->getTypeParameters().end(); ++i) {
if (i != entity_->getTypeParameters().begin()) {
out << ", ";
}
@@ -2668,7 +2676,8 @@ void PolyStructType::dumpTemplateParameters(FileStream & out) const {
out << " >";
}
-OUString typeToIdentifier(OUString const & name) {
+OUString typeToIdentifier(OUString const & name)
+{
sal_Int32 k;
OUString n(b2u(codemaker::UnoType::decompose(u2b(name), &k)));
OUStringBuffer b;
@@ -2684,13 +2693,15 @@ OUString typeToIdentifier(OUString const & name) {
return b.makeStringAndClear();
}
-class ExceptionType: public CppuType {
+class ExceptionType: public CppuType
+{
public:
ExceptionType(
rtl::Reference< unoidl::ExceptionTypeEntity > const & entity,
OUString const & name, rtl::Reference< TypeManager > const & typeMgr):
- CppuType(name, typeMgr), entity_(entity)
- { assert(entity.is()); }
+ CppuType(name, typeMgr), entity_(entity) {
+ assert(entity.is());
+ }
private:
virtual void dumpHppFile(
@@ -2705,8 +2716,9 @@ private:
virtual void dumpComprehensiveGetCppuType(FileStream & out) override;
- virtual sal_uInt32 checkInheritedMemberCount() const override
- { return getTotalMemberCount(entity_->getDirectBase()); }
+ virtual sal_uInt32 checkInheritedMemberCount() const override {
+ return getTotalMemberCount(entity_->getDirectBase());
+ }
virtual void dumpDeclaration(FileStream & out) override;
@@ -2746,8 +2758,7 @@ void ExceptionType::dumpHppFile(
<< "()\n";
bFirst = false;
}
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
out << indent() << (bFirst ? ":" : ",") << " ";
out << member.name;
dumpInitializer(out, false, member.type);
@@ -2768,8 +2779,7 @@ void ExceptionType::dumpHppFile(
if (!entity_->getDirectMembers().empty() || getInheritedMemberCount() > 0) {
out << indent() << "inline " << id_ << "::" << id_ << "(";
bFirst = !dumpBaseMembers(out, base, true, false);
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
if (!bFirst) {
out << ", ";
}
@@ -2787,8 +2797,7 @@ void ExceptionType::dumpHppFile(
out << ")\n";
bFirst = false;
}
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
out << indent() << (bFirst ? ":" : ",") << " " << member.name << "("
<< member.name << "_)\n";
bFirst = false;
@@ -2813,8 +2822,7 @@ void ExceptionType::dumpHppFile(
<< "(the_other)";
bFirst = false;
}
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
out << (bFirst ? ":" : ",") << " " << member.name << "(the_other." << member.name
<< ")";
bFirst = false;
@@ -2830,8 +2838,7 @@ void ExceptionType::dumpHppFile(
out << indent() << codemaker::cpp::scopedCppName(u2b(base))
<< "::operator =(the_other);\n";
}
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
out << indent() << member.name << " = the_other." << member.name << ";\n";
}
out << indent() << "return *this;\n";
@@ -2845,7 +2852,8 @@ void ExceptionType::dumpHppFile(
out << "\n#endif // "<< headerDefine << "\n";
}
-void ExceptionType::dumpLightGetCppuType(FileStream & out) {
+void ExceptionType::dumpLightGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< "static typelib_TypeDescriptionReference * the_type = 0;\n"
@@ -2860,7 +2868,8 @@ void ExceptionType::dumpLightGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void ExceptionType::dumpNormalGetCppuType(FileStream & out) {
+void ExceptionType::dumpNormalGetCppuType(FileStream & out)
+{
dumpGetCppuTypePreamble(out);
out << indent()
<< "static typelib_TypeDescriptionReference * the_type = 0;\n"
@@ -2884,8 +2893,7 @@ void ExceptionType::dumpNormalGetCppuType(FileStream & out) {
<< entity_->getDirectMembers().size() << "];\n";
std::set< OUString > seen;
std::vector< unoidl::ExceptionTypeEntity::Member >::size_type n = 0;
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
OUString type(resolveAllTypedefs(member.type));
OUString modType(typeToIdentifier(type));
if (seen.insert(type).second) {
@@ -2920,7 +2928,8 @@ void ExceptionType::dumpNormalGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void ExceptionType::dumpComprehensiveGetCppuType(FileStream & out) {
+void ExceptionType::dumpComprehensiveGetCppuType(FileStream & out)
+{
codemaker::cppumaker::dumpNamespaceOpen(out, name_, false);
out << " namespace detail {\n\n";
OUString staticTypeClass("the" + id_ + "Type");
@@ -2943,8 +2952,7 @@ void ExceptionType::dumpComprehensiveGetCppuType(FileStream & out) {
out << " >::get();\n";
}
std::set< OUString > seen;
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
if (seen.insert(member.type).second) {
dumpCppuGetType(out, member.type);
}
@@ -2953,8 +2961,7 @@ void ExceptionType::dumpComprehensiveGetCppuType(FileStream & out) {
out << "\n" << indent() << "typelib_CompoundMember_Init aMembers["
<< entity_->getDirectMembers().size() << "];\n";
std::vector< unoidl::ExceptionTypeEntity::Member >::size_type n = 0;
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
OUString type(resolveAllTypedefs(member.type));
out << indent() << "::rtl::OUString sMemberType" << n << "( \""
<< type << "\" );\n" << indent()
@@ -2995,7 +3002,8 @@ void ExceptionType::dumpComprehensiveGetCppuType(FileStream & out) {
dumpGetCppuTypePostamble(out);
}
-void ExceptionType::dumpDeclaration(FileStream & out) {
+void ExceptionType::dumpDeclaration(FileStream & out)
+{
out << "\nclass CPPU_GCC_DLLPUBLIC_EXPORT " << id_;
OUString base(entity_->getDirectBase());
if (!base.isEmpty()) {
@@ -3009,8 +3017,7 @@ void ExceptionType::dumpDeclaration(FileStream & out) {
out << indent() << "inline CPPU_GCC_DLLPRIVATE " << id_ << "(";
bool eligibleForDefaults = entity_->getDirectMembers().empty();
bool bFirst = !dumpBaseMembers(out, base, true, eligibleForDefaults);
- for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : entity_->getDirectMembers()) {
if (!bFirst) {
out << ", ";
}
@@ -3027,15 +3034,13 @@ void ExceptionType::dumpDeclaration(FileStream & out) {
<< " & operator =(" << id_ << " const &);\n#endif\n\n";
for (std::vector< unoidl::ExceptionTypeEntity::Member >::const_iterator i(
entity_->getDirectMembers().begin());
- i != entity_->getDirectMembers().end(); ++i)
- {
+ i != entity_->getDirectMembers().end(); ++i) {
out << indent();
dumpType(out, i->type);
out << " " << i->name;
if (i == entity_->getDirectMembers().begin() && !base.isEmpty()
&& i->type != "hyper" && i->type != "unsigned hyper"
- && i->type != "double")
- {
+ && i->type != "double") {
out << " CPPU_GCC3_ALIGN( "
<< codemaker::cpp::scopedCppName(u2b(base)) << " )";
}
@@ -3063,10 +3068,9 @@ bool ExceptionType::dumpBaseMembers(
return false;
}
hasMember = dumpBaseMembers( out, ent2->getDirectBase(), withType,
- eligibleForDefaults && ent2->getDirectMembers().empty() );
+ eligibleForDefaults && ent2->getDirectMembers().empty() );
int memberCount = 0;
- for (const unoidl::ExceptionTypeEntity::Member& member : ent2->getDirectMembers())
- {
+ for (const unoidl::ExceptionTypeEntity::Member& member : ent2->getDirectMembers()) {
if (hasMember) {
out << ", ";
}
@@ -3079,10 +3083,10 @@ bool ExceptionType::dumpBaseMembers(
// constructors, since most of the time we don't pass a Context object in to the exception
// throw sites.
if (eligibleForDefaults
- && base == "com.sun.star.uno.Exception"
- && memberCount == 1
- && member.name == "Context"
- && member.type == "com.sun.star.uno.XInterface") {
+ && base == "com.sun.star.uno.Exception"
+ && memberCount == 1
+ && member.name == "Context"
+ && member.type == "com.sun.star.uno.XInterface") {
out << " = ::css::uno::Reference< ::css::uno::XInterface >()";
}
hasMember = true;
@@ -3092,7 +3096,8 @@ bool ExceptionType::dumpBaseMembers(
return hasMember;
}
-sal_uInt32 ExceptionType::getTotalMemberCount(OUString const & base) const {
+sal_uInt32 ExceptionType::getTotalMemberCount(OUString const & base) const
+{
if (base.isEmpty()) {
return 0;
}
@@ -3105,16 +3110,18 @@ sal_uInt32 ExceptionType::getTotalMemberCount(OUString const & base) const {
unoidl::ExceptionTypeEntity& ent2(
dynamic_cast< unoidl::ExceptionTypeEntity&>(*ent.get()));
return getTotalMemberCount(ent2.getDirectBase())
- + ent2.getDirectMembers().size(); //TODO: overflow
+ + ent2.getDirectMembers().size(); //TODO: overflow
}
-class EnumType: public CppuType {
+class EnumType: public CppuType
+{
public:
EnumType(
rtl::Reference< unoidl::EnumTypeEntity > const & entity,
OUString const & name, rtl::Reference< TypeManager > const & typeMgr):
- CppuType(name, typeMgr), entity_(entity)
- { assert(entity.is()); }
+ CppuType(name, typeMgr), entity_(entity) {
+ assert(entity.is());
+ }
private:
virtual void dumpDeclaration(FileStream& o) override;
@@ -3139,11 +3146,14 @@ void EnumType::addComprehensiveGetCppuTypeIncludes(
void EnumType::dumpDeclaration(FileStream& o)
{
+ o << "\n#if defined LIBO_INTERNAL_ONLY\n";
+ o << "\nenum class SAL_DLLPUBLIC_RTTI " << id_ << "\n{\n";
+ o << "\n#else\n";
o << "\nenum SAL_DLLPUBLIC_RTTI " << id_ << "\n{\n";
+ o << "\n#endif\n";
inc();
- for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers())
- {
+ for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers()) {
o << indent() << id_ << "_" << u2b(member.name) << " = " << member.value
<< ",\n";
}
@@ -3152,6 +3162,16 @@ void EnumType::dumpDeclaration(FileStream& o)
dec();
o << "};\n\n";
+
+ // use constexpr to create a kind of type-alias so we don't have to modify existing code
+ o << "#if defined LIBO_INTERNAL_ONLY\n";
+ for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers()) {
+ o << "constexpr auto " << id_ << "_" << u2b(member.name)
+ << " = "
+ << id_ << "::" << id_ << "_" << u2b(member.name)
+ << ";\n";
+ }
+ o << "#endif\n";
}
void EnumType::dumpHppFile(
@@ -3218,8 +3238,7 @@ void EnumType::dumpComprehensiveGetCppuType(FileStream& o)
o << indent() << "rtl_uString* enumValueNames["
<< entity_->getMembers().size() << "];\n";
std::vector< unoidl::EnumTypeEntity::Member >::size_type n = 0;
- for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers())
- {
+ for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers()) {
o << indent() << "::rtl::OUString sEnumValue" << n << "( \""
<< u2b(member.name) << "\" );\n";
o << indent() << "enumValueNames[" << n << "] = sEnumValue" << n
@@ -3230,8 +3249,7 @@ void EnumType::dumpComprehensiveGetCppuType(FileStream& o)
o << "\n" << indent() << "sal_Int32 enumValues["
<< entity_->getMembers().size() << "];\n";
n = 0;
- for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers())
- {
+ for (const unoidl::EnumTypeEntity::Member& member : entity_->getMembers()) {
o << indent() << "enumValues[" << n++ << "] = " << member.value << ";\n";
}
@@ -3270,13 +3288,15 @@ void EnumType::dumpComprehensiveGetCppuType(FileStream& o)
dumpGetCppuTypePostamble(o);
}
-class Typedef: public CppuType {
+class Typedef: public CppuType
+{
public:
Typedef(
rtl::Reference< unoidl::TypedefEntity > const & entity,
OUString const & name, rtl::Reference< TypeManager > const & typeMgr):
- CppuType(name, typeMgr), entity_(entity)
- { assert(entity.is()); }
+ CppuType(name, typeMgr), entity_(entity) {
+ assert(entity.is());
+ }
private:
virtual void dumpDeclaration(FileStream& o) override;
@@ -3331,25 +3351,28 @@ void Typedef::dumpHppFile(
o << "\n#endif // "<< headerDefine << "\n";
}
-class ConstructiveType: public CppuType {
+class ConstructiveType: public CppuType
+{
public:
ConstructiveType(
OUString const & name, rtl::Reference< TypeManager > const & manager):
CppuType(name, manager) {}
private:
- virtual void dumpHdlFile(FileStream &, codemaker::cppumaker::Includes &) override
- { assert(false); } // this cannot happen
+ virtual void dumpHdlFile(FileStream &, codemaker::cppumaker::Includes &) override {
+ assert(false); // this cannot happen
+ }
- virtual void dumpFiles(OUString const & uri, CppuOptions const & options) override
- { dumpFile(uri, name_, true, options); }
+ virtual void dumpFiles(OUString const & uri, CppuOptions const & options) override {
+ dumpFile(uri, name_, true, options);
+ }
};
bool hasRestParameter(
unoidl::SingleInterfaceBasedServiceEntity::Constructor const & constructor)
{
return !constructor.parameters.empty()
- && constructor.parameters.back().rest;
+ && constructor.parameters.back().rest;
}
void includeExceptions(
@@ -3359,21 +3382,22 @@ void includeExceptions(
if (node->present) {
includes.add(node->name);
} else {
- for (std::unique_ptr<codemaker::ExceptionTreeNode> const & pChild : node->children)
- {
+ for (std::unique_ptr<codemaker::ExceptionTreeNode> const & pChild : node->children) {
includeExceptions(includes, pChild.get());
}
}
}
-class ServiceType: public ConstructiveType {
+class ServiceType: public ConstructiveType
+{
public:
ServiceType(
rtl::Reference< unoidl::SingleInterfaceBasedServiceEntity > const &
- entity,
+ entity,
OUString const & name, rtl::Reference< TypeManager > const & manager):
- ConstructiveType(name, manager), entity_(entity)
- { assert(entity.is()); }
+ ConstructiveType(name, manager), entity_(entity) {
+ assert(entity.is());
+ }
private:
virtual void dumpHppFile(
@@ -3405,8 +3429,7 @@ void ServiceType::dumpHppFile(
includes.addRtlUstringHxx();
includes.add("com.sun.star.uno.DeploymentException");
includes.add("com.sun.star.uno.XComponentContext");
- for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor& cons : entity_->getConstructors())
- {
+ for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor& cons : entity_->getConstructors()) {
if (cons.defaultConstructor) {
includes.add("com.sun.star.uno.Exception");
includes.add("com.sun.star.uno.RuntimeException");
@@ -3415,21 +3438,18 @@ void ServiceType::dumpHppFile(
includes.addAny();
includes.addSequence();
for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor::Parameter& param :
- cons.parameters)
- {
+ cons.parameters) {
if (m_typeMgr->getSort(
b2u(codemaker::UnoType::decompose(
u2b(param.type))))
- == codemaker::UnoType::Sort::Char)
- {
+ == codemaker::UnoType::Sort::Char) {
includes.addCppuUnotypeHxx();
break;
}
}
}
codemaker::ExceptionTree tree;
- for (const OUString& ex : cons.exceptions)
- {
+ for (const OUString& ex : cons.exceptions) {
tree.add(u2b(ex), m_typeMgr);
}
if (!tree.getRoot().present) {
@@ -3458,7 +3478,7 @@ void ServiceType::dumpHppFile(
<< "\nextern \"C\" ::css::uno::XInterface * SAL_CALL LO_URE_CTOR_FUN_"
<< name_.replaceAll(".", "_dot_")
<< "(::css::uno::XComponentContext *, ::css::uno::Sequence< "
- "::css::uno::Any > const &);\n#endif\n";
+ "::css::uno::Any > const &);\n#endif\n";
}
o << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(o, name_, false)) {
@@ -3471,8 +3491,7 @@ void ServiceType::dumpHppFile(
OString scopedBaseName(codemaker::cpp::scopedCppName(baseName));
o << "public:\n";
for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor& cons :
- entity_->getConstructors())
- {
+ entity_->getConstructors()) {
if (cons.defaultConstructor) {
o << indent() << "static ::css::uno::Reference< "
<< scopedBaseName << " > "
@@ -3541,8 +3560,7 @@ void ServiceType::dumpHppFile(
" the_context");
bool rest = hasRestParameter(cons);
for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor::Parameter& param :
- cons.parameters)
- {
+ cons.parameters) {
o << ", ";
OUStringBuffer buf;
if (param.rest) {
@@ -3564,11 +3582,10 @@ void ServiceType::dumpHppFile(
<< ("::css::uno::Sequence< ::css::uno::Any > the_arguments(")
<< cons.parameters.size() << ");\n";
std::vector<
- unoidl::SingleInterfaceBasedServiceEntity::Constructor::
- Parameter >::size_type n = 0;
+ unoidl::SingleInterfaceBasedServiceEntity::Constructor::
+ Parameter >::size_type n = 0;
for (const unoidl::SingleInterfaceBasedServiceEntity::Constructor::Parameter& j :
- cons.parameters)
- {
+ cons.parameters) {
o << indent() << "the_arguments[" << n++ << "] ";
OString param(
codemaker::cpp::translateUnoToCppIdentifier(
@@ -3580,8 +3597,7 @@ void ServiceType::dumpHppFile(
} else if (m_typeMgr->getSort(
b2u(codemaker::UnoType::decompose(
u2b(j.type), &rank)))
- == codemaker::UnoType::Sort::Char)
- {
+ == codemaker::UnoType::Sort::Char) {
o << "= ::css::uno::Any(&" << param
<< ", ::cppu::UnoType< ";
for (sal_Int32 k = 0; k < rank; ++k) {
@@ -3601,8 +3617,7 @@ void ServiceType::dumpHppFile(
o << indent() << "::css::uno::Reference< "
<< scopedBaseName << " > the_instance;\n";
codemaker::ExceptionTree tree;
- for (const OUString& ex : cons.exceptions)
- {
+ for (const OUString& ex : cons.exceptions) {
tree.add(u2b(ex), m_typeMgr);
}
if (!tree.getRoot().present) {
@@ -3624,8 +3639,8 @@ void ServiceType::dumpHppFile(
<< ")(the_context.get(), ";
if (rest) {
o << codemaker::cpp::translateUnoToCppIdentifier(
- u2b(cons.parameters.back().name), "param",
- codemaker::cpp::IdentifierTranslationMode::NonGlobal);
+ u2b(cons.parameters.back().name), "param",
+ codemaker::cpp::IdentifierTranslationMode::NonGlobal);
} else if (cons.parameters.empty()) {
o << "::css::uno::Sequence< ::css::uno::Any >()";
} else {
@@ -3651,8 +3666,8 @@ void ServiceType::dumpHppFile(
<< name_ << "\", ";
if (rest) {
o << codemaker::cpp::translateUnoToCppIdentifier(
- u2b(cons.parameters.back().name), "param",
- codemaker::cpp::IdentifierTranslationMode::NonGlobal);
+ u2b(cons.parameters.back().name), "param",
+ codemaker::cpp::IdentifierTranslationMode::NonGlobal);
} else if (cons.parameters.empty()) {
o << ("::css::uno::Sequence< ::css::uno::Any >()");
} else {
@@ -3713,20 +3728,21 @@ void ServiceType::dumpCatchClauses(
out << indent() << "throw;\n";
dec();
} else {
- for (std::unique_ptr<codemaker::ExceptionTreeNode> const & pChild : node->children)
- {
+ for (std::unique_ptr<codemaker::ExceptionTreeNode> const & pChild : node->children) {
dumpCatchClauses(out, pChild.get());
}
}
}
-class SingletonType: public ConstructiveType {
+class SingletonType: public ConstructiveType
+{
public:
SingletonType(
rtl::Reference< unoidl::InterfaceBasedSingletonEntity > const & entity,
OUString const & name, rtl::Reference< TypeManager > const & manager):
- ConstructiveType(name, manager), entity_(entity)
- { assert(entity.is()); }
+ ConstructiveType(name, manager), entity_(entity) {
+ assert(entity.is());
+ }
private:
virtual void dumpHppFile(
@@ -3766,7 +3782,7 @@ void SingletonType::dumpHppFile(
<< "\nextern \"C\" ::css::uno::XInterface * SAL_CALL LO_URE_CTOR_FUN_"
<< name_.replaceAll(".", "_dot_")
<< "(::css::uno::XComponentContext *, ::css::uno::Sequence< "
- "::css::uno::Any > const &);\n#endif\n";
+ "::css::uno::Any > const &);\n#endif\n";
o << "\n";
if (codemaker::cppumaker::dumpNamespaceOpen(o, name_, false)) {
o << "\n";
@@ -3797,9 +3813,9 @@ void SingletonType::dumpHppFile(
<< name_.replaceAll(".", "_dot_")
<< (")(the_context.get(), ::css::uno::Sequence<"
" ::css::uno::Any >())), ::SAL_NO_ACQUIRE),"
- " ::css::uno::UNO_QUERY);\n#else\n")
+ " ::css::uno::UNO_QUERY);\n#else\n")
<< indent() << ("the_context->getValueByName("
- "::rtl::OUString( \"/singletons/")
+ "::rtl::OUString( \"/singletons/")
<< name_ << "\" )) >>= instance;\n#endif\n"
<< indent() << "if (!instance.is()) {\n";
inc();
@@ -3841,106 +3857,96 @@ void produce(
rtl::Reference< unoidl::Entity > ent;
rtl::Reference< unoidl::MapCursor > cur;
switch (manager->getSort(name, &ent, &cur)) {
- case codemaker::UnoType::Sort::Module:
- {
- OUString prefix;
- if (!name.isEmpty()) {
- prefix = name + ".";
- }
- for (;;) {
- OUString mem;
- if (!cur->getNext(&mem).is()) {
- break;
- }
- produce(prefix + mem, manager, generated, options);
- }
- break;
- }
- case codemaker::UnoType::Sort::Enum:
- {
- EnumType t(
- dynamic_cast< unoidl::EnumTypeEntity * >(ent.get()), name,
- manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::PlainStruct:
- {
- PlainStructType t(
- dynamic_cast< unoidl::PlainStructTypeEntity * >(ent.get()),
- name, manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::PolymorphicStructTemplate:
- {
- PolyStructType t(
- dynamic_cast< unoidl::PolymorphicStructTypeTemplateEntity * >(
- ent.get()),
- name, manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::Exception:
- {
- ExceptionType t(
- dynamic_cast< unoidl::ExceptionTypeEntity * >(ent.get()), name,
- manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::Interface:
- {
- InterfaceType t(
- dynamic_cast< unoidl::InterfaceTypeEntity * >(ent.get()), name,
- manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::Typedef:
- {
- Typedef t(
- dynamic_cast< unoidl::TypedefEntity * >(ent.get()), name,
- manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::ConstantGroup:
- {
- ConstantGroup t(
- dynamic_cast< unoidl::ConstantGroupEntity * >(ent.get()), name,
- manager);
- if (t.hasConstants()) {
- t.dump(options);
+ case codemaker::UnoType::Sort::Module: {
+ OUString prefix;
+ if (!name.isEmpty()) {
+ prefix = name + ".";
+ }
+ for (;;) {
+ OUString mem;
+ if (!cur->getNext(&mem).is()) {
+ break;
}
- break;
+ produce(prefix + mem, manager, generated, options);
}
- case codemaker::UnoType::Sort::SingleInterfaceBasedService:
- {
- ServiceType t(
- dynamic_cast< unoidl::SingleInterfaceBasedServiceEntity * >(
- ent.get()),
- name, manager);
- t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
- }
- case codemaker::UnoType::Sort::InterfaceBasedSingleton:
- {
- SingletonType t(
- dynamic_cast< unoidl::InterfaceBasedSingletonEntity * >(
- ent.get()),
- name, manager);
+ break;
+ }
+ case codemaker::UnoType::Sort::Enum: {
+ EnumType t(
+ dynamic_cast< unoidl::EnumTypeEntity * >(ent.get()), name,
+ manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::PlainStruct: {
+ PlainStructType t(
+ dynamic_cast< unoidl::PlainStructTypeEntity * >(ent.get()),
+ name, manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::PolymorphicStructTemplate: {
+ PolyStructType t(
+ dynamic_cast< unoidl::PolymorphicStructTypeTemplateEntity * >(
+ ent.get()),
+ name, manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::Exception: {
+ ExceptionType t(
+ dynamic_cast< unoidl::ExceptionTypeEntity * >(ent.get()), name,
+ manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::Interface: {
+ InterfaceType t(
+ dynamic_cast< unoidl::InterfaceTypeEntity * >(ent.get()), name,
+ manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::Typedef: {
+ Typedef t(
+ dynamic_cast< unoidl::TypedefEntity * >(ent.get()), name,
+ manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::ConstantGroup: {
+ ConstantGroup t(
+ dynamic_cast< unoidl::ConstantGroupEntity * >(ent.get()), name,
+ manager);
+ if (t.hasConstants()) {
t.dump(options);
- t.dumpDependedTypes(generated, options);
- break;
}
+ break;
+ }
+ case codemaker::UnoType::Sort::SingleInterfaceBasedService: {
+ ServiceType t(
+ dynamic_cast< unoidl::SingleInterfaceBasedServiceEntity * >(
+ ent.get()),
+ name, manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
+ case codemaker::UnoType::Sort::InterfaceBasedSingleton: {
+ SingletonType t(
+ dynamic_cast< unoidl::InterfaceBasedSingletonEntity * >(
+ ent.get()),
+ name, manager);
+ t.dump(options);
+ t.dumpDependedTypes(generated, options);
+ break;
+ }
case codemaker::UnoType::Sort::AccumulationBasedService:
case codemaker::UnoType::Sort::ServiceBasedSingleton:
break;