lldb-enumerations.h revision 16376ed044df3ee70fcf69e19f06af01e71a8e9a
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    //----------------------------------------------------------------------
305    typedef enum LanguageType
306    {
307        eLanguageTypeUnknown         = 0x0000,   ///< Unknown or invalid language value.
308        eLanguageTypeC89             = 0x0001,   ///< ISO C:1989.
309        eLanguageTypeC               = 0x0002,   ///< Non-standardized C, such as K&R.
310        eLanguageTypeAda83           = 0x0003,   ///< ISO Ada:1983.
311        eLanguageTypeC_plus_plus     = 0x0004,   ///< ISO C++:1998.
312        eLanguageTypeCobol74         = 0x0005,   ///< ISO Cobol:1974.
313        eLanguageTypeCobol85         = 0x0006,   ///< ISO Cobol:1985.
314        eLanguageTypeFortran77       = 0x0007,   ///< ISO Fortran 77.
315        eLanguageTypeFortran90       = 0x0008,   ///< ISO Fortran 90.
316        eLanguageTypePascal83        = 0x0009,   ///< ISO Pascal:1983.
317        eLanguageTypeModula2         = 0x000a,   ///< ISO Modula-2:1996.
318        eLanguageTypeJava            = 0x000b,   ///< Java.
319        eLanguageTypeC99             = 0x000c,   ///< ISO C:1999.
320        eLanguageTypeAda95           = 0x000d,   ///< ISO Ada:1995.
321        eLanguageTypeFortran95       = 0x000e,   ///< ISO Fortran 95.
322        eLanguageTypePLI             = 0x000f,   ///< ANSI PL/I:1976.
323        eLanguageTypeObjC            = 0x0010,   ///< Objective-C.
324        eLanguageTypeObjC_plus_plus  = 0x0011,   ///< Objective-C++.
325        eLanguageTypeUPC             = 0x0012,   ///< Unified Parallel C.
326        eLanguageTypeD               = 0x0013,   ///< D.
327        eLanguageTypePython          = 0x0014    ///< Python.
328    } LanguageType;
329
330    typedef enum DynamicValueType
331    {
332        eNoDynamicValues = 0,
333        eDynamicCanRunTarget    = 1,
334        eDynamicDontRunTarget   = 2
335    } DynamicValueType;
336
337    typedef enum SyntheticValueType
338    {
339        eNoSyntheticFilter = false,
340        eUseSyntheticFilter = true
341    } SyntheticValueType;
342
343    typedef enum AccessType
344    {
345        eAccessNone,
346        eAccessPublic,
347        eAccessPrivate,
348        eAccessProtected,
349        eAccessPackage
350    } AccessType;
351
352    typedef enum CommandArgumentType
353    {
354        eArgTypeAddress = 0,
355        eArgTypeAliasName,
356        eArgTypeAliasOptions,
357        eArgTypeArchitecture,
358        eArgTypeBoolean,
359        eArgTypeBreakpointID,
360        eArgTypeBreakpointIDRange,
361        eArgTypeByteSize,
362        eArgTypeClassName,
363        eArgTypeCommandName,
364        eArgTypeCount,
365        eArgTypeEndAddress,
366        eArgTypeExpression,
367        eArgTypeExpressionPath,
368        eArgTypeExprFormat,
369        eArgTypeFilename,
370        eArgTypeFormat,
371        eArgTypeFrameIndex,
372        eArgTypeFullName,
373        eArgTypeFunctionName,
374        eArgTypeGDBFormat,
375        eArgTypeIndex,
376        eArgTypeLineNum,
377        eArgTypeLogCategory,
378        eArgTypeLogChannel,
379        eArgTypeMethod,
380        eArgTypeName,
381        eArgTypeNewPathPrefix,
382        eArgTypeNumLines,
383        eArgTypeNumberPerLine,
384        eArgTypeOffset,
385        eArgTypeOldPathPrefix,
386        eArgTypeOneLiner,
387        eArgTypePath,
388        eArgTypePid,
389        eArgTypePlugin,
390        eArgTypeProcessName,
391        eArgTypePythonClass,
392        eArgTypePythonFunction,
393        eArgTypePythonScript,
394        eArgTypeQueueName,
395        eArgTypeRegisterName,
396        eArgTypeRegularExpression,
397        eArgTypeRunArgs,
398        eArgTypeRunMode,
399        eArgTypeScriptedCommandSynchronicity,
400        eArgTypeScriptLang,
401        eArgTypeSearchWord,
402        eArgTypeSelector,
403        eArgTypeSettingIndex,
404        eArgTypeSettingKey,
405        eArgTypeSettingPrefix,
406        eArgTypeSettingVariableName,
407        eArgTypeShlibName,
408        eArgTypeSourceFile,
409        eArgTypeSortOrder,
410        eArgTypeStartAddress,
411        eArgTypeSummaryString,
412        eArgTypeSymbol,
413        eArgTypeThreadID,
414        eArgTypeThreadIndex,
415        eArgTypeThreadName,
416        eArgTypeUnsignedInteger,
417        eArgTypeUnixSignal,
418        eArgTypeVarName,
419        eArgTypeValue,
420        eArgTypeWidth,
421        eArgTypeNone,
422        eArgTypePlatform,
423        eArgTypeWatchpointID,
424        eArgTypeWatchpointIDRange,
425        eArgTypeWatchType,
426        eArgTypeLastArg  // Always keep this entry as the last entry in this enumeration!!
427    } CommandArgumentType;
428
429    //----------------------------------------------------------------------
430    // Symbol types
431    //----------------------------------------------------------------------
432    typedef enum SymbolType
433    {
434        eSymbolTypeAny = 0,
435        eSymbolTypeInvalid = 0,
436        eSymbolTypeAbsolute,
437        eSymbolTypeCode,
438        eSymbolTypeData,
439        eSymbolTypeTrampoline,
440        eSymbolTypeRuntime,
441        eSymbolTypeException,
442        eSymbolTypeSourceFile,
443        eSymbolTypeHeaderFile,
444        eSymbolTypeObjectFile,
445        eSymbolTypeCommonBlock,
446        eSymbolTypeBlock,
447        eSymbolTypeLocal,
448        eSymbolTypeParam,
449        eSymbolTypeVariable,
450        eSymbolTypeVariableType,
451        eSymbolTypeLineEntry,
452        eSymbolTypeLineHeader,
453        eSymbolTypeScopeBegin,
454        eSymbolTypeScopeEnd,
455        eSymbolTypeAdditional, // When symbols take more than one entry, the extra entries get this type
456        eSymbolTypeCompiler,
457        eSymbolTypeInstrumentation,
458        eSymbolTypeUndefined,
459        eSymbolTypeObjCClass,
460        eSymbolTypeObjCMetaClass,
461        eSymbolTypeObjCIVar
462    } SymbolType;
463
464    typedef enum SectionType
465    {
466        eSectionTypeInvalid,
467        eSectionTypeCode,
468        eSectionTypeContainer,              // The section contains child sections
469        eSectionTypeData,
470        eSectionTypeDataCString,            // Inlined C string data
471        eSectionTypeDataCStringPointers,    // Pointers to C string data
472        eSectionTypeDataSymbolAddress,      // Address of a symbol in the symbol table
473        eSectionTypeData4,
474        eSectionTypeData8,
475        eSectionTypeData16,
476        eSectionTypeDataPointers,
477        eSectionTypeDebug,
478        eSectionTypeZeroFill,
479        eSectionTypeDataObjCMessageRefs,    // Pointer to function pointer + selector
480        eSectionTypeDataObjCCFStrings,      // Objective C const CFString/NSString objects
481        eSectionTypeDWARFDebugAbbrev,
482        eSectionTypeDWARFDebugAranges,
483        eSectionTypeDWARFDebugFrame,
484        eSectionTypeDWARFDebugInfo,
485        eSectionTypeDWARFDebugLine,
486        eSectionTypeDWARFDebugLoc,
487        eSectionTypeDWARFDebugMacInfo,
488        eSectionTypeDWARFDebugPubNames,
489        eSectionTypeDWARFDebugPubTypes,
490        eSectionTypeDWARFDebugRanges,
491        eSectionTypeDWARFDebugStr,
492        eSectionTypeDWARFAppleNames,
493        eSectionTypeDWARFAppleTypes,
494        eSectionTypeDWARFAppleNamespaces,
495        eSectionTypeDWARFAppleObjC,
496        eSectionTypeEHFrame,
497        eSectionTypeOther
498
499    } SectionType;
500
501    typedef enum EmulateInstructionOptions
502    {
503        eEmulateInstructionOptionNone               = (0u),
504        eEmulateInstructionOptionAutoAdvancePC      = (1u << 0),
505        eEmulateInstructionOptionIgnoreConditions   = (1u << 1)
506    } EmulateInstructionOptions;
507
508    typedef enum FunctionNameType
509    {
510        eFunctionNameTypeNone       = 0u,
511        eFunctionNameTypeAuto       = (1u << 1),    // Automatically figure out which FunctionNameType
512                                                    // bits to set based on the function name.
513        eFunctionNameTypeFull       = (1u << 2),    // The function name.
514                                                    // For C this is the same as just the name of the function
515                                                    // For C++ this is the mangled or demangled version of the mangled name.
516                                                    // For ObjC this is the full function signature with the + or
517                                                    // - and the square brackets and the class and selector
518        eFunctionNameTypeBase       = (1u << 3),    // The function name only, no namespaces or arguments and no class
519                                                    // methods or selectors will be searched.
520        eFunctionNameTypeMethod     = (1u << 4),    // Find function by method name (C++) with no namespace or arguments
521        eFunctionNameTypeSelector   = (1u << 5),    // Find function by selector name (ObjC) names
522        eFunctionNameTypeAny        = (eFunctionNameTypeFull     |
523                                       eFunctionNameTypeBase     |
524                                       eFunctionNameTypeMethod   |
525                                       eFunctionNameTypeSelector )
526    } FunctionNameType;
527
528
529    //----------------------------------------------------------------------
530    // Basic types enumeration for the public API SBType::GetBasicType()
531    //----------------------------------------------------------------------
532    typedef enum BasicType
533    {
534		eBasicTypeInvalid = 0,
535        eBasicTypeVoid = 1,
536        eBasicTypeChar,
537        eBasicTypeSignedChar,
538        eBasicTypeWChar,
539        eBasicTypeChar16,
540        eBasicTypeChar32,
541        eBasicTypeShort,
542        eBasicTypeUnsignedShort,
543        eBasicTypeInt,
544        eBasicTypeUnsignedInt,
545        eBasicTypeLong,
546        eBasicTypeUnsignedLong,
547        eBasicTypeLongLong,
548        eBasicTypeUnsignedLongLong,
549        eBasicTypeInt128,
550        eBasicTypeUnsignedInt128,
551        eBasicTypeBool,
552        eBasicTypeFloat,
553        eBasicTypeDouble,
554        eBasicTypeLongDouble,
555        eBasicTypeFloatComplex,
556        eBasicTypeDoubleComplex,
557        eBasicTypeLongDoubleComplex,
558        eBasicTypeObjCID,
559        eBasicTypeObjCClass,
560        eBasicTypeObjCSel
561    } BasicType;
562
563    typedef enum TypeClass
564    {
565        eTypeClassInvalid           = (0u),
566        eTypeClassArray             = (1u << 0),
567        eTypeClassBlockPointer      = (1u << 1),
568        eTypeClassBuiltin           = (1u << 2),
569        eTypeClassClass             = (1u << 3),
570        eTypeClassComplexFloat      = (1u << 4),
571        eTypeClassComplexInteger    = (1u << 5),
572        eTypeClassEnumeration       = (1u << 6),
573        eTypeClassFunction          = (1u << 7),
574        eTypeClassMemberPointer     = (1u << 8),
575        eTypeClassObjCObject        = (1u << 9),
576        eTypeClassObjCInterface     = (1u << 10),
577        eTypeClassObjCObjectPointer = (1u << 11),
578        eTypeClassPointer           = (1u << 12),
579        eTypeClassReference         = (1u << 13),
580        eTypeClassStruct            = (1u << 14),
581        eTypeClassTypedef           = (1u << 15),
582        eTypeClassUnion             = (1u << 16),
583        eTypeClassVector            = (1u << 17),
584        // Define the last type class as the MSBit of a 32 bit value
585        eTypeClassOther             = (1u << 31),
586        // Define a mask that can be used for any type when finding types
587        eTypeClassAny               = (0xffffffffu)
588    }TypeClass;
589
590    typedef enum TemplateArgumentKind
591    {
592        eTemplateArgumentKindNull = 0,
593        eTemplateArgumentKindType,
594        eTemplateArgumentKindDeclaration,
595        eTemplateArgumentKindIntegral,
596        eTemplateArgumentKindTemplate,
597        eTemplateArgumentKindTemplateExpansion,
598        eTemplateArgumentKindExpression,
599        eTemplateArgumentKindPack
600
601    } TemplateArgumentKind;
602
603    //----------------------------------------------------------------------
604    // Options that can be set for a formatter to alter its behavior
605    // Not all of these are applicable to all formatter types
606    //----------------------------------------------------------------------
607    typedef enum TypeOptions
608    {
609        eTypeOptionNone            = (0u),
610        eTypeOptionCascade         = (1u << 0),
611        eTypeOptionSkipPointers    = (1u << 1),
612        eTypeOptionSkipReferences  = (1u << 2),
613        eTypeOptionHideChildren    = (1u << 3),
614        eTypeOptionHideValue       = (1u << 4),
615        eTypeOptionShowOneLiner    = (1u << 5),
616        eTypeOptionHideNames       = (1u << 6)
617    } TypeOptions;
618
619} // namespace lldb
620
621
622#endif  // LLDB_lldb_enumerations_h_
623