1
0
Files
otyaSMILEBASIC/SMILEBASIC/type.d
2015-06-07 16:38:53 +09:00

73 lines
1.5 KiB
D

module otya.smilebasic.type;
enum ValueType : byte
{
Void,//DEF A()ENDの返り値とか未初期化の変数とか
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;
}
this(ValueType type)
{
this.type = type;
if(type == ValueType.String)
{
stringValue = "";
}
}
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;
}
}
}