// // Copyright 2019 The Abseil Authors. // // 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 // // https://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. // // ----------------------------------------------------------------------------- // File: usage_config.h // ----------------------------------------------------------------------------- // // This file defines the main usage reporting configuration interfaces and // documents Abseil's supported built-in usage flags. If these flags are found // when parsing a command-line, Abseil will exit the program and display // appropriate help messages. #ifndef ABSL_FLAGS_USAGE_CONFIG_H_ #define ABSL_FLAGS_USAGE_CONFIG_H_ #include <functional> #include <string> #include "absl/base/config.h" #include "absl/strings/string_view.h" // ----------------------------------------------------------------------------- // Built-in Usage Flags // ----------------------------------------------------------------------------- // // Abseil supports the following built-in usage flags. When passed, these flags // exit the program and : // // * --help // Shows help on important flags for this binary // * --helpfull // Shows help on all flags // * --helpshort // Shows help on only the main module for this program // * --helppackage // Shows help on all modules in the main package // * --version // Shows the version and build info for this binary and exits // * --only_check_args // Exits after checking all flags // * --helpon // Shows help on the modules named by this flag value // * --helpmatch // Shows help on modules whose name contains the specified substring namespace absl { ABSL_NAMESPACE_BEGIN namespace flags_internal { FlagKindFilter; } // namespace flags_internal // FlagsUsageConfig // // This structure contains the collection of callbacks for changing the behavior // of the usage reporting routines in Abseil Flags. struct FlagsUsageConfig { … }; // SetFlagsUsageConfig() // // Sets the usage reporting configuration callbacks. If any of the callbacks are // not set in usage_config instance, then the default value of the callback is // used. void SetFlagsUsageConfig(FlagsUsageConfig usage_config); namespace flags_internal { FlagsUsageConfig GetUsageConfig(); void ReportUsageError(absl::string_view msg, bool is_fatal); } // namespace flags_internal ABSL_NAMESPACE_END } // namespace absl extern "C" { // Additional report of fatal usage error message before we std::exit. Error is // fatal if is_fatal argument to ReportUsageError is true. void ABSL_INTERNAL_C_SYMBOL(AbslInternalReportFatalUsageError)( absl::string_view); } // extern "C" #endif // ABSL_FLAGS_USAGE_CONFIG_H_