1
0
Files
otyaSMILEBASIC/SMILEBASIC/type.d
2015-06-07 14:35:03 +09:00

64 lines
1.3 KiB
D

module otya.smilebasic.type;
enum ValueType : byte
{
Integer,
Double,
String,
Array,
IntegerArray,
DoubleArray,
StringArray,
}
struct Value
{
ValueType type;
union
{
int integerValue;
double doubleValue;
wstring stringValue;
int[] intArray;
}
this(int value)
{
this.type = ValueType.Integer;
integerValue = value;
}
this(double value)
{
this.type = ValueType.Double;
doubleValue = value;
}
this(wstring value)
{
this.type = ValueType.String;
stringValue = value;
}
void castOp(ValueType type)
{
switch(type)
{
case ValueType.Double:
break;
default:
break;
}
}
bool boolValue()
{
switch(type)
{
case ValueType.Double:
return this.doubleValue != 0;
case ValueType.Integer:
return this.integerValue != 0;
case ValueType.String:
return true;//3.1現在では文字列はtrue(ただし!"A"などは動かない)
default:
//配列はtype mismatch
return false;
}
}
}