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