Home | History | Annotate | Download | only in lldb
      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