2011-07-19 04:13:38 +08:00
//===-- SWIG Interface for SBFrame ------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
n a m e s p a c e l l d b {
% f e a t u r e ( "docstring" ,
" R e p r e s e n t s o n e of t h e s t a c k f r a m e s a s s o c i a t e d with a t h r e a d .
2011-07-19 09:07:06 +08:00
S B T h r e a d contains S B F r a m e ( s ) . For e x a m p l e ( from t e s t / l l d b u t i l . p y ) ,
def p r i n t _ s t a c k t r a c e ( t h r e a d , s t r i n g _ b u f f e r = False ) :
'''Prints a simple stack trace of this thread.'''
. . .
for i in r a n g e ( d e p t h ) :
frame = t h r e a d . G e t F r a m e A t I n d e x ( i )
function = frame . G e t F u n c t i o n ( )
l o a d _ a d d r = a d d r s [ i ] . G e t L o a d A d d r e s s ( target )
if not function :
f i l e _ a d d r = a d d r s [ i ] . G e t F i l e A d d r e s s ( )
s t a r t _ a d d r = frame . G e t S y m b o l ( ) . G e t S t a r t A d d r e s s ( ) . G e t F i l e A d d r e s s ( )
s y m b o l _ o f f s e t = f i l e _ a d d r - s t a r t _ a d d r
p r i n t > > output , ' frame #{num}: {addr:#016x} {mod}`{symbol} + {offset}' . format (
n u m = i , a d d r = l o a d _ a d d r , mod = m o d s [ i ] , s y m b o l = s y m b o l s [ i ] , o f f s e t = s y m b o l _ o f f s e t )
else :
p r i n t > > output , ' frame #{num}: {addr:#016x} {mod}`{func} at {file}:{line} {args}' . format (
n u m = i , a d d r = l o a d _ a d d r , mod = m o d s [ i ] ,
f u n c = '%s [inlined]' % f u n c s [ i ] if frame . I s I n l i n e d ( ) else f u n c s [ i ] ,
file = f i l e s [ i ] , line = l i n e s [ i ] ,
a r g s = g e t _ a r g s _ a s _ s t r i n g ( frame , s h o w F u n c N a m e = False ) if not frame . I s I n l i n e d ( ) else '()' )
. . .
2011-07-28 02:13:32 +08:00
And ,
for frame in t h r e a d :
p r i n t frame
S e e a l s o S B T h r e a d . "
2011-07-19 04:13:38 +08:00
) S B F r a m e ;
class S B F r a m e
{
public :
S B F r a m e ( ) ;
S B F r a m e ( c o n s t l l d b : : S B F r a m e &rhs);
~ S B F r a m e ( ) ;
2012-03-06 03:53:24 +08:00
b o o l
I s E q u a l ( c o n s t l l d b : : S B F r a m e &rhs) const;
2011-07-19 04:13:38 +08:00
b o o l
I s V a l i d ( ) c o n s t ;
u i n t 32 _ t
G e t F r a m e I D ( ) c o n s t ;
2015-05-28 12:55:53 +08:00
% f e a t u r e ( "docstring" , "
Get t h e C a n o n i c a l Frame A d d r e s s for t h i s s t a c k frame .
T h i s is t h e D W A R F s t a n d a r d ' s d e f i n i t i o n of a C F A , a s t a c k a d d r e s s
t h a t r e m a i n s c o n s t a n t t h r o u g h o u t t h e l i f e t i m e of t h e function .
Returns a n l l d b : : a d d r _ t s t a c k a d d r e s s , or L L D B _ I N V A L I D _ A D D R E S S if
t h e C F A c a n n o t b e d e t e r m i n e d . " ) G e t C F A ;
2015-05-28 11:27:22 +08:00
l l d b : : a d d r _ t
G e t C F A ( ) c o n s t ;
2011-07-19 04:13:38 +08:00
l l d b : : a d d r _ t
G e t P C ( ) c o n s t ;
b o o l
S e t P C ( l l d b : : a d d r _ t n e w _ p c ) ;
l l d b : : a d d r _ t
G e t S P ( ) c o n s t ;
l l d b : : a d d r _ t
G e t F P ( ) c o n s t ;
l l d b : : S B A d d r e s s
G e t P C A d d r e s s ( ) c o n s t ;
l l d b : : S B S y m b o l C o n t e x t
G e t S y m b o l C o n t e x t ( u i n t 32 _ t r e s o l v e _ s c o p e ) c o n s t ;
l l d b : : S B M o d u l e
G e t M o d u l e ( ) c o n s t ;
l l d b : : S B C o m p i l e U n i t
G e t C o m p i l e U n i t ( ) c o n s t ;
l l d b : : S B F u n c t i o n
G e t F u n c t i o n ( ) c o n s t ;
l l d b : : S B S y m b o l
G e t S y m b o l ( ) c o n s t ;
% f e a t u r e ( "docstring" , "
/// Gets the deepest block that contains the frame PC.
///
/// See also GetFrameBlock().
" ) G e t B l o c k ;
l l d b : : S B B l o c k
G e t B l o c k ( ) c o n s t ;
% f e a t u r e ( "docstring" , "
/// Get the appropriate function name for this frame. Inlined functions in
/// LLDB are represented by Blocks that have inlined function information, so
/// just looking at the SBFunction or SBSymbol for a frame isn't enough.
2014-07-02 05:22:11 +08:00
/// This function will return the appropriate function, symbol or inlined
2011-07-19 04:13:38 +08:00
/// function name for the frame.
///
/// This function returns:
/// - the name of the inlined function (if there is one)
/// - the name of the concrete function (if there is one)
/// - the name of the symbol (if there is one)
/// - NULL
///
/// See also IsInlined().
" ) G e t F u n c t i o n N a m e ;
c o n s t char *
2015-06-25 02:35:36 +08:00
G e t F u n c t i o n N a m e ( ) ;
2011-07-19 04:13:38 +08:00
% f e a t u r e ( "docstring" , "
/// Return true if this frame represents an inlined function.
///
/// See also GetFunctionName().
" ) I s I n l i n e d ;
b o o l
2015-06-25 02:35:36 +08:00
I s I n l i n e d ( ) ;
2011-07-19 04:13:38 +08:00
% f e a t u r e ( "docstring" , "
/// The version that doesn't supply a 'use_dynamic' value will use the
/// target's default.
" ) E v a l u a t e E x p r e s s i o n ;
l l d b : : S B V a l u e
E v a l u a t e E x p r e s s i o n ( c o n s t char * e x p r ) ;
l l d b : : S B V a l u e
E v a l u a t e E x p r e s s i o n ( c o n s t char * e x p r , l l d b : : D y n a m i c V a l u e T y p e u s e _ d y n a m i c ) ;
2012-05-12 07:47:32 +08:00
l l d b : : S B V a l u e
E v a l u a t e E x p r e s s i o n ( c o n s t char * e x p r , l l d b : : D y n a m i c V a l u e T y p e u s e _ d y n a m i c , b o o l u n w i n d _ o n _ e r r o r ) ;
2012-10-17 05:41:58 +08:00
l l d b : : S B V a l u e
E v a l u a t e E x p r e s s i o n ( c o n s t char * e x p r , S B E x p r e s s i o n O p t i o n s &options);
2012-05-12 07:47:32 +08:00
2011-07-19 04:13:38 +08:00
% f e a t u r e ( "docstring" , "
/// Gets the lexical block that defines the stack frame. Another way to think
/// of this is it will return the block that contains all of the variables
/// for a stack frame. Inlined functions are represented as SBBlock objects
/// that have inlined function information: the name of the inlined function,
/// where it was called from. The block that is returned will be the first
/// block at or above the block for the PC (SBFrame::GetBlock()) that defines
/// the scope of the frame. When a function contains no inlined functions,
/// this will be the top most lexical block that defines the function.
/// When a function has inlined functions and the PC is currently
/// in one of those inlined functions, this method will return the inlined
/// block that defines this frame. If the PC isn't currently in an inlined
/// function, the lexical block that defines the function is returned.
" ) G e t F r a m e B l o c k ;
l l d b : : S B B l o c k
G e t F r a m e B l o c k ( ) c o n s t ;
l l d b : : S B L i n e E n t r y
G e t L i n e E n t r y ( ) c o n s t ;
l l d b : : S B T h r e a d
G e t T h r e a d ( ) c o n s t ;
c o n s t char *
D i s a s s e m b l e ( ) c o n s t ;
void
Clear ( ) ;
# i f n def S W I G
b o o l
o p e r a t o r = = ( c o n s t l l d b : : S B F r a m e &rhs) const;
b o o l
o p e r a t o r ! = ( c o n s t l l d b : : S B F r a m e &rhs) const;
# e n d i f
% f e a t u r e ( "docstring" , "
/// The version that doesn't supply a 'use_dynamic' value will use the
/// target's default.
" ) G e t V a r i a b l e s ;
l l d b : : S B V a l u e L i s t
G e t V a r i a b l e s ( b o o l a r g u m e n t s ,
b o o l l o c a l s ,
b o o l s t a t i c s ,
b o o l i n _ s c o p e _ o n l y ) ;
l l d b : : S B V a l u e L i s t
G e t V a r i a b l e s ( b o o l a r g u m e n t s ,
b o o l l o c a l s ,
b o o l s t a t i c s ,
b o o l i n _ s c o p e _ o n l y ,
l l d b : : D y n a m i c V a l u e T y p e u s e _ d y n a m i c ) ;
2015-02-11 10:35:39 +08:00
l l d b : : S B V a l u e L i s t
2015-02-18 01:55:50 +08:00
G e t V a r i a b l e s ( c o n s t l l d b : : S B V a r i a b l e s O p t i o n s & options);
2015-02-11 10:35:39 +08:00
2011-07-19 04:13:38 +08:00
l l d b : : S B V a l u e L i s t
G e t R e g i s t e r s ( ) ;
% f e a t u r e ( "docstring" , "
/// The version that doesn't supply a 'use_dynamic' value will use the
/// target's default.
" ) F i n d V a r i a b l e ;
l l d b : : S B V a l u e
F i n d V a r i a b l e ( c o n s t char * v a r _ n a m e ) ;
l l d b : : S B V a l u e
F i n d V a r i a b l e ( c o n s t char * v a r _ n a m e , l l d b : : D y n a m i c V a l u e T y p e u s e _ d y n a m i c ) ;
2013-07-26 10:08:48 +08:00
l l d b : : S B V a l u e
F i n d R e g i s t e r ( c o n s t char * name ) ;
2012-02-03 15:02:37 +08:00
% f e a t u r e ( "docstring" , "
/// Get a lldb.SBValue for a variable path.
///
/// Variable paths can include access to pointer or instance members:
/// rect_ptr->origin.y
/// pt.x
/// Pointer dereferences:
/// *this->foo_ptr
/// **argv
/// Address of:
/// &pt
/// &my_array[3].x
/// Array accesses and treating pointers as arrays:
/// int_array[1]
/// pt_ptr[22].x
///
/// Unlike EvaluateExpression() which returns lldb.SBValue objects
/// with constant copies of the values at the time of evaluation,
/// the result of this function is a value that will continue to
/// track the current value of the value as execution progresses
/// in the current frame.
" ) G e t V a l u e F o r V a r i a b l e P a t h ;
l l d b : : S B V a l u e
G e t V a l u e F o r V a r i a b l e P a t h ( c o n s t char * v a r _ p a t h ) ;
l l d b : : S B V a l u e
G e t V a l u e F o r V a r i a b l e P a t h ( c o n s t char * v a r _ p a t h , l l d b : : D y n a m i c V a l u e T y p e u s e _ d y n a m i c ) ;
2011-07-19 04:13:38 +08:00
% f e a t u r e ( "docstring" , "
/// Find variables, register sets, registers, or persistent variables using
/// the frame as the scope.
///
/// The version that doesn't supply a 'use_dynamic' value will use the
/// target's default.
" ) F i n d V a l u e ;
l l d b : : S B V a l u e
F i n d V a l u e ( c o n s t char * name , V a l u e T y p e v a l u e _ t y p e ) ;
l l d b : : S B V a l u e
F i n d V a l u e ( c o n s t char * name , V a l u e T y p e v a l u e _ t y p e , l l d b : : D y n a m i c V a l u e T y p e u s e _ d y n a m i c ) ;
b o o l
G e t D e s c r i p t i o n ( l l d b : : S B S t r e a m &description);
2012-01-29 14:07:39 +08:00
% p y t h o n c o d e % {
2012-02-03 15:02:37 +08:00
def g e t _ a l l _ v a r i a b l e s ( self ) :
return self . G e t V a r i a b l e s ( True , True , True , True )
2015-06-17 05:07:52 +08:00
def g e t _ p a r e n t _ f r a m e ( self ) :
p a r e n t _ i d x = self . i d x + 1
if p a r e n t _ i d x > = 0 and p a r e n t _ i d x < l e n ( self . t h r e a d . frame ) :
return self . t h r e a d . frame [ p a r e n t _ i d x ]
else :
return S B F r a m e ( )
2012-02-03 15:02:37 +08:00
def g e t _ a r g u m e n t s ( self ) :
return self . G e t V a r i a b l e s ( True , False , False , False )
def g e t _ l o c a l s ( self ) :
return self . G e t V a r i a b l e s ( False , True , False , False )
def g e t _ s t a t i c s ( self ) :
return self . G e t V a r i a b l e s ( False , False , True , False )
def var ( self , v a r _ e x p r _ p a t h ) :
''' C a l l s through to l l d b . S B F r a m e . G e t V a l u e F o r V a r i a b l e P a t h ( ) and returns
a value t h a t r e p r e s e n t s t h e variable e x p r e s s i o n p a t h '''
return self . G e t V a l u e F o r V a r i a b l e P a t h ( v a r _ e x p r _ p a t h )
2014-12-16 05:30:36 +08:00
def g e t _ r e g i s t e r s _ a c c e s s ( self ) :
class r e g i s t e r s _ a c c e s s ( o b j e c t ) :
'''A helper object that exposes a flattened view of registers, masking away the notion of register sets for easy scripting.'''
def _ _ i n i t _ _ ( self , r e g s ) :
self . r e g s = r e g s
def _ _ g e t i t e m _ _ ( self , key ) :
if type ( key ) is s t r :
for i in r a n g e ( 0 , l e n ( self . r e g s ) ) :
r s = self . r e g s [ i ]
for j in r a n g e ( 0 , r s . n u m _ c h i l d r e n ) :
r e g = r s . G e t C h i l d A t I n d e x ( j )
if r e g . name = = key : return r e g
else :
return l l d b . S B V a l u e ( )
return r e g i s t e r s _ a c c e s s ( self . r e g i s t e r s )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "pc" ] = G e t P C
_ _ s w i g _ s e t m e t h o d s _ _ [ "pc" ] = S e t P C
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : p c = property ( G e t P C , S e t P C )
2012-01-29 14:07:39 +08:00
2012-02-01 16:09:32 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "addr" ] = G e t P C A d d r e s s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : a d d r = property ( G e t P C A d d r e s s , None , d o c = '''A read only property that returns the program counter (PC) as a section offset address (lldb.SBAddress).''' )
2012-02-01 16:09:32 +08:00
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "fp" ] = G e t F P
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : f p = property ( G e t F P , None , d o c = '''A read only property that returns the frame pointer (FP) as an unsigned integer.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "sp" ] = G e t S P
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : s p = property ( G e t S P , None , d o c = '''A read only property that returns the stack pointer (SP) as an unsigned integer.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "module" ] = G e t M o d u l e
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : m o d u l e = property ( G e t M o d u l e , None , d o c = '''A read only property that returns an lldb object that represents the module (lldb.SBModule) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "compile_unit" ] = G e t C o m p i l e U n i t
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : c o m p i l e _ u n i t = property ( G e t C o m p i l e U n i t , None , d o c = '''A read only property that returns an lldb object that represents the compile unit (lldb.SBCompileUnit) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "function" ] = G e t F u n c t i o n
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : function = property ( G e t F u n c t i o n , None , d o c = '''A read only property that returns an lldb object that represents the function (lldb.SBFunction) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "symbol" ] = G e t S y m b o l
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : s y m b o l = property ( G e t S y m b o l , None , d o c = '''A read only property that returns an lldb object that represents the symbol (lldb.SBSymbol) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "block" ] = G e t B l o c k
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : b l o c k = property ( G e t B l o c k , None , d o c = '''A read only property that returns an lldb object that represents the block (lldb.SBBlock) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "is_inlined" ] = I s I n l i n e d
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : i s _ i n l i n e d = property ( I s I n l i n e d , None , d o c = '''A read only property that returns an boolean that indicates if the block frame is an inlined function.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "name" ] = G e t F u n c t i o n N a m e
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : name = property ( G e t F u n c t i o n N a m e , None , d o c = '''A read only property that retuns the name for the function that this frame represents. Inlined stack frame might have a concrete function that differs from the name of the inlined function (a named lldb.SBBlock).''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "line_entry" ] = G e t L i n e E n t r y
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : l i n e _ e n t r y = property ( G e t L i n e E n t r y , None , d o c = '''A read only property that returns an lldb object that represents the line table entry (lldb.SBLineEntry) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "thread" ] = G e t T h r e a d
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : t h r e a d = property ( G e t T h r e a d , None , d o c = '''A read only property that returns an lldb object that represents the thread (lldb.SBThread) for this stack frame.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "disassembly" ] = D i s a s s e m b l e
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : d i s a s s e m b l y = property ( D i s a s s e m b l e , None , d o c = '''A read only property that returns the disassembly for this stack frame as a python string.''' )
2012-01-29 14:07:39 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "idx" ] = G e t F r a m e I D
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : i d x = property ( G e t F r a m e I D , None , d o c = '''A read only property that returns the zero based stack frame index.''' )
2011-07-19 04:13:38 +08:00
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "variables" ] = g e t _ a l l _ v a r i a b l e s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : v a r i a b l e s = property ( g e t _ a l l _ v a r i a b l e s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the variables in this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "vars" ] = g e t _ a l l _ v a r i a b l e s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : v a r s = property ( g e t _ a l l _ v a r i a b l e s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the variables in this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "locals" ] = g e t _ l o c a l s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : l o c a l s = property ( g e t _ l o c a l s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the local variables in this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "args" ] = g e t _ a r g u m e n t s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : a r g s = property ( g e t _ a r g u m e n t s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the argument variables in this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "arguments" ] = g e t _ a r g u m e n t s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : a r g u m e n t s = property ( g e t _ a r g u m e n t s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the argument variables in this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "statics" ] = g e t _ s t a t i c s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : s t a t i c s = property ( g e t _ s t a t i c s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the static variables in this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "registers" ] = G e t R e g i s t e r s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : r e g i s t e r s = property ( G e t R e g i s t e r s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the CPU registers for this stack frame.''' )
2012-02-03 15:02:37 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "regs" ] = G e t R e g i s t e r s
2012-06-30 06:00:42 +08:00
if _ n e w c l a s s : r e g s = property ( G e t R e g i s t e r s , None , d o c = '''A read only property that returns a list() that contains a collection of lldb.SBValue objects that represent the CPU registers for this stack frame.''' )
2012-02-03 15:02:37 +08:00
2014-12-16 05:30:36 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "register" ] = g e t _ r e g i s t e r s _ a c c e s s
if _ n e w c l a s s : r e g i s t e r = property ( g e t _ r e g i s t e r s _ a c c e s s , None , d o c = '''A read only property that returns an helper object providing a flattened indexable view of the CPU registers for this stack frame.''' )
_ _ s w i g _ g e t m e t h o d s _ _ [ "reg" ] = g e t _ r e g i s t e r s _ a c c e s s
if _ n e w c l a s s : r e g = property ( g e t _ r e g i s t e r s _ a c c e s s , None , d o c = '''A read only property that returns an helper object providing a flattened indexable view of the CPU registers for this stack frame''' )
2015-06-17 05:07:52 +08:00
_ _ s w i g _ g e t m e t h o d s _ _ [ "parent" ] = g e t _ p a r e n t _ f r a m e
if _ n e w c l a s s : parent = property ( g e t _ p a r e n t _ f r a m e , None , d o c = '''A read only property that returns the parent (caller) frame of the current frame.''' )
2012-01-29 14:07:39 +08:00
% }
2011-07-19 04:13:38 +08:00
} ;
} // namespace lldb