Defines routines to access the "vstack", or variable stack. More...
#include <inttypes.h>
Go to the source code of this file.
Functions | |
| void | _comma_vstack_alloc (int32_t size) |
| void | _comma_vstack_push (void *data, int32_t size) |
| void | _comma_vstack_pop () |
Variables | |
| char * | _comma_vstack |
Defines routines to access the "vstack", or variable stack.
Comma's vstack is a runtime stack used to return objects of variable length from Comma subroutines. The canonical example is returning a String from a function:
function Get_String return String is begin return "Hello, world!"; end Get_String;
The compiler generates two calls to _comma_vstack_push() in this case, populating the vstack with a bounds structure and the actual data comprising the string. Callers of Get_String retrieve the data by inspecting the _comma_vstack variable, which is a pointer to the most recently pushed data on the stack. Once the data has been retrieved (e.g. copied), _comma_vstack_push() is called to remove the top-most item from the stack.
Definition in file crt_vstack.h.
| void _comma_vstack_alloc | ( | int32_t | size | ) |
Allocates a region of size bytes on the vstack.
The allocated data is available thru the _comma_vstack pointer, and will be disposed of when a matching call to _comma_vstack_pop() is made.
Definition at line 51 of file crt_vstack.c.
| void _comma_vstack_pop | ( | ) |
Pops the vstack and resets _comma_vstack to the next item.
Definition at line 68 of file crt_vstack.c.
| void _comma_vstack_push | ( | void * | data, | |
| int32_t | size | |||
| ) |
Copy's size bytes from data onto the vstack.
The allocated data is available thru the _comma_vstack pointer, and will be disposed of when a matching call to _comma_vstack_pop() is made.
Definition at line 59 of file crt_vstack.c.
| char* _comma_vstack |
Pointer to the top of the vstack.
Definition at line 41 of file crt_vstack.h.
1.6.1