|
@@ -42,21 +42,27 @@ love::Type extractudatatype(lua_State *L, int idx)
|
|
return t;
|
|
return t;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+Variant::Variant()
|
|
|
|
+ : type(NIL)
|
|
|
|
+ , data()
|
|
|
|
+{
|
|
|
|
+}
|
|
|
|
+
|
|
Variant::Variant(bool boolean)
|
|
Variant::Variant(bool boolean)
|
|
|
|
+ : type(BOOLEAN)
|
|
{
|
|
{
|
|
- type = BOOLEAN;
|
|
|
|
data.boolean = boolean;
|
|
data.boolean = boolean;
|
|
}
|
|
}
|
|
|
|
|
|
Variant::Variant(double number)
|
|
Variant::Variant(double number)
|
|
|
|
+ : type(NUMBER)
|
|
{
|
|
{
|
|
- type = NUMBER;
|
|
|
|
data.number = number;
|
|
data.number = number;
|
|
}
|
|
}
|
|
|
|
|
|
Variant::Variant(const char *string, size_t len)
|
|
Variant::Variant(const char *string, size_t len)
|
|
|
|
+ : type(STRING)
|
|
{
|
|
{
|
|
- type = STRING;
|
|
|
|
char *buf = new char[len+1];
|
|
char *buf = new char[len+1];
|
|
memset(buf, 0, len+1);
|
|
memset(buf, 0, len+1);
|
|
memcpy(buf, string, len);
|
|
memcpy(buf, string, len);
|
|
@@ -65,20 +71,20 @@ Variant::Variant(const char *string, size_t len)
|
|
}
|
|
}
|
|
|
|
|
|
Variant::Variant(char c)
|
|
Variant::Variant(char c)
|
|
|
|
+ : type(CHARACTER)
|
|
{
|
|
{
|
|
- type = CHARACTER;
|
|
|
|
data.character = c;
|
|
data.character = c;
|
|
}
|
|
}
|
|
|
|
|
|
Variant::Variant(void *userdata)
|
|
Variant::Variant(void *userdata)
|
|
|
|
+ : type(LUSERDATA)
|
|
{
|
|
{
|
|
- type = LUSERDATA;
|
|
|
|
data.userdata = userdata;
|
|
data.userdata = userdata;
|
|
}
|
|
}
|
|
|
|
|
|
Variant::Variant(love::Type udatatype, void *userdata)
|
|
Variant::Variant(love::Type udatatype, void *userdata)
|
|
|
|
+ : type(FUSERDATA)
|
|
{
|
|
{
|
|
- type = FUSERDATA;
|
|
|
|
this->udatatype = udatatype;
|
|
this->udatatype = udatatype;
|
|
if (udatatype != INVALID_ID)
|
|
if (udatatype != INVALID_ID)
|
|
{
|
|
{
|
|
@@ -129,6 +135,9 @@ Variant *Variant::fromLua(lua_State *L, int n)
|
|
case LUA_TUSERDATA:
|
|
case LUA_TUSERDATA:
|
|
v = new Variant(extractudatatype(L, n), lua_touserdata(L, n));
|
|
v = new Variant(extractudatatype(L, n), lua_touserdata(L, n));
|
|
break;
|
|
break;
|
|
|
|
+ case LUA_TNIL:
|
|
|
|
+ v = new Variant();
|
|
|
|
+ break;
|
|
}
|
|
}
|
|
return v;
|
|
return v;
|
|
}
|
|
}
|
|
@@ -166,6 +175,7 @@ void Variant::toLua(lua_State *L)
|
|
// sadly, however, it's the most
|
|
// sadly, however, it's the most
|
|
// I can do (at the moment).
|
|
// I can do (at the moment).
|
|
break;
|
|
break;
|
|
|
|
+ case NIL:
|
|
default:
|
|
default:
|
|
lua_pushnil(L);
|
|
lua_pushnil(L);
|
|
break;
|
|
break;
|