aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitriy Ivanov <dimitry@google.com>2014-09-08 16:22:22 -0700
committerDmitriy Ivanov <dimitry@google.com>2014-10-01 16:03:51 -0700
commitef1306d77718cc74a8df5673a15649dea317571d (patch)
tree5c3b3bfc11e46b3ae4021545a36c33ec49e0dafa
parent61c4147fa8c8abb33ae6fecb85dd1ae1b60e1ed6 (diff)
downloadandroid_bionic-ef1306d77718cc74a8df5673a15649dea317571d.tar.gz
android_bionic-ef1306d77718cc74a8df5673a15649dea317571d.tar.bz2
android_bionic-ef1306d77718cc74a8df5673a15649dea317571d.zip
Refactoring: C++11 style DISABLE_ bionic marcos
Enable the -std=gnu++11 flag for libstdc++ static and dynamic libs. ScopeGuard uses DISABLE_ macros instead of '= delete'; (cherry picked from commit d9ff7226613014056c9edd79a68dc5af939107a0) Change-Id: If2573d080770e18b36b56106f2369f7bb682cd3c
-rw-r--r--libc/Android.mk2
-rw-r--r--libc/private/ScopeGuard.h14
-rw-r--r--libc/private/bionic_macros.h6
-rw-r--r--linker/linker.cpp2
-rw-r--r--tests/dlfcn_test.cpp2
-rw-r--r--tests/math_test.cpp22
-rw-r--r--tests/pthread_test.cpp2
7 files changed, 26 insertions, 24 deletions
diff --git a/libc/Android.mk b/libc/Android.mk
index fe1f31577..92ead2637 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -1164,6 +1164,7 @@ libstdcxx_common_src_files := \
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
LOCAL_MODULE:= libstdc++
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
@@ -1176,6 +1177,7 @@ include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(libc_common_c_includes)
LOCAL_CFLAGS := $(libc_common_cflags)
+LOCAL_CPPFLAGS := $(libc_common_cppflags)
LOCAL_SRC_FILES := $(libstdcxx_common_src_files)
LOCAL_MODULE:= libstdc++
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
diff --git a/libc/private/ScopeGuard.h b/libc/private/ScopeGuard.h
index 183e322f7..d5a9235d1 100644
--- a/libc/private/ScopeGuard.h
+++ b/libc/private/ScopeGuard.h
@@ -14,8 +14,10 @@
* limitations under the License.
*/
-#ifndef SCOPE_GUARD_H
-#define SCOPE_GUARD_H
+#ifndef _SCOPE_GUARD_H
+#define _SCOPE_GUARD_H
+
+#include "private/bionic_macros.h"
// TODO: include explicit std::move when it becomes available
template<typename F>
@@ -40,14 +42,12 @@ class ScopeGuard {
F f_;
bool active_;
- ScopeGuard() = delete;
- ScopeGuard(const ScopeGuard&) = delete;
- ScopeGuard& operator=(const ScopeGuard&) = delete;
+ DISALLOW_IMPLICIT_CONSTRUCTORS(ScopeGuard);
};
template<typename T>
-ScopeGuard<T> create_scope_guard(T f) {
+ScopeGuard<T> make_scope_guard(T f) {
return ScopeGuard<T>(f);
}
-#endif // SCOPE_GUARD_H
+#endif // _SCOPE_GUARD_H
diff --git a/libc/private/bionic_macros.h b/libc/private/bionic_macros.h
index 61794bd54..491b3ace0 100644
--- a/libc/private/bionic_macros.h
+++ b/libc/private/bionic_macros.h
@@ -20,8 +20,8 @@
// DISALLOW_COPY_AND_ASSIGN disallows the copy and operator= functions.
// It goes in the private: declarations in a class.
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
- TypeName(const TypeName&); \
- void operator=(const TypeName&)
+ TypeName(const TypeName&) = delete; \
+ void operator=(const TypeName&) = delete
// A macro to disallow all the implicit constructors, namely the
// default constructor, copy constructor and operator= functions.
@@ -30,7 +30,7 @@
// that wants to prevent anyone from instantiating it. This is
// especially useful for classes containing only static methods.
#define DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
- TypeName(); \
+ TypeName() = delete; \
DISALLOW_COPY_AND_ASSIGN(TypeName)
#define BIONIC_ALIGN(value, alignment) \
diff --git a/linker/linker.cpp b/linker/linker.cpp
index 793ffd51e..f436e85bd 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -955,7 +955,7 @@ static bool find_libraries(const char* const library_names[], size_t library_nam
SoinfoLinkedList found_libs;
size_t soinfos_size = 0;
- auto failure_guard = create_scope_guard([&]() {
+ auto failure_guard = make_scope_guard([&]() {
// Housekeeping
load_tasks.for_each([] (LoadTask* t) {
LoadTask::deleter(t);
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index fb3bfc511..bb9d8c0b8 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -145,7 +145,7 @@ TEST(dlfcn, dlopen_check_relocation_dt_needed_order) {
// in both dt_needed libraries, the correct relocation should
// use the function defined in libtest_relo_check_dt_needed_order_1.so
void* handle = nullptr;
- auto guard = create_scope_guard([&]() {
+ auto guard = make_scope_guard([&]() {
dlclose(handle);
});
diff --git a/tests/math_test.cpp b/tests/math_test.cpp
index ad4654e53..2203db9f4 100644
--- a/tests/math_test.cpp
+++ b/tests/math_test.cpp
@@ -762,7 +762,7 @@ TEST(math, erfcl) {
}
TEST(math, lrint) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
@@ -786,7 +786,7 @@ TEST(math, lrint) {
}
TEST(math, rint) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
@@ -816,7 +816,7 @@ TEST(math, rint) {
}
TEST(math, nearbyint) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_UPWARD); // nearbyint/nearbyintf/nearbyintl obey the rounding mode.
@@ -845,7 +845,7 @@ TEST(math, nearbyint) {
}
TEST(math, lround) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_UPWARD); // lround ignores the rounding mode.
@@ -855,7 +855,7 @@ TEST(math, lround) {
}
TEST(math, llround) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_UPWARD); // llround ignores the rounding mode.
@@ -952,7 +952,7 @@ TEST(math, fdiml) {
}
TEST(math, round) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_TOWARDZERO); // round ignores the rounding mode and always rounds away from zero.
@@ -965,7 +965,7 @@ TEST(math, round) {
}
TEST(math, roundf) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_TOWARDZERO); // roundf ignores the rounding mode and always rounds away from zero.
@@ -978,7 +978,7 @@ TEST(math, roundf) {
}
TEST(math, roundl) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_TOWARDZERO); // roundl ignores the rounding mode and always rounds away from zero.
@@ -991,7 +991,7 @@ TEST(math, roundl) {
}
TEST(math, trunc) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_UPWARD); // trunc ignores the rounding mode and always rounds toward zero.
@@ -1004,7 +1004,7 @@ TEST(math, trunc) {
}
TEST(math, truncf) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_UPWARD); // truncf ignores the rounding mode and always rounds toward zero.
@@ -1017,7 +1017,7 @@ TEST(math, truncf) {
}
TEST(math, truncl) {
- auto guard = create_scope_guard([]() {
+ auto guard = make_scope_guard([]() {
fesetenv(FE_DFL_ENV);
});
fesetround(FE_UPWARD); // truncl ignores the rounding mode and always rounds toward zero.
diff --git a/tests/pthread_test.cpp b/tests/pthread_test.cpp
index 4a7c6bd88..32bb54c5d 100644
--- a/tests/pthread_test.cpp
+++ b/tests/pthread_test.cpp
@@ -869,7 +869,7 @@ TEST(pthread, pthread_attr_getstack__main_thread) {
#endif
EXPECT_EQ(rl.rlim_cur, stack_size);
- auto guard = create_scope_guard([&rl, original_rlim_cur]() {
+ auto guard = make_scope_guard([&rl, original_rlim_cur]() {
rl.rlim_cur = original_rlim_cur;
ASSERT_EQ(0, setrlimit(RLIMIT_STACK, &rl));
});