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 13 namespace lldb_private { 14 15 //---------------------------------------------------------------------- 16 // Thread Step Types 17 //---------------------------------------------------------------------- 18 typedef 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 //---------------------------------------------------------------------- 31 typedef 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 //---------------------------------------------------------------------- 42 typedef enum Vote 43 { 44 eVoteNo = -1, 45 eVoteNoOpinion = 0, 46 eVoteYes = 1 47 } Vote; 48 49 typedef 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 73 typedef enum VarSetOperationType 74 { 75 eVarSetOperationReplace, 76 eVarSetOperationInsertBefore, 77 eVarSetOperationInsertAfter, 78 eVarSetOperationRemove, 79 eVarSetOperationAppend, 80 eVarSetOperationClear, 81 eVarSetOperationAssign, 82 eVarSetOperationInvalid 83 } VarSetOperationType; 84 85 typedef 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 100 typedef 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 //---------------------------------------------------------------------- 112 typedef 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 //---------------------------------------------------------------------- 128 typedef enum ExecutionResults 129 { 130 eExecutionSetupError, 131 eExecutionCompleted, 132 eExecutionDiscarded, 133 eExecutionInterrupted, 134 eExecutionHitBreakpoint, 135 eExecutionTimedOut 136 } ExecutionResults; 137 138 typedef 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 //---------------------------------------------------------------------- 150 typedef enum LazyBool { 151 eLazyBoolCalculate = -1, 152 eLazyBoolNo = 0, 153 eLazyBoolYes = 1 154 } LazyBool; 155 156 //------------------------------------------------------------------ 157 /// Name matching 158 //------------------------------------------------------------------ 159 typedef 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 //------------------------------------------------------------------ 174 typedef 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 //------------------------------------------------------------------ 187 typedef 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 //------------------------------------------------------------------ 200 typedef enum { 201 eExecutionPolicyOnlyWhenNeeded, 202 eExecutionPolicyNever, 203 eExecutionPolicyAlways 204 } ExecutionPolicy; 205 206 //---------------------------------------------------------------------- 207 // Ways that the FormatManager picks a particular format for a type 208 //---------------------------------------------------------------------- 209 typedef 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 //---------------------------------------------------------------------- 224 typedef 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