39 lines
893 B
C++
39 lines
893 B
C++
|
/*
|
||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*/
|
||
|
|
||
|
#include "experiments.h"
|
||
|
#include "experiments-inl.h"
|
||
|
|
||
|
namespace facebook {
|
||
|
namespace yoga {
|
||
|
namespace internal {
|
||
|
|
||
|
namespace detail {
|
||
|
|
||
|
std::bitset<sizeof(int)> enabledExperiments = 0;
|
||
|
|
||
|
} // namespace detail
|
||
|
|
||
|
void enable(Experiment experiment) {
|
||
|
detail::enabledExperiments.set(static_cast<size_t>(experiment));
|
||
|
}
|
||
|
|
||
|
void disable(Experiment experiment) {
|
||
|
detail::enabledExperiments.reset(static_cast<size_t>(experiment));
|
||
|
}
|
||
|
|
||
|
bool toggle(Experiment experiment) {
|
||
|
auto bit = static_cast<size_t>(experiment);
|
||
|
auto previousState = detail::enabledExperiments.test(bit);
|
||
|
detail::enabledExperiments.flip(bit);
|
||
|
return previousState;
|
||
|
}
|
||
|
|
||
|
} // namespace internal
|
||
|
} // namespace yoga
|
||
|
} // namespace facebook
|