1254721Semaste//===-- lldb-enumerations.h -------------------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef LLDB_lldb_enumerations_h_
11254721Semaste#define LLDB_lldb_enumerations_h_
12254721Semaste
13254721Semastenamespace lldb {
14254721Semaste
15254721Semaste    //----------------------------------------------------------------------
16254721Semaste    // Process and Thread States
17254721Semaste    //----------------------------------------------------------------------
18254721Semaste    typedef enum StateType
19254721Semaste    {
20254721Semaste        eStateInvalid = 0,
21254721Semaste        eStateUnloaded,     ///< Process is object is valid, but not currently loaded
22254721Semaste        eStateConnected,    ///< Process is connected to remote debug services, but not launched or attached to anything yet
23254721Semaste        eStateAttaching,    ///< Process is currently trying to attach
24254721Semaste        eStateLaunching,    ///< Process is in the process of launching
25254721Semaste        eStateStopped,      ///< Process or thread is stopped and can be examined.
26254721Semaste        eStateRunning,      ///< Process or thread is running and can't be examined.
27254721Semaste        eStateStepping,     ///< Process or thread is in the process of stepping and can not be examined.
28254721Semaste        eStateCrashed,      ///< Process or thread has crashed and can be examined.
29254721Semaste        eStateDetached,     ///< Process has been detached and can't be examined.
30254721Semaste        eStateExited,       ///< Process has exited and can't be examined.
31254721Semaste        eStateSuspended     ///< Process or thread is in a suspended state as far
32254721Semaste                            ///< as the debugger is concerned while other processes
33254721Semaste                            ///< or threads get the chance to run.
34254721Semaste    } StateType;
35254721Semaste
36254721Semaste    //----------------------------------------------------------------------
37254721Semaste    // Launch Flags
38254721Semaste    //----------------------------------------------------------------------
39254721Semaste    typedef enum LaunchFlags
40254721Semaste    {
41254721Semaste        eLaunchFlagNone         = 0u,
42254721Semaste        eLaunchFlagExec         = (1u << 0),  ///< Exec when launching and turn the calling process into a new process
43254721Semaste        eLaunchFlagDebug        = (1u << 1),  ///< Stop as soon as the process launches to allow the process to be debugged
44254721Semaste        eLaunchFlagStopAtEntry  = (1u << 2),  ///< Stop at the program entry point instead of auto-continuing when launching or attaching at entry point
45254721Semaste        eLaunchFlagDisableASLR  = (1u << 3),  ///< Disable Address Space Layout Randomization
46254721Semaste        eLaunchFlagDisableSTDIO = (1u << 4),  ///< Disable stdio for inferior process (e.g. for a GUI app)
47254721Semaste        eLaunchFlagLaunchInTTY  = (1u << 5),  ///< Launch the process in a new TTY if supported by the host
48254721Semaste        eLaunchFlagLaunchInShell= (1u << 6),   ///< Launch the process inside a shell to get shell expansion
49269024Semaste        eLaunchFlagLaunchInSeparateProcessGroup = (1u << 7), ///< Launch the process in a separate process group
50269024Semaste        eLaunchFlagsDontMonitorProcess = (1u << 8)  ///< If you are going to hand the process off (e.g. to debugserver)
51269024Semaste                                                    ///< set this flag so lldb & the handee don't race to reap it.
52254721Semaste    } LaunchFlags;
53254721Semaste
54254721Semaste    //----------------------------------------------------------------------
55254721Semaste    // Thread Run Modes
56254721Semaste    //----------------------------------------------------------------------
57254721Semaste    typedef enum RunMode {
58254721Semaste        eOnlyThisThread,
59254721Semaste        eAllThreads,
60254721Semaste        eOnlyDuringStepping
61254721Semaste    } RunMode;
62254721Semaste
63254721Semaste    //----------------------------------------------------------------------
64254721Semaste    // Byte ordering definitions
65254721Semaste    //----------------------------------------------------------------------
66254721Semaste    typedef enum ByteOrder
67254721Semaste    {
68254721Semaste        eByteOrderInvalid   = 0,
69254721Semaste        eByteOrderBig       = 1,
70254721Semaste        eByteOrderPDP       = 2,
71254721Semaste        eByteOrderLittle    = 4
72254721Semaste    } ByteOrder;
73254721Semaste
74254721Semaste    //----------------------------------------------------------------------
75254721Semaste    // Register encoding definitions
76254721Semaste    //----------------------------------------------------------------------
77254721Semaste    typedef enum Encoding
78254721Semaste    {
79254721Semaste        eEncodingInvalid = 0,
80254721Semaste        eEncodingUint,               // unsigned integer
81254721Semaste        eEncodingSint,               // signed integer
82254721Semaste        eEncodingIEEE754,            // float
83254721Semaste        eEncodingVector              // vector registers
84254721Semaste    } Encoding;
85254721Semaste
86254721Semaste    //----------------------------------------------------------------------
87254721Semaste    // Display format definitions
88254721Semaste    //----------------------------------------------------------------------
89254721Semaste    typedef enum Format
90254721Semaste    {
91254721Semaste        eFormatDefault = 0,
92254721Semaste        eFormatInvalid = 0,
93254721Semaste        eFormatBoolean,
94254721Semaste        eFormatBinary,
95254721Semaste        eFormatBytes,
96254721Semaste        eFormatBytesWithASCII,
97254721Semaste        eFormatChar,
98254721Semaste        eFormatCharPrintable,   // Only printable characters, space if not printable
99254721Semaste        eFormatComplex,         // Floating point complex type
100254721Semaste        eFormatComplexFloat = eFormatComplex,
101254721Semaste        eFormatCString,         // NULL terminated C strings
102254721Semaste        eFormatDecimal,
103254721Semaste        eFormatEnum,
104254721Semaste        eFormatHex,
105254721Semaste        eFormatHexUppercase,
106254721Semaste        eFormatFloat,
107254721Semaste        eFormatOctal,
108254721Semaste        eFormatOSType,          // OS character codes encoded into an integer 'PICT' 'text' etc...
109254721Semaste        eFormatUnicode16,
110254721Semaste        eFormatUnicode32,
111254721Semaste        eFormatUnsigned,
112254721Semaste        eFormatPointer,
113254721Semaste        eFormatVectorOfChar,
114254721Semaste        eFormatVectorOfSInt8,
115254721Semaste        eFormatVectorOfUInt8,
116254721Semaste        eFormatVectorOfSInt16,
117254721Semaste        eFormatVectorOfUInt16,
118254721Semaste        eFormatVectorOfSInt32,
119254721Semaste        eFormatVectorOfUInt32,
120254721Semaste        eFormatVectorOfSInt64,
121254721Semaste        eFormatVectorOfUInt64,
122254721Semaste        eFormatVectorOfFloat32,
123254721Semaste        eFormatVectorOfFloat64,
124254721Semaste        eFormatVectorOfUInt128,
125254721Semaste        eFormatComplexInteger,      // Integer complex type
126254721Semaste        eFormatCharArray,           // Print characters with no single quotes, used for character arrays that can contain non printable characters
127254721Semaste        eFormatAddressInfo,         // Describe what an address points to (func + offset with file/line, symbol + offset, data, etc)
128254721Semaste        eFormatHexFloat,            // ISO C99 hex float string
129254721Semaste        eFormatInstruction,         // Disassemble an opcode
130254721Semaste        eFormatVoid,                // Do not print this
131254721Semaste        kNumFormats
132254721Semaste    } Format;
133254721Semaste
134254721Semaste    //----------------------------------------------------------------------
135254721Semaste    // Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls
136254721Semaste    //----------------------------------------------------------------------
137254721Semaste    typedef enum DescriptionLevel
138254721Semaste    {
139254721Semaste        eDescriptionLevelBrief = 0,
140254721Semaste        eDescriptionLevelFull,
141254721Semaste        eDescriptionLevelVerbose,
142254721Semaste        eDescriptionLevelInitial,
143254721Semaste        kNumDescriptionLevels
144254721Semaste    } DescriptionLevel;
145254721Semaste
146254721Semaste    //----------------------------------------------------------------------
147254721Semaste    // Script interpreter types
148254721Semaste    //----------------------------------------------------------------------
149254721Semaste    typedef enum ScriptLanguage
150254721Semaste    {
151254721Semaste        eScriptLanguageNone,
152254721Semaste        eScriptLanguagePython,
153254721Semaste        eScriptLanguageDefault = eScriptLanguagePython
154254721Semaste    } ScriptLanguage;
155254721Semaste
156254721Semaste    //----------------------------------------------------------------------
157254721Semaste    // Register numbering types
158254721Semaste    //----------------------------------------------------------------------
159254721Semaste    typedef enum RegisterKind
160254721Semaste    {
161254721Semaste        eRegisterKindGCC = 0,    // the register numbers seen in eh_frame
162254721Semaste        eRegisterKindDWARF,      // the register numbers seen DWARF
163254721Semaste        eRegisterKindGeneric,    // insn ptr reg, stack ptr reg, etc not specific to any particular target
164254721Semaste        eRegisterKindGDB,        // the register numbers gdb uses (matches stabs numbers?)
165254721Semaste        eRegisterKindLLDB,       // lldb's internal register numbers
166254721Semaste        kNumRegisterKinds
167254721Semaste    } RegisterKind;
168254721Semaste
169254721Semaste    //----------------------------------------------------------------------
170254721Semaste    // Thread stop reasons
171254721Semaste    //----------------------------------------------------------------------
172254721Semaste    typedef enum StopReason
173254721Semaste    {
174254721Semaste        eStopReasonInvalid = 0,
175254721Semaste        eStopReasonNone,
176254721Semaste        eStopReasonTrace,
177254721Semaste        eStopReasonBreakpoint,
178254721Semaste        eStopReasonWatchpoint,
179254721Semaste        eStopReasonSignal,
180254721Semaste        eStopReasonException,
181254721Semaste        eStopReasonExec,        // Program was re-exec'ed
182254721Semaste        eStopReasonPlanComplete,
183254721Semaste        eStopReasonThreadExiting
184254721Semaste    } StopReason;
185254721Semaste
186254721Semaste    //----------------------------------------------------------------------
187254721Semaste    // Command Return Status Types
188254721Semaste    //----------------------------------------------------------------------
189254721Semaste    typedef enum ReturnStatus
190254721Semaste    {
191254721Semaste        eReturnStatusInvalid,
192254721Semaste        eReturnStatusSuccessFinishNoResult,
193254721Semaste        eReturnStatusSuccessFinishResult,
194254721Semaste        eReturnStatusSuccessContinuingNoResult,
195254721Semaste        eReturnStatusSuccessContinuingResult,
196254721Semaste        eReturnStatusStarted,
197254721Semaste        eReturnStatusFailed,
198254721Semaste        eReturnStatusQuit
199254721Semaste    } ReturnStatus;
200254721Semaste
201254721Semaste
202254721Semaste    //----------------------------------------------------------------------
203254721Semaste    // Connection Status Types
204254721Semaste    //----------------------------------------------------------------------
205254721Semaste    typedef enum ConnectionStatus
206254721Semaste    {
207254721Semaste        eConnectionStatusSuccess,         // Success
208254721Semaste        eConnectionStatusEndOfFile,       // End-of-file encountered
209254721Semaste        eConnectionStatusError,           // Check GetError() for details
210254721Semaste        eConnectionStatusTimedOut,        // Request timed out
211254721Semaste        eConnectionStatusNoConnection,    // No connection
212254721Semaste        eConnectionStatusLostConnection   // Lost connection while connected to a valid connection
213254721Semaste    } ConnectionStatus;
214254721Semaste
215254721Semaste    typedef enum ErrorType
216254721Semaste    {
217254721Semaste        eErrorTypeInvalid,
218254721Semaste        eErrorTypeGeneric,      ///< Generic errors that can be any value.
219254721Semaste        eErrorTypeMachKernel,   ///< Mach kernel error codes.
220254721Semaste        eErrorTypePOSIX         ///< POSIX error codes.
221254721Semaste    } ErrorType;
222254721Semaste
223254721Semaste
224254721Semaste    typedef enum ValueType
225254721Semaste    {
226254721Semaste        eValueTypeInvalid           = 0,
227254721Semaste        eValueTypeVariableGlobal    = 1,    // globals variable
228254721Semaste        eValueTypeVariableStatic    = 2,    // static variable
229254721Semaste        eValueTypeVariableArgument  = 3,    // function argument variables
230254721Semaste        eValueTypeVariableLocal     = 4,    // function local variables
231254721Semaste        eValueTypeRegister          = 5,    // stack frame register value
232254721Semaste        eValueTypeRegisterSet       = 6,    // A collection of stack frame register values
233254721Semaste        eValueTypeConstResult       = 7     // constant result variables
234254721Semaste    } ValueType;
235254721Semaste
236254721Semaste    //----------------------------------------------------------------------
237254721Semaste    // Token size/granularities for Input Readers
238254721Semaste    //----------------------------------------------------------------------
239254721Semaste
240254721Semaste    typedef enum InputReaderGranularity
241254721Semaste    {
242254721Semaste        eInputReaderGranularityInvalid = 0,
243254721Semaste        eInputReaderGranularityByte,
244254721Semaste        eInputReaderGranularityWord,
245254721Semaste        eInputReaderGranularityLine,
246254721Semaste        eInputReaderGranularityAll
247254721Semaste    } InputReaderGranularity;
248254721Semaste
249254721Semaste    //------------------------------------------------------------------
250254721Semaste    /// These mask bits allow a common interface for queries that can
251254721Semaste    /// limit the amount of information that gets parsed to only the
252254721Semaste    /// information that is requested. These bits also can indicate what
253254721Semaste    /// actually did get resolved during query function calls.
254254721Semaste    ///
255254721Semaste    /// Each definition corresponds to a one of the member variables
256254721Semaste    /// in this class, and requests that that item be resolved, or
257254721Semaste    /// indicates that the member did get resolved.
258254721Semaste    //------------------------------------------------------------------
259254721Semaste    typedef enum SymbolContextItem
260254721Semaste    {
261254721Semaste        eSymbolContextTarget     = (1u << 0), ///< Set when \a target is requested from a query, or was located in query results
262254721Semaste        eSymbolContextModule     = (1u << 1), ///< Set when \a module is requested from a query, or was located in query results
263254721Semaste        eSymbolContextCompUnit   = (1u << 2), ///< Set when \a comp_unit is requested from a query, or was located in query results
264254721Semaste        eSymbolContextFunction   = (1u << 3), ///< Set when \a function is requested from a query, or was located in query results
265254721Semaste        eSymbolContextBlock      = (1u << 4), ///< Set when the deepest \a block is requested from a query, or was located in query results
266254721Semaste        eSymbolContextLineEntry  = (1u << 5), ///< Set when \a line_entry is requested from a query, or was located in query results
267254721Semaste        eSymbolContextSymbol     = (1u << 6), ///< Set when \a symbol is requested from a query, or was located in query results
268254721Semaste        eSymbolContextEverything = ((eSymbolContextSymbol << 1) - 1u)  ///< Indicates to try and lookup everything up during a query.
269254721Semaste    } SymbolContextItem;
270254721Semaste
271254721Semaste    typedef enum Permissions
272254721Semaste    {
273254721Semaste        ePermissionsWritable    = (1u << 0),
274254721Semaste        ePermissionsReadable    = (1u << 1),
275254721Semaste        ePermissionsExecutable  = (1u << 2)
276254721Semaste    } Permissions;
277254721Semaste
278254721Semaste    typedef enum InputReaderAction
279254721Semaste    {
280254721Semaste        eInputReaderActivate,   // reader is newly pushed onto the reader stack
281254721Semaste        eInputReaderAsynchronousOutputWritten, // an async output event occurred; the reader may want to do something
282254721Semaste        eInputReaderReactivate, // reader is on top of the stack again after another reader was popped off
283254721Semaste        eInputReaderDeactivate, // another reader was pushed on the stack
284254721Semaste        eInputReaderGotToken,   // reader got one of its tokens (granularity)
285254721Semaste        eInputReaderInterrupt,  // reader received an interrupt signal (probably from a control-c)
286254721Semaste        eInputReaderEndOfFile,  // reader received an EOF char (probably from a control-d)
287254721Semaste        eInputReaderDone        // reader was just popped off the stack and is done
288254721Semaste    } InputReaderAction;
289254721Semaste
290254721Semaste    typedef enum BreakpointEventType
291254721Semaste    {
292254721Semaste        eBreakpointEventTypeInvalidType         = (1u << 0),
293254721Semaste        eBreakpointEventTypeAdded               = (1u << 1),
294254721Semaste        eBreakpointEventTypeRemoved             = (1u << 2),
295254721Semaste        eBreakpointEventTypeLocationsAdded      = (1u << 3),  // Locations added doesn't get sent when the breakpoint is created
296254721Semaste        eBreakpointEventTypeLocationsRemoved    = (1u << 4),
297254721Semaste        eBreakpointEventTypeLocationsResolved   = (1u << 5),
298254721Semaste        eBreakpointEventTypeEnabled             = (1u << 6),
299254721Semaste        eBreakpointEventTypeDisabled            = (1u << 7),
300254721Semaste        eBreakpointEventTypeCommandChanged      = (1u << 8),
301254721Semaste        eBreakpointEventTypeConditionChanged    = (1u << 9),
302254721Semaste        eBreakpointEventTypeIgnoreChanged       = (1u << 10),
303254721Semaste        eBreakpointEventTypeThreadChanged       = (1u << 11)
304254721Semaste    } BreakpointEventType;
305254721Semaste
306254721Semaste    typedef enum WatchpointEventType
307254721Semaste    {
308254721Semaste        eWatchpointEventTypeInvalidType         = (1u << 0),
309254721Semaste        eWatchpointEventTypeAdded               = (1u << 1),
310254721Semaste        eWatchpointEventTypeRemoved             = (1u << 2),
311254721Semaste        eWatchpointEventTypeEnabled             = (1u << 6),
312254721Semaste        eWatchpointEventTypeDisabled            = (1u << 7),
313254721Semaste        eWatchpointEventTypeCommandChanged      = (1u << 8),
314254721Semaste        eWatchpointEventTypeConditionChanged    = (1u << 9),
315254721Semaste        eWatchpointEventTypeIgnoreChanged       = (1u << 10),
316254721Semaste        eWatchpointEventTypeThreadChanged       = (1u << 11),
317254721Semaste        eWatchpointEventTypeTypeChanged         = (1u << 12)
318254721Semaste    } WatchpointEventType;
319254721Semaste
320254721Semaste
321254721Semaste    //----------------------------------------------------------------------
322254721Semaste    /// Programming language type.
323254721Semaste    ///
324254721Semaste    /// These enumerations use the same language enumerations as the DWARF
325254721Semaste    /// specification for ease of use and consistency.
326254721Semaste    /// The enum -> string code is in LanguageRuntime.cpp, don't change this
327254721Semaste    /// table without updating that code as well.
328254721Semaste    //----------------------------------------------------------------------
329254721Semaste    typedef enum LanguageType
330254721Semaste    {
331254721Semaste        eLanguageTypeUnknown         = 0x0000,   ///< Unknown or invalid language value.
332254721Semaste        eLanguageTypeC89             = 0x0001,   ///< ISO C:1989.
333254721Semaste        eLanguageTypeC               = 0x0002,   ///< Non-standardized C, such as K&R.
334254721Semaste        eLanguageTypeAda83           = 0x0003,   ///< ISO Ada:1983.
335254721Semaste        eLanguageTypeC_plus_plus     = 0x0004,   ///< ISO C++:1998.
336254721Semaste        eLanguageTypeCobol74         = 0x0005,   ///< ISO Cobol:1974.
337254721Semaste        eLanguageTypeCobol85         = 0x0006,   ///< ISO Cobol:1985.
338254721Semaste        eLanguageTypeFortran77       = 0x0007,   ///< ISO Fortran 77.
339254721Semaste        eLanguageTypeFortran90       = 0x0008,   ///< ISO Fortran 90.
340254721Semaste        eLanguageTypePascal83        = 0x0009,   ///< ISO Pascal:1983.
341254721Semaste        eLanguageTypeModula2         = 0x000a,   ///< ISO Modula-2:1996.
342254721Semaste        eLanguageTypeJava            = 0x000b,   ///< Java.
343254721Semaste        eLanguageTypeC99             = 0x000c,   ///< ISO C:1999.
344254721Semaste        eLanguageTypeAda95           = 0x000d,   ///< ISO Ada:1995.
345254721Semaste        eLanguageTypeFortran95       = 0x000e,   ///< ISO Fortran 95.
346254721Semaste        eLanguageTypePLI             = 0x000f,   ///< ANSI PL/I:1976.
347254721Semaste        eLanguageTypeObjC            = 0x0010,   ///< Objective-C.
348254721Semaste        eLanguageTypeObjC_plus_plus  = 0x0011,   ///< Objective-C++.
349254721Semaste        eLanguageTypeUPC             = 0x0012,   ///< Unified Parallel C.
350254721Semaste        eLanguageTypeD               = 0x0013,   ///< D.
351254721Semaste        eLanguageTypePython          = 0x0014,   ///< Python.
352254721Semaste        eNumLanguageTypes
353254721Semaste    } LanguageType;
354254721Semaste
355254721Semaste    typedef enum DynamicValueType
356254721Semaste    {
357254721Semaste        eNoDynamicValues = 0,
358254721Semaste        eDynamicCanRunTarget    = 1,
359254721Semaste        eDynamicDontRunTarget   = 2
360254721Semaste    } DynamicValueType;
361254721Semaste
362254721Semaste    typedef enum AccessType
363254721Semaste    {
364254721Semaste        eAccessNone,
365254721Semaste        eAccessPublic,
366254721Semaste        eAccessPrivate,
367254721Semaste        eAccessProtected,
368254721Semaste        eAccessPackage
369254721Semaste    } AccessType;
370254721Semaste
371254721Semaste    typedef enum CommandArgumentType
372254721Semaste    {
373254721Semaste        eArgTypeAddress = 0,
374254721Semaste        eArgTypeAddressOrExpression,
375254721Semaste        eArgTypeAliasName,
376254721Semaste        eArgTypeAliasOptions,
377254721Semaste        eArgTypeArchitecture,
378254721Semaste        eArgTypeBoolean,
379254721Semaste        eArgTypeBreakpointID,
380254721Semaste        eArgTypeBreakpointIDRange,
381254721Semaste        eArgTypeByteSize,
382254721Semaste        eArgTypeClassName,
383254721Semaste        eArgTypeCommandName,
384254721Semaste        eArgTypeCount,
385263363Semaste        eArgTypeDescriptionVerbosity,
386254721Semaste        eArgTypeDirectoryName,
387254721Semaste        eArgTypeDisassemblyFlavor,
388254721Semaste        eArgTypeEndAddress,
389254721Semaste        eArgTypeExpression,
390254721Semaste        eArgTypeExpressionPath,
391254721Semaste        eArgTypeExprFormat,
392254721Semaste        eArgTypeFilename,
393254721Semaste        eArgTypeFormat,
394254721Semaste        eArgTypeFrameIndex,
395254721Semaste        eArgTypeFullName,
396254721Semaste        eArgTypeFunctionName,
397254721Semaste        eArgTypeFunctionOrSymbol,
398254721Semaste        eArgTypeGDBFormat,
399254721Semaste        eArgTypeIndex,
400254721Semaste        eArgTypeLanguage,
401254721Semaste        eArgTypeLineNum,
402254721Semaste        eArgTypeLogCategory,
403254721Semaste        eArgTypeLogChannel,
404254721Semaste        eArgTypeMethod,
405254721Semaste        eArgTypeName,
406254721Semaste        eArgTypeNewPathPrefix,
407254721Semaste        eArgTypeNumLines,
408254721Semaste        eArgTypeNumberPerLine,
409254721Semaste        eArgTypeOffset,
410254721Semaste        eArgTypeOldPathPrefix,
411254721Semaste        eArgTypeOneLiner,
412263363Semaste        eArgTypePath,
413263363Semaste        eArgTypePermissionsNumber,
414263363Semaste        eArgTypePermissionsString,
415254721Semaste        eArgTypePid,
416254721Semaste        eArgTypePlugin,
417254721Semaste        eArgTypeProcessName,
418254721Semaste        eArgTypePythonClass,
419254721Semaste        eArgTypePythonFunction,
420254721Semaste        eArgTypePythonScript,
421254721Semaste        eArgTypeQueueName,
422254721Semaste        eArgTypeRegisterName,
423254721Semaste        eArgTypeRegularExpression,
424254721Semaste        eArgTypeRunArgs,
425254721Semaste        eArgTypeRunMode,
426254721Semaste        eArgTypeScriptedCommandSynchronicity,
427254721Semaste        eArgTypeScriptLang,
428254721Semaste        eArgTypeSearchWord,
429254721Semaste        eArgTypeSelector,
430254721Semaste        eArgTypeSettingIndex,
431254721Semaste        eArgTypeSettingKey,
432254721Semaste        eArgTypeSettingPrefix,
433254721Semaste        eArgTypeSettingVariableName,
434254721Semaste        eArgTypeShlibName,
435254721Semaste        eArgTypeSourceFile,
436254721Semaste        eArgTypeSortOrder,
437254721Semaste        eArgTypeStartAddress,
438254721Semaste        eArgTypeSummaryString,
439254721Semaste        eArgTypeSymbol,
440254721Semaste        eArgTypeThreadID,
441254721Semaste        eArgTypeThreadIndex,
442254721Semaste        eArgTypeThreadName,
443254721Semaste        eArgTypeUnsignedInteger,
444254721Semaste        eArgTypeUnixSignal,
445254721Semaste        eArgTypeVarName,
446254721Semaste        eArgTypeValue,
447254721Semaste        eArgTypeWidth,
448254721Semaste        eArgTypeNone,
449254721Semaste        eArgTypePlatform,
450254721Semaste        eArgTypeWatchpointID,
451254721Semaste        eArgTypeWatchpointIDRange,
452254721Semaste        eArgTypeWatchType,
453254721Semaste        eArgTypeLastArg  // Always keep this entry as the last entry in this enumeration!!
454254721Semaste    } CommandArgumentType;
455254721Semaste
456254721Semaste    //----------------------------------------------------------------------
457254721Semaste    // Symbol types
458254721Semaste    //----------------------------------------------------------------------
459254721Semaste    typedef enum SymbolType
460254721Semaste    {
461254721Semaste        eSymbolTypeAny = 0,
462254721Semaste        eSymbolTypeInvalid = 0,
463254721Semaste        eSymbolTypeAbsolute,
464254721Semaste        eSymbolTypeCode,
465254721Semaste        eSymbolTypeResolver,
466254721Semaste        eSymbolTypeData,
467254721Semaste        eSymbolTypeTrampoline,
468254721Semaste        eSymbolTypeRuntime,
469254721Semaste        eSymbolTypeException,
470254721Semaste        eSymbolTypeSourceFile,
471254721Semaste        eSymbolTypeHeaderFile,
472254721Semaste        eSymbolTypeObjectFile,
473254721Semaste        eSymbolTypeCommonBlock,
474254721Semaste        eSymbolTypeBlock,
475254721Semaste        eSymbolTypeLocal,
476254721Semaste        eSymbolTypeParam,
477254721Semaste        eSymbolTypeVariable,
478254721Semaste        eSymbolTypeVariableType,
479254721Semaste        eSymbolTypeLineEntry,
480254721Semaste        eSymbolTypeLineHeader,
481254721Semaste        eSymbolTypeScopeBegin,
482254721Semaste        eSymbolTypeScopeEnd,
483254721Semaste        eSymbolTypeAdditional, // When symbols take more than one entry, the extra entries get this type
484254721Semaste        eSymbolTypeCompiler,
485254721Semaste        eSymbolTypeInstrumentation,
486254721Semaste        eSymbolTypeUndefined,
487254721Semaste        eSymbolTypeObjCClass,
488254721Semaste        eSymbolTypeObjCMetaClass,
489263363Semaste        eSymbolTypeObjCIVar,
490263363Semaste        eSymbolTypeReExported
491254721Semaste    } SymbolType;
492254721Semaste
493254721Semaste    typedef enum SectionType
494254721Semaste    {
495254721Semaste        eSectionTypeInvalid,
496254721Semaste        eSectionTypeCode,
497254721Semaste        eSectionTypeContainer,              // The section contains child sections
498254721Semaste        eSectionTypeData,
499254721Semaste        eSectionTypeDataCString,            // Inlined C string data
500254721Semaste        eSectionTypeDataCStringPointers,    // Pointers to C string data
501254721Semaste        eSectionTypeDataSymbolAddress,      // Address of a symbol in the symbol table
502254721Semaste        eSectionTypeData4,
503254721Semaste        eSectionTypeData8,
504254721Semaste        eSectionTypeData16,
505254721Semaste        eSectionTypeDataPointers,
506254721Semaste        eSectionTypeDebug,
507254721Semaste        eSectionTypeZeroFill,
508254721Semaste        eSectionTypeDataObjCMessageRefs,    // Pointer to function pointer + selector
509254721Semaste        eSectionTypeDataObjCCFStrings,      // Objective C const CFString/NSString objects
510254721Semaste        eSectionTypeDWARFDebugAbbrev,
511254721Semaste        eSectionTypeDWARFDebugAranges,
512254721Semaste        eSectionTypeDWARFDebugFrame,
513254721Semaste        eSectionTypeDWARFDebugInfo,
514254721Semaste        eSectionTypeDWARFDebugLine,
515254721Semaste        eSectionTypeDWARFDebugLoc,
516254721Semaste        eSectionTypeDWARFDebugMacInfo,
517254721Semaste        eSectionTypeDWARFDebugPubNames,
518254721Semaste        eSectionTypeDWARFDebugPubTypes,
519254721Semaste        eSectionTypeDWARFDebugRanges,
520254721Semaste        eSectionTypeDWARFDebugStr,
521254721Semaste        eSectionTypeDWARFAppleNames,
522254721Semaste        eSectionTypeDWARFAppleTypes,
523254721Semaste        eSectionTypeDWARFAppleNamespaces,
524254721Semaste        eSectionTypeDWARFAppleObjC,
525254721Semaste        eSectionTypeELFSymbolTable,       // Elf SHT_SYMTAB section
526254721Semaste        eSectionTypeELFDynamicSymbols,    // Elf SHT_DYNSYM section
527254721Semaste        eSectionTypeELFRelocationEntries, // Elf SHT_REL or SHT_REL section
528254721Semaste        eSectionTypeELFDynamicLinkInfo,   // Elf SHT_DYNAMIC section
529254721Semaste        eSectionTypeEHFrame,
530254721Semaste        eSectionTypeOther
531254721Semaste
532254721Semaste    } SectionType;
533254721Semaste
534254721Semaste    typedef enum EmulateInstructionOptions
535254721Semaste    {
536254721Semaste        eEmulateInstructionOptionNone               = (0u),
537254721Semaste        eEmulateInstructionOptionAutoAdvancePC      = (1u << 0),
538254721Semaste        eEmulateInstructionOptionIgnoreConditions   = (1u << 1)
539254721Semaste    } EmulateInstructionOptions;
540254721Semaste
541254721Semaste    typedef enum FunctionNameType
542254721Semaste    {
543254721Semaste        eFunctionNameTypeNone       = 0u,
544254721Semaste        eFunctionNameTypeAuto       = (1u << 1),    // Automatically figure out which FunctionNameType
545254721Semaste                                                    // bits to set based on the function name.
546254721Semaste        eFunctionNameTypeFull       = (1u << 2),    // The function name.
547254721Semaste                                                    // For C this is the same as just the name of the function
548254721Semaste                                                    // For C++ this is the mangled or demangled version of the mangled name.
549254721Semaste                                                    // For ObjC this is the full function signature with the + or
550254721Semaste                                                    // - and the square brackets and the class and selector
551254721Semaste        eFunctionNameTypeBase       = (1u << 3),    // The function name only, no namespaces or arguments and no class
552254721Semaste                                                    // methods or selectors will be searched.
553254721Semaste        eFunctionNameTypeMethod     = (1u << 4),    // Find function by method name (C++) with no namespace or arguments
554254721Semaste        eFunctionNameTypeSelector   = (1u << 5),    // Find function by selector name (ObjC) names
555254721Semaste        eFunctionNameTypeAny        = eFunctionNameTypeAuto // DEPRECATED: use eFunctionNameTypeAuto
556254721Semaste    } FunctionNameType;
557254721Semaste
558254721Semaste
559254721Semaste    //----------------------------------------------------------------------
560254721Semaste    // Basic types enumeration for the public API SBType::GetBasicType()
561254721Semaste    //----------------------------------------------------------------------
562254721Semaste    typedef enum BasicType
563254721Semaste    {
564254721Semaste		eBasicTypeInvalid = 0,
565254721Semaste        eBasicTypeVoid = 1,
566254721Semaste        eBasicTypeChar,
567254721Semaste        eBasicTypeSignedChar,
568254721Semaste        eBasicTypeUnsignedChar,
569254721Semaste        eBasicTypeWChar,
570254721Semaste        eBasicTypeSignedWChar,
571254721Semaste        eBasicTypeUnsignedWChar,
572254721Semaste        eBasicTypeChar16,
573254721Semaste        eBasicTypeChar32,
574254721Semaste        eBasicTypeShort,
575254721Semaste        eBasicTypeUnsignedShort,
576254721Semaste        eBasicTypeInt,
577254721Semaste        eBasicTypeUnsignedInt,
578254721Semaste        eBasicTypeLong,
579254721Semaste        eBasicTypeUnsignedLong,
580254721Semaste        eBasicTypeLongLong,
581254721Semaste        eBasicTypeUnsignedLongLong,
582254721Semaste        eBasicTypeInt128,
583254721Semaste        eBasicTypeUnsignedInt128,
584254721Semaste        eBasicTypeBool,
585254721Semaste        eBasicTypeHalf,
586254721Semaste        eBasicTypeFloat,
587254721Semaste        eBasicTypeDouble,
588254721Semaste        eBasicTypeLongDouble,
589254721Semaste        eBasicTypeFloatComplex,
590254721Semaste        eBasicTypeDoubleComplex,
591254721Semaste        eBasicTypeLongDoubleComplex,
592254721Semaste        eBasicTypeObjCID,
593254721Semaste        eBasicTypeObjCClass,
594254721Semaste        eBasicTypeObjCSel,
595254721Semaste        eBasicTypeNullPtr,
596254721Semaste        eBasicTypeOther
597254721Semaste    } BasicType;
598254721Semaste
599254721Semaste    typedef enum TypeClass
600254721Semaste    {
601254721Semaste        eTypeClassInvalid           = (0u),
602254721Semaste        eTypeClassArray             = (1u << 0),
603254721Semaste        eTypeClassBlockPointer      = (1u << 1),
604254721Semaste        eTypeClassBuiltin           = (1u << 2),
605254721Semaste        eTypeClassClass             = (1u << 3),
606254721Semaste        eTypeClassComplexFloat      = (1u << 4),
607254721Semaste        eTypeClassComplexInteger    = (1u << 5),
608254721Semaste        eTypeClassEnumeration       = (1u << 6),
609254721Semaste        eTypeClassFunction          = (1u << 7),
610254721Semaste        eTypeClassMemberPointer     = (1u << 8),
611254721Semaste        eTypeClassObjCObject        = (1u << 9),
612254721Semaste        eTypeClassObjCInterface     = (1u << 10),
613254721Semaste        eTypeClassObjCObjectPointer = (1u << 11),
614254721Semaste        eTypeClassPointer           = (1u << 12),
615254721Semaste        eTypeClassReference         = (1u << 13),
616254721Semaste        eTypeClassStruct            = (1u << 14),
617254721Semaste        eTypeClassTypedef           = (1u << 15),
618254721Semaste        eTypeClassUnion             = (1u << 16),
619254721Semaste        eTypeClassVector            = (1u << 17),
620254721Semaste        // Define the last type class as the MSBit of a 32 bit value
621254721Semaste        eTypeClassOther             = (1u << 31),
622254721Semaste        // Define a mask that can be used for any type when finding types
623254721Semaste        eTypeClassAny               = (0xffffffffu)
624254721Semaste    } TypeClass;
625254721Semaste
626254721Semaste    typedef enum TemplateArgumentKind
627254721Semaste    {
628254721Semaste        eTemplateArgumentKindNull = 0,
629254721Semaste        eTemplateArgumentKindType,
630254721Semaste        eTemplateArgumentKindDeclaration,
631254721Semaste        eTemplateArgumentKindIntegral,
632254721Semaste        eTemplateArgumentKindTemplate,
633254721Semaste        eTemplateArgumentKindTemplateExpansion,
634254721Semaste        eTemplateArgumentKindExpression,
635254721Semaste        eTemplateArgumentKindPack
636254721Semaste
637254721Semaste    } TemplateArgumentKind;
638254721Semaste
639254721Semaste    //----------------------------------------------------------------------
640254721Semaste    // Options that can be set for a formatter to alter its behavior
641254721Semaste    // Not all of these are applicable to all formatter types
642254721Semaste    //----------------------------------------------------------------------
643254721Semaste    typedef enum TypeOptions
644254721Semaste    {
645254721Semaste        eTypeOptionNone            = (0u),
646254721Semaste        eTypeOptionCascade         = (1u << 0),
647254721Semaste        eTypeOptionSkipPointers    = (1u << 1),
648254721Semaste        eTypeOptionSkipReferences  = (1u << 2),
649254721Semaste        eTypeOptionHideChildren    = (1u << 3),
650254721Semaste        eTypeOptionHideValue       = (1u << 4),
651254721Semaste        eTypeOptionShowOneLiner    = (1u << 5),
652254721Semaste        eTypeOptionHideNames       = (1u << 6)
653254721Semaste    } TypeOptions;
654254721Semaste
655254721Semaste   //----------------------------------------------------------------------
656254721Semaste   // This is the return value for frame comparisons.  When frame A pushes
657254721Semaste   // frame B onto the stack, frame A is OLDER than frame B.
658254721Semaste   //----------------------------------------------------------------------
659254721Semaste   typedef enum FrameComparison
660254721Semaste   {
661254721Semaste       eFrameCompareInvalid,
662254721Semaste       eFrameCompareUnknown,
663254721Semaste       eFrameCompareEqual,
664254721Semaste       eFrameCompareYounger,
665254721Semaste       eFrameCompareOlder
666254721Semaste   } FrameComparison;
667254721Semaste
668254721Semaste    //----------------------------------------------------------------------
669254721Semaste    // Address Class
670254721Semaste    //
671254721Semaste    // A way of classifying an address used for disassembling and setting
672254721Semaste    // breakpoints. Many object files can track exactly what parts of their
673254721Semaste    // object files are code, data and other information. This is of course
674254721Semaste    // above and beyond just looking at the section types. For example, code
675254721Semaste    // might contain PC relative data and the object file might be able to
676254721Semaste    // tell us that an address in code is data.
677254721Semaste    //----------------------------------------------------------------------
678254721Semaste    typedef enum AddressClass
679254721Semaste    {
680254721Semaste        eAddressClassInvalid,
681254721Semaste        eAddressClassUnknown,
682254721Semaste        eAddressClassCode,
683254721Semaste        eAddressClassCodeAlternateISA,
684254721Semaste        eAddressClassData,
685254721Semaste        eAddressClassDebug,
686254721Semaste        eAddressClassRuntime
687254721Semaste    } AddressClass;
688254721Semaste
689263367Semaste    //----------------------------------------------------------------------
690263367Semaste    // File Permissions
691263367Semaste    //
692263367Semaste    // Designed to mimic the unix file permission bits so they can be
693263367Semaste    // used with functions that set 'mode_t' to certain values for
694263367Semaste    // permissions.
695263367Semaste    //----------------------------------------------------------------------
696263367Semaste    typedef enum FilePermissions
697263367Semaste    {
698263367Semaste        eFilePermissionsUserRead        = (1u << 8),
699263367Semaste        eFilePermissionsUserWrite       = (1u << 7),
700263367Semaste        eFilePermissionsUserExecute     = (1u << 6),
701263367Semaste        eFilePermissionsGroupRead       = (1u << 5),
702263367Semaste        eFilePermissionsGroupWrite      = (1u << 4),
703263367Semaste        eFilePermissionsGroupExecute    = (1u << 3),
704263367Semaste        eFilePermissionsWorldRead       = (1u << 2),
705263367Semaste        eFilePermissionsWorldWrite      = (1u << 1),
706263367Semaste        eFilePermissionsWorldExecute    = (1u << 0),
707263367Semaste
708263367Semaste        eFilePermissionsUserRW      = (eFilePermissionsUserRead    | eFilePermissionsUserWrite      | 0                             ),
709263367Semaste        eFileFilePermissionsUserRX  = (eFilePermissionsUserRead    | 0                              | eFilePermissionsUserExecute   ),
710263367Semaste        eFilePermissionsUserRWX     = (eFilePermissionsUserRead    | eFilePermissionsUserWrite      | eFilePermissionsUserExecute   ),
711263367Semaste
712263367Semaste        eFilePermissionsGroupRW     = (eFilePermissionsGroupRead   | eFilePermissionsGroupWrite     | 0                             ),
713263367Semaste        eFilePermissionsGroupRX     = (eFilePermissionsGroupRead   | 0                              | eFilePermissionsGroupExecute  ),
714263367Semaste        eFilePermissionsGroupRWX    = (eFilePermissionsGroupRead   | eFilePermissionsGroupWrite     | eFilePermissionsGroupExecute  ),
715263367Semaste
716263367Semaste        eFilePermissionsWorldRW     = (eFilePermissionsWorldRead   | eFilePermissionsWorldWrite     | 0                             ),
717263367Semaste        eFilePermissionsWorldRX     = (eFilePermissionsWorldRead   | 0                              | eFilePermissionsWorldExecute  ),
718263367Semaste        eFilePermissionsWorldRWX    = (eFilePermissionsWorldRead   | eFilePermissionsWorldWrite     | eFilePermissionsWorldExecute  ),
719263367Semaste
720263367Semaste        eFilePermissionsEveryoneR   = (eFilePermissionsUserRead    | eFilePermissionsGroupRead      | eFilePermissionsWorldRead     ),
721263367Semaste        eFilePermissionsEveryoneW   = (eFilePermissionsUserWrite   | eFilePermissionsGroupWrite     | eFilePermissionsWorldWrite    ),
722263367Semaste        eFilePermissionsEveryoneX   = (eFilePermissionsUserExecute | eFilePermissionsGroupExecute   | eFilePermissionsWorldExecute  ),
723263367Semaste
724263367Semaste        eFilePermissionsEveryoneRW  = (eFilePermissionsEveryoneR   | eFilePermissionsEveryoneW      | 0                             ),
725263367Semaste        eFilePermissionsEveryoneRX  = (eFilePermissionsEveryoneR   | 0                              | eFilePermissionsEveryoneX     ),
726263367Semaste        eFilePermissionsEveryoneRWX = (eFilePermissionsEveryoneR   | eFilePermissionsEveryoneW      | eFilePermissionsEveryoneX     ),
727263367Semaste        eFilePermissionsFileDefault = eFilePermissionsUserRW,
728263367Semaste        eFilePermissionsDirectoryDefault = eFilePermissionsUserRWX,
729263367Semaste    } FilePermissions;
730263367Semaste
731269024Semaste    //----------------------------------------------------------------------
732269024Semaste    // Queue work item types
733269024Semaste    //
734269024Semaste    // The different types of work that can be enqueued on a libdispatch
735269024Semaste    // aka Grand Central Dispatch (GCD) queue.
736269024Semaste    //----------------------------------------------------------------------
737269024Semaste    typedef enum QueueItemKind
738269024Semaste    {
739269024Semaste        eQueueItemKindUnknown = 0,
740269024Semaste        eQueueItemKindFunction,
741269024Semaste        eQueueItemKindBlock
742269024Semaste    } QueueItemKind;
743269024Semaste
744254721Semaste} // namespace lldb
745254721Semaste
746254721Semaste
747254721Semaste#endif  // LLDB_lldb_enumerations_h_
748