lldb-enumerations.h revision 3bfaad6baec573ae2facf2f2acae0948c1a422bd
1//===-- lldb-enumerations.h -------------------------------------*- C++ -*-===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#ifndef LLDB_lldb_enumerations_h_
11#define LLDB_lldb_enumerations_h_
12
13namespace lldb {
14
15    //----------------------------------------------------------------------
16    // Process and Thread States
17    //----------------------------------------------------------------------
18    typedef enum StateType
19    {
20        eStateInvalid = 0,
21        eStateUnloaded,     ///< Process is object is valid, but not currently loaded
22        eStateConnected,    ///< Process is connected to remote debug services, but not launched or attached to anything yet
23        eStateAttaching,    ///< Process is currently trying to attach
24        eStateLaunching,    ///< Process is in the process of launching
25        eStateStopped,      ///< Process or thread is stopped and can be examined.
26        eStateRunning,      ///< Process or thread is running and can't be examined.
27        eStateStepping,     ///< Process or thread is in the process of stepping and can not be examined.
28        eStateCrashed,      ///< Process or thread has crashed and can be examined.
29        eStateDetached,     ///< Process has been detached and can't be examined.
30        eStateExited,       ///< Process has exited and can't be examined.
31        eStateSuspended     ///< Process or thread is in a suspended state as far
32                            ///< as the debugger is concerned while other processes
33                            ///< or threads get the chance to run.
34    } StateType;
35
36    //----------------------------------------------------------------------
37    // Launch Flags
38    //----------------------------------------------------------------------
39    typedef enum LaunchFlags
40    {
41        eLaunchFlagNone         = 0u,
42        eLaunchFlagExec         = (1u << 0),  ///< Exec when launching and turn the calling process into a new process
43        eLaunchFlagDebug        = (1u << 1),  ///< Stop as soon as the process launches to allow the process to be debugged
44        eLaunchFlagStopAtEntry  = (1u << 2),  ///< Stop at the program entry point instead of auto-continuing when launching or attaching at entry point
45        eLaunchFlagDisableASLR  = (1u << 3),  ///< Disable Address Space Layout Randomization
46        eLaunchFlagDisableSTDIO = (1u << 4),  ///< Disable stdio for inferior process (e.g. for a GUI app)
47        eLaunchFlagLaunchInTTY  = (1u << 5),  ///< Launch the process in a new TTY if supported by the host
48        eLaunchFlagLaunchInShell= (1u << 6),   ///< Launch the process inside a shell to get shell expansion
49        eLaunchFlagLaunchInSeparateProcessGroup = (1u << 7) ///< Launch the process in a separate process group
50    } LaunchFlags;
51
52    //----------------------------------------------------------------------
53    // Thread Run Modes
54    //----------------------------------------------------------------------
55    typedef enum RunMode {
56        eOnlyThisThread,
57        eAllThreads,
58        eOnlyDuringStepping
59    } RunMode;
60
61    //----------------------------------------------------------------------
62    // Byte ordering definitions
63    //----------------------------------------------------------------------
64    typedef enum ByteOrder
65    {
66        eByteOrderInvalid   = 0,
67        eByteOrderBig       = 1,
68        eByteOrderPDP       = 2,
69        eByteOrderLittle    = 4
70    } ByteOrder;
71
72    //----------------------------------------------------------------------
73    // Register encoding definitions
74    //----------------------------------------------------------------------
75    typedef enum Encoding
76    {
77        eEncodingInvalid = 0,
78        eEncodingUint,               // unsigned integer
79        eEncodingSint,               // signed integer
80        eEncodingIEEE754,            // float
81        eEncodingVector              // vector registers
82    } Encoding;
83
84    //----------------------------------------------------------------------
85    // Display format definitions
86    //----------------------------------------------------------------------
87    typedef enum Format
88    {
89        eFormatDefault = 0,
90        eFormatInvalid = 0,
91        eFormatBoolean,
92        eFormatBinary,
93        eFormatBytes,
94        eFormatBytesWithASCII,
95        eFormatChar,
96        eFormatCharPrintable,   // Only printable characters, space if not printable
97        eFormatComplex,         // Floating point complex type
98        eFormatComplexFloat = eFormatComplex,
99        eFormatCString,         // NULL terminated C strings
100        eFormatDecimal,
101        eFormatEnum,
102        eFormatHex,
103        eFormatHexUppercase,
104        eFormatFloat,
105        eFormatOctal,
106        eFormatOSType,          // OS character codes encoded into an integer 'PICT' 'text' etc...
107        eFormatUnicode16,
108        eFormatUnicode32,
109        eFormatUnsigned,
110        eFormatPointer,
111        eFormatVectorOfChar,
112        eFormatVectorOfSInt8,
113        eFormatVectorOfUInt8,
114        eFormatVectorOfSInt16,
115        eFormatVectorOfUInt16,
116        eFormatVectorOfSInt32,
117        eFormatVectorOfUInt32,
118        eFormatVectorOfSInt64,
119        eFormatVectorOfUInt64,
120        eFormatVectorOfFloat32,
121        eFormatVectorOfFloat64,
122        eFormatVectorOfUInt128,
123        eFormatComplexInteger,      // Integer complex type
124        eFormatCharArray,           // Print characters with no single quotes, used for character arrays that can contain non printable characters
125        eFormatAddressInfo,         // Describe what an address points to (func + offset with file/line, symbol + offset, data, etc)
126        eFormatHexFloat,            // ISO C99 hex float string
127        eFormatInstruction,         // Disassemble an opcode
128        eFormatVoid,                // Do not print this
129        kNumFormats
130    } Format;
131
132    //----------------------------------------------------------------------
133    // Description levels for "void GetDescription(Stream *, DescriptionLevel)" calls
134    //----------------------------------------------------------------------
135    typedef enum DescriptionLevel
136    {
137        eDescriptionLevelBrief = 0,
138        eDescriptionLevelFull,
139        eDescriptionLevelVerbose,
140        kNumDescriptionLevels
141    } DescriptionLevel;
142
143    //----------------------------------------------------------------------
144    // Script interpreter types
145    //----------------------------------------------------------------------
146    typedef enum ScriptLanguage
147    {
148        eScriptLanguageNone,
149        eScriptLanguagePython,
150        eScriptLanguageDefault = eScriptLanguagePython
151    } ScriptLanguage;
152
153    //----------------------------------------------------------------------
154    // Register numbering types
155    //----------------------------------------------------------------------
156    typedef enum RegisterKind
157    {
158        eRegisterKindGCC = 0,    // the register numbers seen in eh_frame
159        eRegisterKindDWARF,      // the register numbers seen DWARF
160        eRegisterKindGeneric,    // insn ptr reg, stack ptr reg, etc not specific to any particular target
161        eRegisterKindGDB,        // the register numbers gdb uses (matches stabs numbers?)
162        eRegisterKindLLDB,       // lldb's internal register numbers
163        kNumRegisterKinds
164    } RegisterKind;
165
166    //----------------------------------------------------------------------
167    // Thread stop reasons
168    //----------------------------------------------------------------------
169    typedef enum StopReason
170    {
171        eStopReasonInvalid = 0,
172        eStopReasonNone,
173        eStopReasonTrace,
174        eStopReasonBreakpoint,
175        eStopReasonWatchpoint,
176        eStopReasonSignal,
177        eStopReasonException,
178        eStopReasonPlanComplete
179    } StopReason;
180
181    //----------------------------------------------------------------------
182    // Command Return Status Types
183    //----------------------------------------------------------------------
184    typedef enum ReturnStatus
185    {
186        eReturnStatusInvalid,
187        eReturnStatusSuccessFinishNoResult,
188        eReturnStatusSuccessFinishResult,
189        eReturnStatusSuccessContinuingNoResult,
190        eReturnStatusSuccessContinuingResult,
191        eReturnStatusStarted,
192        eReturnStatusFailed,
193        eReturnStatusQuit
194    } ReturnStatus;
195
196
197    //----------------------------------------------------------------------
198    // Connection Status Types
199    //----------------------------------------------------------------------
200    typedef enum ConnectionStatus
201    {
202        eConnectionStatusSuccess,         // Success
203        eConnectionStatusEndOfFile,       // End-of-file encountered
204        eConnectionStatusError,           // Check GetError() for details
205        eConnectionStatusTimedOut,        // Request timed out
206        eConnectionStatusNoConnection,    // No connection
207        eConnectionStatusLostConnection   // Lost connection while connected to a valid connection
208    } ConnectionStatus;
209
210    typedef enum ErrorType
211    {
212        eErrorTypeInvalid,
213        eErrorTypeGeneric,      ///< Generic errors that can be any value.
214        eErrorTypeMachKernel,   ///< Mach kernel error codes.
215        eErrorTypePOSIX         ///< POSIX error codes.
216    } ErrorType;
217
218
219    typedef enum ValueType
220    {
221        eValueTypeInvalid           = 0,
222        eValueTypeVariableGlobal    = 1,    // globals variable
223        eValueTypeVariableStatic    = 2,    // static variable
224        eValueTypeVariableArgument  = 3,    // function argument variables
225        eValueTypeVariableLocal     = 4,    // function local variables
226        eValueTypeRegister          = 5,    // stack frame register value
227        eValueTypeRegisterSet       = 6,    // A collection of stack frame register values
228        eValueTypeConstResult       = 7     // constant result variables
229    } ValueType;
230
231    //----------------------------------------------------------------------
232    // Token size/granularities for Input Readers
233    //----------------------------------------------------------------------
234
235    typedef enum InputReaderGranularity
236    {
237        eInputReaderGranularityInvalid = 0,
238        eInputReaderGranularityByte,
239        eInputReaderGranularityWord,
240        eInputReaderGranularityLine,
241        eInputReaderGranularityAll
242    } InputReaderGranularity;
243
244    //------------------------------------------------------------------
245    /// These mask bits allow a common interface for queries that can
246    /// limit the amount of information that gets parsed to only the
247    /// information that is requested. These bits also can indicate what
248    /// actually did get resolved during query function calls.
249    ///
250    /// Each definition corresponds to a one of the member variables
251    /// in this class, and requests that that item be resolved, or
252    /// indicates that the member did get resolved.
253    //------------------------------------------------------------------
254    typedef enum SymbolContextItem
255    {
256        eSymbolContextTarget     = (1u << 0), ///< Set when \a target is requested from a query, or was located in query results
257        eSymbolContextModule     = (1u << 1), ///< Set when \a module is requested from a query, or was located in query results
258        eSymbolContextCompUnit   = (1u << 2), ///< Set when \a comp_unit is requested from a query, or was located in query results
259        eSymbolContextFunction   = (1u << 3), ///< Set when \a function is requested from a query, or was located in query results
260        eSymbolContextBlock      = (1u << 4), ///< Set when the deepest \a block is requested from a query, or was located in query results
261        eSymbolContextLineEntry  = (1u << 5), ///< Set when \a line_entry is requested from a query, or was located in query results
262        eSymbolContextSymbol     = (1u << 6), ///< Set when \a symbol is requested from a query, or was located in query results
263        eSymbolContextEverything = ((eSymbolContextSymbol << 1) - 1u)  ///< Indicates to try and lookup everything up during a query.
264    } SymbolContextItem;
265
266    typedef enum Permissions
267    {
268        ePermissionsWritable    = (1u << 0),
269        ePermissionsReadable    = (1u << 1),
270        ePermissionsExecutable  = (1u << 2)
271    } Permissions;
272
273    typedef enum InputReaderAction
274    {
275        eInputReaderActivate,   // reader is newly pushed onto the reader stack
276        eInputReaderAsynchronousOutputWritten, // an async output event occurred; the reader may want to do something
277        eInputReaderReactivate, // reader is on top of the stack again after another reader was popped off
278        eInputReaderDeactivate, // another reader was pushed on the stack
279        eInputReaderGotToken,   // reader got one of its tokens (granularity)
280        eInputReaderInterrupt,  // reader received an interrupt signal (probably from a control-c)
281        eInputReaderEndOfFile,  // reader received an EOF char (probably from a control-d)
282        eInputReaderDone        // reader was just popped off the stack and is done
283    } InputReaderAction;
284
285    typedef enum BreakpointEventType
286    {
287        eBreakpointEventTypeInvalidType         = (1u << 0),
288        eBreakpointEventTypeAdded               = (1u << 1),
289        eBreakpointEventTypeRemoved             = (1u << 2),
290        eBreakpointEventTypeLocationsAdded      = (1u << 3),  // Locations added doesn't get sent when the breakpoint is created
291        eBreakpointEventTypeLocationsRemoved    = (1u << 4),
292        eBreakpointEventTypeLocationsResolved   = (1u << 5),
293        eBreakpointEventTypeEnabled             = (1u << 6),
294        eBreakpointEventTypeDisabled            = (1u << 7),
295        eBreakpointEventTypeCommandChanged      = (1u << 8),
296        eBreakpointEventTypeConditionChanged    = (1u << 9),
297        eBreakpointEventTypeIgnoreChanged       = (1u << 10),
298        eBreakpointEventTypeThreadChanged       = (1u << 11)
299    } BreakpointEventType;
300
301
302    //----------------------------------------------------------------------
303    /// Programming language type.
304    ///
305    /// These enumerations use the same language enumerations as the DWARF
306    /// specification for ease of use and consistency.
307    /// The enum -> string code is in LanguageRuntime.cpp, don't change this
308    /// table without updating that code as well.
309    //----------------------------------------------------------------------
310    typedef enum LanguageType
311    {
312        eLanguageTypeUnknown         = 0x0000,   ///< Unknown or invalid language value.
313        eLanguageTypeC89             = 0x0001,   ///< ISO C:1989.
314        eLanguageTypeC               = 0x0002,   ///< Non-standardized C, such as K&R.
315        eLanguageTypeAda83           = 0x0003,   ///< ISO Ada:1983.
316        eLanguageTypeC_plus_plus     = 0x0004,   ///< ISO C++:1998.
317        eLanguageTypeCobol74         = 0x0005,   ///< ISO Cobol:1974.
318        eLanguageTypeCobol85         = 0x0006,   ///< ISO Cobol:1985.
319        eLanguageTypeFortran77       = 0x0007,   ///< ISO Fortran 77.
320        eLanguageTypeFortran90       = 0x0008,   ///< ISO Fortran 90.
321        eLanguageTypePascal83        = 0x0009,   ///< ISO Pascal:1983.
322        eLanguageTypeModula2         = 0x000a,   ///< ISO Modula-2:1996.
323        eLanguageTypeJava            = 0x000b,   ///< Java.
324        eLanguageTypeC99             = 0x000c,   ///< ISO C:1999.
325        eLanguageTypeAda95           = 0x000d,   ///< ISO Ada:1995.
326        eLanguageTypeFortran95       = 0x000e,   ///< ISO Fortran 95.
327        eLanguageTypePLI             = 0x000f,   ///< ANSI PL/I:1976.
328        eLanguageTypeObjC            = 0x0010,   ///< Objective-C.
329        eLanguageTypeObjC_plus_plus  = 0x0011,   ///< Objective-C++.
330        eLanguageTypeUPC             = 0x0012,   ///< Unified Parallel C.
331        eLanguageTypeD               = 0x0013,   ///< D.
332        eLanguageTypePython          = 0x0014    ///< Python.
333    } LanguageType;
334
335    typedef enum DynamicValueType
336    {
337        eNoDynamicValues = 0,
338        eDynamicCanRunTarget    = 1,
339        eDynamicDontRunTarget   = 2
340    } DynamicValueType;
341
342    typedef enum AccessType
343    {
344        eAccessNone,
345        eAccessPublic,
346        eAccessPrivate,
347        eAccessProtected,
348        eAccessPackage
349    } AccessType;
350
351    typedef enum CommandArgumentType
352    {
353        eArgTypeAddress = 0,
354        eArgTypeAliasName,
355        eArgTypeAliasOptions,
356        eArgTypeArchitecture,
357        eArgTypeBoolean,
358        eArgTypeBreakpointID,
359        eArgTypeBreakpointIDRange,
360        eArgTypeByteSize,
361        eArgTypeClassName,
362        eArgTypeCommandName,
363        eArgTypeCount,
364        eArgTypeEndAddress,
365        eArgTypeExpression,
366        eArgTypeExpressionPath,
367        eArgTypeExprFormat,
368        eArgTypeFilename,
369        eArgTypeFormat,
370        eArgTypeFrameIndex,
371        eArgTypeFullName,
372        eArgTypeFunctionName,
373        eArgTypeFunctionOrSymbol,
374        eArgTypeGDBFormat,
375        eArgTypeIndex,
376        eArgTypeLanguage,
377        eArgTypeLineNum,
378        eArgTypeLogCategory,
379        eArgTypeLogChannel,
380        eArgTypeMethod,
381        eArgTypeName,
382        eArgTypeNewPathPrefix,
383        eArgTypeNumLines,
384        eArgTypeNumberPerLine,
385        eArgTypeOffset,
386        eArgTypeOldPathPrefix,
387        eArgTypeOneLiner,
388        eArgTypePath,
389        eArgTypePid,
390        eArgTypePlugin,
391        eArgTypeProcessName,
392        eArgTypePythonClass,
393        eArgTypePythonFunction,
394        eArgTypePythonScript,
395        eArgTypeQueueName,
396        eArgTypeRegisterName,
397        eArgTypeRegularExpression,
398        eArgTypeRunArgs,
399        eArgTypeRunMode,
400        eArgTypeScriptedCommandSynchronicity,
401        eArgTypeScriptLang,
402        eArgTypeSearchWord,
403        eArgTypeSelector,
404        eArgTypeSettingIndex,
405        eArgTypeSettingKey,
406        eArgTypeSettingPrefix,
407        eArgTypeSettingVariableName,
408        eArgTypeShlibName,
409        eArgTypeSourceFile,
410        eArgTypeSortOrder,
411        eArgTypeStartAddress,
412        eArgTypeSummaryString,
413        eArgTypeSymbol,
414        eArgTypeThreadID,
415        eArgTypeThreadIndex,
416        eArgTypeThreadName,
417        eArgTypeUnsignedInteger,
418        eArgTypeUnixSignal,
419        eArgTypeVarName,
420        eArgTypeValue,
421        eArgTypeWidth,
422        eArgTypeNone,
423        eArgTypePlatform,
424        eArgTypeWatchpointID,
425        eArgTypeWatchpointIDRange,
426        eArgTypeWatchType,
427        eArgTypeLastArg  // Always keep this entry as the last entry in this enumeration!!
428    } CommandArgumentType;
429
430    //----------------------------------------------------------------------
431    // Symbol types
432    //----------------------------------------------------------------------
433    typedef enum SymbolType
434    {
435        eSymbolTypeAny = 0,
436        eSymbolTypeInvalid = 0,
437        eSymbolTypeAbsolute,
438        eSymbolTypeCode,
439        eSymbolTypeData,
440        eSymbolTypeTrampoline,
441        eSymbolTypeRuntime,
442        eSymbolTypeException,
443        eSymbolTypeSourceFile,
444        eSymbolTypeHeaderFile,
445        eSymbolTypeObjectFile,
446        eSymbolTypeCommonBlock,
447        eSymbolTypeBlock,
448        eSymbolTypeLocal,
449        eSymbolTypeParam,
450        eSymbolTypeVariable,
451        eSymbolTypeVariableType,
452        eSymbolTypeLineEntry,
453        eSymbolTypeLineHeader,
454        eSymbolTypeScopeBegin,
455        eSymbolTypeScopeEnd,
456        eSymbolTypeAdditional, // When symbols take more than one entry, the extra entries get this type
457        eSymbolTypeCompiler,
458        eSymbolTypeInstrumentation,
459        eSymbolTypeUndefined,
460        eSymbolTypeObjCClass,
461        eSymbolTypeObjCMetaClass,
462        eSymbolTypeObjCIVar
463    } SymbolType;
464
465    typedef enum SectionType
466    {
467        eSectionTypeInvalid,
468        eSectionTypeCode,
469        eSectionTypeContainer,              // The section contains child sections
470        eSectionTypeData,
471        eSectionTypeDataCString,            // Inlined C string data
472        eSectionTypeDataCStringPointers,    // Pointers to C string data
473        eSectionTypeDataSymbolAddress,      // Address of a symbol in the symbol table
474        eSectionTypeData4,
475        eSectionTypeData8,
476        eSectionTypeData16,
477        eSectionTypeDataPointers,
478        eSectionTypeDebug,
479        eSectionTypeZeroFill,
480        eSectionTypeDataObjCMessageRefs,    // Pointer to function pointer + selector
481        eSectionTypeDataObjCCFStrings,      // Objective C const CFString/NSString objects
482        eSectionTypeDWARFDebugAbbrev,
483        eSectionTypeDWARFDebugAranges,
484        eSectionTypeDWARFDebugFrame,
485        eSectionTypeDWARFDebugInfo,
486        eSectionTypeDWARFDebugLine,
487        eSectionTypeDWARFDebugLoc,
488        eSectionTypeDWARFDebugMacInfo,
489        eSectionTypeDWARFDebugPubNames,
490        eSectionTypeDWARFDebugPubTypes,
491        eSectionTypeDWARFDebugRanges,
492        eSectionTypeDWARFDebugStr,
493        eSectionTypeDWARFAppleNames,
494        eSectionTypeDWARFAppleTypes,
495        eSectionTypeDWARFAppleNamespaces,
496        eSectionTypeDWARFAppleObjC,
497        eSectionTypeEHFrame,
498        eSectionTypeOther
499
500    } SectionType;
501
502    typedef enum EmulateInstructionOptions
503    {
504        eEmulateInstructionOptionNone               = (0u),
505        eEmulateInstructionOptionAutoAdvancePC      = (1u << 0),
506        eEmulateInstructionOptionIgnoreConditions   = (1u << 1)
507    } EmulateInstructionOptions;
508
509    typedef enum FunctionNameType
510    {
511        eFunctionNameTypeNone       = 0u,
512        eFunctionNameTypeAuto       = (1u << 1),    // Automatically figure out which FunctionNameType
513                                                    // bits to set based on the function name.
514        eFunctionNameTypeFull       = (1u << 2),    // The function name.
515                                                    // For C this is the same as just the name of the function
516                                                    // For C++ this is the mangled or demangled version of the mangled name.
517                                                    // For ObjC this is the full function signature with the + or
518                                                    // - and the square brackets and the class and selector
519        eFunctionNameTypeBase       = (1u << 3),    // The function name only, no namespaces or arguments and no class
520                                                    // methods or selectors will be searched.
521        eFunctionNameTypeMethod     = (1u << 4),    // Find function by method name (C++) with no namespace or arguments
522        eFunctionNameTypeSelector   = (1u << 5),    // Find function by selector name (ObjC) names
523        eFunctionNameTypeAny        = (eFunctionNameTypeFull     |
524                                       eFunctionNameTypeBase     |
525                                       eFunctionNameTypeMethod   |
526                                       eFunctionNameTypeSelector )
527    } FunctionNameType;
528
529
530    //----------------------------------------------------------------------
531    // Basic types enumeration for the public API SBType::GetBasicType()
532    //----------------------------------------------------------------------
533    typedef enum BasicType
534    {
535		eBasicTypeInvalid = 0,
536        eBasicTypeVoid = 1,
537        eBasicTypeChar,
538        eBasicTypeSignedChar,
539        eBasicTypeWChar,
540        eBasicTypeChar16,
541        eBasicTypeChar32,
542        eBasicTypeShort,
543        eBasicTypeUnsignedShort,
544        eBasicTypeInt,
545        eBasicTypeUnsignedInt,
546        eBasicTypeLong,
547        eBasicTypeUnsignedLong,
548        eBasicTypeLongLong,
549        eBasicTypeUnsignedLongLong,
550        eBasicTypeInt128,
551        eBasicTypeUnsignedInt128,
552        eBasicTypeBool,
553        eBasicTypeFloat,
554        eBasicTypeDouble,
555        eBasicTypeLongDouble,
556        eBasicTypeFloatComplex,
557        eBasicTypeDoubleComplex,
558        eBasicTypeLongDoubleComplex,
559        eBasicTypeObjCID,
560        eBasicTypeObjCClass,
561        eBasicTypeObjCSel
562    } BasicType;
563
564    typedef enum TypeClass
565    {
566        eTypeClassInvalid           = (0u),
567        eTypeClassArray             = (1u << 0),
568        eTypeClassBlockPointer      = (1u << 1),
569        eTypeClassBuiltin           = (1u << 2),
570        eTypeClassClass             = (1u << 3),
571        eTypeClassComplexFloat      = (1u << 4),
572        eTypeClassComplexInteger    = (1u << 5),
573        eTypeClassEnumeration       = (1u << 6),
574        eTypeClassFunction          = (1u << 7),
575        eTypeClassMemberPointer     = (1u << 8),
576        eTypeClassObjCObject        = (1u << 9),
577        eTypeClassObjCInterface     = (1u << 10),
578        eTypeClassObjCObjectPointer = (1u << 11),
579        eTypeClassPointer           = (1u << 12),
580        eTypeClassReference         = (1u << 13),
581        eTypeClassStruct            = (1u << 14),
582        eTypeClassTypedef           = (1u << 15),
583        eTypeClassUnion             = (1u << 16),
584        eTypeClassVector            = (1u << 17),
585        // Define the last type class as the MSBit of a 32 bit value
586        eTypeClassOther             = (1u << 31),
587        // Define a mask that can be used for any type when finding types
588        eTypeClassAny               = (0xffffffffu)
589    }TypeClass;
590
591    typedef enum TemplateArgumentKind
592    {
593        eTemplateArgumentKindNull = 0,
594        eTemplateArgumentKindType,
595        eTemplateArgumentKindDeclaration,
596        eTemplateArgumentKindIntegral,
597        eTemplateArgumentKindTemplate,
598        eTemplateArgumentKindTemplateExpansion,
599        eTemplateArgumentKindExpression,
600        eTemplateArgumentKindPack
601
602    } TemplateArgumentKind;
603
604    //----------------------------------------------------------------------
605    // Options that can be set for a formatter to alter its behavior
606    // Not all of these are applicable to all formatter types
607    //----------------------------------------------------------------------
608    typedef enum TypeOptions
609    {
610        eTypeOptionNone            = (0u),
611        eTypeOptionCascade         = (1u << 0),
612        eTypeOptionSkipPointers    = (1u << 1),
613        eTypeOptionSkipReferences  = (1u << 2),
614        eTypeOptionHideChildren    = (1u << 3),
615        eTypeOptionHideValue       = (1u << 4),
616        eTypeOptionShowOneLiner    = (1u << 5),
617        eTypeOptionHideNames       = (1u << 6)
618    } TypeOptions;
619
620   //----------------------------------------------------------------------
621   // This is the return value for frame comparisons.  When frame A pushes
622   // frame B onto the stack, frame A is OLDER than frame B.
623   //----------------------------------------------------------------------
624   typedef enum FrameComparison
625   {
626       eFrameCompareInvalid,
627       eFrameCompareUnknown,
628       eFrameCompareEqual,
629       eFrameCompareYounger,
630       eFrameCompareOlder
631   } FrameComparison;
632
633    //----------------------------------------------------------------------
634    // Address Class
635    //
636    // A way of classifying an address used for disassembling and setting
637    // breakpoints. Many object files can track exactly what parts of their
638    // object files are code, data and other information. This is of course
639    // above and beyond just looking at the section types. For example, code
640    // might contain PC relative data and the object file might be able to
641    // tell us that an address in code is data.
642    //----------------------------------------------------------------------
643    typedef enum AddressClass
644    {
645        eAddressClassInvalid,
646        eAddressClassUnknown,
647        eAddressClassCode,
648        eAddressClassCodeAlternateISA,
649        eAddressClassData,
650        eAddressClassDebug,
651        eAddressClassRuntime
652    } AddressClass;
653
654} // namespace lldb
655
656
657#endif  // LLDB_lldb_enumerations_h_
658