lldb-enumerations.h revision 4f61ba926fdcc03d71a1b5db88c18d1e94ed9fd8
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    } LanguageType;
335
336    typedef enum DynamicValueType
337    {
338        eNoDynamicValues = 0,
339        eDynamicCanRunTarget    = 1,
340        eDynamicDontRunTarget   = 2
341    } DynamicValueType;
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        eArgTypeFunctionOrSymbol,
375        eArgTypeGDBFormat,
376        eArgTypeIndex,
377        eArgTypeLanguage,
378        eArgTypeLineNum,
379        eArgTypeLogCategory,
380        eArgTypeLogChannel,
381        eArgTypeMethod,
382        eArgTypeName,
383        eArgTypeNewPathPrefix,
384        eArgTypeNumLines,
385        eArgTypeNumberPerLine,
386        eArgTypeOffset,
387        eArgTypeOldPathPrefix,
388        eArgTypeOneLiner,
389        eArgTypePath,
390        eArgTypePid,
391        eArgTypePlugin,
392        eArgTypeProcessName,
393        eArgTypePythonClass,
394        eArgTypePythonFunction,
395        eArgTypePythonScript,
396        eArgTypeQueueName,
397        eArgTypeRegisterName,
398        eArgTypeRegularExpression,
399        eArgTypeRunArgs,
400        eArgTypeRunMode,
401        eArgTypeScriptedCommandSynchronicity,
402        eArgTypeScriptLang,
403        eArgTypeSearchWord,
404        eArgTypeSelector,
405        eArgTypeSettingIndex,
406        eArgTypeSettingKey,
407        eArgTypeSettingPrefix,
408        eArgTypeSettingVariableName,
409        eArgTypeShlibName,
410        eArgTypeSourceFile,
411        eArgTypeSortOrder,
412        eArgTypeStartAddress,
413        eArgTypeSummaryString,
414        eArgTypeSymbol,
415        eArgTypeThreadID,
416        eArgTypeThreadIndex,
417        eArgTypeThreadName,
418        eArgTypeUnsignedInteger,
419        eArgTypeUnixSignal,
420        eArgTypeVarName,
421        eArgTypeValue,
422        eArgTypeWidth,
423        eArgTypeNone,
424        eArgTypePlatform,
425        eArgTypeWatchpointID,
426        eArgTypeWatchpointIDRange,
427        eArgTypeWatchType,
428        eArgTypeLastArg  // Always keep this entry as the last entry in this enumeration!!
429    } CommandArgumentType;
430
431    //----------------------------------------------------------------------
432    // Symbol types
433    //----------------------------------------------------------------------
434    typedef enum SymbolType
435    {
436        eSymbolTypeAny = 0,
437        eSymbolTypeInvalid = 0,
438        eSymbolTypeAbsolute,
439        eSymbolTypeCode,
440        eSymbolTypeData,
441        eSymbolTypeTrampoline,
442        eSymbolTypeRuntime,
443        eSymbolTypeException,
444        eSymbolTypeSourceFile,
445        eSymbolTypeHeaderFile,
446        eSymbolTypeObjectFile,
447        eSymbolTypeCommonBlock,
448        eSymbolTypeBlock,
449        eSymbolTypeLocal,
450        eSymbolTypeParam,
451        eSymbolTypeVariable,
452        eSymbolTypeVariableType,
453        eSymbolTypeLineEntry,
454        eSymbolTypeLineHeader,
455        eSymbolTypeScopeBegin,
456        eSymbolTypeScopeEnd,
457        eSymbolTypeAdditional, // When symbols take more than one entry, the extra entries get this type
458        eSymbolTypeCompiler,
459        eSymbolTypeInstrumentation,
460        eSymbolTypeUndefined,
461        eSymbolTypeObjCClass,
462        eSymbolTypeObjCMetaClass,
463        eSymbolTypeObjCIVar
464    } SymbolType;
465
466    typedef enum SectionType
467    {
468        eSectionTypeInvalid,
469        eSectionTypeCode,
470        eSectionTypeContainer,              // The section contains child sections
471        eSectionTypeData,
472        eSectionTypeDataCString,            // Inlined C string data
473        eSectionTypeDataCStringPointers,    // Pointers to C string data
474        eSectionTypeDataSymbolAddress,      // Address of a symbol in the symbol table
475        eSectionTypeData4,
476        eSectionTypeData8,
477        eSectionTypeData16,
478        eSectionTypeDataPointers,
479        eSectionTypeDebug,
480        eSectionTypeZeroFill,
481        eSectionTypeDataObjCMessageRefs,    // Pointer to function pointer + selector
482        eSectionTypeDataObjCCFStrings,      // Objective C const CFString/NSString objects
483        eSectionTypeDWARFDebugAbbrev,
484        eSectionTypeDWARFDebugAranges,
485        eSectionTypeDWARFDebugFrame,
486        eSectionTypeDWARFDebugInfo,
487        eSectionTypeDWARFDebugLine,
488        eSectionTypeDWARFDebugLoc,
489        eSectionTypeDWARFDebugMacInfo,
490        eSectionTypeDWARFDebugPubNames,
491        eSectionTypeDWARFDebugPubTypes,
492        eSectionTypeDWARFDebugRanges,
493        eSectionTypeDWARFDebugStr,
494        eSectionTypeDWARFAppleNames,
495        eSectionTypeDWARFAppleTypes,
496        eSectionTypeDWARFAppleNamespaces,
497        eSectionTypeDWARFAppleObjC,
498        eSectionTypeEHFrame,
499        eSectionTypeOther
500
501    } SectionType;
502
503    typedef enum EmulateInstructionOptions
504    {
505        eEmulateInstructionOptionNone               = (0u),
506        eEmulateInstructionOptionAutoAdvancePC      = (1u << 0),
507        eEmulateInstructionOptionIgnoreConditions   = (1u << 1)
508    } EmulateInstructionOptions;
509
510    typedef enum FunctionNameType
511    {
512        eFunctionNameTypeNone       = 0u,
513        eFunctionNameTypeAuto       = (1u << 1),    // Automatically figure out which FunctionNameType
514                                                    // bits to set based on the function name.
515        eFunctionNameTypeFull       = (1u << 2),    // The function name.
516                                                    // For C this is the same as just the name of the function
517                                                    // For C++ this is the mangled or demangled version of the mangled name.
518                                                    // For ObjC this is the full function signature with the + or
519                                                    // - and the square brackets and the class and selector
520        eFunctionNameTypeBase       = (1u << 3),    // The function name only, no namespaces or arguments and no class
521                                                    // methods or selectors will be searched.
522        eFunctionNameTypeMethod     = (1u << 4),    // Find function by method name (C++) with no namespace or arguments
523        eFunctionNameTypeSelector   = (1u << 5),    // Find function by selector name (ObjC) names
524        eFunctionNameTypeAny        = (eFunctionNameTypeFull     |
525                                       eFunctionNameTypeBase     |
526                                       eFunctionNameTypeMethod   |
527                                       eFunctionNameTypeSelector )
528    } FunctionNameType;
529
530
531    //----------------------------------------------------------------------
532    // Basic types enumeration for the public API SBType::GetBasicType()
533    //----------------------------------------------------------------------
534    typedef enum BasicType
535    {
536		eBasicTypeInvalid = 0,
537        eBasicTypeVoid = 1,
538        eBasicTypeChar,
539        eBasicTypeSignedChar,
540        eBasicTypeWChar,
541        eBasicTypeChar16,
542        eBasicTypeChar32,
543        eBasicTypeShort,
544        eBasicTypeUnsignedShort,
545        eBasicTypeInt,
546        eBasicTypeUnsignedInt,
547        eBasicTypeLong,
548        eBasicTypeUnsignedLong,
549        eBasicTypeLongLong,
550        eBasicTypeUnsignedLongLong,
551        eBasicTypeInt128,
552        eBasicTypeUnsignedInt128,
553        eBasicTypeBool,
554        eBasicTypeFloat,
555        eBasicTypeDouble,
556        eBasicTypeLongDouble,
557        eBasicTypeFloatComplex,
558        eBasicTypeDoubleComplex,
559        eBasicTypeLongDoubleComplex,
560        eBasicTypeObjCID,
561        eBasicTypeObjCClass,
562        eBasicTypeObjCSel
563    } BasicType;
564
565    typedef enum TypeClass
566    {
567        eTypeClassInvalid           = (0u),
568        eTypeClassArray             = (1u << 0),
569        eTypeClassBlockPointer      = (1u << 1),
570        eTypeClassBuiltin           = (1u << 2),
571        eTypeClassClass             = (1u << 3),
572        eTypeClassComplexFloat      = (1u << 4),
573        eTypeClassComplexInteger    = (1u << 5),
574        eTypeClassEnumeration       = (1u << 6),
575        eTypeClassFunction          = (1u << 7),
576        eTypeClassMemberPointer     = (1u << 8),
577        eTypeClassObjCObject        = (1u << 9),
578        eTypeClassObjCInterface     = (1u << 10),
579        eTypeClassObjCObjectPointer = (1u << 11),
580        eTypeClassPointer           = (1u << 12),
581        eTypeClassReference         = (1u << 13),
582        eTypeClassStruct            = (1u << 14),
583        eTypeClassTypedef           = (1u << 15),
584        eTypeClassUnion             = (1u << 16),
585        eTypeClassVector            = (1u << 17),
586        // Define the last type class as the MSBit of a 32 bit value
587        eTypeClassOther             = (1u << 31),
588        // Define a mask that can be used for any type when finding types
589        eTypeClassAny               = (0xffffffffu)
590    }TypeClass;
591
592    typedef enum TemplateArgumentKind
593    {
594        eTemplateArgumentKindNull = 0,
595        eTemplateArgumentKindType,
596        eTemplateArgumentKindDeclaration,
597        eTemplateArgumentKindIntegral,
598        eTemplateArgumentKindTemplate,
599        eTemplateArgumentKindTemplateExpansion,
600        eTemplateArgumentKindExpression,
601        eTemplateArgumentKindPack
602
603    } TemplateArgumentKind;
604
605    //----------------------------------------------------------------------
606    // Options that can be set for a formatter to alter its behavior
607    // Not all of these are applicable to all formatter types
608    //----------------------------------------------------------------------
609    typedef enum TypeOptions
610    {
611        eTypeOptionNone            = (0u),
612        eTypeOptionCascade         = (1u << 0),
613        eTypeOptionSkipPointers    = (1u << 1),
614        eTypeOptionSkipReferences  = (1u << 2),
615        eTypeOptionHideChildren    = (1u << 3),
616        eTypeOptionHideValue       = (1u << 4),
617        eTypeOptionShowOneLiner    = (1u << 5),
618        eTypeOptionHideNames       = (1u << 6)
619    } TypeOptions;
620
621   //----------------------------------------------------------------------
622   // This is the return value for frame comparisons.  When frame A pushes
623   // frame B onto the stack, frame A is OLDER than frame B.
624   //----------------------------------------------------------------------
625   typedef enum FrameComparison
626   {
627       eFrameCompareInvalid,
628       eFrameCompareUnknown,
629       eFrameCompareEqual,
630       eFrameCompareYounger,
631       eFrameCompareOlder
632   } FrameComparison;
633
634    //----------------------------------------------------------------------
635    // Address Class
636    //
637    // A way of classifying an address used for disassembling and setting
638    // breakpoints. Many object files can track exactly what parts of their
639    // object files are code, data and other information. This is of course
640    // above and beyond just looking at the section types. For example, code
641    // might contain PC relative data and the object file might be able to
642    // tell us that an address in code is data.
643    //----------------------------------------------------------------------
644    typedef enum AddressClass
645    {
646        eAddressClassInvalid,
647        eAddressClassUnknown,
648        eAddressClassCode,
649        eAddressClassCodeAlternateISA,
650        eAddressClassData,
651        eAddressClassDebug,
652        eAddressClassRuntime
653    } AddressClass;
654
655} // namespace lldb
656
657
658#endif  // LLDB_lldb_enumerations_h_
659