1 //===-- lldb-private-enumerations.h -----------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef LLDB_lldb_private_enumerations_h_
11 #define LLDB_lldb_private_enumerations_h_
13 namespace lldb_private {
15 //----------------------------------------------------------------------
17 //----------------------------------------------------------------------
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.
28 //----------------------------------------------------------------------
30 //----------------------------------------------------------------------
31 typedef enum AddressType
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
39 //----------------------------------------------------------------------
40 // Votes - Need a tri-state, yes, no, no opinion...
41 //----------------------------------------------------------------------
49 typedef enum ArchitectureType
57 //----------------------------------------------------------------------
58 /// Settable state variable types.
60 //----------------------------------------------------------------------
62 //typedef enum SettableVariableType
65 // eSetVarTypeBoolean,
68 // eSetVarTypeDictionary,
71 //} SettableVariableType;
73 typedef enum VarSetOperationType
75 eVarSetOperationReplace,
76 eVarSetOperationInsertBefore,
77 eVarSetOperationInsertAfter,
78 eVarSetOperationRemove,
79 eVarSetOperationAppend,
80 eVarSetOperationClear,
81 eVarSetOperationAssign,
82 eVarSetOperationInvalid
83 } VarSetOperationType;
85 typedef enum ArgumentRepetitionType
87 eArgRepeatPlain, // Exactly one occurrence
88 eArgRepeatOptional, // At most one occurrence, but it's optional
89 eArgRepeatPlus, // One or more occurrences
90 eArgRepeatStar, // Zero or more occurrences
91 eArgRepeatRange, // Repetition of same argument, from 1 to n
92 eArgRepeatPairPlain, // A pair of arguments that must always go together ([arg-type arg-value]), occurs exactly once
93 eArgRepeatPairOptional, // A pair that occurs at most once (optional)
94 eArgRepeatPairPlus, // One or more occurrences of a pair
95 eArgRepeatPairStar, // Zero or more occurrences of a pair
96 eArgRepeatPairRange, // A pair that repeats from 1 to n
97 eArgRepeatPairRangeOptional // A pair that repeats from 1 to n, but is optional
98 } ArgumentRepetitionType;
100 typedef enum SortOrder
108 //----------------------------------------------------------------------
109 // Used in conjunction with Host::GetLLDBPath () to find files that
111 //----------------------------------------------------------------------
112 typedef enum PathType
114 ePathTypeLLDBShlibDir, // The directory where the lldb.so (unix) or LLDB mach-o file in LLDB.framework (MacOSX) exists
115 ePathTypeSupportExecutableDir, // Find LLDB support executable directory (debugserver, etc)
116 ePathTypeHeaderDir, // Find LLDB header file directory
117 ePathTypePythonDir, // Find Python modules (PYTHONPATH) directory
118 ePathTypeLLDBSystemPlugins, // System plug-ins directory
119 ePathTypeLLDBUserPlugins // User plug-ins directory
123 //----------------------------------------------------------------------
124 // We can execute ThreadPlans on one thread with various fall-back modes
125 // (try other threads after timeout, etc.) This enum gives the result of
126 // thread plan executions.
127 //----------------------------------------------------------------------
128 typedef enum ExecutionResults
130 eExecutionSetupError,
133 eExecutionInterrupted,
134 eExecutionHitBreakpoint,
138 typedef enum ObjCRuntimeVersions {
139 eObjC_VersionUnknown = 0,
142 } ObjCRuntimeVersions;
145 //----------------------------------------------------------------------
146 // LazyBool is for boolean values that need to be calculated lazily.
147 // Values start off set to eLazyBoolCalculate, and then they can be
148 // calculated once and set to eLazyBoolNo or eLazyBoolYes.
149 //----------------------------------------------------------------------
150 typedef enum LazyBool {
151 eLazyBoolCalculate = -1,
156 //------------------------------------------------------------------
158 //------------------------------------------------------------------
159 typedef enum NameMatchType
164 eNameMatchStartsWith,
166 eNameMatchRegularExpression
171 //------------------------------------------------------------------
172 /// Instruction types
173 //------------------------------------------------------------------
174 typedef enum InstructionType
176 eInstructionTypeAny, // Support for any instructions at all (at least one)
177 eInstructionTypePrologueEpilogue, // All prologue and epilogue instructons that push and pop register values and modify sp/fp
178 eInstructionTypePCModifying, // Any instruction that modifies the program counter/instruction pointer
179 eInstructionTypeAll // All instructions of any kind
184 //------------------------------------------------------------------
185 /// Format category entry types
186 //------------------------------------------------------------------
187 typedef enum FormatCategoryItem
189 eFormatCategoryItemSummary = 0x0001,
190 eFormatCategoryItemRegexSummary = 0x0002,
191 eFormatCategoryItemFilter = 0x0004,
192 eFormatCategoryItemRegexFilter = 0x0008,
193 eFormatCategoryItemSynth = 0x0010,
194 eFormatCategoryItemRegexSynth = 0x0020
195 } FormatCategoryItem;
197 //------------------------------------------------------------------
198 /// Expression execution policies
199 //------------------------------------------------------------------
201 eExecutionPolicyOnlyWhenNeeded,
202 eExecutionPolicyNever,
203 eExecutionPolicyAlways
206 //----------------------------------------------------------------------
207 // Ways that the FormatManager picks a particular format for a type
208 //----------------------------------------------------------------------
209 typedef enum FormatterChoiceCriterion
211 eFormatterChoiceCriterionDirectChoice = 0x00000000,
212 eFormatterChoiceCriterionStrippedPointerReference = 0x00000001,
213 eFormatterChoiceCriterionNavigatedTypedefs = 0x00000002,
214 eFormatterChoiceCriterionRegularExpressionSummary = 0x00000004,
215 eFormatterChoiceCriterionRegularExpressionFilter = 0x00000004,
216 eFormatterChoiceCriterionDynamicObjCDiscovery = 0x00000008,
217 eFormatterChoiceCriterionStrippedBitField = 0x00000010,
218 eFormatterChoiceCriterionWentToStaticValue = 0x00000020
219 } FormatterChoiceCriterion;
221 //----------------------------------------------------------------------
222 // Synchronicity behavior of scripted commands
223 //----------------------------------------------------------------------
224 typedef enum ScriptedCommandSynchronicity
226 eScriptedCommandSynchronicitySynchronous,
227 eScriptedCommandSynchronicityAsynchronous,
228 eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is
229 } ScriptedCommandSynchronicity;
232 //----------------------------------------------------------------------
233 // Loading modules from memory
234 //----------------------------------------------------------------------
235 typedef enum MemoryModuleLoadLevel {
236 eMemoryModuleLoadLevelMinimal, // Load sections only
237 eMemoryModuleLoadLevelPartial, // Load function bounds but no symbols
238 eMemoryModuleLoadLevelComplete, // Load sections and all symbols
239 } MemoryModuleLoadLevel;
242 } // namespace lldb_private
245 #endif // LLDB_lldb_private_enumerations_h_