fdo#57950: Remove chained appends in codemaker
And another cleanups like removing RTL_CONST* macros and other simple things. Much more can be done inside codemaker. Change-Id: I338e1c0e88558124741c6202896355533535a129 Reviewed-on: https://gerrit.libreoffice.org/2583 Reviewed-by: Thomas Arnhold <thomas@arnhold.org> Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org> Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
This commit is contained in:
committed by
Fridrich Strba
parent
8035a3af26
commit
75e6856b08
@@ -66,11 +66,8 @@ rtl::OString convertString(rtl::OUString const & string) {
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
rtl::OString errorMsg(rtl::OString const & desc, rtl::OString const & type) {
|
OString errorMsg(OString const & desc, OString const & type) {
|
||||||
rtl::OStringBuffer msg(128);
|
return desc + type;
|
||||||
msg.append(desc);
|
|
||||||
msg.append(type);
|
|
||||||
return msg.makeStringAndClear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
codemaker::UnoType::Sort decomposeAndResolve(
|
codemaker::UnoType::Sort decomposeAndResolve(
|
||||||
|
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
namespace codemaker { namespace cpp {
|
namespace codemaker { namespace cpp {
|
||||||
|
|
||||||
rtl::OString scopedCppName(rtl::OString const & type, bool ns_alias)
|
OString scopedCppName(OString const & type, bool ns_alias)
|
||||||
{
|
{
|
||||||
char c('/');
|
char c('/');
|
||||||
sal_Int32 nPos = type.lastIndexOf( c );
|
sal_Int32 nPos = type.lastIndexOf( c );
|
||||||
@@ -49,12 +49,11 @@ rtl::OString scopedCppName(rtl::OString const & type, bool ns_alias)
|
|||||||
c = '.';
|
c = '.';
|
||||||
}
|
}
|
||||||
|
|
||||||
rtl::OStringBuffer tmpBuf(type.getLength()*2);
|
OStringBuffer tmpBuf(type.getLength()*2);
|
||||||
nPos = 0;
|
nPos = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
tmpBuf.append("::");
|
tmpBuf.append("::" + type.getToken(0, c, nPos));
|
||||||
tmpBuf.append(type.getToken(0, c, nPos));
|
|
||||||
} while( nPos != -1 );
|
} while( nPos != -1 );
|
||||||
|
|
||||||
rtl::OString s(tmpBuf.makeStringAndClear());
|
rtl::OString s(tmpBuf.makeStringAndClear());
|
||||||
@@ -67,16 +66,16 @@ rtl::OString scopedCppName(rtl::OString const & type, bool ns_alias)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
rtl::OString translateUnoToCppType(
|
OString translateUnoToCppType(
|
||||||
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
|
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
|
||||||
rtl::OString const & nucleus, bool shortname)
|
OString const & nucleus, bool shortname)
|
||||||
{
|
{
|
||||||
rtl::OStringBuffer buf;
|
rtl::OStringBuffer buf;
|
||||||
if (sort == codemaker::UnoType::SORT_COMPLEX) {
|
if (sort == codemaker::UnoType::SORT_COMPLEX) {
|
||||||
if (typeClass == RT_TYPE_INTERFACE
|
if (typeClass == RT_TYPE_INTERFACE
|
||||||
&& nucleus == rtl::OString("com/sun/star/uno/XInterface"))
|
&& nucleus == rtl::OString("com/sun/star/uno/XInterface"))
|
||||||
{
|
{
|
||||||
buf.append(RTL_CONSTASCII_STRINGPARAM("::com::sun::star::uno::XInterface"));
|
buf.append("::com::sun::star::uno::XInterface");
|
||||||
} else {
|
} else {
|
||||||
//TODO: check that nucleus is a valid (UTF-8) identifier
|
//TODO: check that nucleus is a valid (UTF-8) identifier
|
||||||
buf.append(nucleus);
|
buf.append(nucleus);
|
||||||
@@ -303,10 +302,7 @@ rtl::OString translateUnoToCppIdentifier(
|
|||||||
|| unoIdentifier == "NDEBUG"
|
|| unoIdentifier == "NDEBUG"
|
||||||
|| (forbidden != 0 && unoIdentifier == *forbidden) )
|
|| (forbidden != 0 && unoIdentifier == *forbidden) )
|
||||||
{
|
{
|
||||||
rtl::OStringBuffer buf(prefix);
|
return prefix + "_" + unoIdentifier;
|
||||||
buf.append('_');
|
|
||||||
buf.append(unoIdentifier);
|
|
||||||
return buf.makeStringAndClear();
|
|
||||||
} else {
|
} else {
|
||||||
return unoIdentifier;
|
return unoIdentifier;
|
||||||
}
|
}
|
||||||
|
@@ -39,16 +39,15 @@
|
|||||||
|
|
||||||
namespace codemaker { namespace java {
|
namespace codemaker { namespace java {
|
||||||
|
|
||||||
rtl::OString translateUnoToJavaType(
|
OString translateUnoToJavaType(
|
||||||
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
|
codemaker::UnoType::Sort sort, RTTypeClass typeClass,
|
||||||
rtl::OString const & nucleus, bool referenceType)
|
OString const & nucleus, bool referenceType)
|
||||||
{
|
{
|
||||||
rtl::OStringBuffer buf;
|
OStringBuffer buf;
|
||||||
if (sort == codemaker::UnoType::SORT_COMPLEX) {
|
if (sort == codemaker::UnoType::SORT_COMPLEX) {
|
||||||
if (typeClass == RT_TYPE_INTERFACE
|
if (typeClass == RT_TYPE_INTERFACE && nucleus == "com/sun/star/uno/XInterface")
|
||||||
&& nucleus == rtl::OString("com/sun/star/uno/XInterface"))
|
|
||||||
{
|
{
|
||||||
buf.append(RTL_CONSTASCII_STRINGPARAM("java/lang/Object"));
|
buf.append("java/lang/Object");
|
||||||
} else {
|
} else {
|
||||||
//TODO: check that nucleus is a valid (Java-modified UTF-8)
|
//TODO: check that nucleus is a valid (Java-modified UTF-8)
|
||||||
// identifier
|
// identifier
|
||||||
@@ -145,10 +144,7 @@ rtl::OString translateUnoToJavaIdentifier(
|
|||||||
|| identifier == "volatile"
|
|| identifier == "volatile"
|
||||||
|| identifier == "while")
|
|| identifier == "while")
|
||||||
{
|
{
|
||||||
rtl::OStringBuffer buf(prefix);
|
return prefix + "_" + identifier;
|
||||||
buf.append('_');
|
|
||||||
buf.append(identifier);
|
|
||||||
return buf.makeStringAndClear();
|
|
||||||
} else {
|
} else {
|
||||||
return identifier;
|
return identifier;
|
||||||
}
|
}
|
||||||
|
@@ -403,13 +403,10 @@ OString CppuType::dumpHeaderDefine(
|
|||||||
|
|
||||||
OStringBuffer tmpBuf(length);
|
OStringBuffer tmpBuf(length);
|
||||||
|
|
||||||
tmpBuf.append("INCLUDED_");
|
tmpBuf.append("INCLUDED_" + m_typeName + "_");
|
||||||
tmpBuf.append(m_typeName);
|
|
||||||
tmpBuf.append('_');
|
|
||||||
if (bExtended)
|
if (bExtended)
|
||||||
{
|
{
|
||||||
tmpBuf.append(m_name);
|
tmpBuf.append(m_name + "_");
|
||||||
tmpBuf.append('_');
|
|
||||||
}
|
}
|
||||||
tmpBuf.append(prefix);
|
tmpBuf.append(prefix);
|
||||||
|
|
||||||
@@ -1222,9 +1219,9 @@ OString CppuType::checkRealBaseType(const OString& type, sal_Bool bResolveTypeOn
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bResolveTypeOnly) {
|
if (bResolveTypeOnly) {
|
||||||
rtl::OStringBuffer buf;
|
OStringBuffer buf;
|
||||||
for (sal_Int32 i = 0; i < rank; ++i) {
|
for (sal_Int32 i = 0; i < rank; ++i) {
|
||||||
buf.append(RTL_CONSTASCII_STRINGPARAM("[]"));
|
buf.append("[]");
|
||||||
}
|
}
|
||||||
baseType = buf.makeStringAndClear() + baseType;
|
baseType = buf.makeStringAndClear() + baseType;
|
||||||
}
|
}
|
||||||
@@ -4025,7 +4022,7 @@ sal_Bool ServiceType::dumpHxxFile(
|
|||||||
if ((m_reader.getMethodParameterFlags(i, j) & RT_PARAM_REST)
|
if ((m_reader.getMethodParameterFlags(i, j) & RT_PARAM_REST)
|
||||||
!= 0)
|
!= 0)
|
||||||
{
|
{
|
||||||
buf.append(RTL_CONSTASCII_STRINGPARAM("[]"));
|
buf.append("[]");
|
||||||
}
|
}
|
||||||
buf.append(
|
buf.append(
|
||||||
rtl::OUStringToOString(
|
rtl::OUStringToOString(
|
||||||
|
@@ -63,7 +63,7 @@ void appendUnoName(
|
|||||||
{
|
{
|
||||||
OSL_ASSERT(rank >= 0 && buffer != 0);
|
OSL_ASSERT(rank >= 0 && buffer != 0);
|
||||||
for (sal_Int32 i = 0; i < rank; ++i) {
|
for (sal_Int32 i = 0; i < rank; ++i) {
|
||||||
buffer->append(RTL_CONSTASCII_STRINGPARAM("[]"));
|
buffer->append("[]");
|
||||||
}
|
}
|
||||||
buffer->append(nucleus.replace('/', '.'));
|
buffer->append(nucleus.replace('/', '.'));
|
||||||
if (!arguments.empty()) {
|
if (!arguments.empty()) {
|
||||||
@@ -171,20 +171,13 @@ SpecialType translateUnoTypeToDescriptor(
|
|||||||
}
|
}
|
||||||
if (sort == codemaker::UnoType::SORT_COMPLEX) {
|
if (sort == codemaker::UnoType::SORT_COMPLEX) {
|
||||||
//TODO: check that nucleus is a valid (Java-modified UTF-8) identifier
|
//TODO: check that nucleus is a valid (Java-modified UTF-8) identifier
|
||||||
if (typeClass == RT_TYPE_INTERFACE
|
if (typeClass == RT_TYPE_INTERFACE && nucleus == "com/sun/star/uno/XInterface")
|
||||||
&& (nucleus
|
|
||||||
== rtl::OString(
|
|
||||||
RTL_CONSTASCII_STRINGPARAM("com/sun/star/uno/XInterface"))))
|
|
||||||
{
|
{
|
||||||
if (descriptor != 0) {
|
if (descriptor != 0) {
|
||||||
descriptor->append(
|
descriptor->append("Ljava/lang/Object;");
|
||||||
rtl::OString(
|
|
||||||
RTL_CONSTASCII_STRINGPARAM("Ljava/lang/Object;")));
|
|
||||||
}
|
}
|
||||||
if (signature != 0) {
|
if (signature != 0) {
|
||||||
signature->append(
|
signature->append("Ljava/lang/Object;");
|
||||||
rtl::OString(
|
|
||||||
RTL_CONSTASCII_STRINGPARAM("Ljava/lang/Object;")));
|
|
||||||
}
|
}
|
||||||
if (polymorphicUnoType != 0) {
|
if (polymorphicUnoType != 0) {
|
||||||
polymorphicUnoType->kind = PolymorphicUnoType::KIND_NONE;
|
polymorphicUnoType->kind = PolymorphicUnoType::KIND_NONE;
|
||||||
@@ -195,13 +188,10 @@ SpecialType translateUnoTypeToDescriptor(
|
|||||||
dependencies->insert(nucleus);
|
dependencies->insert(nucleus);
|
||||||
}
|
}
|
||||||
if (descriptor != 0) {
|
if (descriptor != 0) {
|
||||||
descriptor->append('L');
|
descriptor->append("L" + nucleus + ";");
|
||||||
descriptor->append(nucleus);
|
|
||||||
descriptor->append(';');
|
|
||||||
}
|
}
|
||||||
if (signature != 0) {
|
if (signature != 0) {
|
||||||
signature->append('L');
|
signature->append("L" + nucleus);
|
||||||
signature->append(nucleus);
|
|
||||||
if (!arguments.empty()) {
|
if (!arguments.empty()) {
|
||||||
signature->append('<');
|
signature->append('<');
|
||||||
for (std::vector< rtl::OString >::const_iterator i(
|
for (std::vector< rtl::OString >::const_iterator i(
|
||||||
@@ -411,11 +401,9 @@ SpecialType MethodDescriptor::addParameter(
|
|||||||
polymorphicUnoType);
|
polymorphicUnoType);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MethodDescriptor::addTypeParameter(rtl::OString const & name) {
|
void MethodDescriptor::addTypeParameter(OString const & name) {
|
||||||
m_descriptorStart.append(RTL_CONSTASCII_STRINGPARAM("Ljava/lang/Object;"));
|
m_descriptorStart.append("Ljava/lang/Object;");
|
||||||
m_signatureStart.append('T');
|
m_signatureStart.append("T" + name + ";");
|
||||||
m_signatureStart.append(name);
|
|
||||||
m_signatureStart.append(';');
|
|
||||||
m_needsSignature = true;
|
m_needsSignature = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -427,9 +415,7 @@ rtl::OString MethodDescriptor::getDescriptor() const {
|
|||||||
|
|
||||||
rtl::OString MethodDescriptor::getSignature() const {
|
rtl::OString MethodDescriptor::getSignature() const {
|
||||||
if (m_needsSignature) {
|
if (m_needsSignature) {
|
||||||
rtl::OStringBuffer buf(m_signatureStart);
|
return m_signatureStart + m_signatureEnd;
|
||||||
buf.append(m_signatureEnd);
|
|
||||||
return buf.makeStringAndClear();
|
|
||||||
} else {
|
} else {
|
||||||
return rtl::OString();
|
return rtl::OString();
|
||||||
}
|
}
|
||||||
@@ -756,12 +742,7 @@ void writeClassFile(
|
|||||||
}
|
}
|
||||||
tempfile.close();
|
tempfile.close();
|
||||||
if (!makeValidTypeFile(filename, tempname, check)) {
|
if (!makeValidTypeFile(filename, tempname, check)) {
|
||||||
rtl::OStringBuffer msg;
|
throw CannotDumpException("Cannot create " + filename + " from temporary file " + tempname);
|
||||||
msg.append(RTL_CONSTASCII_STRINGPARAM("Cannot create "));
|
|
||||||
msg.append(filename);
|
|
||||||
msg.append(RTL_CONSTASCII_STRINGPARAM(" from temporary file "));
|
|
||||||
msg.append(tempname);
|
|
||||||
throw CannotDumpException(msg.makeStringAndClear());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1029,13 +1010,8 @@ void addField(
|
|||||||
SpecialType specialType;
|
SpecialType specialType;
|
||||||
PolymorphicUnoType polymorphicUnoType;
|
PolymorphicUnoType polymorphicUnoType;
|
||||||
if (typeParameterIndex >= 0) {
|
if (typeParameterIndex >= 0) {
|
||||||
descriptor = rtl::OString(
|
descriptor = "Ljava/lang/Object;";
|
||||||
RTL_CONSTASCII_STRINGPARAM("Ljava/lang/Object;"));
|
signature = "T" + type + ";";
|
||||||
rtl::OStringBuffer buf;
|
|
||||||
buf.append('T');
|
|
||||||
buf.append(type);
|
|
||||||
buf.append(';');
|
|
||||||
signature = buf.makeStringAndClear();
|
|
||||||
specialType = SPECIAL_TYPE_NONE; //TODO: SPECIAL_TYPE_TYPE_PARAMETER?
|
specialType = SPECIAL_TYPE_NONE; //TODO: SPECIAL_TYPE_TYPE_PARAMETER?
|
||||||
} else {
|
} else {
|
||||||
specialType = getFieldDescriptor(
|
specialType = getFieldDescriptor(
|
||||||
@@ -1894,26 +1870,21 @@ void handleAggregatingType(
|
|||||||
if (reader.getReferenceFlags(i) != RT_ACCESS_INVALID
|
if (reader.getReferenceFlags(i) != RT_ACCESS_INVALID
|
||||||
|| reader.getReferenceSort(i) != RT_REF_TYPE_PARAMETER)
|
|| reader.getReferenceSort(i) != RT_REF_TYPE_PARAMETER)
|
||||||
{
|
{
|
||||||
throw CannotDumpException(
|
throw CannotDumpException("Bad type information");
|
||||||
rtl::OString(
|
|
||||||
RTL_CONSTASCII_STRINGPARAM("Bad type information")));
|
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
rtl::OString name(
|
rtl::OString name(
|
||||||
codemaker::convertString(reader.getReferenceTypeName(i)));
|
codemaker::convertString(reader.getReferenceTypeName(i)));
|
||||||
buf.append(name);
|
buf.append(name + ":Ljava/lang/Object;");
|
||||||
buf.append(RTL_CONSTASCII_STRINGPARAM(":Ljava/lang/Object;"));
|
|
||||||
if (!typeParameters.insert(
|
if (!typeParameters.insert(
|
||||||
std::map< rtl::OString, sal_Int32 >::value_type(name, i)).
|
std::map< rtl::OString, sal_Int32 >::value_type(name, i)).
|
||||||
second)
|
second)
|
||||||
{
|
{
|
||||||
throw CannotDumpException(
|
throw CannotDumpException("Bad type information");
|
||||||
rtl::OString(
|
|
||||||
RTL_CONSTASCII_STRINGPARAM("Bad type information")));
|
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buf.append(RTL_CONSTASCII_STRINGPARAM(">Ljava/lang/Object;"));
|
buf.append(">Ljava/lang/Object;");
|
||||||
sig = buf.makeStringAndClear();
|
sig = buf.makeStringAndClear();
|
||||||
}
|
}
|
||||||
SAL_WNODEPRECATED_DECLARATIONS_PUSH
|
SAL_WNODEPRECATED_DECLARATIONS_PUSH
|
||||||
@@ -2571,9 +2542,7 @@ void handleModule(
|
|||||||
rtl::OString(RTL_CONSTASCII_STRINGPARAM("Bad type information")));
|
rtl::OString(RTL_CONSTASCII_STRINGPARAM("Bad type information")));
|
||||||
//TODO
|
//TODO
|
||||||
}
|
}
|
||||||
rtl::OStringBuffer buf(codemaker::convertString(reader.getTypeName()));
|
rtl::OString prefix(codemaker::convertString(reader.getTypeName()) + "/");
|
||||||
buf.append('/');
|
|
||||||
rtl::OString prefix(buf.makeStringAndClear());
|
|
||||||
sal_uInt16 fields = reader.getFieldCount();
|
sal_uInt16 fields = reader.getFieldCount();
|
||||||
for (sal_uInt16 i = 0; i < fields; ++i) {
|
for (sal_uInt16 i = 0; i < fields; ++i) {
|
||||||
rtl::OString className(
|
rtl::OString className(
|
||||||
@@ -2774,15 +2743,8 @@ void addConstructor(
|
|||||||
// stack: ex
|
// stack: ex
|
||||||
code->instrDup();
|
code->instrDup();
|
||||||
// stack: ex ex
|
// stack: ex ex
|
||||||
rtl::OStringBuffer msg;
|
code->loadStringConstant("component context fails to supply service " + unoName +
|
||||||
msg.append(
|
" of type " + realJavaBaseName + ": ");
|
||||||
RTL_CONSTASCII_STRINGPARAM(
|
|
||||||
"component context fails to supply service "));
|
|
||||||
msg.append(unoName);
|
|
||||||
msg.append(RTL_CONSTASCII_STRINGPARAM(" of type "));
|
|
||||||
msg.append(realJavaBaseName);
|
|
||||||
msg.append(RTL_CONSTASCII_STRINGPARAM(": "));
|
|
||||||
code->loadStringConstant(msg.makeStringAndClear());
|
|
||||||
// stack: ex ex "..."
|
// stack: ex ex "..."
|
||||||
code->loadLocalReference(1);
|
code->loadLocalReference(1);
|
||||||
// stack: ex ex "..." str
|
// stack: ex ex "..." str
|
||||||
@@ -2957,14 +2919,8 @@ void handleService(
|
|||||||
// stack: ex
|
// stack: ex
|
||||||
code->instrDup();
|
code->instrDup();
|
||||||
// stack: ex ex
|
// stack: ex ex
|
||||||
rtl::OStringBuffer msg;
|
code->loadStringConstant("component context fails to supply service " + unoName +
|
||||||
msg.append(
|
" of type " + realJavaBaseName);
|
||||||
RTL_CONSTASCII_STRINGPARAM(
|
|
||||||
"component context fails to supply service "));
|
|
||||||
msg.append(unoName);
|
|
||||||
msg.append(RTL_CONSTASCII_STRINGPARAM(" of type "));
|
|
||||||
msg.append(realJavaBaseName);
|
|
||||||
code->loadStringConstant(msg.makeStringAndClear());
|
|
||||||
// stack: ex ex "..."
|
// stack: ex ex "..."
|
||||||
code->loadLocalReference(1);
|
code->loadLocalReference(1);
|
||||||
// stack: ex ex "..." context
|
// stack: ex ex "..." context
|
||||||
@@ -3152,14 +3108,8 @@ void handleSingleton(
|
|||||||
// stack: ex
|
// stack: ex
|
||||||
code->instrDup();
|
code->instrDup();
|
||||||
// stack: ex ex
|
// stack: ex ex
|
||||||
rtl::OStringBuffer msg;
|
code->loadStringConstant("component context fails to supply singleton " + unoName +
|
||||||
msg.append(
|
" of type " + realJavaBaseName);
|
||||||
RTL_CONSTASCII_STRINGPARAM(
|
|
||||||
"component context fails to supply singleton "));
|
|
||||||
msg.append(unoName);
|
|
||||||
msg.append(RTL_CONSTASCII_STRINGPARAM(" of type "));
|
|
||||||
msg.append(realJavaBaseName);
|
|
||||||
code->loadStringConstant(msg.makeStringAndClear());
|
|
||||||
// stack: ex ex "..."
|
// stack: ex ex "..."
|
||||||
code->loadLocalReference(0);
|
code->loadLocalReference(0);
|
||||||
// stack: ex ex "..." context
|
// stack: ex ex "..." context
|
||||||
|
Reference in New Issue
Block a user