Updated all commands that use a "--format" / "-f" options to use the new
OptionGroupFormat. Updated OptionGroupFormat to be able to also use the
"--size" and "--count" options. Commands that use a OptionGroupFormat instance
can choose which of the options they want by initializing OptionGroupFormat
accordingly. Clients can either get only the "--format", "--format" + "--size",
or "--format" + "--size" + "--count". This is in preparation for upcoming
chnages where there are alternate ways (GDB format specification) to set a
format. 



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@142911 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Interpreter/OptionGroupFormat.cpp b/source/Interpreter/OptionGroupFormat.cpp
index 7f6ebbf..ad4f371 100644
--- a/source/Interpreter/OptionGroupFormat.cpp
+++ b/source/Interpreter/OptionGroupFormat.cpp
@@ -18,14 +18,12 @@
 using namespace lldb;
 using namespace lldb_private;
 
-OptionGroupFormat::OptionGroupFormat(lldb::Format default_format,
-                                     uint32_t default_byte_size,
-                                     bool byte_size_prefix_ok) :
-    m_format (default_format, 
-              default_format,
-              default_byte_size,
-              default_byte_size,
-              byte_size_prefix_ok)
+OptionGroupFormat::OptionGroupFormat (lldb::Format default_format,
+                                      uint64_t default_byte_size,
+                                      uint64_t default_count) :
+    m_format (default_format, default_format),
+    m_byte_size (default_byte_size, default_byte_size),
+    m_count (default_count, default_count)
 {
 }
 
@@ -36,13 +34,22 @@
 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."},
+{ LLDB_OPT_SET_2, false, "size"  ,'s', required_argument, NULL, 0, eArgTypeByteSize, "The size in bytes to use when displaying with the selected format."},
+{ LLDB_OPT_SET_3, false, "count" ,'c', required_argument, NULL, 0, eArgTypeCount   , "The number of total items to display."},
 };
 
 uint32_t
 OptionGroupFormat::GetNumDefinitions ()
 {
-    return arraysize(g_option_table);
+    if (m_byte_size.GetDefaultValue() < UINT64_MAX)
+    {
+        if (m_count.GetDefaultValue() < UINT64_MAX)
+            return 3;
+        else
+            return 2;
+    }
+    return 1;
 }
 
 const OptionDefinition *
@@ -65,6 +72,32 @@
             error = m_format.SetValueFromCString (option_arg);
             break;
 
+        case 'c':
+            if (m_count.GetDefaultValue() == 0)
+            {
+                error.SetErrorString ("--count option is disabled");
+            }
+            else
+            {
+                error = m_count.SetValueFromCString (option_arg);
+                if (m_count.GetCurrentValue() == 0)
+                    error.SetErrorStringWithFormat("invalid --count option value '%s'", option_arg);
+            }
+            break;
+            
+        case 's':
+            if (m_byte_size.GetDefaultValue() == 0)
+            {
+                error.SetErrorString ("--size option is disabled");
+            }
+            else
+            {
+                error = m_byte_size.SetValueFromCString (option_arg);
+                if (m_byte_size.GetCurrentValue() == 0)
+                    error.SetErrorStringWithFormat("invalid --size option value '%s'", option_arg);
+            }
+            break;
+
         default:
             error.SetErrorStringWithFormat ("Unrecognized option '%c'.\n", short_option);
             break;
@@ -77,5 +110,6 @@
 OptionGroupFormat::OptionParsingStarting (CommandInterpreter &interpreter)
 {
     m_format.Clear();
+    m_byte_size.Clear();
+    m_count.Clear();
 }
-