]> git.sur5r.net Git - cc65/blob - src/cc65/function.h
afc298d7f0a102d01dfad66d0d2d474ea74bc8cb
[cc65] / src / cc65 / function.h
1 /*
2  * function.h
3  *
4  * Ullrich von Bassewitz, 07.06.1998
5  */
6
7
8
9 #ifndef FUNCTION_H
10 #define FUNCTION_H
11
12
13
14 /*****************************************************************************/
15 /*                                   data                                    */
16 /*****************************************************************************/
17
18
19
20 /* Structure that holds all data needed for function activation */
21 typedef struct Function Function;
22
23 /* Function activation data for current function (or NULL) */
24 extern Function* CurrentFunc;
25
26
27
28 /*****************************************************************************/
29 /*                                   Code                                    */
30 /*****************************************************************************/
31
32
33
34 const char* GetFuncName (const Function* F);
35 /* Return the name of the current function */
36
37 unsigned GetParamCount (const Function* F);
38 /* Return the parameter count for the current function */
39
40 unsigned GetParamSize (const Function* F);
41 /* Return the parameter size for the current function */
42
43 type* GetReturnType (Function* F);
44 /* Get the return type for the function */
45
46 int HasVoidReturn (const Function* F);
47 /* Return true if the function does not have a return value */
48
49 void RememberEntry (Function* F);
50 /* Remember the current output position for local space creation later */
51
52 unsigned GetRetLab (const Function* F);
53 /* Return the return jump label */
54
55 int ReserveLocalSpace (Function* F, unsigned Size);
56 /* Reserve (but don't allocate) the given local space and return the stack
57  * offset.
58  */
59
60 void AllocLocalSpace (Function* F);
61 /* Allocate any local space previously reserved. The function will do
62  * nothing if there is no reserved local space.
63  */
64
65 void NewFunc (struct SymEntry* Func);
66 /* Parse argument declarations and function body. */
67
68
69
70 /* End of function.h */
71 #endif
72
73
74