lldb-private-enumerations.h revision 269024
1//===-- lldb-private-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_private_enumerations_h_
11#define LLDB_lldb_private_enumerations_h_
12
13namespace lldb_private {
14
15//----------------------------------------------------------------------
16// Thread Step Types
17//----------------------------------------------------------------------
18typedef enum StepType
19{
20    eStepTypeNone,
21    eStepTypeTrace,     ///< Single step one instruction.
22    eStepTypeTraceOver, ///< Single step one instruction, stepping over.
23    eStepTypeInto,      ///< Single step into a specified context.
24    eStepTypeOver,      ///< Single step over a specified context.
25    eStepTypeOut        ///< Single step out a specified context.
26} StepType;
27
28//----------------------------------------------------------------------
29// Address Types
30//----------------------------------------------------------------------
31typedef enum AddressType
32{
33    eAddressTypeInvalid = 0,
34    eAddressTypeFile, ///< Address is an address as found in an object or symbol file
35    eAddressTypeLoad, ///< Address is an address as in the current target inferior process
36    eAddressTypeHost  ///< Address is an address in the process that is running this code
37} AddressType;
38
39//----------------------------------------------------------------------
40// Votes - Need a tri-state, yes, no, no opinion...
41//----------------------------------------------------------------------
42typedef enum Vote
43{
44    eVoteNo         = -1,
45    eVoteNoOpinion  =  0,
46    eVoteYes        =  1
47} Vote;
48
49typedef enum ArchitectureType
50{
51    eArchTypeInvalid,
52    eArchTypeMachO,
53    eArchTypeELF,
54    eArchTypeCOFF,
55    kNumArchTypes
56} ArchitectureType;
57
58//----------------------------------------------------------------------
59/// Settable state variable types.
60///
61//----------------------------------------------------------------------
62
63//typedef enum SettableVariableType
64//{
65//    eSetVarTypeInt,
66//    eSetVarTypeBoolean,
67//    eSetVarTypeString,
68//    eSetVarTypeArray,
69//    eSetVarTypeDictionary,
70//    eSetVarTypeEnum,
71//    eSetVarTypeNone
72//} SettableVariableType;
73
74typedef enum VarSetOperationType
75{
76    eVarSetOperationReplace,
77    eVarSetOperationInsertBefore,
78    eVarSetOperationInsertAfter,
79    eVarSetOperationRemove,
80    eVarSetOperationAppend,
81    eVarSetOperationClear,
82    eVarSetOperationAssign,
83    eVarSetOperationInvalid
84} VarSetOperationType;
85
86typedef enum ArgumentRepetitionType
87{
88    eArgRepeatPlain,            // Exactly one occurrence
89    eArgRepeatOptional,         // At most one occurrence, but it's optional
90    eArgRepeatPlus,             // One or more occurrences
91    eArgRepeatStar,             // Zero or more occurrences
92    eArgRepeatRange,            // Repetition of same argument, from 1 to n
93    eArgRepeatPairPlain,        // A pair of arguments that must always go together ([arg-type arg-value]), occurs exactly once
94    eArgRepeatPairOptional,     // A pair that occurs at most once (optional)
95    eArgRepeatPairPlus,         // One or more occurrences of a pair
96    eArgRepeatPairStar,         // Zero or more occurrences of a pair
97    eArgRepeatPairRange,        // A pair that repeats from 1 to n
98    eArgRepeatPairRangeOptional // A pair that repeats from 1 to n, but is optional
99} ArgumentRepetitionType;
100
101typedef enum SortOrder
102{
103    eSortOrderNone,
104    eSortOrderByAddress,
105    eSortOrderByName
106} SortOrder;
107
108
109//----------------------------------------------------------------------
110// Used in conjunction with Host::GetLLDBPath () to find files that
111// are related to
112//----------------------------------------------------------------------
113typedef enum PathType
114{
115    ePathTypeLLDBShlibDir,          // The directory where the lldb.so (unix) or LLDB mach-o file in LLDB.framework (MacOSX) exists
116    ePathTypeSupportExecutableDir,  // Find LLDB support executable directory (debugserver, etc)
117    ePathTypeHeaderDir,             // Find LLDB header file directory
118    ePathTypePythonDir,             // Find Python modules (PYTHONPATH) directory
119    ePathTypeLLDBSystemPlugins,     // System plug-ins directory
120    ePathTypeLLDBUserPlugins,       // User plug-ins directory
121    ePathTypeLLDBTempSystemDir      // The LLDB temp directory for this system
122
123} PathType;
124
125
126//----------------------------------------------------------------------
127// We can execute ThreadPlans on one thread with various fall-back modes
128// (try other threads after timeout, etc.) This enum gives the result of
129// thread plan executions.
130//----------------------------------------------------------------------
131typedef enum ExecutionResults
132{
133    eExecutionSetupError,
134    eExecutionCompleted,
135    eExecutionDiscarded,
136    eExecutionInterrupted,
137    eExecutionHitBreakpoint,
138    eExecutionTimedOut,
139    eExecutionStoppedForDebug
140} ExecutionResults;
141
142typedef enum ObjCRuntimeVersions {
143    eObjC_VersionUnknown = 0,
144    eAppleObjC_V1 = 1,
145    eAppleObjC_V2 = 2
146} ObjCRuntimeVersions;
147
148
149//----------------------------------------------------------------------
150// LazyBool is for boolean values that need to be calculated lazily.
151// Values start off set to eLazyBoolCalculate, and then they can be
152// calculated once and set to eLazyBoolNo or eLazyBoolYes.
153//----------------------------------------------------------------------
154typedef enum LazyBool {
155    eLazyBoolCalculate  = -1,
156    eLazyBoolNo         = 0,
157    eLazyBoolYes        = 1
158} LazyBool;
159
160//------------------------------------------------------------------
161/// Name matching
162//------------------------------------------------------------------
163typedef enum NameMatchType
164{
165    eNameMatchIgnore,
166    eNameMatchEquals,
167    eNameMatchContains,
168    eNameMatchStartsWith,
169    eNameMatchEndsWith,
170    eNameMatchRegularExpression
171
172} NameMatchType;
173
174
175//------------------------------------------------------------------
176/// Instruction types
177//------------------------------------------------------------------
178typedef enum InstructionType
179{
180    eInstructionTypeAny,                // Support for any instructions at all (at least one)
181    eInstructionTypePrologueEpilogue,   // All prologue and epilogue instructons that push and pop register values and modify sp/fp
182    eInstructionTypePCModifying,        // Any instruction that modifies the program counter/instruction pointer
183    eInstructionTypeAll                 // All instructions of any kind
184
185}  InstructionType;
186
187
188//------------------------------------------------------------------
189/// Format category entry types
190//------------------------------------------------------------------
191typedef enum FormatCategoryItem
192{
193    eFormatCategoryItemSummary =         0x0001,
194    eFormatCategoryItemRegexSummary =    0x0002,
195    eFormatCategoryItemFilter =          0x0004,
196    eFormatCategoryItemRegexFilter =     0x0008,
197    eFormatCategoryItemSynth =           0x0010,
198    eFormatCategoryItemRegexSynth =      0x0020,
199    eFormatCategoryItemValue =           0x0040,
200    eFormatCategoryItemRegexValue =      0x0080
201} FormatCategoryItem;
202
203//------------------------------------------------------------------
204/// Expression execution policies
205//------------------------------------------------------------------
206typedef enum {
207    eExecutionPolicyOnlyWhenNeeded,
208    eExecutionPolicyNever,
209    eExecutionPolicyAlways
210} ExecutionPolicy;
211
212//----------------------------------------------------------------------
213// Ways that the FormatManager picks a particular format for a type
214//----------------------------------------------------------------------
215typedef enum FormatterChoiceCriterion
216{
217    eFormatterChoiceCriterionDirectChoice =                  0x00000000,
218    eFormatterChoiceCriterionStrippedPointerReference =      0x00000001,
219    eFormatterChoiceCriterionNavigatedTypedefs =             0x00000002,
220    eFormatterChoiceCriterionRegularExpressionSummary =      0x00000004,
221    eFormatterChoiceCriterionRegularExpressionFilter =       0x00000004,
222    eFormatterChoiceCriterionDynamicObjCDiscovery =          0x00000008,
223    eFormatterChoiceCriterionStrippedBitField =              0x00000010,
224    eFormatterChoiceCriterionWentToStaticValue =             0x00000020
225} FormatterChoiceCriterion;
226
227//----------------------------------------------------------------------
228// Synchronicity behavior of scripted commands
229//----------------------------------------------------------------------
230typedef enum ScriptedCommandSynchronicity
231{
232    eScriptedCommandSynchronicitySynchronous,
233    eScriptedCommandSynchronicityAsynchronous,
234    eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is
235} ScriptedCommandSynchronicity;
236
237//----------------------------------------------------------------------
238// Verbosity mode of "po" output
239//----------------------------------------------------------------------
240typedef enum LanguageRuntimeDescriptionDisplayVerbosity
241{
242    eLanguageRuntimeDescriptionDisplayVerbosityCompact, // only print the description string, if any
243    eLanguageRuntimeDescriptionDisplayVerbosityFull,    // print the full-blown output
244} LanguageRuntimeDescriptionDisplayVerbosity;
245
246//----------------------------------------------------------------------
247// Loading modules from memory
248//----------------------------------------------------------------------
249typedef enum MemoryModuleLoadLevel {
250    eMemoryModuleLoadLevelMinimal,  // Load sections only
251    eMemoryModuleLoadLevelPartial,  // Load function bounds but no symbols
252    eMemoryModuleLoadLevelComplete, // Load sections and all symbols
253} MemoryModuleLoadLevel;
254
255
256//----------------------------------------------------------------------
257// Result enums for when reading multiple lines from IOHandlers
258//----------------------------------------------------------------------
259enum class LineStatus {
260    Success,    // The line that was just edited if good and should be added to the lines
261    Error,      // There is an error with the current line and it needs to be re-edited before it can be accepted
262    Done        // Lines are complete
263};
264
265} // namespace lldb_private
266
267
268#endif  // LLDB_lldb_private_enumerations_h_
269