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