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 kNumArchTypes 55} ArchitectureType; 56 57//---------------------------------------------------------------------- 58/// Settable state variable types. 59/// 60//---------------------------------------------------------------------- 61 62//typedef enum SettableVariableType 63//{ 64// eSetVarTypeInt, 65// eSetVarTypeBoolean, 66// eSetVarTypeString, 67// eSetVarTypeArray, 68// eSetVarTypeDictionary, 69// eSetVarTypeEnum, 70// eSetVarTypeNone 71//} SettableVariableType; 72 73typedef enum VarSetOperationType 74{ 75 eVarSetOperationReplace, 76 eVarSetOperationInsertBefore, 77 eVarSetOperationInsertAfter, 78 eVarSetOperationRemove, 79 eVarSetOperationAppend, 80 eVarSetOperationClear, 81 eVarSetOperationAssign, 82 eVarSetOperationInvalid 83} VarSetOperationType; 84 85typedef enum ArgumentRepetitionType 86{ 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; 99 100typedef enum SortOrder 101{ 102 eSortOrderNone, 103 eSortOrderByAddress, 104 eSortOrderByName 105} SortOrder; 106 107 108//---------------------------------------------------------------------- 109// Used in conjunction with Host::GetLLDBPath () to find files that 110// are related to 111//---------------------------------------------------------------------- 112typedef enum PathType 113{ 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 120} PathType; 121 122 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//---------------------------------------------------------------------- 128typedef enum ExecutionResults 129{ 130 eExecutionSetupError, 131 eExecutionCompleted, 132 eExecutionDiscarded, 133 eExecutionInterrupted, 134 eExecutionHitBreakpoint, 135 eExecutionTimedOut 136} ExecutionResults; 137 138typedef enum ObjCRuntimeVersions { 139 eObjC_VersionUnknown = 0, 140 eAppleObjC_V1 = 1, 141 eAppleObjC_V2 = 2 142} ObjCRuntimeVersions; 143 144 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//---------------------------------------------------------------------- 150typedef enum LazyBool { 151 eLazyBoolCalculate = -1, 152 eLazyBoolNo = 0, 153 eLazyBoolYes = 1 154} LazyBool; 155 156//------------------------------------------------------------------ 157/// Name matching 158//------------------------------------------------------------------ 159typedef enum NameMatchType 160{ 161 eNameMatchIgnore, 162 eNameMatchEquals, 163 eNameMatchContains, 164 eNameMatchStartsWith, 165 eNameMatchEndsWith, 166 eNameMatchRegularExpression 167 168} NameMatchType; 169 170 171//------------------------------------------------------------------ 172/// Instruction types 173//------------------------------------------------------------------ 174typedef enum InstructionType 175{ 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 180 181} InstructionType; 182 183 184//------------------------------------------------------------------ 185/// Format category entry types 186//------------------------------------------------------------------ 187typedef enum FormatCategoryItem 188{ 189 eFormatCategoryItemSummary = 0x0001, 190 eFormatCategoryItemRegexSummary = 0x0002, 191 eFormatCategoryItemFilter = 0x0004, 192 eFormatCategoryItemRegexFilter = 0x0008, 193 eFormatCategoryItemSynth = 0x0010, 194 eFormatCategoryItemRegexSynth = 0x0020 195} FormatCategoryItem; 196 197//------------------------------------------------------------------ 198/// Expression execution policies 199//------------------------------------------------------------------ 200typedef enum { 201 eExecutionPolicyOnlyWhenNeeded, 202 eExecutionPolicyNever, 203 eExecutionPolicyAlways 204} ExecutionPolicy; 205 206//---------------------------------------------------------------------- 207// Ways that the FormatManager picks a particular format for a type 208//---------------------------------------------------------------------- 209typedef enum FormatterChoiceCriterion 210{ 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; 220 221//---------------------------------------------------------------------- 222// Synchronicity behavior of scripted commands 223//---------------------------------------------------------------------- 224typedef enum ScriptedCommandSynchronicity 225{ 226 eScriptedCommandSynchronicitySynchronous, 227 eScriptedCommandSynchronicityAsynchronous, 228 eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is 229} ScriptedCommandSynchronicity; 230 231} // namespace lldb_private 232 233 234#endif // LLDB_lldb_private_enumerations_h_ 235