X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcc65%2Ffunction.h;h=c5174c78b5d08e1860ea23a3a46b027f414665a7;hb=4185caf8558690ae4720d4a83d829ed3ed087ae9;hp=f7563e3f2780cfd66f97b0d6138d886a74759ee8;hpb=c3ec23aed0377bf7b6a4449289535a6e33ce6994;p=cc65 diff --git a/src/cc65/function.h b/src/cc65/function.h index f7563e3f2..c5174c78b 100644 --- a/src/cc65/function.h +++ b/src/cc65/function.h @@ -1,15 +1,15 @@ /*****************************************************************************/ /* */ -/* function.h */ +/* function.h */ /* */ -/* Function management */ +/* Function management */ /* */ /* */ /* */ -/* (C) 1998-2001 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 1998-2012, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -39,7 +39,7 @@ /*****************************************************************************/ -/* data */ +/* data */ /*****************************************************************************/ @@ -53,52 +53,76 @@ extern Function* CurrentFunc; /*****************************************************************************/ -/* Code */ +/* Code */ /*****************************************************************************/ -const char* GetFuncName (const Function* F); +const char* F_GetFuncName (const Function* F); /* Return the name of the current function */ -unsigned GetParamCount (const Function* F); +unsigned F_GetParamCount (const Function* F); /* Return the parameter count for the current function */ -unsigned GetParamSize (const Function* F); +unsigned F_GetParamSize (const Function* F); /* Return the parameter size for the current function */ -type* GetReturnType (Function* F); +Type* F_GetReturnType (Function* F); /* Get the return type for the function */ -int HasVoidReturn (const Function* F); +int F_HasVoidReturn (const Function* F); /* Return true if the function does not have a return value */ -int IsVariadic (const Function* F); +void F_ReturnFound (Function* F); +/* Mark the function as having a return statement */ + +int F_HasReturn (const Function* F); +/* Return true if the function contains a return statement*/ + +int F_IsMainFunc (const Function* F); +/* Return true if this is the main function */ + +int F_IsVariadic (const Function* F); /* Return true if this is a variadic function */ -unsigned GetRetLab (const Function* F); +int F_IsOldStyle (const Function* F); +/* Return true if this is an old style (K&R) function */ + +int F_HasOldStyleIntRet (const Function* F); +/* Return true if this is an old style (K&R) function with an implicit int return */ + +unsigned F_GetRetLab (const Function* F); /* Return the return jump label */ -int GetTopLevelSP (const Function* F); +int F_GetTopLevelSP (const Function* F); /* Get the value of the stack pointer on function top level */ -int ReserveLocalSpace (Function* F, unsigned Size); +int F_ReserveLocalSpace (Function* F, unsigned Size); /* Reserve (but don't allocate) the given local space and return the stack * offset. */ -void AllocLocalSpace (Function* F); +int F_GetStackPtr (const Function* F); +/* Return the current stack pointer including reserved (but not allocated) + * space on the stack. + */ + +void F_AllocLocalSpace (Function* F); /* Allocate any local space previously reserved. The function will do * nothing if there is no reserved local space. */ +int F_AllocRegVar (Function* F, const Type* Type); +/* Allocate a register variable for the given variable type. If the allocation + * was successful, return the offset of the register variable in the register + * bank (zero page storage). If there is no register space left, return -1. + */ + void NewFunc (struct SymEntry* Func); /* Parse argument declarations and function body. */ /* End of function.h */ -#endif - - +#endif