| Trees | Indices | Help |
|
|---|
|
|
1 # Copyright 2006 Roman Yakovenko.
2 # Distributed under the Boost Software License, Version 1.0. (See
3 # accompanying file LICENSE_1_0.txt or copy at
4 # http://www.boost.org/LICENSE_1_0.txt)
5
6 """This module contains the class L{transformer_t}.
7 """
8
9 import sys, os.path, copy, re, types
10 from pygccxml import declarations, parser
11
12 return_ = -1
13 #return_ is a spacial const, which represent an index of return type
14
15 -class transformer_t(object):
16 """Base class for a function transformer."""
17
18 USE_1_BASED_INDEXING = False
19
21 """@param function: reference to function declaration"""
22 object.__init__( self )
23 self.__function = function
24
25 @property
29
31 """Returns list of header files that transformer generated code depends on."""
32 raise NotImplementedError( self.__class__.__name__ )
33
35 """returns reference to the desired argument
36
37 @param reference: name( str ) or index( int ) of the argument
38 """
39 if isinstance( reference, str ):
40 found = filter( lambda arg: arg.name == reference, self.function.arguments )
41 if len( found ) == 1:
42 return found[0]
43 raise RuntimeError( "Argument with %s was not found" % reference )
44 else:
45 assert isinstance( reference, int )
46 if transformer_t.USE_1_BASED_INDEXING:
47 reference += 1
48 return self.function.arguments[ reference ]
49
51 """returns type of the desired argument or return type of the function
52
53 @param reference: name( str ) or index( int ) of the argument
54 """
55 global return_
56 if isinstance( reference, int ) and reference == return_:
57 return self.function.return_type
58 else:
59 return self.get_argument( reference ).type
60
62 """Transformers should overridde the method, in order to define custom
63 transformation for non-virtual member function.
64
65 @param controller: instance of L{mem_fun_controller_t} class
66 """
67 raise NotImplementedError(self.__class__.__name__)
68
70 """Transformers should overridde the method, in order to define custom
71 transformation for free function.
72
73 @param controller: instance of L{free_fun_controller_t} class
74 """
75 raise NotImplementedError(self.__class__.__name__)
76
84
85 #TODO: FT for constructor
86 #~ def configure_constructor( self, controller ):
87 #~ """Transformers should overridde the method, in order to define custom
88 #~ transformation for constructor.
89
90 #~ @param controller: instance of L{constructor_controller_t} class
91 #~ """
92 #~ raise NotImplementedError(self.__class__.__name__)
93
| Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Mon Oct 20 08:51:41 2008 | http://epydoc.sourceforge.net |