From: Carl Worth Date: Sun, 12 Aug 2012 23:48:10 +0000 (-0700) Subject: Move static boolOption function to trace::boolOption X-Git-Url: https://git.cworth.org/git?p=apitrace;a=commitdiff_plain;h=a7e7b27a13dc40db4ec96bc1bba667644ef0a896 Move static boolOption function to trace::boolOption Other programs will also want to be able to parse Boolean command-line options, so we should share this code in order to easily get consistent behavior. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 83490d5..7f75d07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -326,6 +326,7 @@ add_library (common STATIC common/image_bmp.cpp common/image_pnm.cpp common/image_png.cpp + common/trace_option.cpp common/${os} ) diff --git a/cli/cli_dump.cpp b/cli/cli_dump.cpp index f52b83c..f959568 100644 --- a/cli/cli_dump.cpp +++ b/cli/cli_dump.cpp @@ -38,6 +38,7 @@ #include "trace_parser.hpp" #include "trace_dump.hpp" #include "trace_callset.hpp" +#include "trace_option.hpp" enum ColorOption { @@ -98,25 +99,6 @@ longOptions[] = { {0, 0, 0, 0} }; -static bool -boolOption(const char *option, bool default_ = true) { - if (!option) { - return default_; - } - if (strcmp(option, "0") == 0 || - strcmp(option, "no") == 0 || - strcmp(option, "false") == 0) { - return false; - } - if (strcmp(option, "0") == 0 || - strcmp(option, "yes") == 0 || - strcmp(option, "true") == 0) { - return true; - } - std::cerr << "error: unexpected bool " << option << "\n"; - return default_; -} - static int command(int argc, char *argv[]) { @@ -149,17 +131,17 @@ command(int argc, char *argv[]) } break; case THREAD_IDS_OPT: - dumpThreadIds = boolOption(optarg); + dumpThreadIds = trace::boolOption(optarg); break; case CALL_NOS_OPT: - if (boolOption(optarg)) { + if (trace::boolOption(optarg)) { dumpFlags &= ~trace::DUMP_FLAG_NO_CALL_NO; } else { dumpFlags |= trace::DUMP_FLAG_NO_CALL_NO; } break; case ARG_NAMES_OPT: - if (boolOption(optarg)) { + if (trace::boolOption(optarg)) { dumpFlags &= ~trace::DUMP_FLAG_NO_ARG_NAMES; } else { dumpFlags |= trace::DUMP_FLAG_NO_ARG_NAMES; diff --git a/common/trace_option.cpp b/common/trace_option.cpp new file mode 100644 index 0000000..5c4563f --- /dev/null +++ b/common/trace_option.cpp @@ -0,0 +1,53 @@ +/************************************************************************** + * + * Copyright 2011 Jose Fonseca + * Copyright 2010 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + +#include "trace_option.hpp" + +#include +#include + +namespace trace { + +bool +boolOption(const char *option, bool default_) { + if (!option) { + return default_; + } + if (strcmp(option, "0") == 0 || + strcmp(option, "no") == 0 || + strcmp(option, "false") == 0) { + return false; + } + if (strcmp(option, "0") == 0 || + strcmp(option, "yes") == 0 || + strcmp(option, "true") == 0) { + return true; + } + std::cerr << "error: unexpected bool " << option << "\n"; + return default_; +} + +} /* namespace trace */ diff --git a/common/trace_option.hpp b/common/trace_option.hpp new file mode 100644 index 0000000..e22a422 --- /dev/null +++ b/common/trace_option.hpp @@ -0,0 +1,37 @@ +/************************************************************************** + * + * Copyright 2011 Jose Fonseca + * Copyright 2010 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + **************************************************************************/ + +#ifndef _TRACE_OPTION_HPP_ +#define _TRACE_OPTION_HPP_ + +namespace trace { + +bool +boolOption(const char *option, bool default_ = true); + +} /* namespace trace */ + +#endif /* _TRACE_CALLSET_HPP_ */