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