bond/lib/sxtdlib.c

113 lines
1.6 KiB
C
Raw Normal View History

2018-01-26 08:43:22 +00:00
#include "type.h"
#include "lib/sxtdlib.h"
2016-08-27 05:13:54 +00:00
2018-03-24 00:58:24 +00:00
void SXAPI lb_mem_copy(void *src, void *dst, uint64 size)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
if (src == NULL || dst == NULL)
{
return;
}
char *cSrc = (char *) src;
char *cDst = (char *) dst;
while (size--)
{
*(cDst++) = *(cSrc++);
}
2016-08-27 05:13:54 +00:00
}
2018-03-24 00:58:24 +00:00
void SXAPI lb_mem_set(void *src, uint8 const val, uint64 size)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
if (src == NULL)
{
return;
}
while (size--)
{
2018-03-24 00:58:24 +00:00
*(uint8 *) src = val;
src = (void *) ((uintptr) src + 1);
2018-02-18 04:06:57 +00:00
}
2016-08-27 05:13:54 +00:00
}
2018-03-24 00:58:24 +00:00
void SXAPI lb_mem_move(void *src, void *dst, uint64 size)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
if (src == NULL || dst == NULL)
{
return;
}
if (src >= dst)
{
lb_mem_copy(src, dst, size);
return;
}
2018-03-24 00:58:24 +00:00
src = (void *) ((uintptr) src + size - 1);
dst = (void *) ((uintptr) dst + size - 1);
2018-02-18 04:06:57 +00:00
while (size--)
{
*(char *) dst = *(char *) src;
2018-03-24 00:58:24 +00:00
dst = (void *) ((uintptr) dst - 1);
src = (void *) ((uintptr) src - 1);
2018-02-18 04:06:57 +00:00
}
2016-08-27 05:13:54 +00:00
}
//
// Random Generator
//
2018-03-24 00:58:24 +00:00
static uint32 seed = 1;
static uint32 max = 16777215;
2016-08-27 05:13:54 +00:00
2018-03-24 00:58:24 +00:00
uint32 SXAPI lb_rand(void)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
seed = seed * 1103512986 + 29865;
return (unsigned int) (seed / 65536) % (max + 1);
2016-08-27 05:13:54 +00:00
}
2018-03-24 00:58:24 +00:00
void SXAPI lb_srand(uint32 _seed)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
seed = _seed;
2016-08-27 05:13:54 +00:00
}
2018-03-24 00:58:24 +00:00
void SXAPI lb_mrand(uint32 _max)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
max = _max;
2016-08-27 05:13:54 +00:00
}
//
// String Library
//
2018-03-24 00:58:24 +00:00
uint64 SXAPI lb_str_len(char const *str)
2016-08-27 05:13:54 +00:00
{
2018-03-24 00:58:24 +00:00
uint64 length = 0;
2018-02-18 04:06:57 +00:00
if (str == NULL)
{
return 0;
}
while (*str != 0)
{
str++;
length++;
}
return length;
2016-08-27 05:13:54 +00:00
}
2018-03-24 00:58:24 +00:00
uint64 SXAPI lb_str_cmp(char const *str1, char const *str2)
2016-08-27 05:13:54 +00:00
{
2018-02-18 04:06:57 +00:00
if (str1 == NULL || str2 == NULL)
{
return 0;
}
2018-03-24 00:58:24 +00:00
uint64 length = lb_str_len(str1);
2018-02-18 04:06:57 +00:00
if (length != lb_str_len(str2))
{
return 0;
}
while (length--)
{
if (*(str1 + length) != *(str2 + length))
{
return 0;
}
}
return 1;
2016-08-27 05:13:54 +00:00
}