lldb-private-enumerations.h revision 263367
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} PathType;
122
123
124//----------------------------------------------------------------------
125// We can execute ThreadPlans on one thread with various fall-back modes
126// (try other threads after timeout, etc.) This enum gives the result of
127// thread plan executions.
128//----------------------------------------------------------------------
129typedef enum ExecutionResults
130{
131    eExecutionSetupError,
132    eExecutionCompleted,
133    eExecutionDiscarded,
134    eExecutionInterrupted,
135    eExecutionHitBreakpoint,
136    eExecutionTimedOut,
137    eExecutionStoppedForDebug
138} ExecutionResults;
139
140typedef enum ObjCRuntimeVersions {
141    eObjC_VersionUnknown = 0,
142    eAppleObjC_V1 = 1,
143    eAppleObjC_V2 = 2
144} ObjCRuntimeVersions;
145
146
147//----------------------------------------------------------------------
148// LazyBool is for boolean values that need to be calculated lazily.
149// Values start off set to eLazyBoolCalculate, and then they can be
150// calculated once and set to eLazyBoolNo or eLazyBoolYes.
151//----------------------------------------------------------------------
152typedef enum LazyBool {
153    eLazyBoolCalculate  = -1,
154    eLazyBoolNo         = 0,
155    eLazyBoolYes        = 1
156} LazyBool;
157
158//------------------------------------------------------------------
159/// Name matching
160//------------------------------------------------------------------
161typedef enum NameMatchType
162{
163    eNameMatchIgnore,
164    eNameMatchEquals,
165    eNameMatchContains,
166    eNameMatchStartsWith,
167    eNameMatchEndsWith,
168    eNameMatchRegularExpression
169
170} NameMatchType;
171
172
173//------------------------------------------------------------------
174/// Instruction types
175//------------------------------------------------------------------
176typedef enum InstructionType
177{
178    eInstructionTypeAny,                // Support for any instructions at all (at least one)
179    eInstructionTypePrologueEpilogue,   // All prologue and epilogue instructons that push and pop register values and modify sp/fp
180    eInstructionTypePCModifying,        // Any instruction that modifies the program counter/instruction pointer
181    eInstructionTypeAll                 // All instructions of any kind
182
183}  InstructionType;
184
185
186//------------------------------------------------------------------
187/// Format category entry types
188//------------------------------------------------------------------
189typedef enum FormatCategoryItem
190{
191    eFormatCategoryItemSummary =         0x0001,
192    eFormatCategoryItemRegexSummary =    0x0002,
193    eFormatCategoryItemFilter =          0x0004,
194    eFormatCategoryItemRegexFilter =     0x0008,
195    eFormatCategoryItemSynth =           0x0010,
196    eFormatCategoryItemRegexSynth =      0x0020,
197    eFormatCategoryItemValue =           0x0040,
198    eFormatCategoryItemRegexValue =      0x0080
199} FormatCategoryItem;
200
201//------------------------------------------------------------------
202/// Expression execution policies
203//------------------------------------------------------------------
204typedef enum {
205    eExecutionPolicyOnlyWhenNeeded,
206    eExecutionPolicyNever,
207    eExecutionPolicyAlways
208} ExecutionPolicy;
209
210//----------------------------------------------------------------------
211// Ways that the FormatManager picks a particular format for a type
212//----------------------------------------------------------------------
213typedef enum FormatterChoiceCriterion
214{
215    eFormatterChoiceCriterionDirectChoice =                  0x00000000,
216    eFormatterChoiceCriterionStrippedPointerReference =      0x00000001,
217    eFormatterChoiceCriterionNavigatedTypedefs =             0x00000002,
218    eFormatterChoiceCriterionRegularExpressionSummary =      0x00000004,
219    eFormatterChoiceCriterionRegularExpressionFilter =       0x00000004,
220    eFormatterChoiceCriterionDynamicObjCDiscovery =          0x00000008,
221    eFormatterChoiceCriterionStrippedBitField =              0x00000010,
222    eFormatterChoiceCriterionWentToStaticValue =             0x00000020
223} FormatterChoiceCriterion;
224
225//----------------------------------------------------------------------
226// Synchronicity behavior of scripted commands
227//----------------------------------------------------------------------
228typedef enum ScriptedCommandSynchronicity
229{
230    eScriptedCommandSynchronicitySynchronous,
231    eScriptedCommandSynchronicityAsynchronous,
232    eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is
233} ScriptedCommandSynchronicity;
234
235//----------------------------------------------------------------------
236// Verbosity mode of "po" output
237//----------------------------------------------------------------------
238typedef enum LanguageRuntimeDescriptionDisplayVerbosity
239{
240    eLanguageRuntimeDescriptionDisplayVerbosityCompact, // only print the description string, if any
241    eLanguageRuntimeDescriptionDisplayVerbosityFull,    // print the full-blown output
242} LanguageRuntimeDescriptionDisplayVerbosity;
243
244//----------------------------------------------------------------------
245// Loading modules from memory
246//----------------------------------------------------------------------
247typedef enum MemoryModuleLoadLevel {
248    eMemoryModuleLoadLevelMinimal,  // Load sections only
249    eMemoryModuleLoadLevelPartial,  // Load function bounds but no symbols
250    eMemoryModuleLoadLevelComplete, // Load sections and all symbols
251} MemoryModuleLoadLevel;
252
253
254} // namespace lldb_private
255
256
257#endif  // LLDB_lldb_private_enumerations_h_
258