1e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//===-- OptionGroupUUID.cpp -------------------------------------*- C++ -*-===//
2e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//
3e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//                     The LLVM Compiler Infrastructure
4e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//
5e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// This file is distributed under the University of Illinois Open Source
6e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// License. See LICENSE.TXT for details.
7e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//
8e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton//===----------------------------------------------------------------------===//
9e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
10a0f34698c457091c0d15b8fdfbf638421b1283d4Johnny Chen#include "lldb/Interpreter/OptionGroupUUID.h"
11e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
12e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// C Includes
13e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// C++ Includes
14e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// Other libraries and framework includes
15e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton// Project includes
164003f57f86a92411f0563f355a32e8f86ae29d5aJohnny Chen#include "lldb/Utility/Utils.h"
17e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
18e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonusing namespace lldb;
19e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonusing namespace lldb_private;
20e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
21e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonOptionGroupUUID::OptionGroupUUID() :
22e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    m_uuid ()
23e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
24e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton}
25e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
26e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonOptionGroupUUID::~OptionGroupUUID ()
27e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
28e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton}
29e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
30e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonstatic OptionDefinition
31e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytong_option_table[] =
32e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
334003f57f86a92411f0563f355a32e8f86ae29d5aJohnny Chen    { LLDB_OPT_SET_1 , false, "uuid", 'u', required_argument, NULL, 0, eArgTypeNone, "A module UUID value."},
34e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton};
35e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
36e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonuint32_t
37e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonOptionGroupUUID::GetNumDefinitions ()
38e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
3908af5983cb349e7167f3832d00d36ca611bfa2f1Johnny Chen    return llvm::array_lengthof(g_option_table);
40e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton}
41e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
42e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonconst OptionDefinition *
43e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonOptionGroupUUID::GetDefinitions ()
44e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
45e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    return g_option_table;
46e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton}
47e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
48e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonError
49e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonOptionGroupUUID::SetOptionValue (CommandInterpreter &interpreter,
506475c42148a8ea1ca86e5db465db7eca742d897dGreg Clayton                                 uint32_t option_idx,
516475c42148a8ea1ca86e5db465db7eca742d897dGreg Clayton                                 const char *option_arg)
52e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
53e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    Error error;
546475c42148a8ea1ca86e5db465db7eca742d897dGreg Clayton    const int short_option = g_option_table[option_idx].short_option;
55e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
56e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    switch (short_option)
57e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    {
58e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        case 'u':
59e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            error = m_uuid.SetValueFromCString (option_arg);
60bb2218f2b3803400299d26a6b96e8e5edc77e385Jim Ingham            if (error.Success())
61bb2218f2b3803400299d26a6b96e8e5edc77e385Jim Ingham                m_uuid.SetOptionWasSet();
62e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            break;
63e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
64e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton        default:
659c236733d43e6250c8a5671a438f4a2afeb9c0b2Greg Clayton            error.SetErrorStringWithFormat ("unrecognized option '%c'", short_option);
66e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton            break;
67e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    }
68e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
69e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    return error;
70e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton}
71e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton
72e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Claytonvoid
73e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg ClaytonOptionGroupUUID::OptionParsingStarting (CommandInterpreter &interpreter)
74e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton{
75e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton    m_uuid.Clear();
76e1f50b9df1299f6b9181b5ac2699ed4a3ad38a59Greg Clayton}
77