/*****************************************************************************/ /* */ /* stdlib.h */ /* */ /* General utilities */ /* */ /* */ /* */ /* (C) 1998-2005 Ullrich von Bassewitz */ /* Römerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ /* warranty. In no event will the authors be held liable for any damages */ /* arising from the use of this software. */ /* */ /* Permission is granted to anyone to use this software for any purpose, */ /* including commercial applications, and to alter it and redistribute it */ /* freely, subject to the following restrictions: */ /* */ /* 1. The origin of this software must not be misrepresented; you must not */ /* claim that you wrote the original software. If you use this software */ /* in a product, an acknowledgment in the product documentation would be */ /* appreciated but is not required. */ /* 2. Altered source versions must be plainly marked as such, and must not */ /* be misrepresented as being the original software. */ /* 3. This notice may not be removed or altered from any source */ /* distribution. */ /* */ /*****************************************************************************/ #ifndef _STDLIB_H #define _STDLIB_H /* size_t is needed */ #ifndef _HAVE_size_t typedef unsigned size_t; #define _HAVE_size_t #endif /* Standard exit codes */ #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 /* Return type of the div function */ typedef struct { int rem; int quot; } div_t; /* Memory management */ void* __fastcall__ malloc (size_t size); void* __fastcall__ calloc (size_t count, size_t size); void* __fastcall__ realloc (void* block, size_t size); void __fastcall__ free (void* block); /* Non standard memory management functions */ void* __fastcall__ _aligned_malloc (size_t size, size_t alignment); /* Allocate a block of memory with the given size, which is aligned to a * memory address that is a multiple of alignment. alignment MUST NOT be * zero and MUST be a power of two, otherwise a call to this function will * cause undefined behaviour. The function returns NULL if not enough memory * is available to satisfy the request. To free the allocated block, use the * free() function. */ void __fastcall__ _heapadd (void* mem, size_t size); /* Add a block to the heap */ size_t __fastcall__ _heapblocksize (const void* block); /* Return the size of an allocated block */ size_t __fastcall__ _heapmemavail (void); /* Return the total free heap space */ size_t __fastcall__ _heapmaxavail (void); /* Return the size of the largest free block on the heap */ /* Random numbers */ #define RAND_MAX 0x7FFF int rand (void); void __fastcall__ srand (unsigned seed); void _randomize (void); /* Non-standard */ /* Other standard stuff */ void abort (void); int __fastcall__ abs (int val); long __fastcall__ labs (long val); int __fastcall__ atoi (const char* s); long __fastcall__ atol (const char* s); int __fastcall__ atexit (void (*exitfunc) (void)); void* __fastcall__ bsearch (const void* key, const void* base, size_t n, size_t size, int (*cmp) (const void*, const void*)); div_t __fastcall__ div (int numer, int denom); void __fastcall__ exit (int ret); char* __fastcall__ getenv (const char* name); void __fastcall__ qsort (void* base, size_t count, size_t size, int (*compare) (const void*, const void*)); int system (const char* s); /* Non-ANSI functions */ void __fastcall__ _swap (void* p, void* q, size_t size); #if __CC65_STD__ == __CC65_STD_CC65__ char* __fastcall__ itoa (int val, char* buf, int radix); char* __fastcall__ utoa (unsigned val, char* buf, int radix); char* __fastcall__ ltoa (long val, char* buf, int radix); char* __fastcall__ ultoa (unsigned long val, char* buf, int radix); int __fastcall__ putenv (char* s); #endif /* End of stdlib.h */ #endif