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