diff options
author | Konstantin Varlamov <var-const@users.noreply.github.com> | 2018-05-08 19:37:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-08 19:37:20 -0400 |
commit | dbcd179788a4cce4e9e3ae545e736148438c5c6f (patch) | |
tree | 1870fa7f448dfeff0ed6d696cd1feb4a60b5e45d /Firestore/core | |
parent | 8409f21830f1282a39c4b7888972011f43d2644a (diff) |
Firestore C++: compile ExecutorLibdispatch in Objective-C++ mode (#1237)
dispatch_queue_t is defined differently in libdispatch depending on
whether the library header is being include from Objective-C (or
Objective-C++) code, or else from C or C++ code. Make sure that all
source files in Firestore that include executor_libdispatch.h are
compiled in the same mode (Objective-C++) to avoid linker errors.
Diffstat (limited to 'Firestore/core')
-rw-r--r-- | Firestore/core/src/firebase/firestore/util/CMakeLists.txt | 2 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/util/executor_libdispatch.h | 10 | ||||
-rw-r--r-- | Firestore/core/src/firebase/firestore/util/executor_libdispatch.mm (renamed from Firestore/core/src/firebase/firestore/util/executor_libdispatch.cc) | 0 | ||||
-rw-r--r-- | Firestore/core/test/firebase/firestore/util/CMakeLists.txt | 6 | ||||
-rw-r--r-- | Firestore/core/test/firebase/firestore/util/async_queue_libdispatch_test.mm (renamed from Firestore/core/test/firebase/firestore/util/async_queue_test_libdispatch.cc) | 3 | ||||
-rw-r--r-- | Firestore/core/test/firebase/firestore/util/async_queue_std_test.cc (renamed from Firestore/core/test/firebase/firestore/util/async_queue_test_std.cc) | 0 | ||||
-rw-r--r-- | Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.mm (renamed from Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.cc) | 0 |
7 files changed, 14 insertions, 7 deletions
diff --git a/Firestore/core/src/firebase/firestore/util/CMakeLists.txt b/Firestore/core/src/firebase/firestore/util/CMakeLists.txt index 29d91c7..b2b015b 100644 --- a/Firestore/core/src/firebase/firestore/util/CMakeLists.txt +++ b/Firestore/core/src/firebase/firestore/util/CMakeLists.txt @@ -130,7 +130,7 @@ if(HAVE_LIBDISPATCH) cc_library( firebase_firestore_util_executor_libdispatch SOURCES - executor_libdispatch.cc + executor_libdispatch.mm executor_libdispatch.h executor.h DEPENDS diff --git a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h index b32dbff..85c34f8 100644 --- a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h +++ b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.h @@ -17,7 +17,6 @@ #ifndef FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_EXECUTOR_LIBDISPATCH_H_ #define FIRESTORE_CORE_SRC_FIREBASE_FIRESTORE_UTIL_EXECUTOR_LIBDISPATCH_H_ -#include <atomic> #include <chrono> // NOLINT(build/c++11) #include <functional> #include <memory> @@ -30,6 +29,13 @@ #include "Firestore/core/src/firebase/firestore/util/firebase_assert.h" #include "absl/strings/string_view.h" +#if !defined(__OBJC__) +// `dispatch_queue_t` gets defined to different types when compiled in C++ or +// Objective-C mode. Source files including this header should all be compiled +// in the same mode to avoid linker errors. +#error "This header only supports Objective-C++ (see comment for more info)." +#endif // !defined(__OBJC__) + namespace firebase { namespace firestore { namespace util { @@ -78,7 +84,7 @@ class ExecutorLibdispatch : public Executor { absl::string_view GetCurrentQueueLabel() const; absl::string_view GetTargetQueueLabel() const; - std::atomic<dispatch_queue_t> dispatch_queue_; + dispatch_queue_t dispatch_queue_; // Stores non-owned pointers to `TimeSlot`s. // Invariant: if a `TimeSlot` is in `schedule_`, it's a valid pointer. std::vector<TimeSlot*> schedule_; diff --git a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.cc b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.mm index b40f0dd..b40f0dd 100644 --- a/Firestore/core/src/firebase/firestore/util/executor_libdispatch.cc +++ b/Firestore/core/src/firebase/firestore/util/executor_libdispatch.mm diff --git a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt index 2e1e2f9..ea80ea2 100644 --- a/Firestore/core/test/firebase/firestore/util/CMakeLists.txt +++ b/Firestore/core/test/firebase/firestore/util/CMakeLists.txt @@ -80,7 +80,7 @@ if(HAVE_LIBDISPATCH) SOURCES executor_test.h executor_test.cc - executor_libdispatch_test.cc + executor_libdispatch_test.mm async_tests_util.h DEPENDS firebase_firestore_util_executor_libdispatch @@ -94,7 +94,7 @@ cc_test( SOURCES async_queue_test.h async_queue_test.cc - async_queue_test_std.cc + async_queue_std_test.cc async_tests_util.h DEPENDS firebase_firestore_util_executor_std @@ -107,7 +107,7 @@ if(HAVE_LIBDISPATCH) SOURCES async_queue_test.h async_queue_test.cc - async_queue_test_libdispatch.cc + async_queue_libdispatch_test.mm async_tests_util.h DEPENDS firebase_firestore_util_executor_libdispatch diff --git a/Firestore/core/test/firebase/firestore/util/async_queue_test_libdispatch.cc b/Firestore/core/test/firebase/firestore/util/async_queue_libdispatch_test.mm index b4b9c63..5452266 100644 --- a/Firestore/core/test/firebase/firestore/util/async_queue_test_libdispatch.cc +++ b/Firestore/core/test/firebase/firestore/util/async_queue_libdispatch_test.mm @@ -16,8 +16,9 @@ #include "Firestore/core/test/firebase/firestore/util/async_queue_test.h" -#include "Firestore/core/src/firebase/firestore/util/executor_libdispatch.h" +#include <memory> +#include "Firestore/core/src/firebase/firestore/util/executor_libdispatch.h" #include "absl/memory/memory.h" #include "gtest/gtest.h" diff --git a/Firestore/core/test/firebase/firestore/util/async_queue_test_std.cc b/Firestore/core/test/firebase/firestore/util/async_queue_std_test.cc index 9e69ad0..9e69ad0 100644 --- a/Firestore/core/test/firebase/firestore/util/async_queue_test_std.cc +++ b/Firestore/core/test/firebase/firestore/util/async_queue_std_test.cc diff --git a/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.cc b/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.mm index 0167c83..0167c83 100644 --- a/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.cc +++ b/Firestore/core/test/firebase/firestore/util/executor_libdispatch_test.mm |