Re-add () to ct constructs.

This commit is contained in:
Christoffer Lerno
2022-01-24 00:52:43 +01:00
parent ef95c1a630
commit 2c5ae858b8
7 changed files with 61 additions and 76 deletions

View File

@@ -16,65 +16,71 @@ $assert (C_SHORT_SIZE <= C_INT_SIZE);
$assert (C_INT_SIZE <= C_LONG_SIZE);
$assert (C_LONG_SIZE <= C_LONG_LONG_SIZE);
$if C_INT_SIZE == 64:
$switch ($$C_INT_SIZE):
$case 64:
define CInt = long;
define CUInt = ulong;
$elif C_INT_SIZE == 32:
$case 32:
define CInt = int;
define CUInt = uint;
$elif C_INT_SIZE == 16:
$case 16:
define CInt = short;
define CUInt = ushort;
$else:
$default:
$assert(false, "Invalid C int size");
$endif;
$endswitch;
$if C_LONG_SIZE == 64:
$switch ($$C_LONG_SIZE):
$case 64:
define CLong = long;
define CULong = ulong;
$elif C_LONG_SIZE == 32:
$case 32:
define CLong = int;
define CULong = uint;
$elif C_LONG_SIZE == 16:
$case 16:
define CLong = short;
define CULong = ushort;
$else:
$default:
$assert(false, "Invalid C long size");
$endif;
$endswitch;
$if C_SHORT_SIZE == 32:
$switch ($$C_SHORT_SIZE):
$case 32:
define CShort = int;
define CUShort = uint;
$elif C_SHORT_SIZE == 16:
$case 16:
define CShort = short;
define CUShort = ushort;
$elif C_SHORT_SIZE == 8:
$case 8:
define CShort = ichar;
define CUShort = char;
$else:
$default:
$assert(false, "Invalid C short size");
$endif;
$endswitch;
$if C_LONG_LONG_SIZE == 128:
$switch ($$C_LONG_LONG_SIZE):
$case 128:
define CLongLong = int128;
define CULongLong = uint128;
$elif C_LONG_LONG_SIZE == 64:
$case 64:
define CLongLong = long;
define CULongLong = ulong;
$elif C_LONG_LONG_SIZE == 32:
$case 32:
define CLongLong = int;
define CULongLong = uint;
$elif C_LONG_LONG_SIZE == 16:
$case 16:
define CLongLong = short;
define CULongLong = ushort;
$else:
$default:
$assert(false, "Invalid C long long size");
$endif;
$endswitch;
define CSChar = ichar;
define CUChar = char;
$if $$C_CHAR_IS_SIGNED:
$if ($$C_CHAR_IS_SIGNED):
define CChar = ichar;
$else:
define CChar = char;

View File

@@ -5,29 +5,23 @@ $assert(Enum.min < Enum.max, "Only strictly increasing enums may be used with en
$assert(Enum.max < 64, "Maximum value of an enum used as enum set is 63");
$assert(Enum.min >= 0, "Minimum value of an enum used as enum set is 0");
$switch $$C_INT_SIZE:
$switch ($$C_INT_SIZE):
$case 64:
private define EnumSetType = ulong;
private define EnumSetType = ulong;
$case 32:
$if Enum.max < 32:
private define EnumSetType = uint;
$if (Enum.max < 32):
private define EnumSetType = uint;
$else:
private define EnumSetType = ulong;
private define EnumSetType = ulong;
$endif;
$default:
$if Enum.max < 16:
private define EnumSetType = ushort;
$elif Enum.max < 31:
private define EnumSetType = uint;
$if (Enum.max < 16):
private define EnumSetType = ushort;
$elif (Enum.max < 31):
private define EnumSetType = uint;
$else:
private define EnumSetType = ulong;
private define EnumSetType = ulong;
$endif;
$endswitch;
define EnumSet = distinct EnumSetType;

View File

@@ -248,19 +248,8 @@ const int EOF = -1;
const int FOPEN_MAX = 20;
const int FILENAME_MAX = 1024;
$if $$C_INT_SIZE == 64:
define ErrnoType = long;
$elif $$C_INT_SIZE == 32:
define ErrnoType = int;
$else:
define ErrnoType = short;
$endif;
$if $$C_LONG_SIZE == 64:
define SeekIndex = long;
$else:
define SeekIndex = int;
$endif;
define ErrnoType = CInt;
define SeekIndex = CLong;
extern fn int fclose(CFile stream);
extern fn void clearerr(CFile stream);
@@ -302,11 +291,7 @@ extern fn void perror(char* str);
// time.h
$if $$C_LONG_SIZE == 64:
define TimeOffset = long;
$else:
define TimeOffset = int;
$endif;
define TimeOffset = CLong;
struct Tm
{