summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2012-07-16 14:33:06 +0200
committerLuboš Luňák <l.lunak@suse.cz>2012-07-16 16:03:03 +0200
commit6080259862ee9886d1dabcb7c06132268a398cc6 (patch)
tree149b28e91f37aa243c494fa9339dd47e25655c50 /sal
parentab9b5639b23ab5db93357bd076b65adea1b6e8b6 (diff)
allow using rtl::OUString etc. simply as OUString, without rtl::
http://lists.freedesktop.org/archives/libreoffice/2012-April/029940.html The RTL_USING #define (set by gbuild for anything that's not public API) allows to use such classes simply by their name, without having to use the namespace or do explicit using rtl::OUString (which half of the sources do anyway). Change-Id: I7edaf12cd278489cdc1d5ff782f0a86361c13c0a
Diffstat (limited to 'sal')
-rw-r--r--sal/CppunitTest_sal_checkapi.mk50
-rw-r--r--sal/CustomTarget_sal_allheaders.mk52
-rw-r--r--sal/Module_sal.mk2
-rw-r--r--sal/inc/osl/detail/android_native_app_glue.h2
-rw-r--r--sal/inc/rtl/strbuf.hxx4
-rw-r--r--sal/inc/rtl/string.hxx5
-rw-r--r--sal/inc/rtl/ustrbuf.hxx4
-rw-r--r--sal/inc/rtl/ustring.hxx11
-rw-r--r--sal/qa/checkapi/strings.cxx30
9 files changed, 160 insertions, 0 deletions
diff --git a/sal/CppunitTest_sal_checkapi.mk b/sal/CppunitTest_sal_checkapi.mk
new file mode 100644
index 000000000000..280fd7306acb
--- /dev/null
+++ b/sal/CppunitTest_sal_checkapi.mk
@@ -0,0 +1,50 @@
+# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2011 Matúš Kukan <matus.kukan@gmail.com> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_CppunitTest_CppunitTest,sal_checkapi))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,sal_checkapi,\
+ sal/qa/checkapi/strings \
+))
+
+$(eval $(call gb_CppunitTest_set_include,sal_checkapi,\
+ $$(INCLUDE) \
+ -I$(SRCDIR)/sal/inc \
+))
+
+# strings.cxx includes generated strings.hxx
+$(call gb_CxxObject_get_target,sal/qa/checkapi/strings) : \
+ INCLUDE += -I$(call gb_CustomTarget_get_workdir,sal/allheaders)
+$(call gb_CxxObject_get_target,sal/qa/checkapi/strings) :| \
+ $(call gb_CustomTarget_get_workdir,sal/allheaders)/sal_allheaders.hxx
+
+$(eval $(call gb_CppunitTest_use_libraries,sal_checkapi,\
+ sal \
+ $(gb_STDLIBS) \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/sal/CustomTarget_sal_allheaders.mk b/sal/CustomTarget_sal_allheaders.mk
new file mode 100644
index 000000000000..b008a3ce6908
--- /dev/null
+++ b/sal/CustomTarget_sal_allheaders.mk
@@ -0,0 +1,52 @@
+# -*- Mode: makefile; tab-width: 4; indent-tabs-mode: t -*-
+#
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2011 Matúš Kukan <matus.kukan@gmail.com> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_CustomTarget_CustomTarget,sal/allheaders))
+
+sal_allheaders_DIR := $(call gb_CustomTarget_get_workdir,sal/allheaders)
+
+$(call gb_CustomTarget_get_target,sal/allheaders) : \
+ $(sal_allheaders_DIR)/sal_allheaders.hxx
+
+# dependency on Package_inc.mk should ensure this is updated whenever a new public header is added
+$(sal_allheaders_DIR)/sal_allheaders.hxx :| $(sal_allheaders_DIR)/.dir $(SRCDIR)/sal/Package_inc.mk
+ $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),ECH,1)
+ echo '// Generated list of all sal/ includes' > $@
+ echo '#ifdef WNT' >> $@
+ echo '#include <windows.h>' >> $@
+ echo '#endif' >> $@
+ echo -e \
+ $(foreach file, $(wildcard $(SRCDIR)/sal/inc/*.h) $(wildcard $(SRCDIR)/sal/inc/*.hxx) \
+ $(wildcard $(SRCDIR)/sal/inc/*/*.h) $(wildcard $(SRCDIR)/sal/inc/*/*.hxx) \
+ $(wildcard $(SRCDIR)/sal/inc/*/*/*.h) $(wildcard $(SRCDIR)/sal/inc/*/*/*.hxx) \
+ $(wildcard $(SRCDIR)/sal/inc/*/*/*/*.h) $(wildcard $(SRCDIR)/sal/inc/*/*/*/*.hxx), \
+ $(if $(findstring /win32/, $(file)), '#ifdef WNT\n') \
+ '#include <$(subst $(SRCDIR)/sal/inc/,,$(file))>\n' \
+ $(if $(findstring /win32/, $(file)), '#endif // WNT\n') \
+ ) >> $@
+
+# vim: set noet sw=4 ts=4:
diff --git a/sal/Module_sal.mk b/sal/Module_sal.mk
index 4bf0ec82c352..2a10c52f8680 100644
--- a/sal/Module_sal.mk
+++ b/sal/Module_sal.mk
@@ -30,6 +30,7 @@ $(eval $(call gb_Module_Module,sal))
$(eval $(call gb_Module_add_targets,sal,\
CustomTarget_generated \
+ CustomTarget_sal_allheaders \
$(if $(filter $(OS),IOS),, \
Executable_osl_process_child) \
Executable_cppunittester \
@@ -48,6 +49,7 @@ $(eval $(call gb_Module_add_targets,sal,\
$(eval $(call gb_Module_add_check_targets,sal,\
CppunitTest_Module_DLL \
CppunitTest_sal_bytesequence \
+ CppunitTest_sal_checkapi \
CppunitTest_sal_osl_condition \
$(if $(filter $(OS),WNT),, \
CppunitTest_sal_osl_file) \
diff --git a/sal/inc/osl/detail/android_native_app_glue.h b/sal/inc/osl/detail/android_native_app_glue.h
index 1b8c1f10725d..07b2f02a388b 100644
--- a/sal/inc/osl/detail/android_native_app_glue.h
+++ b/sal/inc/osl/detail/android_native_app_glue.h
@@ -17,6 +17,7 @@
#ifndef _ANDROID_NATIVE_APP_GLUE_H
#define _ANDROID_NATIVE_APP_GLUE_H
+#if defined(ANDROID)
#include <poll.h>
#include <pthread.h>
@@ -346,4 +347,5 @@ extern void android_main(struct android_app* app);
}
#endif
+#endif // ANDROID
#endif /* _ANDROID_NATIVE_APP_GLUE_H */
diff --git a/sal/inc/rtl/strbuf.hxx b/sal/inc/rtl/strbuf.hxx
index 77113086c4a6..62c17990453e 100644
--- a/sal/inc/rtl/strbuf.hxx
+++ b/sal/inc/rtl/strbuf.hxx
@@ -849,6 +849,10 @@ typedef rtlunittest::OStringBuffer OStringBuffer;
#undef RTL_STRING_CONST_FUNCTION
#endif
+#ifdef RTL_USING
+using ::rtl::OStringBuffer;
+#endif
+
#endif /* __cplusplus */
#endif /* _RTL_STRBUF_HXX_ */
diff --git a/sal/inc/rtl/string.hxx b/sal/inc/rtl/string.hxx
index 4e76b7410303..8c3757ff85e1 100644
--- a/sal/inc/rtl/string.hxx
+++ b/sal/inc/rtl/string.hxx
@@ -1470,6 +1470,11 @@ struct OStringHash
} /* Namespace */
+#ifdef RTL_USING
+using ::rtl::OString;
+using ::rtl::OStringHash;
+#endif
+
#endif /* _RTL_STRING_HXX_ */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ustrbuf.hxx b/sal/inc/rtl/ustrbuf.hxx
index a88710723435..a11dff178442 100644
--- a/sal/inc/rtl/ustrbuf.hxx
+++ b/sal/inc/rtl/ustrbuf.hxx
@@ -962,6 +962,10 @@ typedef rtlunittest::OUStringBuffer OUStringBuffer;
}
#endif
+#ifdef RTL_USING
+using ::rtl::OUStringBuffer;
+#endif
+
#endif /* _RTL_USTRBUF_HXX_ */
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sal/inc/rtl/ustring.hxx b/sal/inc/rtl/ustring.hxx
index 427950f8f224..d70a43cce128 100644
--- a/sal/inc/rtl/ustring.hxx
+++ b/sal/inc/rtl/ustring.hxx
@@ -2085,6 +2085,17 @@ inline OString OUStringToOString( const OUString & rUnicode,
} /* Namespace */
+// RTL_USING is defined by gbuild for all modules except those with stable public API
+// (as listed in ure/source/README). It allows to use classes like OUString without
+// having to explicitly refer to the rtl namespace, which is kind of superfluous
+// given that OUString itself is namespaced by its OU prefix.
+#ifdef RTL_USING
+using ::rtl::OUString;
+using ::rtl::OUStringHash;
+using ::rtl::OStringToOUString;
+using ::rtl::OUStringToOString;
+#endif
+
#endif /* _RTL_USTRING_HXX */
// Include the ostream << operator directly here, so that it's always available
diff --git a/sal/qa/checkapi/strings.cxx b/sal/qa/checkapi/strings.cxx
new file mode 100644
index 000000000000..f3a1d2f017a2
--- /dev/null
+++ b/sal/qa/checkapi/strings.cxx
@@ -0,0 +1,30 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+// The whole purpose of this test is to check that public sal/ headers
+// build even without RTL_USING (which enables using e.g. rtl::OUString
+// without to refer to the rtl namespace, which is not wanted
+// in public API). If there are build errors here, check the headers
+// for uses of such types.
+
+#ifdef RTL_USING
+#error Build system problem, RTL_USING using should not be set here.
+#endif
+
+#include "sal_allheaders.hxx"
+
+// This module contains no tests, this is for the build system.
+#include <cppunit/plugin/TestPlugIn.h>
+CPPUNIT_PLUGIN_IMPLEMENT();
+extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL firstfunc( sal_Bool bRes )
+{
+ return ( bRes = sal_True );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */