70 lines
2.8 KiB
C
70 lines
2.8 KiB
C
#ifndef __STDLIB__H
|
|
#define __STDLIB__H
|
|
|
|
#include <types.h>
|
|
|
|
#define IsDigit(c) (c >= '0' && c <= '9')
|
|
#define IsHexDigit(c) ( (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') )
|
|
#define IsUpper(c) (c >= 'A' && c <= 'Z')
|
|
#define IsLower(c) (c >= 'a' && c <= 'z')
|
|
|
|
#define IsAlpha(c) (IsLower(c) || IsUpper(c))
|
|
#define IsAlphaNum(c) (IsAlpha(c) || IsDigit(c))
|
|
|
|
#define ToLower(c) ((IsUpper(c)) ? (c - 'A' + 'a') : c)
|
|
#define ToUpper(c) ((IsLower(c)) ? (c - 'a' + 'A') : c)
|
|
|
|
#define Max(a,b) ((a > b) ? (a) : (b))
|
|
#define Min(a,b) ((a < b) ? (a) : (b))
|
|
#define Abs(a) ((a < 0) ? (a * -1) : (a))
|
|
|
|
/***************************************************
|
|
* String operations: len, cmp, cpy *
|
|
***************************************************/
|
|
extern uint32 strlen (string s);
|
|
extern int32 strcmp (string a, string b);
|
|
extern string strcpy (string s1, const string s2);
|
|
|
|
/***************************************************
|
|
* Number operations: len *
|
|
***************************************************/
|
|
extern uint32 numlen (int32 number, int32 base);
|
|
extern uint32 unumlen (uint32 number, int32 base);
|
|
|
|
/***************************************************
|
|
* Memory operations: cpy, cmp, set *
|
|
***************************************************/
|
|
void* memcpy (void *dest, const void *src, uint32 count);
|
|
int32 memcmp (const void *s1, const void *s2, uint32 count);
|
|
void* memset (void *dest, uint8 val, uint32 count);
|
|
|
|
/***************************************************
|
|
* Conversion operations: num-str/str-num *
|
|
***************************************************/
|
|
extern int32 ConvertIntToString (string buffer, int32 number, int32 base);
|
|
extern uint32 ConvertUIntToString (string buffer, uint32 number, int32 base);
|
|
extern int32 ConvertStringToInt (string buffer);
|
|
extern uint32 ConvertStringToUInt (string buffer);
|
|
extern uint32 ConvertStringToIntHex (string buffer);
|
|
|
|
/***************************************************
|
|
* Ordered array implementation *
|
|
***************************************************/
|
|
typedef int (*ComparePredicate) (uint32, uint32);
|
|
typedef struct {
|
|
uint32* Data;
|
|
uint32 Size;
|
|
uint32 SizeLimit;
|
|
ComparePredicate Compare;
|
|
} OrderedArray;
|
|
|
|
extern OrderedArray OrderedArrayCreate (uint32 maxSize, ComparePredicate p);
|
|
extern OrderedArray OrderedArrayPlace (uint32 addr, uint32 maxSize, ComparePredicate p);
|
|
extern void OrderedArrayDispose (OrderedArray* arr);
|
|
extern uint32 OrderedArraySearch (uint32 key, OrderedArray* arr, ComparePredicate predicate);
|
|
extern void OrderedArrayInsert (uint32 item, OrderedArray* arr);
|
|
extern uint32 OrderedArrayLookup (uint32 index, OrderedArray* arr);
|
|
extern void OrderedArrayDeleteIndex (uint32 index, OrderedArray* arr);
|
|
|
|
#endif
|