CTAOS v5
This commit is contained in:
93
SysCore/include/stdlib.h
Normal file
93
SysCore/include/stdlib.h
Normal file
@ -0,0 +1,93 @@
|
||||
#ifndef __STDLIB_H__
|
||||
#define __STDLIB_H__
|
||||
|
||||
/** Returns the absolute value of an integer.*/
|
||||
#define abs(x) (x>0) ? (x) : (x*-1)
|
||||
/** Returns the absolute value of a long variable.*/
|
||||
#define labs(x) (x>0) ? (x) : (x*-1)
|
||||
/** Returns the maximum of two numbers.*/
|
||||
#define max(a, b) (a > b) ? a : b
|
||||
/** Returns the minimum of two numbers.*/
|
||||
#define min(a, b) (a < b) ? a : b
|
||||
#define NULL 0
|
||||
|
||||
/** div_t is a structure of integers used by div()\n
|
||||
Notes:\n
|
||||
- quot = quotient;\n
|
||||
- rem = remainder;\n */
|
||||
typedef struct {
|
||||
/** Quotient */
|
||||
long quot;
|
||||
/** Remainder */
|
||||
long rem;
|
||||
} div_t;
|
||||
|
||||
/** ldiv_t is a structure of integers used by ldiv()\n
|
||||
Notes:\n
|
||||
- quot = quotient;\n
|
||||
- rem = remainder;\n */
|
||||
typedef struct {
|
||||
/** Quotient*/
|
||||
long quot;
|
||||
/** Remainder*/
|
||||
long rem;
|
||||
} ldiv_t;
|
||||
|
||||
|
||||
// TODO: extern long double _atold (const char* string);
|
||||
// TODO: extern double atof (const char* string); // TODO: initialize FPU
|
||||
|
||||
/** Convert ASCII string to INT */
|
||||
extern int atoi (const char* string);
|
||||
|
||||
/** Convert ASCII string to LONG */
|
||||
extern long atol (const char* string);
|
||||
|
||||
/** Convert ASCII string in hexadecimal to unsigned integer.*/
|
||||
extern unsigned int atox (const char* string);
|
||||
|
||||
/** Peform a binary search\n
|
||||
Notes:\n
|
||||
- const void* key = A pointer to the element to look for\n
|
||||
- const void* base = A pointer to the first element of the table\n
|
||||
- unsigned nelem = The number of elements in the table\n
|
||||
- unsigned width = The size of one element of the table\n
|
||||
- int *fcmp = A user defined comparison routine\n */
|
||||
extern void* bsearch (const void* key, const void* base, unsigned nelem, unsigned width, int (*fcmp)(const void*, const void*));
|
||||
|
||||
/**Divides two integers and returns both the quotient and the remainder as a div_t structure.*/
|
||||
extern div_t div (int numerator, int denominator);
|
||||
|
||||
/** Convert SIGNED INT to ASCII string */
|
||||
extern void itoa (signed int value, char *string, int radix);
|
||||
|
||||
/**Divides two longs and returns both the quotient and the remainder as a ldiv_t structure.*/
|
||||
extern ldiv_t ldiv (long numerator, long denominator);
|
||||
|
||||
/**Does a linear search for *key in a table\n
|
||||
Notes:\n
|
||||
- const void* key = A pointer to the element to look for\n
|
||||
- const void* base = A pointer to the first element of the table\n
|
||||
- unsigned nelem = The number of elements in the table\n
|
||||
- unsigned width = The size of one element of the table\n
|
||||
- int *fcmp = A user defined comparison routine\n */
|
||||
void* lfind (const void* key, const void* base, unsigned nelem, unsigned width, int (*fcmp)(const void*, const void*));
|
||||
|
||||
/** Convert SIGNED LONG to ASCII string */
|
||||
extern void ltoa (signed long value, char *string, int radix);
|
||||
|
||||
/** Sorts an array using an optimized quick sort algorithm.\n
|
||||
Notes:\n
|
||||
- void base = A pointer to the first element of the table\n
|
||||
- unsigned *nelem = The number of elements in the table\n
|
||||
- unsigned width = The size of one element of the table\n
|
||||
- int *fcmp = A user defined comparison routine\n */
|
||||
void qsort (void* base, unsigned nelem, unsigned width, int (*fcmp)(const void*, const void*));
|
||||
|
||||
/** Convert UNSIGNED INT to ASCII string */
|
||||
extern void uitoa (unsigned int value, char *string, int radix);
|
||||
|
||||
/** Convert UNSIGNED LONG to ASCII string */
|
||||
extern void ultoa (unsigned long value, char *string, int radix);
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user