fx: implement wchar and wstr value types
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
#include <fx/int-primitives.h>
|
||||
#include <fx/value-type.h>
|
||||
|
||||
bool fx_type_is_value_type(fx_type_id ty)
|
||||
{
|
||||
if (!ty) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ty->a.p00 == __FX_VALUE_TYPE_BASEID;
|
||||
}
|
||||
|
||||
@@ -14,6 +19,65 @@ unsigned int __fx_type_get_value_type(fx_type_id ty)
|
||||
return ty->a.p01;
|
||||
}
|
||||
|
||||
size_t __fx_value_type_get_size(unsigned int ty)
|
||||
{
|
||||
switch (ty) {
|
||||
case __FX_VALUE_TYPE_BOOL:
|
||||
return sizeof(bool);
|
||||
case __FX_VALUE_TYPE_I16:
|
||||
return sizeof(i16);
|
||||
case __FX_VALUE_TYPE_U16:
|
||||
return sizeof(u16);
|
||||
case __FX_VALUE_TYPE_I32:
|
||||
return sizeof(i32);
|
||||
case __FX_VALUE_TYPE_U32:
|
||||
return sizeof(u32);
|
||||
case __FX_VALUE_TYPE_I64:
|
||||
return sizeof(i64);
|
||||
case __FX_VALUE_TYPE_U64:
|
||||
return sizeof(u64);
|
||||
case __FX_VALUE_TYPE_IPTR:
|
||||
return sizeof(iptr);
|
||||
case __FX_VALUE_TYPE_UPTR:
|
||||
return sizeof(uptr);
|
||||
|
||||
case __FX_VALUE_TYPE_SBYTE:
|
||||
return sizeof(sbyte);
|
||||
case __FX_VALUE_TYPE_BYTE:
|
||||
return sizeof(byte);
|
||||
case __FX_VALUE_TYPE_SHORT:
|
||||
return sizeof(short);
|
||||
case __FX_VALUE_TYPE_USHORT:
|
||||
return sizeof(unsigned short);
|
||||
case __FX_VALUE_TYPE_INT:
|
||||
return sizeof(int);
|
||||
case __FX_VALUE_TYPE_UINT:
|
||||
return sizeof(unsigned int);
|
||||
case __FX_VALUE_TYPE_LONG:
|
||||
return sizeof(long);
|
||||
case __FX_VALUE_TYPE_ULONG:
|
||||
return sizeof(unsigned long);
|
||||
case __FX_VALUE_TYPE_LONGLONG:
|
||||
return sizeof(long long);
|
||||
case __FX_VALUE_TYPE_ULONGLONG:
|
||||
return sizeof(unsigned long long);
|
||||
case __FX_VALUE_TYPE_SIZE:
|
||||
return sizeof(size_t);
|
||||
|
||||
case __FX_VALUE_TYPE_FLOAT:
|
||||
return sizeof(float);
|
||||
case __FX_VALUE_TYPE_DOUBLE:
|
||||
return sizeof(double);
|
||||
|
||||
case __FX_VALUE_TYPE_CSTR:
|
||||
return sizeof(const char *);
|
||||
case __FX_VALUE_TYPE_POINTER:
|
||||
return sizeof(void *);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*** CLASS DEFINITION *********************************************************/
|
||||
|
||||
FX_TYPE_CLASS_BEGIN(fx_value_type)
|
||||
|
||||
Reference in New Issue
Block a user