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