lldb-private-enumerations.h revision 254721
1254721Semaste//===-- lldb-private-enumerations.h -----------------------------*- C++ -*-===//
2254721Semaste//
3254721Semaste//                     The LLVM Compiler Infrastructure
4254721Semaste//
5254721Semaste// This file is distributed under the University of Illinois Open Source
6254721Semaste// License. See LICENSE.TXT for details.
7254721Semaste//
8254721Semaste//===----------------------------------------------------------------------===//
9254721Semaste
10254721Semaste#ifndef LLDB_lldb_private_enumerations_h_
11254721Semaste#define LLDB_lldb_private_enumerations_h_
12254721Semaste
13254721Semastenamespace lldb_private {
14254721Semaste
15254721Semaste//----------------------------------------------------------------------
16254721Semaste// Thread Step Types
17254721Semaste//----------------------------------------------------------------------
18254721Semastetypedef enum StepType
19254721Semaste{
20254721Semaste    eStepTypeNone,
21254721Semaste    eStepTypeTrace,     ///< Single step one instruction.
22254721Semaste    eStepTypeTraceOver, ///< Single step one instruction, stepping over.
23254721Semaste    eStepTypeInto,      ///< Single step into a specified context.
24254721Semaste    eStepTypeOver,      ///< Single step over a specified context.
25254721Semaste    eStepTypeOut        ///< Single step out a specified context.
26254721Semaste} StepType;
27254721Semaste
28254721Semaste//----------------------------------------------------------------------
29254721Semaste// Address Types
30254721Semaste//----------------------------------------------------------------------
31254721Semastetypedef enum AddressType
32254721Semaste{
33254721Semaste    eAddressTypeInvalid = 0,
34254721Semaste    eAddressTypeFile, ///< Address is an address as found in an object or symbol file
35254721Semaste    eAddressTypeLoad, ///< Address is an address as in the current target inferior process
36254721Semaste    eAddressTypeHost  ///< Address is an address in the process that is running this code
37254721Semaste} AddressType;
38254721Semaste
39254721Semaste//----------------------------------------------------------------------
40254721Semaste// Votes - Need a tri-state, yes, no, no opinion...
41254721Semaste//----------------------------------------------------------------------
42254721Semastetypedef enum Vote
43254721Semaste{
44254721Semaste    eVoteNo         = -1,
45254721Semaste    eVoteNoOpinion  =  0,
46254721Semaste    eVoteYes        =  1
47254721Semaste} Vote;
48254721Semaste
49254721Semastetypedef enum ArchitectureType
50254721Semaste{
51254721Semaste    eArchTypeInvalid,
52254721Semaste    eArchTypeMachO,
53254721Semaste    eArchTypeELF,
54254721Semaste    kNumArchTypes
55254721Semaste} ArchitectureType;
56254721Semaste
57254721Semaste//----------------------------------------------------------------------
58254721Semaste/// Settable state variable types.
59254721Semaste///
60254721Semaste//----------------------------------------------------------------------
61254721Semaste
62254721Semaste//typedef enum SettableVariableType
63254721Semaste//{
64254721Semaste//    eSetVarTypeInt,
65254721Semaste//    eSetVarTypeBoolean,
66254721Semaste//    eSetVarTypeString,
67254721Semaste//    eSetVarTypeArray,
68254721Semaste//    eSetVarTypeDictionary,
69254721Semaste//    eSetVarTypeEnum,
70254721Semaste//    eSetVarTypeNone
71254721Semaste//} SettableVariableType;
72254721Semaste
73254721Semastetypedef enum VarSetOperationType
74254721Semaste{
75254721Semaste    eVarSetOperationReplace,
76254721Semaste    eVarSetOperationInsertBefore,
77254721Semaste    eVarSetOperationInsertAfter,
78254721Semaste    eVarSetOperationRemove,
79254721Semaste    eVarSetOperationAppend,
80254721Semaste    eVarSetOperationClear,
81254721Semaste    eVarSetOperationAssign,
82254721Semaste    eVarSetOperationInvalid
83254721Semaste} VarSetOperationType;
84254721Semaste
85254721Semastetypedef enum ArgumentRepetitionType
86254721Semaste{
87254721Semaste    eArgRepeatPlain,            // Exactly one occurrence
88254721Semaste    eArgRepeatOptional,         // At most one occurrence, but it's optional
89254721Semaste    eArgRepeatPlus,             // One or more occurrences
90254721Semaste    eArgRepeatStar,             // Zero or more occurrences
91254721Semaste    eArgRepeatRange,            // Repetition of same argument, from 1 to n
92254721Semaste    eArgRepeatPairPlain,        // A pair of arguments that must always go together ([arg-type arg-value]), occurs exactly once
93254721Semaste    eArgRepeatPairOptional,     // A pair that occurs at most once (optional)
94254721Semaste    eArgRepeatPairPlus,         // One or more occurrences of a pair
95254721Semaste    eArgRepeatPairStar,         // Zero or more occurrences of a pair
96254721Semaste    eArgRepeatPairRange,        // A pair that repeats from 1 to n
97254721Semaste    eArgRepeatPairRangeOptional // A pair that repeats from 1 to n, but is optional
98254721Semaste} ArgumentRepetitionType;
99254721Semaste
100254721Semastetypedef enum SortOrder
101254721Semaste{
102254721Semaste    eSortOrderNone,
103254721Semaste    eSortOrderByAddress,
104254721Semaste    eSortOrderByName
105254721Semaste} SortOrder;
106254721Semaste
107254721Semaste
108254721Semaste//----------------------------------------------------------------------
109254721Semaste// Used in conjunction with Host::GetLLDBPath () to find files that
110254721Semaste// are related to
111254721Semaste//----------------------------------------------------------------------
112254721Semastetypedef enum PathType
113254721Semaste{
114254721Semaste    ePathTypeLLDBShlibDir,          // The directory where the lldb.so (unix) or LLDB mach-o file in LLDB.framework (MacOSX) exists
115254721Semaste    ePathTypeSupportExecutableDir,  // Find LLDB support executable directory (debugserver, etc)
116254721Semaste    ePathTypeHeaderDir,             // Find LLDB header file directory
117254721Semaste    ePathTypePythonDir,             // Find Python modules (PYTHONPATH) directory
118254721Semaste    ePathTypeLLDBSystemPlugins,     // System plug-ins directory
119254721Semaste    ePathTypeLLDBUserPlugins        // User plug-ins directory
120254721Semaste} PathType;
121254721Semaste
122254721Semaste
123254721Semaste//----------------------------------------------------------------------
124254721Semaste// We can execute ThreadPlans on one thread with various fall-back modes
125254721Semaste// (try other threads after timeout, etc.) This enum gives the result of
126254721Semaste// thread plan executions.
127254721Semaste//----------------------------------------------------------------------
128254721Semastetypedef enum ExecutionResults
129254721Semaste{
130254721Semaste    eExecutionSetupError,
131254721Semaste    eExecutionCompleted,
132254721Semaste    eExecutionDiscarded,
133254721Semaste    eExecutionInterrupted,
134254721Semaste    eExecutionHitBreakpoint,
135254721Semaste    eExecutionTimedOut
136254721Semaste} ExecutionResults;
137254721Semaste
138254721Semastetypedef enum ObjCRuntimeVersions {
139254721Semaste    eObjC_VersionUnknown = 0,
140254721Semaste    eAppleObjC_V1 = 1,
141254721Semaste    eAppleObjC_V2 = 2
142254721Semaste} ObjCRuntimeVersions;
143254721Semaste
144254721Semaste
145254721Semaste//----------------------------------------------------------------------
146254721Semaste// LazyBool is for boolean values that need to be calculated lazily.
147254721Semaste// Values start off set to eLazyBoolCalculate, and then they can be
148254721Semaste// calculated once and set to eLazyBoolNo or eLazyBoolYes.
149254721Semaste//----------------------------------------------------------------------
150254721Semastetypedef enum LazyBool {
151254721Semaste    eLazyBoolCalculate  = -1,
152254721Semaste    eLazyBoolNo         = 0,
153254721Semaste    eLazyBoolYes        = 1
154254721Semaste} LazyBool;
155254721Semaste
156254721Semaste//------------------------------------------------------------------
157254721Semaste/// Name matching
158254721Semaste//------------------------------------------------------------------
159254721Semastetypedef enum NameMatchType
160254721Semaste{
161254721Semaste    eNameMatchIgnore,
162254721Semaste    eNameMatchEquals,
163254721Semaste    eNameMatchContains,
164254721Semaste    eNameMatchStartsWith,
165254721Semaste    eNameMatchEndsWith,
166254721Semaste    eNameMatchRegularExpression
167254721Semaste
168254721Semaste} NameMatchType;
169254721Semaste
170254721Semaste
171254721Semaste//------------------------------------------------------------------
172254721Semaste/// Instruction types
173254721Semaste//------------------------------------------------------------------
174254721Semastetypedef enum InstructionType
175254721Semaste{
176254721Semaste    eInstructionTypeAny,                // Support for any instructions at all (at least one)
177254721Semaste    eInstructionTypePrologueEpilogue,   // All prologue and epilogue instructons that push and pop register values and modify sp/fp
178254721Semaste    eInstructionTypePCModifying,        // Any instruction that modifies the program counter/instruction pointer
179254721Semaste    eInstructionTypeAll                 // All instructions of any kind
180254721Semaste
181254721Semaste}  InstructionType;
182254721Semaste
183254721Semaste
184254721Semaste//------------------------------------------------------------------
185254721Semaste/// Format category entry types
186254721Semaste//------------------------------------------------------------------
187254721Semastetypedef enum FormatCategoryItem
188254721Semaste{
189254721Semaste    eFormatCategoryItemSummary =         0x0001,
190254721Semaste    eFormatCategoryItemRegexSummary =    0x0002,
191254721Semaste    eFormatCategoryItemFilter =          0x0004,
192254721Semaste    eFormatCategoryItemRegexFilter =     0x0008,
193254721Semaste    eFormatCategoryItemSynth =           0x0010,
194254721Semaste    eFormatCategoryItemRegexSynth =      0x0020
195254721Semaste} FormatCategoryItem;
196254721Semaste
197254721Semaste//------------------------------------------------------------------
198254721Semaste/// Expression execution policies
199254721Semaste//------------------------------------------------------------------
200254721Semastetypedef enum {
201254721Semaste    eExecutionPolicyOnlyWhenNeeded,
202254721Semaste    eExecutionPolicyNever,
203254721Semaste    eExecutionPolicyAlways
204254721Semaste} ExecutionPolicy;
205254721Semaste
206254721Semaste//----------------------------------------------------------------------
207254721Semaste// Ways that the FormatManager picks a particular format for a type
208254721Semaste//----------------------------------------------------------------------
209254721Semastetypedef enum FormatterChoiceCriterion
210254721Semaste{
211254721Semaste    eFormatterChoiceCriterionDirectChoice =                  0x00000000,
212254721Semaste    eFormatterChoiceCriterionStrippedPointerReference =      0x00000001,
213254721Semaste    eFormatterChoiceCriterionNavigatedTypedefs =             0x00000002,
214254721Semaste    eFormatterChoiceCriterionRegularExpressionSummary =      0x00000004,
215254721Semaste    eFormatterChoiceCriterionRegularExpressionFilter =       0x00000004,
216254721Semaste    eFormatterChoiceCriterionDynamicObjCDiscovery =          0x00000008,
217254721Semaste    eFormatterChoiceCriterionStrippedBitField =              0x00000010,
218254721Semaste    eFormatterChoiceCriterionWentToStaticValue =             0x00000020
219254721Semaste} FormatterChoiceCriterion;
220254721Semaste
221254721Semaste//----------------------------------------------------------------------
222254721Semaste// Synchronicity behavior of scripted commands
223254721Semaste//----------------------------------------------------------------------
224254721Semastetypedef enum ScriptedCommandSynchronicity
225254721Semaste{
226254721Semaste    eScriptedCommandSynchronicitySynchronous,
227254721Semaste    eScriptedCommandSynchronicityAsynchronous,
228254721Semaste    eScriptedCommandSynchronicityCurrentValue // use whatever the current synchronicity is
229254721Semaste} ScriptedCommandSynchronicity;
230254721Semaste
231254721Semaste
232254721Semaste//----------------------------------------------------------------------
233254721Semaste// Loading modules from memory
234254721Semaste//----------------------------------------------------------------------
235254721Semastetypedef enum MemoryModuleLoadLevel {
236254721Semaste    eMemoryModuleLoadLevelMinimal,  // Load sections only
237254721Semaste    eMemoryModuleLoadLevelPartial,  // Load function bounds but no symbols
238254721Semaste    eMemoryModuleLoadLevelComplete, // Load sections and all symbols
239254721Semaste} MemoryModuleLoadLevel;
240254721Semaste
241254721Semaste
242254721Semaste} // namespace lldb_private
243254721Semaste
244254721Semaste
245254721Semaste#endif  // LLDB_lldb_private_enumerations_h_
246