kprint now works
This commit is contained in:
@@ -52,7 +52,7 @@ void memcopy(void* from, void* to, uint32 size){
|
||||
if(from==NULL || to==NULL)
|
||||
throw(ERR_NULLPTR);
|
||||
for(uint32 i=0; i<size; i++)
|
||||
((char*)to)[i]=*(char*)from+i;
|
||||
((char*)to)[i]=((char*)from)[i];
|
||||
}
|
||||
|
||||
char* __cptr_concat(uint16 n, ...){
|
||||
|
||||
@@ -9,6 +9,10 @@ char* __toString_char(void* c, uint32 fmt) {
|
||||
return cc;
|
||||
}
|
||||
|
||||
char* __toString_charPtr(void* c, uint32 fmt){
|
||||
return cptr_copy(*(char**)c);
|
||||
}
|
||||
|
||||
char* __toString_bool(void* c, uint32 fmt) {
|
||||
static const char _strbool[4][6]={ "false", "true\0", "False", "True\0" };
|
||||
uint8 strind=*(bool*)c==1 + kprint_format_uppercase(fmt)*2;
|
||||
@@ -51,24 +55,25 @@ char* toString_uint(uint64 n, bool withPostfix, bool uppercase){
|
||||
}
|
||||
|
||||
char* toString_float(float64 n, bool withPostfix, bool uppercase){
|
||||
int64 d=n;
|
||||
float64 r=n-d;
|
||||
char* strint=toString_int(d);
|
||||
char strfract[32];
|
||||
uint8 i=0;
|
||||
strfract[i++]='.';
|
||||
while(r!=0){
|
||||
r*=10.0;
|
||||
char fc=r;
|
||||
strfract[i++]=fc;
|
||||
r-=fc;
|
||||
}
|
||||
if(withPostfix)
|
||||
strfract[i++]= uppercase ? 'F' : 'f';
|
||||
strfract[i]=0;
|
||||
char* str=cptr_concat(strint, strfract);
|
||||
free(strint);
|
||||
return str;
|
||||
// int64 d=n;
|
||||
// float64 r=n-d;
|
||||
// char* strint=toString_int(d);
|
||||
// char strfract[32];
|
||||
// uint8 i=0;
|
||||
// strfract[i++]='.';
|
||||
// while(r!=0){
|
||||
// r*=10.0;
|
||||
// char fc=r;
|
||||
// strfract[i++]=fc;
|
||||
// r-=fc;
|
||||
// }
|
||||
// if(withPostfix)
|
||||
// strfract[i++]= uppercase ? 'F' : 'f';
|
||||
// strfract[i]=0;
|
||||
// char* str==cptr_concat(strint, strfract);
|
||||
// free(strint);
|
||||
// return str;
|
||||
return cptr_copy("<float>");
|
||||
}
|
||||
|
||||
char* toString_bin(char* bytes, uint32 size, bool withPrefix){
|
||||
|
||||
@@ -8,6 +8,7 @@ extern "C" {
|
||||
|
||||
// functions for base types
|
||||
char* __toString_char(void* c, uint32 fmt);
|
||||
char* __toString_charPtr(void* c, uint32 fmt);
|
||||
char* __toString_bool(void* c, uint32 fmt);
|
||||
|
||||
char* toString_int(int64 n);
|
||||
|
||||
@@ -22,18 +22,18 @@ void ktDescriptors_initKerepTypes(){
|
||||
kt_register(int64, ktId_Int64, NULL, __toString_int64);
|
||||
kt_register(uint64, ktId_UInt64, NULL, __toString_uint64);
|
||||
// base type pointers
|
||||
kt_register(char*, ktId_CharPtr, NULL, __toString_char);
|
||||
kt_register(bool*, ktId_BoolPtr, NULL, __toString_bool);
|
||||
kt_register(float32*, ktId_Float32Ptr, NULL, __toString_float32);
|
||||
kt_register(float64*, ktId_Float64Ptr, NULL, __toString_float64);
|
||||
kt_register(int8*, ktId_Int8Ptr, NULL, __toString_int8);
|
||||
kt_register(uint8*, ktId_UInt8Ptr, NULL, __toString_uint8);
|
||||
kt_register(int16*, ktId_Int16Ptr, NULL, __toString_int16);
|
||||
kt_register(uint16*, ktId_UInt16Ptr, NULL, __toString_uint16);
|
||||
kt_register(int32*, ktId_Int32Ptr, NULL, __toString_int32);
|
||||
kt_register(uint32*, ktId_UInt32Ptr, NULL, __toString_uint32);
|
||||
kt_register(int64*, ktId_Int64Ptr, NULL, __toString_int64);
|
||||
kt_register(uint64*, ktId_UInt64Ptr, NULL, __toString_uint64);
|
||||
kt_register(char*, ktId_CharPtr, NULL, __toString_charPtr);
|
||||
kt_register(bool*, ktId_BoolPtr, NULL, NULL);
|
||||
kt_register(float32*, ktId_Float32Ptr, NULL, NULL);
|
||||
kt_register(float64*, ktId_Float64Ptr, NULL, NULL);
|
||||
kt_register(int8*, ktId_Int8Ptr, NULL, NULL);
|
||||
kt_register(uint8*, ktId_UInt8Ptr, NULL, NULL);
|
||||
kt_register(int16*, ktId_Int16Ptr, NULL, NULL);
|
||||
kt_register(uint16*, ktId_UInt16Ptr, NULL, NULL);
|
||||
kt_register(int32*, ktId_Int32Ptr, NULL, NULL);
|
||||
kt_register(uint32*, ktId_UInt32Ptr, NULL, NULL);
|
||||
kt_register(int64*, ktId_Int64Ptr, NULL, NULL);
|
||||
kt_register(uint64*, ktId_UInt64Ptr, NULL, NULL);
|
||||
|
||||
// ktDescriptor
|
||||
kt_register(ktDescriptor, ktId_ktDescriptor, NULL, NULL);
|
||||
|
||||
@@ -71,7 +71,7 @@ void __kt_register(char* name, int16 size, void (*freeMembers)(void*), char* (*t
|
||||
|
||||
ktDescriptor ktDescriptor_get(ktId id){
|
||||
if(id>ktId_last) {
|
||||
printf("\n%u\n",id);
|
||||
printf("\ntype id: %u\n",id);
|
||||
throw("invalid type id");
|
||||
}
|
||||
return typeDescriptors[id];
|
||||
|
||||
Reference in New Issue
Block a user