+++ /dev/null
-/*
- * Copyright 2016 Facebook, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <glog/logging.h>
-#include <folly/Portability.h>
-
-namespace folly {
-
-template <typename T, bool Debug>
-class ConditionallyExistent;
-
-template <typename T>
-class ConditionallyExistent<T, false> {
- public:
- static constexpr bool present() { return false; }
- explicit ConditionallyExistent(const T&) {}
- explicit ConditionallyExistent(T&&) {}
- ConditionallyExistent(const ConditionallyExistent&) = delete;
- ConditionallyExistent(ConditionallyExistent&&) = delete;
- ConditionallyExistent& operator=(const ConditionallyExistent&) = delete;
- ConditionallyExistent& operator=(ConditionallyExistent&&) = delete;
- template <typename F>
- void with(const F&&) {}
-};
-
-template <typename T>
-class ConditionallyExistent<T, true> {
- public:
- static constexpr bool present() { return true; }
- explicit ConditionallyExistent(const T& v) : value_(v) {}
- explicit ConditionallyExistent(T&& v) : value_(std::move(v)) {}
- ConditionallyExistent(const ConditionallyExistent&) = delete;
- ConditionallyExistent(ConditionallyExistent&&) = delete;
- ConditionallyExistent& operator=(const ConditionallyExistent&) = delete;
- ConditionallyExistent& operator=(ConditionallyExistent&&) = delete;
- template <typename F>
- void with(F&& f) {
- f(value_);
- }
-
- private:
- T value_;
-};
-
-template <typename T>
-using ExistentIfDebug = ConditionallyExistent<T, kIsDebug>;
-}
+++ /dev/null
-/*
- * Copyright 2016 Facebook, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <folly/ConditionallyExistent.h>
-
-#include <gtest/gtest.h>
-
-using namespace std;
-using namespace folly;
-
-namespace {
-
-class ConditionallyExistentTest : public testing::Test {};
-}
-
-TEST_F(ConditionallyExistentTest, WhenConditionFalse) {
- folly::ConditionallyExistent<string, false> foobar("hello world");
- EXPECT_FALSE(foobar.present());
- bool called = false;
- foobar.with([&](const string&) { called = true; });
- EXPECT_FALSE(called);
-}
-
-TEST_F(ConditionallyExistentTest, WhenConditionTrue) {
- folly::ConditionallyExistent<string, true> foobar("hello world");
- EXPECT_TRUE(foobar.present());
- bool called = false;
- foobar.with([&](const string&) { called = true; });
- EXPECT_TRUE(called);
-}
string_test_LDADD = libfollytestmain.la
TESTS += string_test
-conditionally_existent_test_SOURCES = ConditionallyExistentTest.cpp
-conditionally_existent_test_LDADD = libfollytestmain.la
-TESTS += conditionally_existent_test
-
producer_consumer_queue_test_SOURCES = ProducerConsumerQueueTest.cpp
producer_consumer_queue_test_LDADD = libfollytestmain.la
TESTS += producer_consumer_queue_test