diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-27 13:27:14 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-27 13:27:14 +0000 |
| commit | 0dd0b0908300eee08a06ee51d9eb48b85fd97d74 (patch) | |
| tree | 8e18df810a1d88f686f2b85ed2f05e3aa0985119 /pseudocode-lib | |
| parent | 790e0fd7c5a81b9a27a6d84e0f3f4c7a0b17d04b (diff) | |
refactor(memory)!: move allocation functions into memory.cps
Route keyword NEW and DELETE through the same library runtime and retain
allocation tracking, runtime diagnostics and exception behavior.
BREAKING CHANGE: -no-std programs using NEW or DELETE must explicitly import memory.cps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'pseudocode-lib')
| -rw-r--r-- | pseudocode-lib/memory.cps | 99 | ||||
| -rw-r--r-- | pseudocode-lib/std.cps | 1 |
2 files changed, 100 insertions, 0 deletions
diff --git a/pseudocode-lib/memory.cps b/pseudocode-lib/memory.cps new file mode 100644 index 0000000..26287c3 --- /dev/null +++ b/pseudocode-lib/memory.cps @@ -0,0 +1,99 @@ +#LIB +INCLUDE_OBJ "memory.o" +TYPE _MEMORY_ADDRESS = C_TYPE("void*") +TYPE _MEMORY_SIZE = C_TYPE("unsigned long long") +TYPE _MEMORY_C_BOOL = C_TYPE("_Bool") +TYPE _MEMORY_C_SIGNED_CHAR = C_TYPE("signed char") +TYPE _MEMORY_C_UNSIGNED_CHAR = C_TYPE("unsigned char") +TYPE _MEMORY_C_SHORT = C_TYPE("short") +TYPE _MEMORY_C_UNSIGNED_SHORT = C_TYPE("unsigned short") +TYPE _MEMORY_C_UNSIGNED_INT = C_TYPE("unsigned int") +TYPE _MEMORY_C_LONG = C_TYPE("long") +TYPE _MEMORY_C_UNSIGNED_LONG = C_TYPE("unsigned long") +TYPE _MEMORY_C_LONG_LONG = C_TYPE("long long") +EXTERN "C" EXTERN_FUNCTION _memory_impl_malloc(_MEMORY_SIZE) RETURNS _MEMORY_ADDRESS +EXTERN "C" EXTERN_FUNCTION _memory_impl_realloc(_MEMORY_ADDRESS, _MEMORY_SIZE) RETURNS _MEMORY_ADDRESS +EXTERN "C" EXTERN_FUNCTION _memory_impl_free(_MEMORY_ADDRESS) RETURNS _MEMORY_ADDRESS +EXTERN "C" EXTERN_PROCEDURE _memory_impl_validate(_MEMORY_ADDRESS) + +OVERLOAD FUNCTION MALLOC(Bytes : INTEGER) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : INTEGER) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_BOOL) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_BOOL) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : C_CHAR) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : C_CHAR) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_SIGNED_CHAR) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_SIGNED_CHAR) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_UNSIGNED_CHAR) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_UNSIGNED_CHAR) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_SHORT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_SHORT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_UNSIGNED_SHORT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_UNSIGNED_SHORT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : C_INT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : C_INT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_UNSIGNED_INT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_UNSIGNED_INT) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_LONG) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_LONG) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_UNSIGNED_LONG) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_UNSIGNED_LONG) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_C_LONG_LONG) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_C_LONG_LONG) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION MALLOC(Bytes : _MEMORY_SIZE) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_malloc((_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION REALLOC(Address : _MEMORY_ADDRESS, Bytes : _MEMORY_SIZE) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_realloc(Address, (_MEMORY_SIZE)Bytes) +ENDFUNCTION +OVERLOAD FUNCTION FREE(Address : _MEMORY_ADDRESS) RETURNS _MEMORY_ADDRESS + RETURN _memory_impl_free(Address) +ENDFUNCTION diff --git a/pseudocode-lib/std.cps b/pseudocode-lib/std.cps index 0ec4b9d..6068bd0 100644 --- a/pseudocode-lib/std.cps +++ b/pseudocode-lib/std.cps @@ -1,2 +1,3 @@ #LIB INCLUDE "string.cps" +INCLUDE "memory.cps" |
