mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
$elif deprecated.
This commit is contained in:
@@ -8,25 +8,26 @@
|
||||
module std::collections::enumset<Enum>;
|
||||
|
||||
|
||||
$if (Enum.elements > 128)
|
||||
$switch
|
||||
$case (Enum.elements > 128):
|
||||
typedef EnumSetType @private = char[(Enum.elements + 7) / 8];
|
||||
const IS_CHAR_ARRAY = true;
|
||||
$elif (Enum.elements > 64)
|
||||
$case (Enum.elements > 64):
|
||||
typedef EnumSetType @private = uint128;
|
||||
const IS_CHAR_ARRAY = false;
|
||||
$elif (Enum.elements > 32 || $$C_INT_SIZE > 32)
|
||||
$case (Enum.elements > 32 || $$C_INT_SIZE > 32):
|
||||
typedef EnumSetType @private = ulong;
|
||||
const IS_CHAR_ARRAY = false;
|
||||
$elif (Enum.elements > 16 || $$C_INT_SIZE > 16)
|
||||
$case (Enum.elements > 16 || $$C_INT_SIZE > 16):
|
||||
typedef EnumSetType @private = uint;
|
||||
const IS_CHAR_ARRAY = false;
|
||||
$elif (Enum.elements > 8 || $$C_INT_SIZE > 8)
|
||||
$case (Enum.elements > 8 || $$C_INT_SIZE > 8):
|
||||
typedef EnumSetType @private = ushort;
|
||||
const IS_CHAR_ARRAY = false;
|
||||
$else
|
||||
$default:
|
||||
typedef EnumSetType @private = char;
|
||||
const IS_CHAR_ARRAY = false;
|
||||
$endif
|
||||
$endswitch
|
||||
|
||||
typedef EnumSet = distinct EnumSetType;
|
||||
|
||||
|
||||
@@ -212,24 +212,27 @@ fn void Object.set_object(Object* o, String key, Object* new_object) @private
|
||||
macro Object* object_from_value(value) @private
|
||||
{
|
||||
var $Type = $typeof(value);
|
||||
$if (types::is_int($Type))
|
||||
|
||||
$switch
|
||||
$case types::is_int($Type):
|
||||
return new_int(value);
|
||||
$elif (types::is_float($Type))
|
||||
$case types::is_float($Type):
|
||||
return new_float(value);
|
||||
$elif ($Type.typeid == String.typeid)
|
||||
$case $Type.typeid == String.typeid:
|
||||
return new_string(value);
|
||||
$elif ($Type.typeid == bool.typeid)
|
||||
$case $Type.typeid == bool.typeid:
|
||||
return new_bool(value);
|
||||
$elif ($Type.typeid == Object*.typeid)
|
||||
$case $Type.typeid == Object*.typeid:
|
||||
return value;
|
||||
$elif ($Type.typeid == void*.typeid)
|
||||
$case $Type.typeid == void*.typeid:
|
||||
assert(value == null);
|
||||
return &NULL_OBJECT;
|
||||
$elif ($checks(String s = value))
|
||||
$case $checks(String s = value):
|
||||
return new_string(value);
|
||||
$else
|
||||
$default:
|
||||
$assert(false, "Unsupported object type.");
|
||||
$endif
|
||||
$endswitch
|
||||
|
||||
}
|
||||
|
||||
macro Object* Object.set(Object* o, String key, value)
|
||||
|
||||
Reference in New Issue
Block a user