Convert stuff
This commit is contained in:
parent
bea3e8a927
commit
5c84ba8b68
21
src/Makefile
21
src/Makefile
|
@ -71,25 +71,36 @@ COMMSRCS=$(COMMDIR)/string.c $(COMMDIR)/status.c $(COMMDIR)/rand.c \
|
||||||
$(COMMDIR)/convert.c $(COMMDIR)/memory.c $(COMMDIR)/arith.c
|
$(COMMDIR)/convert.c $(COMMDIR)/memory.c $(COMMDIR)/arith.c
|
||||||
|
|
||||||
COMMOBJS=$(COBJDIR)/string.o $(COBJDIR)/status.o $(COBJDIR)/rand.o \
|
COMMOBJS=$(COBJDIR)/string.o $(COBJDIR)/status.o $(COBJDIR)/rand.o \
|
||||||
$(COBJDIR)/convert.o $(COBJDIR)/memory.o $(COBJDIR)/arith.o
|
$(COBJDIR)/memory.o $(COBJDIR)/arith.o \
|
||||||
|
$(COBJDIR)/itoa.o $(COBJDIR)/ltoa.o $(COBJDIR)/utoa.o $(COBJDIR)/ultoa.o
|
||||||
|
|
||||||
common: $(COMMDEPS) $(COMMSRCS)
|
comm-convert:
|
||||||
|
$(KCC) -c $(COMMDIR)/convert.c -D_NEED_ITOA -o $(COBJDIR)/itoa.o
|
||||||
|
$(KCC) -c $(COMMDIR)/convert.c -D_NEED_LTOA -o $(COBJDIR)/ltoa.o
|
||||||
|
$(KCC) -c $(COMMDIR)/convert.c -D_NEED_UTOA -o $(COBJDIR)/utoa.o
|
||||||
|
$(KCC) -c $(COMMDIR)/convert.c -D_NEED_ULTOA -o $(COBJDIR)/ultoa.o
|
||||||
|
|
||||||
|
common: $(COMMDEPS) $(COMMSRCS) comm-convert
|
||||||
$(KCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o
|
$(KCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o
|
||||||
$(KCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o
|
$(KCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o
|
||||||
$(KCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
$(KCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
||||||
$(KCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
$(KCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
||||||
$(KCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
$(KCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
||||||
$(KCC) -c $(COMMDIR)/convert.c -o $(COBJDIR)/convert.o
|
|
||||||
|
|
||||||
CCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES)
|
CCC=$(CC2NAME) $(COPTIM) $(CWARNS) $(CINCLUDES)
|
||||||
|
|
||||||
tests: $(COMMSRCS)
|
tests-comm-convert:
|
||||||
|
$(CCC) -c $(COMMDIR)/convert.c -D_NEED_ITOA -o $(COBJDIR)/itoa.o
|
||||||
|
$(CCC) -c $(COMMDIR)/convert.c -D_NEED_LTOA -o $(COBJDIR)/ltoa.o
|
||||||
|
$(CCC) -c $(COMMDIR)/convert.c -D_NEED_UTOA -o $(COBJDIR)/utoa.o
|
||||||
|
$(CCC) -c $(COMMDIR)/convert.c -D_NEED_ULTOA -o $(COBJDIR)/ultoa.o
|
||||||
|
|
||||||
|
tests: $(COMMSRCS) tests-comm-convert
|
||||||
$(CCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o
|
$(CCC) -c $(COMMDIR)/rand.c -o $(COBJDIR)/rand.o
|
||||||
$(CCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o
|
$(CCC) -c $(COMMDIR)/arith.c -o $(COBJDIR)/arith.o
|
||||||
$(CCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
$(CCC) -c $(COMMDIR)/string.c -o $(COBJDIR)/string.o
|
||||||
$(CCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
$(CCC) -c $(COMMDIR)/status.c -o $(COBJDIR)/status.o
|
||||||
$(CCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
$(CCC) -c $(COMMDIR)/memory.c -o $(COBJDIR)/memory.o
|
||||||
$(CCC) -c $(COMMDIR)/convert.c -o $(COBJDIR)/convert.o
|
|
||||||
$(CCC) -c $(LINXDIR)/test-common.c -o $(LOBJDIR)/test-common.o
|
$(CCC) -c $(LINXDIR)/test-common.c -o $(LOBJDIR)/test-common.o
|
||||||
$(CCC) $(COMMOBJS) $(LOBJDIR)/test-common.o -o $(BINDIR)/kaleid-common.elf
|
$(CCC) $(COMMOBJS) $(LOBJDIR)/test-common.o -o $(BINDIR)/kaleid-common.elf
|
||||||
|
|
||||||
|
|
|
@ -15,24 +15,51 @@
|
||||||
static const char digits[36] =
|
static const char digits[36] =
|
||||||
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||||
|
|
||||||
|
#if defined(_NEED_UTOA) || defined(_NEED_ULTOA)
|
||||||
|
#define _S unsigned
|
||||||
|
#else
|
||||||
|
#define _S
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (_NEED_ITOA) || defined(_NEED_UTOA)
|
||||||
|
#define _T int
|
||||||
|
#else
|
||||||
|
#define _T long
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// Integer to string in any base between 2 and 36 (included)
|
// Integer to string in any base between 2 and 36 (included)
|
||||||
//
|
//
|
||||||
|
#if defined(_NEED_ITOA)
|
||||||
char *itoa(int i, char *str, int base)
|
char *itoa(int i, char *str, int base)
|
||||||
|
#elif defined(_NEED_LTOA)
|
||||||
|
char *ltoa(long i, char *str, int base)
|
||||||
|
#elif defined(_NEED_UTOA)
|
||||||
|
char *utoa(uint i, char *str, int base)
|
||||||
|
#elif defined(_NEED_ULTOA)
|
||||||
|
char *ultoa(ulong i, char *str, int base)
|
||||||
|
#else
|
||||||
|
#error "What am I supposed to declare?"
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
#if defined(_NEED_ITOA) || defined(_NEED_LTOA)
|
||||||
int neg = 0;
|
int neg = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
char *orig = str;
|
char *orig = str;
|
||||||
|
|
||||||
if (base < 2 || base > 36)
|
if (base < 2 || base > 36)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
#if defined(_NEED_ITOA) || defined(_NEED_LTOA)
|
||||||
// deal with negatives
|
// deal with negatives
|
||||||
if (i < 0) {
|
if (i < 0) {
|
||||||
neg = 1;
|
neg = 1;
|
||||||
i = -i;
|
i = -i;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// deal with zero separatly
|
// deal with zero separately
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
*str++ = '0';
|
*str++ = '0';
|
||||||
}
|
}
|
||||||
|
@ -43,7 +70,10 @@ char *itoa(int i, char *str, int base)
|
||||||
i /= base;
|
i /= base;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(_NEED_ITOA) || defined(_NEED_LTOA)
|
||||||
if (neg) *str++ = '-';
|
if (neg) *str++ = '-';
|
||||||
|
#endif
|
||||||
|
|
||||||
*str = '\0';
|
*str = '\0';
|
||||||
|
|
||||||
return reverse(orig);
|
return reverse(orig);
|
||||||
|
|
|
@ -11,6 +11,10 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
void *_osk_memsetw(void *, int, long);
|
void *_osk_memsetw(void *, int, long);
|
||||||
|
char *_osk_itoa(int, char *, int);
|
||||||
|
char *_osk_ltoa(long, char *, int);
|
||||||
|
char *_osk_utoa(unsigned int, char *, int);
|
||||||
|
char *_osk_ultoa(unsigned long, char *, int);
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -28,6 +32,7 @@ int main(int argc, char *argv[])
|
||||||
//char *test2 = malloc(size1);
|
//char *test2 = malloc(size1);
|
||||||
//char *test3 = malloc(size1);
|
//char *test3 = malloc(size1);
|
||||||
|
|
||||||
|
#if 0
|
||||||
const size_t sizex = 130;
|
const size_t sizex = 130;
|
||||||
short *xxx = (short *)malloc(sizex * sizeof(short));
|
short *xxx = (short *)malloc(sizex * sizeof(short));
|
||||||
//printf("%ld\n",(ulong)xxx%8);
|
//printf("%ld\n",(ulong)xxx%8);
|
||||||
|
@ -39,10 +44,15 @@ int main(int argc, char *argv[])
|
||||||
short s = *(xxx + it);
|
short s = *(xxx + it);
|
||||||
printf("%hd", s);
|
printf("%hd", s);
|
||||||
}
|
}
|
||||||
|
free((void *)xxx);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char buf[256];
|
||||||
|
|
||||||
|
puts(_osk_ultoa(5000000000, buf, 10));
|
||||||
|
|
||||||
puts("");
|
puts("");
|
||||||
|
|
||||||
free((void *)xxx);
|
|
||||||
|
|
||||||
//const char *str = "ceci est un string de test!";
|
//const char *str = "ceci est un string de test!";
|
||||||
//char *str2 = malloc((strlen(str) + 3) * sizeof(char));
|
//char *str2 = malloc((strlen(str) + 3) * sizeof(char));
|
||||||
|
|
|
@ -45,11 +45,11 @@ noreturn void _assert_handler(const char *, const char *, int, const char *);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#if !defined(NDEBUG)
|
#ifndef NDEBUG
|
||||||
#define NDEBUG 1
|
#define NDEBUG 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(_NO_DEBUG)
|
#ifndef _NO_DEBUG
|
||||||
#define _NO_DEBUG 1
|
#define _NO_DEBUG 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef _OSK_SOURCE
|
#if !defined(_OSK_SOURCE)
|
||||||
# ifndef _KALMASK_H
|
# ifndef _KALMASK_H
|
||||||
# include <kalmask.h>
|
# include <kalmask.h>
|
||||||
# endif
|
# endif
|
||||||
|
|
Loading…
Reference in New Issue