GT2/Ejectable/node_modules/react-native/ReactCommon/better/better.h

63 lines
2.4 KiB
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.
*/
#pragma once
namespace facebook {
namespace better {
/*
* `Better` is a trivial collection of basic tools borrowed from other low-level
* general purpose libraries (like Folly, Abseil or Boost). The main goals of
* Better:
* - Make the codebase more portable;
* - Make the dependency list explicit (by decoupling it as a dependency list of
* Better);
* - Make relying on modern C++ patterns and tools in code simple and easy.
* - Make executing experiments with different dependencies easier.
*
* What should be part of Better and what should not? Should I add some piece of
* functionality in the Better? Here is a quick checklist.
*
* If one of the following is true, yes, go for it:
* - If some feature is already in some future C++ standard (possibly in draft
* stage) and it's already implemented in some 3rd party library.
* - If some standardized feature of C++ is implemented in the standard not in
* the most efficient way (because the standard enforces some tricky constraints
* (like always-valid iterators) which nobody uses and should use), but you have
* a library that does it right providing exact same interface.
*
* If one of the following is true, please do *NOT* do it (at least as part of
* the library):
* - You want to use some very fancy pattern that your favorite library (but
* nothing else) provides, and You want to make this pattern very command in the
* code base. Your hope is that this pattern will conquer the world and be
* a part of the C++ standard eventually.
* - You favorite library provides some general purpose container that 10x times
* faster than the standard one, so You want to use that in the code base. That
* container does not have compatible API though (because it's a clear trade-off
* with efficiency, of course).
*/
/*
* Configuration
*/
/*
* Enables using Folly containers instead of standard ones (such as map, vector,
* small_vector, optional and etc.)
* Custom containers are only enabled in release mode. Using custom stuff
* complicates debugging process because it breaks embedded into IDE
* introspections mechanisms.
*/
#ifndef DEBUG
#define BETTER_USE_FOLLY_CONTAINERS
#endif
} // namespace better
} // namespace facebook