16 #include "absl/flags/usage_config.h"
22 #include "absl/base/attributes.h"
23 #include "absl/base/config.h"
24 #include "absl/base/const_init.h"
25 #include "absl/base/thread_annotations.h"
26 #include "absl/flags/internal/path_util.h"
27 #include "absl/flags/internal/program_name.h"
28 #include "absl/strings/match.h"
29 #include "absl/strings/string_view.h"
30 #include "absl/strings/strip.h"
31 #include "absl/synchronization/mutex.h"
44 namespace flags_internal {
75 return ContainsHelpshortFlags(
filename);
87 version_str +=
"Debug build (NDEBUG not #defined)\n";
116 if (custom_usage_config)
return *custom_usage_config;
118 FlagsUsageConfig default_config;
119 default_config.contains_helpshort_flags = &ContainsHelpshortFlags;
120 default_config.contains_help_flags = &ContainsHelppackageFlags;
121 default_config.contains_helppackage_flags = &ContainsHelppackageFlags;
123 default_config.normalize_filename = &NormalizeFilename;
125 return default_config;
129 std::cerr <<
"ERROR: " <<
msg << std::endl;
141 if (!usage_config.contains_helpshort_flags)
142 usage_config.contains_helpshort_flags =
143 flags_internal::ContainsHelpshortFlags;
145 if (!usage_config.contains_help_flags)
146 usage_config.contains_help_flags = flags_internal::ContainsHelppackageFlags;
148 if (!usage_config.contains_helppackage_flags)
149 usage_config.contains_helppackage_flags =
150 flags_internal::ContainsHelppackageFlags;
152 if (!usage_config.version_string)
155 if (!usage_config.normalize_filename)
156 usage_config.normalize_filename = flags_internal::NormalizeFilename;
158 if (flags_internal::custom_usage_config)
159 *flags_internal::custom_usage_config = usage_config;
161 flags_internal::custom_usage_config =
new FlagsUsageConfig(usage_config);