diff --git a/lldb/include/lldb/Utility/Utils.h b/lldb/include/lldb/Utility/Utils.h new file mode 100644 index 000000000000..9d5a6c0da12a --- /dev/null +++ b/lldb/include/lldb/Utility/Utils.h @@ -0,0 +1,19 @@ +//===-- Utils.h -------------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef utility_Utils_h_ +#define utility_Utils_h_ + +namespace lldb_private { + +template +inline unsigned arraysize(T (&v)[size]) { return size; } + +} // namespace lldb_private +#endif // utility_Utils diff --git a/lldb/lldb.xcodeproj/project.pbxproj b/lldb/lldb.xcodeproj/project.pbxproj index 709cb352672b..6ac844cd1660 100644 --- a/lldb/lldb.xcodeproj/project.pbxproj +++ b/lldb/lldb.xcodeproj/project.pbxproj @@ -1298,6 +1298,7 @@ B23DD24F12EDFAC1000C3894 /* ARMUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ARMUtils.h; path = Utility/ARMUtils.h; sourceTree = ""; }; B2462246141AD37D00F3D409 /* OptionGroupWatchpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OptionGroupWatchpoint.cpp; path = source/Interpreter/OptionGroupWatchpoint.cpp; sourceTree = ""; }; B2462248141AD39B00F3D409 /* OptionGroupWatchpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OptionGroupWatchpoint.h; path = include/lldb/Interpreter/OptionGroupWatchpoint.h; sourceTree = ""; }; + B2462249141AE62200F3D409 /* Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = include/lldb/Utility/Utils.h; sourceTree = ""; }; B27318411416AC12006039C8 /* WatchpointLocationList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WatchpointLocationList.cpp; path = source/Breakpoint/WatchpointLocationList.cpp; sourceTree = ""; }; B27318431416AC43006039C8 /* WatchpointLocationList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WatchpointLocationList.h; path = include/lldb/Breakpoint/WatchpointLocationList.h; sourceTree = ""; }; B28058A0139988B0002D96D0 /* InferiorCallPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InferiorCallPOSIX.cpp; path = Utility/InferiorCallPOSIX.cpp; sourceTree = ""; }; @@ -1841,6 +1842,7 @@ 2682F16A115EDA0D00CCFF99 /* PseudoTerminal.cpp */, 94031A9F13CF5B3D00DCFF3C /* PriorityPointerPair.h */, 94EBAC8313D9EE26009BA64E /* PythonPointer.h */, + B2462249141AE62200F3D409 /* Utils.h */, ); name = Utility; sourceTree = ""; diff --git a/lldb/source/Interpreter/OptionGroupArchitecture.cpp b/lldb/source/Interpreter/OptionGroupArchitecture.cpp index 9446f2e73d51..377bac0c61ac 100644 --- a/lldb/source/Interpreter/OptionGroupArchitecture.cpp +++ b/lldb/source/Interpreter/OptionGroupArchitecture.cpp @@ -13,6 +13,7 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -29,15 +30,13 @@ OptionGroupArchitecture::~OptionGroupArchitecture () static OptionDefinition g_option_table[] = { -{ LLDB_OPT_SET_1 , false, "arch" , 'a', required_argument, NULL, 0, eArgTypeArchitecture , "Specify the architecture for the target."}, + { LLDB_OPT_SET_1 , false, "arch" , 'a', required_argument, NULL, 0, eArgTypeArchitecture , "Specify the architecture for the target."}, }; -const uint32_t k_num_file_options = sizeof(g_option_table)/sizeof(OptionDefinition); - uint32_t OptionGroupArchitecture::GetNumDefinitions () { - return k_num_file_options; + return arraysize(g_option_table); } const OptionDefinition * diff --git a/lldb/source/Interpreter/OptionGroupFormat.cpp b/lldb/source/Interpreter/OptionGroupFormat.cpp index a42099db3c58..7f6ebbf51fd7 100644 --- a/lldb/source/Interpreter/OptionGroupFormat.cpp +++ b/lldb/source/Interpreter/OptionGroupFormat.cpp @@ -13,6 +13,7 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -35,14 +36,13 @@ OptionGroupFormat::~OptionGroupFormat () static OptionDefinition g_option_table[] = { -{ LLDB_OPT_SET_1 , false, "format", 'f', required_argument, NULL, 0, eArgTypeFormat , "Specify a format to be used for display."}, + { LLDB_OPT_SET_1 , false, "format", 'f', required_argument, NULL, 0, eArgTypeFormat , "Specify a format to be used for display."}, }; -const uint32_t k_num_file_options = sizeof(g_option_table)/sizeof(OptionDefinition); uint32_t OptionGroupFormat::GetNumDefinitions () { - return k_num_file_options; + return arraysize(g_option_table); } const OptionDefinition * diff --git a/lldb/source/Interpreter/OptionGroupOutputFile.cpp b/lldb/source/Interpreter/OptionGroupOutputFile.cpp index 541c8b4e8e70..f5daa3a5b72c 100644 --- a/lldb/source/Interpreter/OptionGroupOutputFile.cpp +++ b/lldb/source/Interpreter/OptionGroupOutputFile.cpp @@ -13,6 +13,7 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -30,16 +31,14 @@ OptionGroupOutputFile::~OptionGroupOutputFile () static OptionDefinition g_option_table[] = { -{ LLDB_OPT_SET_1 , false, "outfile", 'o', required_argument, NULL, 0, eArgTypePath , "Specify a path for capturing command output."}, -{ LLDB_OPT_SET_1 , false, "append-outfile" , 'A', no_argument, NULL, 0, eArgTypeNone , "Append to the the file specified with '--outfile '."}, + { LLDB_OPT_SET_1 , false, "outfile", 'o', required_argument, NULL, 0, eArgTypePath , "Specify a path for capturing command output."}, + { LLDB_OPT_SET_1 , false, "append-outfile" , 'A', no_argument, NULL, 0, eArgTypeNone , "Append to the the file specified with '--outfile '."}, }; -const uint32_t k_num_file_options = sizeof(g_option_table)/sizeof(OptionDefinition); - uint32_t OptionGroupOutputFile::GetNumDefinitions () { - return k_num_file_options; + return arraysize(g_option_table); } const OptionDefinition * diff --git a/lldb/source/Interpreter/OptionGroupPlatform.cpp b/lldb/source/Interpreter/OptionGroupPlatform.cpp index 1734a792d608..910a6e9b376d 100644 --- a/lldb/source/Interpreter/OptionGroupPlatform.cpp +++ b/lldb/source/Interpreter/OptionGroupPlatform.cpp @@ -15,6 +15,7 @@ // Project includes #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Target/Platform.h" +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -67,8 +68,6 @@ g_option_table[] = { LLDB_OPT_SET_ALL, false, "sysroot" , 's', required_argument, NULL, 0, eArgTypeFilename, "Specify the SDK root directory that contains a root of all remote system files." } }; -static const uint32_t k_option_table_size = sizeof(g_option_table)/sizeof (OptionDefinition); - const OptionDefinition* OptionGroupPlatform::GetDefinitions () { @@ -81,8 +80,8 @@ uint32_t OptionGroupPlatform::GetNumDefinitions () { if (m_include_platform_option) - return k_option_table_size; - return k_option_table_size - 1; + return arraysize(g_option_table); + return arraysize(g_option_table) - 1; } diff --git a/lldb/source/Interpreter/OptionGroupUUID.cpp b/lldb/source/Interpreter/OptionGroupUUID.cpp index b1b3c77ee2d4..d009008b51fe 100644 --- a/lldb/source/Interpreter/OptionGroupUUID.cpp +++ b/lldb/source/Interpreter/OptionGroupUUID.cpp @@ -13,6 +13,7 @@ // C++ Includes // Other libraries and framework includes // Project includes +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -29,15 +30,13 @@ OptionGroupUUID::~OptionGroupUUID () static OptionDefinition g_option_table[] = { -{ LLDB_OPT_SET_1 , false, "uuid", 'u', required_argument, NULL, 0, eArgTypeNone, "A module UUID value."}, + { LLDB_OPT_SET_1 , false, "uuid", 'u', required_argument, NULL, 0, eArgTypeNone, "A module UUID value."}, }; -const uint32_t k_num_file_options = sizeof(g_option_table)/sizeof(OptionDefinition); - uint32_t OptionGroupUUID::GetNumDefinitions () { - return k_num_file_options; + return arraysize(g_option_table); } const OptionDefinition * diff --git a/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp b/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp index 5f540d60d06a..4557883ecc05 100644 --- a/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp +++ b/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp @@ -15,6 +15,7 @@ // Project includes #include "lldb/Target/Target.h" #include "lldb/Interpreter/CommandInterpreter.h" +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -45,12 +46,10 @@ g_option_table[] = { 0, false, NULL, 0, 0, NULL, NULL, eArgTypeNone, NULL } }; -const uint32_t k_num_file_options = sizeof(g_option_table)/sizeof(OptionDefinition); - uint32_t OptionGroupValueObjectDisplay::GetNumDefinitions () { - return k_num_file_options; + return arraysize(g_option_table); } const OptionDefinition * diff --git a/lldb/source/Interpreter/OptionGroupWatchpoint.cpp b/lldb/source/Interpreter/OptionGroupWatchpoint.cpp index 6d1fcb75e5bd..be1bf57f51a0 100644 --- a/lldb/source/Interpreter/OptionGroupWatchpoint.cpp +++ b/lldb/source/Interpreter/OptionGroupWatchpoint.cpp @@ -15,6 +15,7 @@ // Project includes #include "lldb/lldb-enumerations.h" #include "lldb/Interpreter/Args.h" +#include "lldb/Utility/Utils.h" using namespace lldb; using namespace lldb_private; @@ -84,7 +85,5 @@ OptionGroupWatchpoint::GetDefinitions () uint32_t OptionGroupWatchpoint::GetNumDefinitions () { - return 1; + return arraysize(g_option_table); } - -