New sections
[dyninst.git] / symtabAPI / doc / API / Symtab / FunctionBase.tex
1 \subsection{Class FunctionBase}\label{FunctionBase}
2 The \code{FunctionBase} class provides a common interface that can represent either a regular function or an inlined function.
3
4 \begin{tabular}{p{1.25in}p{1.125in}p{3.125in}}
5 \toprule
6 Method name & Return type & Method description \\
7 \midrule
8 getModule & const Module * & Module this function belongs to. \\
9 getSize & unsigned & Size encoded in the symbol table; may not be actual function size. \\
10 getRegion & Region * & Region containing this function. \\
11 getReturnType & Type * & Type representing the return type of the function. \\
12 getName & std::string & Returns primary name of the function (first mangled name or DWARF name) \\
13 \bottomrule
14 \end{tabular}
15         
16 \begin{apient}
17 bool setModule (Module *module)
18 \end{apient}
19 \apidesc{
20 This function changes the module to which the function belongs to \code{module}. Returns \code{true} if it succeeds.
21 }
22
23 \begin{apient}
24 bool setSize (unsigned size)
25 \end{apient}
26 \apidesc{
27 This function changes the size of the function to \code{size}. Returns \code{true} if it succeeds.
28 }
29
30 \begin{apient}
31 bool setOffset (Offset offset)
32 \end{apient}
33 \apidesc{
34 The method changes the offset of the function to \code{offset}. Returns \code{true} if it succeeds.
35 }
36
37 \begin{apient}
38 bool addMangledName(string name,
39                     bool isPrimary)
40 \end{apient}
41 \apidesc{
42 This method adds a mangled name \code{name} to the function. If \code{isPrimary} is \code{true} then it becomes the default name for the function.
43 This method returns \code{true} on success and \code{false} on failure.
44 }
45
46 \begin{apient}
47 bool addPrettyName(string name,
48                    bool isPrimary)
49 \end{apient}
50 \apidesc{
51 This method adds a pretty name \code{name} to the function. If \code{isPrimary} is \code{true} then it becomes the default name for the function. 
52 This method returns \code{true} on success and \code{false} on failure.
53 }
54
55 \begin{apient}
56 bool addTypedName(string name,
57                   bool isPrimary)
58 \end{apient}
59 \apidesc{
60 This method adds a typed name \code{name} to the function. If \code{isPrimary} is \code{true} then it becomes the default name for the function. 
61 This method returns \code{true} on success and \code{false} on failure.
62 }
63
64 \begin{apient}
65 bool getLocalVariables(vector<localVar *> &vars)
66 \end{apient}
67 \apidesc{
68 This method returns the local variables in the function. \code{vars} contains the list of variables found.
69 If there is no debugging information present then it returns \code{false} with the
70 error code set to \code{NO\_DEBUG\_INFO} accordingly. Otherwise it returns \code{true}.
71 }
72
73 \begin{apient}
74 std::vector<VariableLocation> &getFramePtr()
75 \end{apient}
76 \apidesc{
77 This method returns a list of frame pointer offsets (abstract top of the stack) for the function. See the \code{VariableLocation} class description for more information. 
78 }
79
80 \begin{apient}
81 bool getParams(vector<localVar *> &params)
82 \end{apient}
83 \apidesc{
84 This method returns the parameters to the function. \code{params} contains the list of parameters.
85 If there is no debugging information present then it returns \code{false} with the
86 error code set to \code{NO\_DEBUG\_INFO} accordingly. Returns \code{true} on success.
87 }
88
89 \begin{apient}
90 bool findLocalVariable(vector<localVar *> &vars,
91                        string name)
92 \end{apient}
93 \apidesc{
94 This method returns a list of local variables within a function that have name \code{name}. \code{vars} contains the list of variables found.
95 Returns \code{true} on success and \code{false} on failure.
96 }
97
98
99
100 \begin{apient}
101 bool setReturnType(Type *type)
102 \end{apient}
103 \apidesc{
104 Sets the return type of a function to \code{type}.
105 }
106
107 \begin{apient}
108 FunctionBase* getInlinedParent()
109 \end{apient}
110 \apidesc{
111 Gets the function that this function is inlined into, if any. Returns \code{NULL} if there is no parent.
112 }
113
114 \begin{apient}
115 const InlineCollection& getInlines()
116 \end{apient}
117 \apidesc{
118 Gets the set of functions inlined into this one (possibly empty).
119 }