summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--avmedia/source/gstreamer/gstplayer.cxx2
-rw-r--r--compilerplugins/clang/fakebool.cxx (renamed from compilerplugins/clang/salbool.cxx)720
-rw-r--r--compilerplugins/clang/test/fakebool.cxx (renamed from compilerplugins/clang/test/salbool.cxx)6
-rw-r--r--connectivity/source/drivers/evoab2/NResultSet.cxx2
-rw-r--r--connectivity/source/drivers/jdbc/DatabaseMetaData.cxx8
-rw-r--r--connectivity/source/drivers/jdbc/JStatement.cxx2
-rw-r--r--connectivity/source/drivers/jdbc/Object.cxx4
-rw-r--r--connectivity/source/drivers/jdbc/Reader.cxx2
-rw-r--r--connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx4
-rw-r--r--connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx32
-rw-r--r--connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx4
-rw-r--r--javaunohelper/source/javaunohelper.cxx2
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx2
-rw-r--r--libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx8
-rw-r--r--libreofficekit/source/gtk/lokdocview.cxx32
-rw-r--r--solenv/CompilerTest_compilerplugins_clang.mk2
-rw-r--r--solenv/clang-format/blacklist4
-rw-r--r--ucb/source/ucp/gio/gio_content.cxx2
-rw-r--r--vcl/source/gdi/scrptrun.cxx2
-rw-r--r--vcl/unx/gtk3/a11y/gtk3atklistener.cxx2
-rw-r--r--vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx4
-rw-r--r--vcl/unx/gtk3/gtk3gloactiongroup.cxx4
-rw-r--r--vcl/unx/gtk3/gtk3glomenu.cxx2
-rw-r--r--vcl/unx/gtk3/gtk3gtkdata.cxx2
-rw-r--r--vcl/unx/gtk3/gtk3gtkframe.cxx8
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx16
26 files changed, 553 insertions, 325 deletions
diff --git a/avmedia/source/gstreamer/gstplayer.cxx b/avmedia/source/gstreamer/gstplayer.cxx
index 4612c1053998..764a27639eb5 100644
--- a/avmedia/source/gstreamer/gstplayer.cxx
+++ b/avmedia/source/gstreamer/gstplayer.cxx
@@ -414,7 +414,7 @@ void Player::processMessage( GstMessage *message )
#define LCL_WAYLAND_DISPLAY_HANDLE_CONTEXT_TYPE "GstWaylandDisplayHandleContextType"
-static gboolean lcl_is_wayland_display_handle_need_context_message(GstMessage* msg)
+static bool lcl_is_wayland_display_handle_need_context_message(GstMessage* msg)
{
g_return_val_if_fail(GST_IS_MESSAGE(msg), false);
diff --git a/compilerplugins/clang/salbool.cxx b/compilerplugins/clang/fakebool.cxx
index fdadfc6b795a..1dbb535ceef9 100644
--- a/compilerplugins/clang/salbool.cxx
+++ b/compilerplugins/clang/fakebool.cxx
@@ -10,27 +10,167 @@
#include <algorithm>
#include <cassert>
#include <limits>
-#include <set>
+#include <map>
#include <string>
#include "clang/AST/Attr.h"
#include "check.hxx"
#include "compat.hxx"
+#include "functionaddress.hxx"
#include "plugin.hxx"
namespace {
-bool isSalBool(QualType type) {
+// BEGIN code copied from LLVM's clang/lib/Sema/Sema.cpp
+
+typedef llvm::DenseMap<const CXXRecordDecl*, bool> RecordCompleteMap;
+
+/// Returns true, if all methods and nested classes of the given
+/// CXXRecordDecl are defined in this translation unit.
+///
+/// Should only be called from ActOnEndOfTranslationUnit so that all
+/// definitions are actually read.
+static bool MethodsAndNestedClassesComplete(const CXXRecordDecl *RD,
+ RecordCompleteMap &MNCComplete) {
+ RecordCompleteMap::iterator Cache = MNCComplete.find(RD);
+ if (Cache != MNCComplete.end())
+ return Cache->second;
+ if (!RD->isCompleteDefinition())
+ return false;
+ bool Complete = true;
+ for (DeclContext::decl_iterator I = RD->decls_begin(),
+ E = RD->decls_end();
+ I != E && Complete; ++I) {
+ if (const CXXMethodDecl *M = dyn_cast<CXXMethodDecl>(*I))
+ Complete = M->isDefined() || M->isDefaulted() ||
+ (M->isPure() && !isa<CXXDestructorDecl>(M));
+ else if (const FunctionTemplateDecl *F = dyn_cast<FunctionTemplateDecl>(*I))
+ // If the template function is marked as late template parsed at this
+ // point, it has not been instantiated and therefore we have not
+ // performed semantic analysis on it yet, so we cannot know if the type
+ // can be considered complete.
+ Complete = !F->getTemplatedDecl()->isLateTemplateParsed() &&
+ F->getTemplatedDecl()->isDefined();
+ else if (const CXXRecordDecl *R = dyn_cast<CXXRecordDecl>(*I)) {
+ if (R->isInjectedClassName())
+ continue;
+ if (R->hasDefinition())
+ Complete = MethodsAndNestedClassesComplete(R->getDefinition(),
+ MNCComplete);
+ else
+ Complete = false;
+ }
+ }
+ MNCComplete[RD] = Complete;
+ return Complete;
+}
+
+/// Returns true, if the given CXXRecordDecl is fully defined in this
+/// translation unit, i.e. all methods are defined or pure virtual and all
+/// friends, friend functions and nested classes are fully defined in this
+/// translation unit.
+///
+/// Should only be called from ActOnEndOfTranslationUnit so that all
+/// definitions are actually read.
+static bool IsRecordFullyDefined(const CXXRecordDecl *RD,
+ RecordCompleteMap &RecordsComplete,
+ RecordCompleteMap &MNCComplete) {
+ RecordCompleteMap::iterator Cache = RecordsComplete.find(RD);
+ if (Cache != RecordsComplete.end())
+ return Cache->second;
+ bool Complete = MethodsAndNestedClassesComplete(RD, MNCComplete);
+ for (CXXRecordDecl::friend_iterator I = RD->friend_begin(),
+ E = RD->friend_end();
+ I != E && Complete; ++I) {
+ // Check if friend classes and methods are complete.
+ if (TypeSourceInfo *TSI = (*I)->getFriendType()) {
+ // Friend classes are available as the TypeSourceInfo of the FriendDecl.
+ if (CXXRecordDecl *FriendD = TSI->getType()->getAsCXXRecordDecl())
+ Complete = MethodsAndNestedClassesComplete(FriendD, MNCComplete);
+ else
+ Complete = false;
+ } else {
+ // Friend functions are available through the NamedDecl of FriendDecl.
+ if (const FunctionDecl *FD =
+ dyn_cast<FunctionDecl>((*I)->getFriendDecl()))
+ Complete = FD->isDefined();
+ else
+ // This is a template friend, give up.
+ Complete = false;
+ }
+ }
+ RecordsComplete[RD] = Complete;
+ return Complete;
+}
+
+RecordCompleteMap RecordsComplete;
+RecordCompleteMap MNCComplete;
+
+// END code copied from LLVM's clang/lib/Sema/Sema.cpp
+
+// Is all code that could see `decl` defined in this TU?
+bool isAllRelevantCodeDefined(NamedDecl const * decl) {
+ switch (decl->getAccess()) {
+ case AS_protected:
+ if (!cast<CXXRecordDecl>(decl->getDeclContext())->hasAttr<FinalAttr>()) {
+ break;
+ }
+ LLVM_FALLTHROUGH;
+ case AS_private:
+ if (IsRecordFullyDefined(
+ cast<CXXRecordDecl>(decl->getDeclContext()), RecordsComplete, MNCComplete))
+ {
+ return true;
+ }
+ break;
+ default:
+ break;
+ }
+ return !decl->isExternallyVisible();
+}
+
+enum FakeBoolKind {
+ FBK_No,
+ FBK_BOOL, FBK_First = FBK_BOOL,
+ FBK_Boolean, FBK_FT_Bool, FBK_FcBool, FBK_GLboolean, FBK_NPBool, FBK_TW_BOOL, FBK_UBool,
+ FBK_boolean, FBK_dbus_bool_t, FBK_gboolean, FBK_hb_boot_t, FBK_jboolean, FBK_my_bool,
+ FBK_sal_Bool,
+ FBK_End };
+ // matches loplugin::TypeCheck::AnyBoolean (compilerplugins/clang/check.hxx)
+
+StringRef getName(FakeBoolKind k) {
+ static constexpr llvm::StringLiteral names[] = {
+ "BOOL", "Boolean", "FT_Bool", "FcBool", "GLboolean", "NPBool", "TW_BOOL", "UBool",
+ "boolean", "dbus_bool_t", "gboolean", "hb_boot_t", "jboolean", "my_bool", "sal_Bool"};
+ assert(k >= FBK_First && k < FBK_End);
+ return names[k - FBK_First];
+}
+
+FakeBoolKind isFakeBool(QualType type) {
TypedefType const * t = type->getAs<TypedefType>();
- return t != nullptr && t->getDecl()->getName() == "sal_Bool";
+ if (t != nullptr) {
+ auto const name = t->getDecl()->getName();
+ for (int i = FBK_First; i != FBK_End; ++i) {
+ auto const k = FakeBoolKind(i);
+ if (name == getName(k)) {
+ return k;
+ }
+ }
+ }
+ return FBK_No;
}
-bool isSalBoolArray(QualType type) {
+FakeBoolKind isFakeBoolArray(QualType type) {
auto t = type->getAsArrayTypeUnsafe();
- return t != nullptr
- && (isSalBool(t->getElementType())
- || isSalBoolArray(t->getElementType()));
+ if (t == nullptr) {
+ return FBK_No;
+ }
+ auto const k = isFakeBool(t->getElementType());
+ if (k != FBK_No) {
+ return k;
+ }
+ return isFakeBoolArray(t->getElementType());
}
// It appears that, given a function declaration, there is no way to determine
@@ -78,27 +218,27 @@ BoolOverloadKind isBoolOverloadOf(
if (!mustBeDeleted || f->isDeleted()) {
unsigned n = decl->getNumParams();
if (f->getNumParams() == n) {
- bool hasSB = false;
+ bool hasFB = false;
for (unsigned i = 0; i != n; ++i) {
QualType t1 { decl->getParamDecl(i)->getType() };
- bool isSB = isSalBool(t1);
- bool isSBRef = !isSB && t1->isReferenceType()
- && isSalBool(t1.getNonReferenceType());
+ bool isFB = isFakeBool(t1) != FBK_No;
+ bool isFBRef = !isFB && t1->isReferenceType()
+ && isFakeBool(t1.getNonReferenceType()) != FBK_No;
QualType t2 { f->getParamDecl(i)->getType() };
- if (!(isSB
+ if (!(isFB
? t2->isBooleanType()
- : isSBRef
+ : isFBRef
? (t2->isReferenceType()
&& t2.getNonReferenceType()->isBooleanType())
: t2.getCanonicalType() == t1.getCanonicalType()))
{
return BoolOverloadKind::CheckNext;
}
- hasSB |= isSB || isSBRef;
+ hasFB |= isFB || isFBRef;
}
- return hasSB ? BoolOverloadKind::Yes : BoolOverloadKind::No;
+ return hasFB ? BoolOverloadKind::Yes : BoolOverloadKind::No;
// cheaply protect against the case where decl would have no
- // sal_Bool parameters at all and would match itself
+ // fake bool parameters at all and would match itself
}
}
return BoolOverloadKind::CheckNext;
@@ -142,12 +282,12 @@ bool hasBoolOverload(FunctionDecl const * decl, bool mustBeDeleted) {
return false;
}
-class SalBool:
- public loplugin::FilteringRewritePlugin<SalBool>
+class FakeBool:
+ public loplugin::FunctionAddress<loplugin::FilteringRewritePlugin<FakeBool>>
{
public:
- explicit SalBool(loplugin::InstantiationData const & data):
- FilteringRewritePlugin(data) {}
+ explicit FakeBool(loplugin::InstantiationData const & data):
+ FunctionAddress(data) {}
virtual void run() override;
@@ -190,16 +330,20 @@ private:
bool isInSpecialMainFile(SourceLocation spellingLocation) const;
- bool rewrite(SourceLocation location);
+ bool rewrite(SourceLocation location, FakeBoolKind kind);
- std::set<VarDecl const *> varDecls_;
+ std::map<VarDecl const *, FakeBoolKind> varDecls_;
+ std::map<FieldDecl const *, FakeBoolKind> fieldDecls_;
+ std::map<ParmVarDecl const *, FakeBoolKind> parmVarDecls_;
+ std::map<FunctionDecl const *, FakeBoolKind> functionDecls_;
unsigned int externCContexts_ = 0;
};
-void SalBool::run() {
+void FakeBool::run() {
if (compiler.getLangOpts().CPlusPlus) {
TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
- for (auto decl: varDecls_) {
+ for (auto const dcl: varDecls_) {
+ auto const decl = dcl.first; auto const fbk = dcl.second;
SourceLocation loc { compat::getBeginLoc(decl) };
TypeSourceInfo * tsi = decl->getTypeSourceInfo();
if (tsi != nullptr) {
@@ -221,7 +365,95 @@ void SalBool::run() {
std::string s {
compiler.getSourceManager().getCharacterData(l),
n };
- if (s == "sal_Bool") {
+ if (s == getName(fbk)) {
+ loc = l;
+ break;
+ }
+ if (l == end) {
+ break;
+ }
+ l = l.getLocWithOffset(std::max<unsigned>(n, 1));
+ }
+ }
+ }
+ if (!rewrite(loc, fbk)) {
+ report(
+ DiagnosticsEngine::Warning,
+ "VarDecl, use \"bool\" instead of %0", loc)
+ << decl->getType().getLocalUnqualifiedType()
+ << decl->getSourceRange();
+ }
+ }
+ for (auto const dcl: fieldDecls_) {
+ auto const decl = dcl.first; auto const fbk = dcl.second;
+ SourceLocation loc { compat::getBeginLoc(decl) };
+ TypeSourceInfo * tsi = decl->getTypeSourceInfo();
+ if (tsi != nullptr) {
+ SourceLocation l {
+ compiler.getSourceManager().getExpansionLoc(
+ tsi->getTypeLoc().getBeginLoc()) };
+ SourceLocation end {
+ compiler.getSourceManager().getExpansionLoc(
+ tsi->getTypeLoc().getEndLoc()) };
+ assert(l.isFileID() && end.isFileID());
+ if (l == end
+ || compiler.getSourceManager().isBeforeInTranslationUnit(
+ l, end))
+ {
+ for (;;) {
+ unsigned n = Lexer::MeasureTokenLength(
+ l, compiler.getSourceManager(),
+ compiler.getLangOpts());
+ std::string s {
+ compiler.getSourceManager().getCharacterData(l),
+ n };
+ if (s == getName(fbk)) {
+ loc = l;
+ break;
+ }
+ if (l == end) {
+ break;
+ }
+ l = l.getLocWithOffset(std::max<unsigned>(n, 1));
+ }
+ }
+ }
+ if (!rewrite(loc, fbk)) {
+ report(
+ DiagnosticsEngine::Warning,
+ "FieldDecl, use \"bool\" instead of %0", loc)
+ << decl->getType().getLocalUnqualifiedType() << decl->getSourceRange();
+ }
+ }
+ auto const ignoredFns = getFunctionsWithAddressTaken();
+ for (auto const dcl: parmVarDecls_) {
+ auto const decl = dcl.first; auto const fbk = dcl.second;
+ FunctionDecl const * f = cast<FunctionDecl>(decl->getDeclContext())->getCanonicalDecl();
+ if (ignoredFns.find(f) != ignoredFns.end()) {
+ continue;
+ }
+ SourceLocation loc { compat::getBeginLoc(decl) };
+ TypeSourceInfo * tsi = decl->getTypeSourceInfo();
+ if (tsi != nullptr) {
+ SourceLocation l {
+ compiler.getSourceManager().getExpansionLoc(
+ tsi->getTypeLoc().getBeginLoc()) };
+ SourceLocation end {
+ compiler.getSourceManager().getExpansionLoc(
+ tsi->getTypeLoc().getEndLoc()) };
+ assert(l.isFileID() && end.isFileID());
+ if (l == end
+ || (compiler.getSourceManager()
+ .isBeforeInTranslationUnit(l, end)))
+ {
+ for (;;) {
+ unsigned n = Lexer::MeasureTokenLength(
+ l, compiler.getSourceManager(),
+ compiler.getLangOpts());
+ std::string s {
+ compiler.getSourceManager().getCharacterData(l),
+ n };
+ if (s == getName(fbk)) {
loc = l;
break;
}
@@ -232,31 +464,114 @@ void SalBool::run() {
}
}
}
- if (!rewrite(loc)) {
+ // Only rewrite declarations in include files if a
+ // definition is also seen, to avoid compilation of a
+ // definition (in a main file only processed later) to fail
+ // with a "mismatch" error before the rewriter had a chance
+ // to act upon the definition (but use the heuristic of
+ // assuming pure virtual functions do not have definitions);
+ // also, do not automatically rewrite functions that could
+ // implicitly override depend base functions (and thus stop
+ // doing so after the rewrite; note that this is less
+ // dangerous for return types than for parameter types,
+ // where the function would still implicitly override and
+ // cause a compilation error due to the incompatible return
+ // type):
+ OverrideKind k = getOverrideKind(f);
+ if (!((compiler.getSourceManager().isInMainFile(
+ compiler.getSourceManager().getSpellingLoc(
+ dyn_cast<FunctionDecl>(
+ decl->getDeclContext())
+ ->getNameInfo().getLoc()))
+ || f->isDefined() || f->isPure())
+ && k != OverrideKind::MAYBE && rewrite(loc, fbk)))
+ {
report(
DiagnosticsEngine::Warning,
- "VarDecl, use \"bool\" instead of \"sal_Bool\"", loc)
+ ("ParmVarDecl, use \"bool\" instead of"
+ " %0%1"),
+ loc)
+ << decl->getType().getNonReferenceType().getLocalUnqualifiedType()
+ << (k == OverrideKind::MAYBE
+ ? (" (unless this member function overrides a"
+ " dependent base member function, even"
+ " though it is not marked 'override')")
+ : "")
+ << decl->getSourceRange();
+ }
+ }
+ for (auto const dcl: functionDecls_) {
+ auto const decl = dcl.first; auto const fbk = dcl.second;
+ FunctionDecl const * f = decl->getCanonicalDecl();
+ if (ignoredFns.find(f) != ignoredFns.end()) {
+ continue;
+ }
+ SourceLocation loc { compat::getBeginLoc(decl) };
+ SourceLocation l { compiler.getSourceManager().getExpansionLoc(
+ loc) };
+ SourceLocation end { compiler.getSourceManager().getExpansionLoc(
+ decl->getNameInfo().getLoc()) };
+ assert(l.isFileID() && end.isFileID());
+ if (compiler.getSourceManager().isBeforeInTranslationUnit(l, end)) {
+ while (l != end) {
+ unsigned n = Lexer::MeasureTokenLength(
+ l, compiler.getSourceManager(), compiler.getLangOpts());
+ std::string s {
+ compiler.getSourceManager().getCharacterData(l), n };
+ if (s == getName(fbk)) {
+ loc = l;
+ break;
+ }
+ l = l.getLocWithOffset(std::max<unsigned>(n, 1));
+ }
+ }
+ // Only rewrite declarations in include files if a definition is
+ // also seen, to avoid compilation of a definition (in a main file
+ // only processed later) to fail with a "mismatch" error before the
+ // rewriter had a chance to act upon the definition (but use the
+ // heuristic of assuming pure virtual functions do not have
+ // definitions):
+ if (!((compiler.getSourceManager().isInMainFile(
+ compiler.getSourceManager().getSpellingLoc(
+ decl->getNameInfo().getLoc()))
+ || f->isDefined() || f->isPure())
+ && rewrite(loc, fbk)))
+ {
+ report(
+ DiagnosticsEngine::Warning,
+ "use \"bool\" instead of %0 as return type%1",
+ loc)
+ << decl->getReturnType().getNonReferenceType().getLocalUnqualifiedType()
+ << (getOverrideKind(f) == OverrideKind::MAYBE
+ ? (" (unless this member function overrides a dependent"
+ " base member function, even though it is not marked"
+ " 'override')")
+ : "")
<< decl->getSourceRange();
}
}
}
}
-bool SalBool::VisitUnaryAddrOf(UnaryOperator const * op) {
+bool FakeBool::VisitUnaryAddrOf(UnaryOperator const * op) {
+ FunctionAddress::VisitUnaryAddrOf(op);
Expr const * e1 = op->getSubExpr()->IgnoreParenCasts();
- if (isSalBool(e1->getType())) {
- DeclRefExpr const * e2 = dyn_cast<DeclRefExpr>(e1);
- if (e2 != nullptr) {
+ if (isFakeBool(e1->getType()) != FBK_No) {
+ if (DeclRefExpr const * e2 = dyn_cast<DeclRefExpr>(e1)) {
VarDecl const * d = dyn_cast<VarDecl>(e2->getDecl());
if (d != nullptr) {
varDecls_.erase(d);
}
+ } else if (auto const e3 = dyn_cast<MemberExpr>(e1)) {
+ if (auto const d = dyn_cast<FieldDecl>(e3->getMemberDecl())) {
+ fieldDecls_.erase(d);
+ }
}
}
return true;
}
-bool SalBool::VisitCallExpr(CallExpr * expr) {
+bool FakeBool::VisitCallExpr(CallExpr * expr) {
Decl const * d = expr->getCalleeDecl();
FunctionProtoType const * ft = nullptr;
if (d != nullptr) {
@@ -290,7 +605,7 @@ bool SalBool::VisitCallExpr(CallExpr * expr) {
bool b = false;
if (t->isLValueReferenceType()) {
t = t.getNonReferenceType();
- b = !t.isConstQualified() && isSalBool(t);
+ b = !t.isConstQualified() && isFakeBool(t) != FBK_No;
} else if (t->isPointerType()) {
for (;;) {
auto t2 = t->getAs<clang::PointerType>();
@@ -299,16 +614,19 @@ bool SalBool::VisitCallExpr(CallExpr * expr) {
}
t = t2->getPointeeType();
}
- b = isSalBool(t);
+ b = isFakeBool(t) != FBK_No;
}
if (b && i < expr->getNumArgs()) {
- DeclRefExpr * ref = dyn_cast<DeclRefExpr>(
- expr->getArg(i)->IgnoreParenImpCasts());
- if (ref != nullptr) {
+ auto const e1 = expr->getArg(i)->IgnoreParenImpCasts();
+ if (DeclRefExpr * ref = dyn_cast<DeclRefExpr>(e1)) {
VarDecl const * d = dyn_cast<VarDecl>(ref->getDecl());
if (d != nullptr) {
varDecls_.erase(d);
}
+ } else if (auto const e2 = dyn_cast<MemberExpr>(e1)) {
+ if (auto const d = dyn_cast<FieldDecl>(e2->getMemberDecl())) {
+ fieldDecls_.erase(d);
+ }
}
}
}
@@ -316,11 +634,12 @@ bool SalBool::VisitCallExpr(CallExpr * expr) {
return true;
}
-bool SalBool::VisitCStyleCastExpr(CStyleCastExpr * expr) {
+bool FakeBool::VisitCStyleCastExpr(CStyleCastExpr * expr) {
if (ignoreLocation(expr)) {
return true;
}
- if (isSalBool(expr->getType())) {
+ auto const k = isFakeBool(expr->getType());
+ if (k != FBK_No) {
SourceLocation loc { compat::getBeginLoc(expr) };
while (compiler.getSourceManager().isMacroArgExpansion(loc)) {
loc = compiler.getSourceManager().getImmediateMacroCallerLoc(loc);
@@ -328,7 +647,7 @@ bool SalBool::VisitCStyleCastExpr(CStyleCastExpr * expr) {
if (compiler.getSourceManager().isMacroBodyExpansion(loc)) {
StringRef name { Lexer::getImmediateMacroName(
loc, compiler.getSourceManager(), compiler.getLangOpts()) };
- if (name == "sal_False" || name == "sal_True") {
+ if (k == FBK_sal_Bool && (name == "sal_False" || name == "sal_True")) {
auto callLoc = compiler.getSourceManager()
.getImmediateMacroCallerLoc(loc);
if (!isSharedCAndCppCode(callLoc)) {
@@ -345,7 +664,7 @@ bool SalBool::VisitCStyleCastExpr(CStyleCastExpr * expr) {
// arguments to CPPUNIT_ASSERT_EQUAL:
return true;
}
- bool b = name == "sal_True";
+ bool b = k == FBK_sal_Bool && name == "sal_True";
if (rewriter != nullptr) {
auto callSpellLoc = compiler.getSourceManager()
.getSpellingLoc(callLoc);
@@ -380,29 +699,34 @@ bool SalBool::VisitCStyleCastExpr(CStyleCastExpr * expr) {
return true;
}
-bool SalBool::VisitCXXStaticCastExpr(CXXStaticCastExpr * expr) {
+bool FakeBool::VisitCXXStaticCastExpr(CXXStaticCastExpr * expr) {
if (ignoreLocation(expr)) {
return true;
}
- if (isSalBool(expr->getType())
- && !isInSpecialMainFile(
+ auto const k = isFakeBool(expr->getType());
+ if (k == FBK_No) {
+ return true;
+ }
+ if (k == FBK_sal_Bool
+ && isInSpecialMainFile(
compiler.getSourceManager().getSpellingLoc(compat::getBeginLoc(expr))))
{
- report(
- DiagnosticsEngine::Warning,
- "CXXStaticCastExpr, suspicious cast from %0 to %1",
- compat::getBeginLoc(expr))
- << expr->getSubExpr()->IgnoreParenImpCasts()->getType()
- << expr->getType() << expr->getSourceRange();
+ return true;
}
+ report(
+ DiagnosticsEngine::Warning,
+ "CXXStaticCastExpr, suspicious cast from %0 to %1",
+ compat::getBeginLoc(expr))
+ << expr->getSubExpr()->IgnoreParenImpCasts()->getType()
+ << expr->getType() << expr->getSourceRange();
return true;
}
-bool SalBool::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr * expr) {
+bool FakeBool::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr * expr) {
if (ignoreLocation(expr)) {
return true;
}
- if (isSalBool(expr->getType())) {
+ if (isFakeBool(expr->getType()) != FBK_No) {
report(
DiagnosticsEngine::Warning,
"CXXFunctionalCastExpr, suspicious cast from %0 to %1",
@@ -413,11 +737,13 @@ bool SalBool::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr * expr) {
return true;
}
-bool SalBool::VisitImplicitCastExpr(ImplicitCastExpr * expr) {
+bool FakeBool::VisitImplicitCastExpr(ImplicitCastExpr * expr) {
+ FunctionAddress::VisitImplicitCastExpr(expr);
if (ignoreLocation(expr)) {
return true;
}
- if (!isSalBool(expr->getType())) {
+ auto const k = isFakeBool(expr->getType());
+ if (k == FBK_No) {
return true;
}
auto l = compat::getBeginLoc(expr);
@@ -427,7 +753,11 @@ bool SalBool::VisitImplicitCastExpr(ImplicitCastExpr * expr) {
if (compiler.getSourceManager().isMacroBodyExpansion(l)) {
auto n = Lexer::getImmediateMacroName(
l, compiler.getSourceManager(), compiler.getLangOpts());
- if (n == "sal_False" || n == "sal_True") {
+ if ((k == FBK_GLboolean && (n == "GL_FALSE" || n == "GL_TRUE"))
+ || (k == FBK_UBool && (n == "FALSE" || n == "TRUE"))
+ || (k == FBK_jboolean && (n == "JNI_FALSE" || n == "JNI_TRUE"))
+ || (k == FBK_sal_Bool && (n == "sal_False" || n == "sal_True")))
+ {
return true;
}
}
@@ -454,13 +784,13 @@ bool SalBool::VisitImplicitCastExpr(ImplicitCastExpr * expr) {
}
}
report(
- DiagnosticsEngine::Warning, "conversion from %0 to sal_Bool",
+ DiagnosticsEngine::Warning, "conversion from %0 to %1",
compat::getBeginLoc(expr))
- << t << expr->getSourceRange();
+ << t << expr->getType() << expr->getSourceRange();
return true;
}
-bool SalBool::VisitReturnStmt(ReturnStmt const * stmt) {
+bool FakeBool::VisitReturnStmt(ReturnStmt const * stmt) {
// Just enough to avoid warnings in rtl_getUriCharClass (sal/rtl/uri.cxx),
// which has
//
@@ -488,7 +818,7 @@ bool SalBool::VisitReturnStmt(ReturnStmt const * stmt) {
}
t = t2->getPointeeType();
}
- if (!isSalBool(t)) {
+ if (isFakeBool(t) != FBK_sal_Bool) {
return true;
}
auto e2 = dyn_cast<ArraySubscriptExpr>(e->IgnoreParenImpCasts());
@@ -507,92 +837,30 @@ bool SalBool::VisitReturnStmt(ReturnStmt const * stmt) {
return true;
}
-bool SalBool::WalkUpFromParmVarDecl(ParmVarDecl const * decl) {
+bool FakeBool::WalkUpFromParmVarDecl(ParmVarDecl const * decl) {
return VisitParmVarDecl(decl);
}
-bool SalBool::VisitParmVarDecl(ParmVarDecl const * decl) {
+bool FakeBool::VisitParmVarDecl(ParmVarDecl const * decl) {
if (ignoreLocation(decl)) {
return true;
}
- if (isSalBool(decl->getType().getNonReferenceType())) {
+ auto const fbk = isFakeBool(decl->getType().getNonReferenceType());
+ if (fbk != FBK_No) {
FunctionDecl const * f = dyn_cast<FunctionDecl>(decl->getDeclContext());
if (f != nullptr) { // e.g.: typedef sal_Bool (* FuncPtr )( sal_Bool );
f = f->getCanonicalDecl();
- if (!(hasCLanguageLinkageType(f)
- || (isInUnoIncludeFile(f)
- && (!f->isInlined() || f->hasAttr<DeprecatedAttr>()
- || decl->getType()->isReferenceType()
- || hasBoolOverload(f, false)))
- || f->isDeleted() || hasBoolOverload(f, true)))
+ if (isAllRelevantCodeDefined(f)
+ && !(hasCLanguageLinkageType(f)
+ || (fbk == FBK_sal_Bool && isInUnoIncludeFile(f)
+ && (!f->isInlined() || f->hasAttr<DeprecatedAttr>()
+ || decl->getType()->isReferenceType()
+ || hasBoolOverload(f, false)))
+ || f->isDeleted() || hasBoolOverload(f, true)))
{
OverrideKind k = getOverrideKind(f);
if (k != OverrideKind::YES) {
- SourceLocation loc { compat::getBeginLoc(decl) };
- TypeSourceInfo * tsi = decl->getTypeSourceInfo();
- if (tsi != nullptr) {
- SourceLocation l {
- compiler.getSourceManager().getExpansionLoc(
- tsi->getTypeLoc().getBeginLoc()) };
- SourceLocation end {
- compiler.getSourceManager().getExpansionLoc(
- tsi->getTypeLoc().getEndLoc()) };
- assert(l.isFileID() && end.isFileID());
- if (l == end
- || (compiler.getSourceManager()
- .isBeforeInTranslationUnit(l, end)))
- {
- for (;;) {
- unsigned n = Lexer::MeasureTokenLength(
- l, compiler.getSourceManager(),
- compiler.getLangOpts());
- std::string s {
- compiler.getSourceManager().getCharacterData(l),
- n };
- if (s == "sal_Bool") {
- loc = l;
- break;
- }
- if (l == end) {
- break;
- }
- l = l.getLocWithOffset(std::max<unsigned>(n, 1));
- }
- }
- }
- // Only rewrite declarations in include files if a
- // definition is also seen, to avoid compilation of a
- // definition (in a main file only processed later) to fail
- // with a "mismatch" error before the rewriter had a chance
- // to act upon the definition (but use the heuristic of
- // assuming pure virtual functions do not have definitions);
- // also, do not automatically rewrite functions that could
- // implicitly override depend base functions (and thus stop
- // doing so after the rewrite; note that this is less
- // dangerous for return types than for parameter types,
- // where the function would still implicitly override and
- // cause a compilation error due to the incompatible return
- // type):
- if (!((compiler.getSourceManager().isInMainFile(
- compiler.getSourceManager().getSpellingLoc(
- dyn_cast<FunctionDecl>(
- decl->getDeclContext())
- ->getNameInfo().getLoc()))
- || f->isDefined() || f->isPure())
- && k != OverrideKind::MAYBE && rewrite(loc)))
- {
- report(
- DiagnosticsEngine::Warning,
- ("ParmVarDecl, use \"bool\" instead of"
- " \"sal_Bool\"%0"),
- loc)
- << (k == OverrideKind::MAYBE
- ? (" (unless this member function overrides a"
- " dependent base member function, even"
- " though it is not marked 'override')")
- : "")
- << decl->getSourceRange();
- }
+ parmVarDecls_.insert({decl, fbk});
}
}
}
@@ -600,96 +868,92 @@ bool SalBool::VisitParmVarDecl(ParmVarDecl const * decl) {
return true;
}
-bool SalBool::WalkUpFromVarDecl(VarDecl const * decl) {
+bool FakeBool::WalkUpFromVarDecl(VarDecl const * decl) {
return VisitVarDecl(decl);
}
-bool SalBool::VisitVarDecl(VarDecl const * decl) {
+bool FakeBool::VisitVarDecl(VarDecl const * decl) {
if (ignoreLocation(decl)) {
return true;
}
- if (!decl->isExternC()
- && (isSalBool(decl->getType()) || isSalBoolArray(decl->getType()))
- && !isInSpecialMainFile(
- compiler.getSourceManager().getSpellingLoc(compat::getBeginLoc(decl))))
+ if (decl->isExternC()) {
+ return true;
+ }
+ auto k = isFakeBool(decl->getType());
+ if (k == FBK_No) {
+ k = isFakeBoolArray(decl->getType());
+ }
+ if (k == FBK_No) {
+ return true;
+ }
+ auto const loc = compat::getBeginLoc(decl);
+ if (k == FBK_sal_Bool
+ && isInSpecialMainFile(
+ compiler.getSourceManager().getSpellingLoc(loc)))
+ {
+ return true;
+ }
+ auto l = loc;
+ while (compiler.getSourceManager().isMacroArgExpansion(l)) {
+ l = compiler.getSourceManager().getImmediateMacroCallerLoc(l);
+ }
+ if (compiler.getSourceManager().isMacroBodyExpansion(l)
+ && isSharedCAndCppCode(compiler.getSourceManager().getImmediateMacroCallerLoc(l)))
{
- varDecls_.insert(decl);
+ return true;
}
+ varDecls_.insert({decl, k});
return true;
}
-bool SalBool::WalkUpFromFieldDecl(FieldDecl const * decl) {
+bool FakeBool::WalkUpFromFieldDecl(FieldDecl const * decl) {
return VisitFieldDecl(decl);
}
-bool SalBool::VisitFieldDecl(FieldDecl const * decl) {
+bool FakeBool::VisitFieldDecl(FieldDecl const * decl) {
if (ignoreLocation(decl)) {
return true;
}
- if ((isSalBool(decl->getType()) || isSalBoolArray(decl->getType()))
- && !isInSpecialMainFile(
+ auto k = isFakeBool(decl->getType());
+ if (k == FBK_No) {
+ k = isFakeBoolArray(decl->getType());
+ }
+ if (k == FBK_No) {
+ return true;
+ }
+ if (!isAllRelevantCodeDefined(decl)) {
+ return true;
+ }
+ if (k == FBK_sal_Bool
+ && isInSpecialMainFile(
compiler.getSourceManager().getSpellingLoc(compat::getBeginLoc(decl))))
{
- TagDecl const * td = dyn_cast<TagDecl>(decl->getDeclContext());
- assert(td != nullptr);
- if (!(((td->isStruct() || td->isUnion()) && td->isExternCContext())
- || isInUnoIncludeFile(
- compiler.getSourceManager().getSpellingLoc(
- decl->getLocation()))))
- {
- SourceLocation loc { compat::getBeginLoc(decl) };
- TypeSourceInfo * tsi = decl->getTypeSourceInfo();
- if (tsi != nullptr) {
- SourceLocation l {
- compiler.getSourceManager().getExpansionLoc(
- tsi->getTypeLoc().getBeginLoc()) };
- SourceLocation end {
- compiler.getSourceManager().getExpansionLoc(
- tsi->getTypeLoc().getEndLoc()) };
- assert(l.isFileID() && end.isFileID());
- if (l == end
- || compiler.getSourceManager().isBeforeInTranslationUnit(
- l, end))
- {
- for (;;) {
- unsigned n = Lexer::MeasureTokenLength(
- l, compiler.getSourceManager(),
- compiler.getLangOpts());
- std::string s {
- compiler.getSourceManager().getCharacterData(l),
- n };
- if (s == "sal_Bool") {
- loc = l;
- break;
- }
- if (l == end) {
- break;
- }
- l = l.getLocWithOffset(std::max<unsigned>(n, 1));
- }
- }
- }
- if (!rewrite(loc)) {
- report(
- DiagnosticsEngine::Warning,
- "FieldDecl, use \"bool\" instead of \"sal_Bool\"", loc)
- << decl->getSourceRange();
- }
- }
+ return true;
+ }
+ TagDecl const * td = dyn_cast<TagDecl>(decl->getDeclContext());
+ assert(td != nullptr);
+ if (!(((td->isStruct() || td->isUnion()) && td->isExternCContext())
+ || isInUnoIncludeFile(
+ compiler.getSourceManager().getSpellingLoc(
+ decl->getLocation()))))
+ {
+ fieldDecls_.insert({decl, k});
}
return true;
}
-bool SalBool::WalkUpFromFunctionDecl(FunctionDecl const * decl) {
+bool FakeBool::WalkUpFromFunctionDecl(FunctionDecl const * decl) {
return VisitFunctionDecl(decl);
}
-bool SalBool::VisitFunctionDecl(FunctionDecl const * decl) {
+bool FakeBool::VisitFunctionDecl(FunctionDecl const * decl) {
if (ignoreLocation(decl)) {
return true;
}
- if (isSalBool(decl->getReturnType().getNonReferenceType())
- && !(decl->isDeletedAsWritten() && isa<CXXConversionDecl>(decl)))
+ auto const fbk = isFakeBool(decl->getReturnType().getNonReferenceType());
+ if (fbk != FBK_No
+ && !(decl->isDeletedAsWritten() && isa<CXXConversionDecl>(decl))
+ && isAllRelevantCodeDefined(decl))
{
FunctionDecl const * f = decl->getCanonicalDecl();
OverrideKind k = getOverrideKind(f);
@@ -698,68 +962,28 @@ bool SalBool::VisitFunctionDecl(FunctionDecl const * decl) {
|| (isInUnoIncludeFile(f)
&& (!f->isInlined() || f->hasAttr<DeprecatedAttr>()))))
{
- SourceLocation loc { compat::getBeginLoc(decl) };
- SourceLocation l { compiler.getSourceManager().getExpansionLoc(
- loc) };
- SourceLocation end { compiler.getSourceManager().getExpansionLoc(
- decl->getNameInfo().getLoc()) };
- assert(l.isFileID() && end.isFileID());
- if (compiler.getSourceManager().isBeforeInTranslationUnit(l, end)) {
- while (l != end) {
- unsigned n = Lexer::MeasureTokenLength(
- l, compiler.getSourceManager(), compiler.getLangOpts());
- std::string s {
- compiler.getSourceManager().getCharacterData(l), n };
- if (s == "sal_Bool") {
- loc = l;
- break;
- }
- l = l.getLocWithOffset(std::max<unsigned>(n, 1));
- }
- }
- // Only rewrite declarations in include files if a definition is
- // also seen, to avoid compilation of a definition (in a main file
- // only processed later) to fail with a "mismatch" error before the
- // rewriter had a chance to act upon the definition (but use the
- // heuristic of assuming pure virtual functions do not have
- // definitions):
- if (!((compiler.getSourceManager().isInMainFile(
- compiler.getSourceManager().getSpellingLoc(
- decl->getNameInfo().getLoc()))
- || f->isDefined() || f->isPure())
- && rewrite(loc)))
- {
- report(
- DiagnosticsEngine::Warning,
- "use \"bool\" instead of \"sal_Bool\" as return type%0",
- loc)
- << (k == OverrideKind::MAYBE
- ? (" (unless this member function overrides a dependent"
- " base member function, even though it is not marked"
- " 'override')")
- : "")
- << decl->getSourceRange();
- }
+ functionDecls_.insert({decl, fbk});
}
}
return true;
}
-bool SalBool::VisitValueDecl(ValueDecl const * decl) {
+bool FakeBool::VisitValueDecl(ValueDecl const * decl) {
if (ignoreLocation(decl)) {
return true;
}
- if (isSalBool(decl->getType()) && !rewrite(compat::getBeginLoc(decl))) {
+ auto const k = isFakeBool(decl->getType());
+ if (k != FBK_No && !rewrite(compat::getBeginLoc(decl), k)) {
report(
DiagnosticsEngine::Warning,
- "ValueDecl, use \"bool\" instead of \"sal_Bool\"",
+ "ValueDecl, use \"bool\" instead of %0",
compat::getBeginLoc(decl))
- << decl->getSourceRange();
+ << decl->getType() << decl->getSourceRange();
}
return true;
}
-bool SalBool::TraverseStaticAssertDecl(StaticAssertDecl * decl) {
+bool FakeBool::TraverseStaticAssertDecl(StaticAssertDecl * decl) {
// Ignore special code like
//
// static_cast<sal_Bool>(true) == sal_True
@@ -772,7 +996,7 @@ bool SalBool::TraverseStaticAssertDecl(StaticAssertDecl * decl) {
|| RecursiveASTVisitor::TraverseStaticAssertDecl(decl);
}
-bool SalBool::TraverseLinkageSpecDecl(LinkageSpecDecl * decl) {
+bool FakeBool::TraverseLinkageSpecDecl(LinkageSpecDecl * decl) {
assert(externCContexts_ != std::numeric_limits<unsigned int>::max()); //TODO
++externCContexts_;
bool ret = RecursiveASTVisitor::TraverseLinkageSpecDecl(decl);
@@ -781,7 +1005,7 @@ bool SalBool::TraverseLinkageSpecDecl(LinkageSpecDecl * decl) {
return ret;
}
-bool SalBool::isFromCIncludeFile(SourceLocation spellingLocation) const {
+bool FakeBool::isFromCIncludeFile(SourceLocation spellingLocation) const {
return !compiler.getSourceManager().isInMainFile(spellingLocation)
&& (StringRef(
compiler.getSourceManager().getPresumedLoc(spellingLocation)
@@ -789,7 +1013,7 @@ bool SalBool::isFromCIncludeFile(SourceLocation spellingLocation) const {
.endswith(".h"));
}
-bool SalBool::isSharedCAndCppCode(SourceLocation location) const {
+bool FakeBool::isSharedCAndCppCode(SourceLocation location) const {
// Assume that code is intended to be shared between C and C++ if it comes
// from an include file ending in .h, and is either in an extern "C" context
// or the body of a macro definition:
@@ -799,7 +1023,7 @@ bool SalBool::isSharedCAndCppCode(SourceLocation location) const {
|| compiler.getSourceManager().isMacroBodyExpansion(location));
}
-bool SalBool::isInSpecialMainFile(SourceLocation spellingLocation) const {
+bool FakeBool::isInSpecialMainFile(SourceLocation spellingLocation) const {
if (!compiler.getSourceManager().isInMainFile(spellingLocation)) {
return false;
}
@@ -809,7 +1033,7 @@ bool SalBool::isInSpecialMainFile(SourceLocation spellingLocation) const {
// TODO: the offset checks
}
-bool SalBool::rewrite(SourceLocation location) {
+bool FakeBool::rewrite(SourceLocation location, FakeBoolKind kind) {
if (rewriter != nullptr) {
//TODO: "::sal_Bool" -> "bool", not "::bool"
SourceLocation loc { compiler.getSourceManager().getExpansionLoc(
@@ -817,7 +1041,7 @@ bool SalBool::rewrite(SourceLocation location) {
unsigned n = Lexer::MeasureTokenLength(
loc, compiler.getSourceManager(), compiler.getLangOpts());
if (std::string(compiler.getSourceManager().getCharacterData(loc), n)
- == "sal_Bool")
+ == getName(kind))
{
return replaceText(loc, n, "bool");
}
@@ -825,7 +1049,7 @@ bool SalBool::rewrite(SourceLocation location) {
return false;
}
-loplugin::Plugin::Registration<SalBool> X("salbool", true);
+loplugin::Plugin::Registration<FakeBool> X("fakebool", true);
}
diff --git a/compilerplugins/clang/test/salbool.cxx b/compilerplugins/clang/test/fakebool.cxx
index da861afe73be..26b5d7e2f791 100644
--- a/compilerplugins/clang/test/salbool.cxx
+++ b/compilerplugins/clang/test/fakebool.cxx
@@ -11,8 +11,12 @@
#include <sal/types.h>
+namespace {
+
struct S {
- sal_Bool b; // expected-error {{FieldDecl, use "bool" instead of "sal_Bool" [loplugin:salbool]}}
+ sal_Bool b; // expected-error {{FieldDecl, use "bool" instead of 'sal_Bool' (aka 'unsigned char') [loplugin:fakebool]}}
};
+}
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
diff --git a/connectivity/source/drivers/evoab2/NResultSet.cxx b/connectivity/source/drivers/evoab2/NResultSet.cxx
index 28c7278f2010..5a7c1ebea4dd 100644
--- a/connectivity/source/drivers/evoab2/NResultSet.cxx
+++ b/connectivity/source/drivers/evoab2/NResultSet.cxx
@@ -255,7 +255,7 @@ getValue( EContact* pContact, sal_Int32 nColumnNum, GType nType, GValue* pStackV
return false;
GParamSpec* pSpec = pSpecs->pField;
- gboolean bIsSplittedColumn = pSpecs->bIsSplittedValue;
+ bool bIsSplittedColumn = pSpecs->bIsSplittedValue;
_out_rWasNull = true;
if ( !pSpec || !pContact)
diff --git a/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx b/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
index 2422f44bd299..35c020f4a738 100644
--- a/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
+++ b/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
@@ -536,7 +536,7 @@ Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getCrossReference(
bool java_sql_DatabaseMetaData::impl_callBooleanMethod( const char* _pMethodName, jmethodID& _inout_MethodID )
{
m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_METHOD, _pMethodName );
- jboolean out( java_lang_Object::callBooleanMethod(_pMethodName,_inout_MethodID) );
+ bool out( java_lang_Object::callBooleanMethod(_pMethodName,_inout_MethodID) );
m_aLogger.log< const sal_Char*, bool>( LogLevel::FINEST, STR_LOG_META_DATA_RESULT, _pMethodName, out );
return out;
}
@@ -578,7 +578,7 @@ bool java_sql_DatabaseMetaData::impl_callBooleanMethodWithIntArg( const char* _p
{
m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_METHOD_ARG1, _pMethodName, _nArgument );
- jboolean out( callBooleanMethodWithIntArg(_pMethodName,_inout_MethodID,_nArgument) );
+ bool out( callBooleanMethodWithIntArg(_pMethodName,_inout_MethodID,_nArgument) );
m_aLogger.log< const sal_Char*, bool >( LogLevel::FINEST, STR_LOG_META_DATA_RESULT, _pMethodName, out );
return out;
@@ -990,7 +990,7 @@ sal_Bool SAL_CALL java_sql_DatabaseMetaData::supportsConvert( sal_Int32 fromType
static const char* const pMethodName = "supportsConvert";
m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_METHOD_ARG2, pMethodName, fromType, toType );
- jboolean out( false );
+ bool out( false );
SDBThreadAttach t;
{
@@ -1332,7 +1332,7 @@ sal_Bool SAL_CALL java_sql_DatabaseMetaData::supportsResultSetConcurrency( sal_I
static const char* const pMethodName = "supportsResultSetConcurrency";
m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_METHOD_ARG2, pMethodName, setType, concurrency );
- jboolean out( false );
+ bool out( false );
SDBThreadAttach t;
{
diff --git a/connectivity/source/drivers/jdbc/JStatement.cxx b/connectivity/source/drivers/jdbc/JStatement.cxx
index f6ad7f1d279b..72f205995639 100644
--- a/connectivity/source/drivers/jdbc/JStatement.cxx
+++ b/connectivity/source/drivers/jdbc/JStatement.cxx
@@ -213,7 +213,7 @@ sal_Bool SAL_CALL java_sql_Statement_Base::execute( const OUString& sql )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(java_sql_Statement_BASE::rBHelper.bDisposed);
- jboolean out(false);
+ bool out(false);
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java environment has been deleted!");
{
createStatement(t.pEnv);
diff --git a/connectivity/source/drivers/jdbc/Object.cxx b/connectivity/source/drivers/jdbc/Object.cxx
index 13f9c79da482..b3516a15f6ac 100644
--- a/connectivity/source/drivers/jdbc/Object.cxx
+++ b/connectivity/source/drivers/jdbc/Object.cxx
@@ -255,7 +255,7 @@ void java_lang_Object::obtainMethodId_throwRuntime(JNIEnv* _pEnv,const char* _pM
bool java_lang_Object::callBooleanMethod( const char* _pMethodName, jmethodID& _inout_MethodID ) const
{
- jboolean out( false );
+ bool out( false );
SDBThreadAttach t;
OSL_ENSURE( t.pEnv, "java_lang_Object::callBooleanMethod: no Java environment anymore!" );
@@ -269,7 +269,7 @@ bool java_lang_Object::callBooleanMethod( const char* _pMethodName, jmethodID& _
bool java_lang_Object::callBooleanMethodWithIntArg( const char* _pMethodName, jmethodID& _inout_MethodID, sal_Int32 _nArgument ) const
{
- jboolean out( false );
+ bool out( false );
SDBThreadAttach t;
OSL_ENSURE( t.pEnv, "java_lang_Object::callBooleanMethodWithIntArg: no Java environment anymore!" );
obtainMethodId_throwSQL(t.pEnv, _pMethodName,"(I)Z", _inout_MethodID);
diff --git a/connectivity/source/drivers/jdbc/Reader.cxx b/connectivity/source/drivers/jdbc/Reader.cxx
index 1c7bfe9660df..5f49db97f05b 100644
--- a/connectivity/source/drivers/jdbc/Reader.cxx
+++ b/connectivity/source/drivers/jdbc/Reader.cxx
@@ -78,7 +78,7 @@ sal_Int32 SAL_CALL java_io_Reader::available( )
{
if(m_buf)
return 1;
- jboolean out;
+ bool out;
SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java environment has been deleted!");
{
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx b/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx
index b0d83965f2f3..ddaba5fc9e45 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_prepared_resultset.cxx
@@ -111,9 +111,9 @@ bool OPreparedResultSet::fetchResult()
}
for (sal_Int32 i = 0; i < m_nColumnCount; ++i)
{
- m_aMetaData[i].is_null = 0;
+ m_aMetaData[i].is_null = false;
m_aMetaData[i].length = 0l;
- m_aMetaData[i].error = 0;
+ m_aMetaData[i].error = false;
m_aData[i].is_null = &m_aMetaData[i].is_null;
m_aData[i].buffer_length = m_aFields[i].type == MYSQL_TYPE_BLOB ? 0 : m_aFields[i].length;
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx
index e9082dfa05e9..902a1d93edb0 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx
@@ -182,7 +182,7 @@ void SAL_CALL OPreparedStatement::setString(sal_Int32 parameter, const OUString&
m_binds[nIndex].buffer_type = MYSQL_TYPE_STRING;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, stringie.getStr(), MYSQL_TYPE_STRING,
stringie.getLength());
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
m_bindMetas[nIndex].length = stringie.getLength();
}
@@ -228,7 +228,7 @@ void SAL_CALL OPreparedStatement::setBoolean(sal_Int32 parameter, sal_Bool x)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_TINY;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_TINY);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setByte(sal_Int32 parameter, sal_Int8 x)
@@ -240,7 +240,7 @@ void SAL_CALL OPreparedStatement::setByte(sal_Int32 parameter, sal_Int8 x)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_TINY;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_TINY);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setDate(sal_Int32 parameter, const Date& aData)
@@ -258,7 +258,7 @@ void SAL_CALL OPreparedStatement::setDate(sal_Int32 parameter, const Date& aData
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_DATE;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &my_time, MYSQL_TYPE_DATE);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setTime(sal_Int32 parameter, const Time& aVal)
@@ -276,7 +276,7 @@ void SAL_CALL OPreparedStatement::setTime(sal_Int32 parameter, const Time& aVal)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_TIME;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &my_time, MYSQL_TYPE_TIME);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setTimestamp(sal_Int32 parameter, const DateTime& aVal)
@@ -297,7 +297,7 @@ void SAL_CALL OPreparedStatement::setTimestamp(sal_Int32 parameter, const DateTi
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_DATETIME;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &my_time, MYSQL_TYPE_DATETIME);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setDouble(sal_Int32 parameter, double x)
@@ -309,7 +309,7 @@ void SAL_CALL OPreparedStatement::setDouble(sal_Int32 parameter, double x)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_DOUBLE;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_DOUBLE);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setFloat(sal_Int32 parameter, float x)
@@ -321,7 +321,7 @@ void SAL_CALL OPreparedStatement::setFloat(sal_Int32 parameter, float x)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_FLOAT;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_FLOAT);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setInt(sal_Int32 parameter, sal_Int32 x)
@@ -333,7 +333,7 @@ void SAL_CALL OPreparedStatement::setInt(sal_Int32 parameter, sal_Int32 x)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_LONG;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_LONG);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setLong(sal_Int32 parameter, sal_Int64 aVal)
@@ -345,7 +345,7 @@ void SAL_CALL OPreparedStatement::setLong(sal_Int32 parameter, sal_Int64 aVal)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_LONGLONG;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &aVal, MYSQL_TYPE_LONGLONG);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setNull(sal_Int32 parameter, sal_Int32 /*sqlType*/)
@@ -355,7 +355,7 @@ void SAL_CALL OPreparedStatement::setNull(sal_Int32 parameter, sal_Int32 /*sqlTy
checkParameterIndex(parameter);
const sal_Int32 nIndex = parameter - 1;
- m_bindMetas[nIndex].is_null = 1;
+ m_bindMetas[nIndex].is_null = true;
free(m_binds[nIndex].buffer);
m_binds[nIndex].buffer = nullptr;
}
@@ -408,7 +408,7 @@ void SAL_CALL OPreparedStatement::setObjectWithInfo(sal_Int32 parameterIndex, co
{
free(m_binds[nIndex].buffer);
m_binds[nIndex].buffer = nullptr;
- m_bindMetas[parameterIndex - 1].is_null = 1;
+ m_bindMetas[parameterIndex - 1].is_null = true;
return;
}
@@ -433,7 +433,7 @@ void SAL_CALL OPreparedStatement::setObjectWithInfo(sal_Int32 parameterIndex, co
m_binds[nIndex].buffer_type = MYSQL_TYPE_DOUBLE;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &nValue, MYSQL_TYPE_DOUBLE,
sValue.getLength());
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
break;
}
@@ -478,7 +478,7 @@ void SAL_CALL OPreparedStatement::setShort(sal_Int32 parameter, sal_Int16 x)
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_SHORT;
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_SHORT);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setBytes(sal_Int32 parameter, const Sequence<sal_Int8>& x)
@@ -490,7 +490,7 @@ void SAL_CALL OPreparedStatement::setBytes(sal_Int32 parameter, const Sequence<s
const sal_Int32 nIndex = parameter - 1;
m_binds[nIndex].buffer_type = MYSQL_TYPE_BLOB; // FIXME
mysqlc_sdbc_driver::resetSqlVar(&m_binds[nIndex].buffer, &x, MYSQL_TYPE_BLOB);
- m_bindMetas[nIndex].is_null = 0;
+ m_bindMetas[nIndex].is_null = false;
}
void SAL_CALL OPreparedStatement::setCharacterStream(sal_Int32 parameter,
@@ -524,7 +524,7 @@ void SAL_CALL OPreparedStatement::clearParameters()
for (size_t i = 0; i < m_binds.size(); ++i)
{
- m_bindMetas[i].is_null = 1;
+ m_bindMetas[i].is_null = true;
free(m_binds[i].buffer);
m_binds[i].buffer = nullptr;
}
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx
index 660fd17de2b2..f488e285bc41 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.hxx
@@ -47,9 +47,9 @@ using my_bool = char;
struct BindMetaData
{
- my_bool is_null = 0;
+ my_bool is_null = false;
unsigned long length = 0;
- my_bool error = 0;
+ my_bool error = false;
};
typedef ::cppu::ImplHelper5<css::sdbc::XPreparedStatement, css::sdbc::XParameters,
diff --git a/javaunohelper/source/javaunohelper.cxx b/javaunohelper/source/javaunohelper.cxx
index 7081ecbc5538..823d069d769e 100644
--- a/javaunohelper/source/javaunohelper.cxx
+++ b/javaunohelper/source/javaunohelper.cxx
@@ -124,7 +124,7 @@ jboolean Java_com_sun_star_comp_helper_SharedLibraryLoader_component_1writeInfo(
lib.release();
}
#endif
- return bRet ? JNI_TRUE : JNI_FALSE;
+ return bRet;
}
/*
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx b/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx
index ee75100464f3..68c3e881caa4 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-calc-header-bar.cxx
@@ -101,7 +101,7 @@ static void gtv_calc_header_bar_draw_text(cairo_t* pCairo, const GdkRectangle& r
cairo_show_text(pCairo, rText.c_str());
}
-static gboolean gtv_calc_header_bar_draw_impl(GtkWidget* pWidget, cairo_t* pCairo)
+static bool gtv_calc_header_bar_draw_impl(GtkWidget* pWidget, cairo_t* pCairo)
{
GtvCalcHeaderBar* self = GTV_CALC_HEADER_BAR(pWidget);
GtvCalcHeaderBarPrivate& priv = getPrivate(GTV_CALC_HEADER_BAR(self));
diff --git a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
index 73d945420ab0..4a9df33d6ba2 100644
--- a/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
+++ b/libreofficekit/qa/gtktiledviewer/gtv-lokdocview-signal-handlers.cxx
@@ -43,7 +43,7 @@ static gboolean destroyLokDialog(GtkWidget* pWidget, gpointer userdata)
void LOKDocViewSigHandlers::editChanged(LOKDocView* pDocView, gboolean bWasEdit, gpointer)
{
GtvApplicationWindow* window = GTV_APPLICATION_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(pDocView)));
- gboolean bEdit = lok_doc_view_get_edit(LOK_DOC_VIEW(window->lokdocview));
+ bool bEdit = lok_doc_view_get_edit(LOK_DOC_VIEW(window->lokdocview));
g_info("signalEdit: %d -> %d", bWasEdit, bEdit);
// Let the main toolbar know, so that it can enable disable the button
@@ -64,8 +64,8 @@ void LOKDocViewSigHandlers::commandChanged(LOKDocView* pDocView, char* pPayload,
if (pItem != nullptr)
{
if (aValue == "true" || aValue == "false") {
- gboolean bEdit = aValue == "true";
- if (gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pItem)) != bEdit)
+ bool bEdit = aValue == "true";
+ if (bool(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON(pItem))) != bEdit)
{
// Avoid invoking lok_doc_view_post_command().
// FIXME: maybe block/unblock the signal (see
@@ -76,7 +76,7 @@ void LOKDocViewSigHandlers::commandChanged(LOKDocView* pDocView, char* pPayload,
}
} else if (aValue == "enabled" || aValue == "disabled") {
- gboolean bSensitive = aValue == "enabled";
+ bool bSensitive = aValue == "enabled";
gtk_widget_set_sensitive(GTK_WIDGET(pItem), bSensitive);
// Remember state, so in case edit is disable and enabled
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 5dd0457479af..b4fe85f2c939 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -359,7 +359,7 @@ static void
LOKPostCommand (LOKDocView* pDocView,
const gchar* pCommand,
const gchar* pArguments,
- gboolean bNotifyWhenFinished)
+ bool bNotifyWhenFinished)
{
LOKDocViewPrivate& priv = getPrivate(pDocView);
GTask* task = g_task_new(pDocView, nullptr, nullptr, nullptr);
@@ -903,7 +903,7 @@ globalCallback (gpointer pData)
{
CallbackData* pCallback = static_cast<CallbackData*>(pData);
LOKDocViewPrivate& priv = getPrivate(pCallback->m_pDocView);
- gboolean bModify = false;
+ bool bModify = false;
switch (pCallback->m_nType)
{
@@ -1111,7 +1111,7 @@ callback (gpointer pData)
case LOK_CALLBACK_TEXT_SELECTION:
{
priv->m_aTextSelectionRectangles = payloadToRectangles(pDocView, pCallback->m_aPayload.c_str());
- gboolean bIsTextSelected = !priv->m_aTextSelectionRectangles.empty();
+ bool bIsTextSelected = !priv->m_aTextSelectionRectangles.empty();
// In case the selection is empty, then we get no LOK_CALLBACK_TEXT_SELECTION_START/END events.
if (!bIsTextSelected)
{
@@ -1545,7 +1545,7 @@ paintTileCallback(GObject* sourceObject, GAsyncResult* res, gpointer userData)
}
-static gboolean
+static bool
renderDocument(LOKDocView* pDocView, cairo_t* pCairo)
{
LOKDocViewPrivate& priv = getPrivate(pDocView);
@@ -1665,7 +1665,7 @@ static const GdkRGBA& getDarkColor(int nViewId, LOKDocViewPrivate& priv)
return aColorMap[nViewId];
}
-static gboolean
+static bool
renderOverlay(LOKDocView* pDocView, cairo_t* pCairo)
{
LOKDocViewPrivate& priv = getPrivate(pDocView);
@@ -2267,8 +2267,8 @@ setEditInThread(gpointer data)
LOKDocView* pDocView = LOK_DOC_VIEW(g_task_get_source_object(task));
LOKDocViewPrivate& priv = getPrivate(pDocView);
LOEvent* pLOEvent = static_cast<LOEvent*>(g_task_get_task_data(task));
- gboolean bWasEdit = priv->m_bEdit;
- gboolean bEdit = pLOEvent->m_bEdit;
+ bool bWasEdit = priv->m_bEdit;
+ bool bEdit = pLOEvent->m_bEdit;
if (!priv->m_bEdit && bEdit)
g_info("lok_doc_view_set_edit: entering edit mode");
@@ -2463,9 +2463,9 @@ static void lok_doc_view_set_property (GObject* object, guint propId, const GVal
{
LOKDocView* pDocView = LOK_DOC_VIEW (object);
LOKDocViewPrivate& priv = getPrivate(pDocView);
- gboolean bDocPasswordEnabled = priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD;
- gboolean bDocPasswordToModifyEnabled = priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY;
- gboolean bTiledAnnotationsEnabled = !(priv->m_nLOKFeatures & LOK_FEATURE_NO_TILED_ANNOTATIONS);
+ bool bDocPasswordEnabled = priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD;
+ bool bDocPasswordToModifyEnabled = priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY;
+ bool bTiledAnnotationsEnabled = !(priv->m_nLOKFeatures & LOK_FEATURE_NO_TILED_ANNOTATIONS);
switch (propId)
{
@@ -2502,21 +2502,21 @@ static void lok_doc_view_set_property (GObject* object, guint propId, const GVal
priv->m_nDocumentHeightTwips = g_value_get_long (value);
break;
case PROP_DOC_PASSWORD:
- if (g_value_get_boolean (value) != bDocPasswordEnabled)
+ if (bool(g_value_get_boolean (value)) != bDocPasswordEnabled)
{
priv->m_nLOKFeatures = priv->m_nLOKFeatures ^ LOK_FEATURE_DOCUMENT_PASSWORD;
priv->m_pOffice->pClass->setOptionalFeatures(priv->m_pOffice, priv->m_nLOKFeatures);
}
break;
case PROP_DOC_PASSWORD_TO_MODIFY:
- if ( g_value_get_boolean (value) != bDocPasswordToModifyEnabled)
+ if ( bool(g_value_get_boolean (value)) != bDocPasswordToModifyEnabled)
{
priv->m_nLOKFeatures = priv->m_nLOKFeatures ^ LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY;
priv->m_pOffice->pClass->setOptionalFeatures(priv->m_pOffice, priv->m_nLOKFeatures);
}
break;
case PROP_TILED_ANNOTATIONS:
- if ( g_value_get_boolean (value) != bTiledAnnotationsEnabled)
+ if ( bool(g_value_get_boolean (value)) != bTiledAnnotationsEnabled)
{
priv->m_nLOKFeatures = priv->m_nLOKFeatures ^ LOK_FEATURE_NO_TILED_ANNOTATIONS;
priv->m_pOffice->pClass->setOptionalFeatures(priv->m_pOffice, priv->m_nLOKFeatures);
@@ -2580,10 +2580,10 @@ static void lok_doc_view_get_property (GObject* object, guint propId, GValue *va
g_value_set_boolean (value, priv->m_bCanZoomOut);
break;
case PROP_DOC_PASSWORD:
- g_value_set_boolean (value, priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD);
+ g_value_set_boolean (value, (priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD) != 0);
break;
case PROP_DOC_PASSWORD_TO_MODIFY:
- g_value_set_boolean (value, priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY);
+ g_value_set_boolean (value, (priv->m_nLOKFeatures & LOK_FEATURE_DOCUMENT_PASSWORD_TO_MODIFY) != 0);
break;
case PROP_TILED_ANNOTATIONS:
g_value_set_boolean (value, !(priv->m_nLOKFeatures & LOK_FEATURE_NO_TILED_ANNOTATIONS));
@@ -3780,7 +3780,7 @@ lok_doc_view_paste (LOKDocView* pDocView,
{
LOKDocViewPrivate& priv = getPrivate(pDocView);
LibreOfficeKitDocument* pDocument = priv->m_pDocument;
- gboolean ret = 0;
+ bool ret = 0;
if (!pDocument)
return false;
diff --git a/solenv/CompilerTest_compilerplugins_clang.mk b/solenv/CompilerTest_compilerplugins_clang.mk
index 1014d3f8c909..6766e3821bf2 100644
--- a/solenv/CompilerTest_compilerplugins_clang.mk
+++ b/solenv/CompilerTest_compilerplugins_clang.mk
@@ -36,6 +36,7 @@ $(eval $(call gb_CompilerTest_add_exception_objects,compilerplugins_clang, \
compilerplugins/clang/test/expressionalwayszero \
compilerplugins/clang/test/intvsfloat \
compilerplugins/clang/test/faileddyncast \
+ compilerplugins/clang/test/fakebool \
compilerplugins/clang/test/finalprotected \
compilerplugins/clang/test/flatten \
compilerplugins/clang/test/fragiledestructor \
@@ -60,7 +61,6 @@ $(eval $(call gb_CompilerTest_add_exception_objects,compilerplugins_clang, \
compilerplugins/clang/test/refcounting \
compilerplugins/clang/test/referencecasting \
compilerplugins/clang/test/returnconstval \
- compilerplugins/clang/test/salbool \
compilerplugins/clang/test/salcall \
compilerplugins/clang/test/sallogareas \
compilerplugins/clang/test/salunicodeliteral \
diff --git a/solenv/clang-format/blacklist b/solenv/clang-format/blacklist
index 9f390fc07640..6f092e83d27b 100644
--- a/solenv/clang-format/blacklist
+++ b/solenv/clang-format/blacklist
@@ -1679,6 +1679,7 @@ compilerplugins/clang/expressionalwayszero.cxx
compilerplugins/clang/externandnotdefined.cxx
compilerplugins/clang/externvar.cxx
compilerplugins/clang/faileddyncast.cxx
+compilerplugins/clang/fakebool.cxx
compilerplugins/clang/finalclasses.cxx
compilerplugins/clang/finalprotected.cxx
compilerplugins/clang/flatten.cxx
@@ -1714,7 +1715,6 @@ compilerplugins/clang/redundantpointerops.cxx
compilerplugins/clang/refcounting.cxx
compilerplugins/clang/rendercontext.cxx
compilerplugins/clang/reservedid.cxx
-compilerplugins/clang/salbool.cxx
compilerplugins/clang/sallogareas.cxx
compilerplugins/clang/salunicodeliteral.cxx
compilerplugins/clang/sfxpoolitem.cxx
@@ -1787,6 +1787,7 @@ compilerplugins/clang/test/expressionalwayszero.cxx
compilerplugins/clang/test/externvar.cxx
compilerplugins/clang/test/externvar.hxx
compilerplugins/clang/test/faileddyncast.cxx
+compilerplugins/clang/test/fakebool.cxx
compilerplugins/clang/test/finalprotected.cxx
compilerplugins/clang/test/flatten.cxx
compilerplugins/clang/test/indentation.cxx
@@ -1803,7 +1804,6 @@ compilerplugins/clang/test/redundantinline.cxx
compilerplugins/clang/test/redundantinline.hxx
compilerplugins/clang/test/redundantpointerops.cxx
compilerplugins/clang/test/refcounting.cxx
-compilerplugins/clang/test/salbool.cxx
compilerplugins/clang/test/salunicodeliteral.cxx
compilerplugins/clang/test/salunicodeliteral.hxx
compilerplugins/clang/test/stringconcatauto.cxx
diff --git a/ucb/source/ucp/gio/gio_content.cxx b/ucb/source/ucp/gio/gio_content.cxx
index 053f30fec50a..05c26c42760f 100644
--- a/ucb/source/ucp/gio/gio_content.cxx
+++ b/ucb/source/ucp/gio/gio_content.cxx
@@ -1084,7 +1084,7 @@ void Content::transfer( const css::ucb::TransferInfo& aTransferInfo, const css::
GFile *pDest = g_file_new_for_uri(OUStringToOString(sDest, RTL_TEXTENCODING_UTF8).getStr());
GFile *pSource = g_file_new_for_uri(OUStringToOString(aTransferInfo.SourceURL, RTL_TEXTENCODING_UTF8).getStr());
- gboolean bSuccess = false;
+ bool bSuccess = false;
GError *pError = nullptr;
if (aTransferInfo.MoveData)
bSuccess = g_file_move(pSource, pDest, G_FILE_COPY_OVERWRITE, nullptr, nullptr, nullptr, &pError);
diff --git a/vcl/source/gdi/scrptrun.cxx b/vcl/source/gdi/scrptrun.cxx
index cee6fb27eb15..b18816cac26c 100644
--- a/vcl/source/gdi/scrptrun.cxx
+++ b/vcl/source/gdi/scrptrun.cxx
@@ -137,7 +137,7 @@ namespace vcl {
const char ScriptRun::fgClassID=0;
-static UBool sameScript(int32_t scriptOne, int32_t scriptTwo)
+static bool sameScript(int32_t scriptOne, int32_t scriptTwo)
{
return scriptOne <= USCRIPT_INHERITED || scriptTwo <= USCRIPT_INHERITED || scriptOne == scriptTwo;
}
diff --git a/vcl/unx/gtk3/a11y/gtk3atklistener.cxx b/vcl/unx/gtk3/a11y/gtk3atklistener.cxx
index 4a7d41638479..f690edfe62e3 100644
--- a/vcl/unx/gtk3/a11y/gtk3atklistener.cxx
+++ b/vcl/unx/gtk3/a11y/gtk3atklistener.cxx
@@ -468,7 +468,7 @@ void AtkListener::notifyEvent( const accessibility::AccessibleEventObject& aEven
AtkStateType eOldState = mapState( aEvent.OldValue );
AtkStateType eNewState = mapState( aEvent.NewValue );
- gboolean bState = eNewState != ATK_STATE_INVALID;
+ bool bState = eNewState != ATK_STATE_INVALID;
AtkStateType eRealState = bState ? eNewState : eOldState;
atk_object_notify_state_change( atk_obj, eRealState, bState );
diff --git a/vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx b/vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx
index 1892155527bc..75f832cc815a 100644
--- a/vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx
+++ b/vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx
@@ -1480,7 +1480,7 @@ void SalGtkFilePicker::selection_changed_cb( GtkFileChooser *, SalGtkFilePicker
void SalGtkFilePicker::update_preview_cb( GtkFileChooser *file_chooser, SalGtkFilePicker* pobjFP )
{
- gboolean have_preview = false;
+ bool have_preview = false;
GtkWidget* preview = pobjFP->m_pPreview;
char* filename = gtk_file_chooser_get_preview_filename( file_chooser );
@@ -1794,7 +1794,7 @@ extern "C"
static gboolean
case_insensitive_filter (const GtkFileFilterInfo *filter_info, gpointer data)
{
- gboolean bRetval = false;
+ bool bRetval = false;
const char *pFilter = static_cast<const char *>(data);
g_return_val_if_fail( data != nullptr, false );
diff --git a/vcl/unx/gtk3/gtk3gloactiongroup.cxx b/vcl/unx/gtk3/gtk3gloactiongroup.cxx
index 88189f34e23e..ca315b07e01b 100644
--- a/vcl/unx/gtk3/gtk3gloactiongroup.cxx
+++ b/vcl/unx/gtk3/gtk3gloactiongroup.cxx
@@ -187,7 +187,7 @@ g_lo_action_group_perform_submenu_action (GLOActionGroup *group,
const gchar *action_name,
GVariant *state)
{
- gboolean bState = g_variant_get_boolean (state);
+ bool bState = g_variant_get_boolean (state);
SAL_INFO("vcl.unity", "g_lo_action_group_perform_submenu_action on " << group << " to " << bState);
if (bState)
@@ -217,7 +217,7 @@ g_lo_action_group_change_state (GActionGroup *group,
g_lo_action_group_perform_submenu_action (lo_group, action_name, value);
else
{
- gboolean is_new = FALSE;
+ bool is_new = FALSE;
/* If action already exists but has no state, it should be removed and added again. */
if (action->state_type == nullptr)
diff --git a/vcl/unx/gtk3/gtk3glomenu.cxx b/vcl/unx/gtk3/gtk3glomenu.cxx
index d6ac0d0a89ae..a82c6946422c 100644
--- a/vcl/unx/gtk3/gtk3glomenu.cxx
+++ b/vcl/unx/gtk3/gtk3glomenu.cxx
@@ -52,7 +52,7 @@ g_lo_menu_struct_item_init (struct item *menu_item)
* - no consecutive '-'
* - not longer than 1024 chars
*/
-static gboolean
+static bool
valid_attribute_name (const gchar *name)
{
gint i;
diff --git a/vcl/unx/gtk3/gtk3gtkdata.cxx b/vcl/unx/gtk3/gtk3gtkdata.cxx
index e1c19825de3c..66a5dfcce890 100644
--- a/vcl/unx/gtk3/gtk3gtkdata.cxx
+++ b/vcl/unx/gtk3/gtk3gtkdata.cxx
@@ -375,7 +375,7 @@ bool GtkSalData::Yield( bool bWait, bool bHandleAllCurrentEvents )
if( bDispatchThread )
{
int nMaxEvents = bHandleAllCurrentEvents ? 100 : 1;
- gboolean wasOneEvent = TRUE;
+ bool wasOneEvent = TRUE;
while( nMaxEvents-- && wasOneEvent )
{
wasOneEvent = g_main_context_iteration( nullptr, bWait && !bWasEvent );
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index deeaac3140cd..4c4005dc9a7c 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -490,7 +490,7 @@ static void hud_activated( gboolean hud_active, gpointer user_data )
}
}
-static gboolean ensure_dbus_setup( gpointer data )
+static bool ensure_dbus_setup( gpointer data )
{
GtkSalFrame* pSalFrame = static_cast< GtkSalFrame* >( data );
GdkWindow* gdkWindow = widget_get_window( pSalFrame->getWindow() );
@@ -3429,7 +3429,7 @@ gboolean GtkDropTarget::signalDragDrop(GtkWidget* pWidget, GdkDragContext* conte
{
// remove the deferred dragExit, as we'll do a drop
#ifndef NDEBUG
- gboolean res =
+ bool res =
#endif
g_idle_remove_by_data(this);
assert(res);
@@ -3808,7 +3808,7 @@ bool GtkSalFrame::IMHandler::handleKeyEvent( GdkEventKey* pEvent )
if( aDel.isDeleted() )
return true;
- gboolean bResult = gtk_im_context_filter_keypress( m_pIMContext, pEvent );
+ bool bResult = gtk_im_context_filter_keypress( m_pIMContext, pEvent );
g_object_unref( pRef );
if( aDel.isDeleted() )
@@ -3839,7 +3839,7 @@ bool GtkSalFrame::IMHandler::handleKeyEvent( GdkEventKey* pEvent )
if (pEvent->type == GDK_KEY_RELEASE)
{
GObject* pRef = G_OBJECT( g_object_ref( G_OBJECT( m_pIMContext ) ) );
- gboolean bResult = gtk_im_context_filter_keypress( m_pIMContext, pEvent );
+ bool bResult = gtk_im_context_filter_keypress( m_pIMContext, pEvent );
g_object_unref( pRef );
if( aDel.isDeleted() )
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 83c6bbaf9f63..f3ec6ddfb71e 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -2521,7 +2521,7 @@ public:
{
//for toplevel windows this is sadly futile under wayland, so we can't tell where a dialog is in order to allow
//the document underneath to auto-scroll to place content in a visible location
- gboolean ret = gtk_widget_translate_coordinates(m_pWidget,
+ bool ret = gtk_widget_translate_coordinates(m_pWidget,
dynamic_cast<GtkInstanceWidget&>(rRelative).getWidget(),
0, 0, &x, &y);
width = gtk_widget_get_allocated_width(m_pWidget);
@@ -7385,7 +7385,7 @@ private:
pThis->signal_activated();
}
- gboolean signal_key_press(GdkEventKey* pEvent)
+ bool signal_key_press(GdkEventKey* pEvent)
{
if (pEvent->keyval == GDK_KEY_Return)
{
@@ -8101,7 +8101,7 @@ private:
bool get_bool(int pos, int col) const
{
- gboolean bRet(false);
+ bool bRet(false);
GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
GtkTreeIter iter;
if (gtk_tree_model_iter_nth_child(pModel, &iter, nullptr, pos))
@@ -8358,7 +8358,7 @@ private:
g_DragSource = nullptr;
}
- gboolean signal_key_press(GdkEventKey* pEvent)
+ bool signal_key_press(GdkEventKey* pEvent)
{
if (pEvent->keyval != GDK_KEY_Left && pEvent->keyval != GDK_KEY_Right)
return false;
@@ -9322,7 +9322,7 @@ public:
GtkInstanceTreeIter& rGtkIter = static_cast<GtkInstanceTreeIter&>(rIter);
GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
GtkTreeIter tmp;
- gboolean ret = gtk_tree_model_iter_children(pModel, &tmp, &rGtkIter.iter);
+ bool ret = gtk_tree_model_iter_children(pModel, &tmp, &rGtkIter.iter);
rGtkIter.iter = tmp;
if (ret)
{
@@ -11094,7 +11094,7 @@ private:
std::unique_ptr<comphelper::string::NaturalStringSorter> m_xSorter;
vcl::QuickSelectionEngine m_aQuickSelectionEngine;
std::vector<int> m_aSeparatorRows;
- gboolean m_bPopupActive;
+ bool m_bPopupActive;
bool m_bAutoComplete;
bool m_bAutoCompleteCaseSensitive;
gulong m_nToggleFocusInSignalId;
@@ -11217,7 +11217,7 @@ private:
m_aQuickSelectionEngine.Reset();
gboolean bIsShown(false);
g_object_get(m_pComboBox, "popup-shown", &bIsShown, nullptr);
- if (m_bPopupActive != bIsShown)
+ if (m_bPopupActive != bool(bIsShown))
{
m_bPopupActive = bIsShown;
ComboBox::signal_popup_toggled();
@@ -11965,7 +11965,7 @@ private:
guint m_nAutoCompleteIdleId;
bool m_bAutoCompleteCaseSensitive;
- gboolean signal_key_press(GdkEventKey* pEvent)
+ bool signal_key_press(GdkEventKey* pEvent)
{
if (pEvent->keyval == GDK_KEY_KP_Up || pEvent->keyval == GDK_KEY_Up || pEvent->keyval == GDK_KEY_KP_Page_Up || pEvent->keyval == GDK_KEY_Page_Up ||
pEvent->keyval == GDK_KEY_KP_Down || pEvent->keyval == GDK_KEY_Down || pEvent->keyval == GDK_KEY_KP_Page_Down || pEvent->keyval == GDK_KEY_Page_Down)