#include <folly/cli/ProgramOptions.h>
#include <unordered_map>
#include <unordered_set>
#include <boost/version.hpp>
#include <glog/logging.h>
#ifdef __ANDROID__
#include <gflags/gflags.h>
#endif
#include <folly/Conv.h>
#include <folly/Portability.h>
#include <folly/portability/GFlags.h>
po;
namespace folly {
namespace {
template <class T>
class GFlagInfo { … };
template <class T>
class GFlagValueSemanticBase : public po::value_semantic { … };
template <class T>
void GFlagValueSemanticBase<T>::parse(
boost::any& valueStore,
const std::vector<std::string>& tokens,
bool ) const { … }
template <class T>
class GFlagValueSemantic : public GFlagValueSemanticBase<T> { … };
class BoolGFlagValueSemantic : public GFlagValueSemanticBase<bool> { … };
class NegativeBoolGFlagValueSemantic : public BoolGFlagValueSemantic { … };
const std::string& getName(const std::string& name) { … }
template <class T>
void addGFlag(
gflags::CommandLineFlagInfo&& flag,
po::options_description& desc,
ProgramOptionsStyle style) { … }
template <>
void addGFlag<bool>(
gflags::CommandLineFlagInfo&& flag,
po::options_description& desc,
ProgramOptionsStyle style) { … }
FlagAdder;
const std::unordered_map<std::string, FlagAdder> gFlagAdders = …;
}
po::options_description getGFlags(ProgramOptionsStyle style) { … }
namespace {
NestedCommandLineParseResult doParseNestedCommandLine(
po::command_line_parser&& parser,
const po::options_description& desc,
boost::program_options::command_line_style::style_t style) { … }
}
NestedCommandLineParseResult parseNestedCommandLine(
int argc,
const char* const argv[],
const po::options_description& desc,
boost::program_options::command_line_style::style_t style) { … }
NestedCommandLineParseResult parseNestedCommandLine(
const std::vector<std::string>& cmdline,
const po::options_description& desc,
boost::program_options::command_line_style::style_t style) { … }
}