|
|
@@ -71,62 +71,54 @@ class Variant
|
|
|
Variant(const Color& value);
|
|
|
Variant(const String value);
|
|
|
Variant(const char* value);
|
|
|
+ tolua_outside void VariantConstructFromBuffer @ Variant(const VectorBuffer& value);
|
|
|
+ Variant(void* value);
|
|
|
Variant(const ResourceRef& value);
|
|
|
Variant(const ResourceRefList& value);
|
|
|
+ Variant(const Vector<Variant>& value);
|
|
|
+//variantmap
|
|
|
+ Variant(const Vector<String>& value);
|
|
|
Variant(const IntRect& value);
|
|
|
Variant(const IntVector2& value);
|
|
|
+//refcounted*
|
|
|
Variant(const Matrix3& value);
|
|
|
Variant(const Matrix3x4& value);
|
|
|
Variant(const Matrix4& value);
|
|
|
Variant(const String type, const String value);
|
|
|
Variant(VariantType type, const String value);
|
|
|
+ Variant(const char* type, const char* value);
|
|
|
Variant(VariantType type, const char* value);
|
|
|
Variant(const Variant& value);
|
|
|
~Variant();
|
|
|
|
|
|
void Clear();
|
|
|
|
|
|
- bool operator == (const Variant& rhs) const;
|
|
|
- bool operator == (int rhs) const;
|
|
|
- bool operator == (unsigned rhs) const;
|
|
|
- bool operator == (bool rhs) const;
|
|
|
- bool operator == (float rhs) const;
|
|
|
- bool operator == (double rhs) const;
|
|
|
- bool operator == (const Vector2& rhs);
|
|
|
- bool operator == (const Vector3& rhs) const;
|
|
|
- bool operator == (const Vector4& rhs) const;
|
|
|
- bool operator == (const Quaternion& rhs) const;
|
|
|
- bool operator == (const Color& rhs) const;
|
|
|
- bool operator == (const String rhs) const;
|
|
|
- bool operator == (const ResourceRef& rhs) const;
|
|
|
- bool operator == (const ResourceRefList& rhs) const;
|
|
|
- bool operator == (const IntRect& rhs) const;
|
|
|
- bool operator == (const IntVector2& rhs) const;
|
|
|
- bool operator == (const StringHash& rhs) const;
|
|
|
- bool operator == (const Matrix3& rhs) const;
|
|
|
- bool operator == (const Matrix3x4& rhs) const;
|
|
|
- bool operator == (const Matrix4& rhs) const;
|
|
|
-
|
|
|
- tolua_outside void VariantSetInt @ SetInt(int value);
|
|
|
- tolua_outside void VariantSetUint @ SetUint(unsigned value);
|
|
|
- tolua_outside void VariantSetStringHash @ SetStringHash(const StringHash& value);
|
|
|
- tolua_outside void VariantSetBool @ SetBool(bool value);
|
|
|
- tolua_outside void VariantSetFloat @ SetFloat(float value);
|
|
|
- tolua_outside void VariantSetDouble @ SetDouble(double value);
|
|
|
- tolua_outside void VariantSetVector2 @ SetVector2(const Vector2& value);
|
|
|
- tolua_outside void VariantSetVector3 @ SetVector3(const Vector3& value);
|
|
|
- tolua_outside void VariantSetVector4 @ SetVector4(const Vector4& value);
|
|
|
- tolua_outside void VariantSetQuaternion @ SetQuaternion(const Quaternion& value);
|
|
|
- tolua_outside void VariantSetColor @ SetColor(const Color& value);
|
|
|
- tolua_outside void VariantSetString @ SetString(const String value);
|
|
|
- tolua_outside void VariantSetBuffer @ SetBuffer(const VectorBuffer& value);
|
|
|
- tolua_outside void VariantSetResourceRef @ SetResourceRef(const ResourceRef& value);
|
|
|
- tolua_outside void VariantSetResourceRefList @ SetResourceRefList(const ResourceRefList& value);
|
|
|
- tolua_outside void VariantSetIntRect @ SetIntRect(const IntRect& value);
|
|
|
- tolua_outside void VariantSetIntVector2 @ SetIntVector2(const IntVector2& value);
|
|
|
- tolua_outside void VariantSetMatrix3 @ SetMatrix3(const Matrix3& value);
|
|
|
- tolua_outside void VariantSetMatrix3x4 @ SetMatrix3x4(const Matrix3x4& value);
|
|
|
- tolua_outside void VariantSetMatrix4 @ SetMatrix4(const Matrix4& value);
|
|
|
+ bool operator ==(const Variant& rhs) const;
|
|
|
+ bool operator ==(int rhs) const;
|
|
|
+ bool operator ==(unsigned rhs) const;
|
|
|
+ bool operator ==(bool rhs) const;
|
|
|
+ bool operator ==(float rhs) const;
|
|
|
+ bool operator ==(double rhs) const;
|
|
|
+ bool operator ==(const Vector2& rhs);
|
|
|
+ bool operator ==(const Vector3& rhs) const;
|
|
|
+ bool operator ==(const Vector4& rhs) const;
|
|
|
+ bool operator ==(const Quaternion& rhs) const;
|
|
|
+ bool operator ==(const Color& rhs) const;
|
|
|
+ bool operator ==(const String rhs) const;
|
|
|
+ tolua_outside bool VariantEqualWithBuffer @ operator ==(const VectorBuffer& rhs) const;
|
|
|
+//void*
|
|
|
+ bool operator ==(const ResourceRef& rhs) const;
|
|
|
+ bool operator ==(const ResourceRefList& rhs) const;
|
|
|
+ bool operator ==(const Vector<Variant>& rhs) const;
|
|
|
+//variantmap
|
|
|
+ bool operator ==(const Vector<String>& rhs) const;
|
|
|
+ bool operator ==(const IntRect& rhs) const;
|
|
|
+ bool operator ==(const IntVector2& rhs) const;
|
|
|
+ bool operator ==(const StringHash& rhs) const;
|
|
|
+//refcounted*
|
|
|
+ bool operator ==(const Matrix3& rhs) const;
|
|
|
+ bool operator ==(const Matrix3x4& rhs) const;
|
|
|
+ bool operator ==(const Matrix4& rhs) const;
|
|
|
|
|
|
int GetInt() const;
|
|
|
unsigned GetUInt() const;
|
|
|
@@ -141,10 +133,15 @@ class Variant
|
|
|
const Color& GetColor() const;
|
|
|
const String GetString() const;
|
|
|
tolua_outside VectorBuffer VariantGetBuffer @ GetBuffer() const;
|
|
|
+//void*
|
|
|
const ResourceRef& GetResourceRef() const;
|
|
|
const ResourceRefList& GetResourceRefList() const;
|
|
|
+ const Vector<Variant>& GetVariantVector() const;
|
|
|
+//variantmap
|
|
|
+ const Vector<String>& GetStringVector() const;
|
|
|
const IntRect& GetIntRect() const;
|
|
|
const IntVector2& GetIntVector2() const;
|
|
|
+//refcounted*
|
|
|
const Matrix3& GetMatrix3() const;
|
|
|
const Matrix3x4& GetMatrix3x4() const;
|
|
|
const Matrix4& GetMatrix4() const;
|
|
|
@@ -161,158 +158,16 @@ class Variant
|
|
|
tolua_readonly tolua_property__is_set bool empty;
|
|
|
};
|
|
|
|
|
|
-class VariantMap
|
|
|
-{
|
|
|
- VariantMap();
|
|
|
- ~VariantMap();
|
|
|
-
|
|
|
- tolua_outside void VariantMapSetInt @ SetInt(const String key, int value);
|
|
|
- tolua_outside void VariantMapSetUInt @ SetUInt(const String key, unsigned value);
|
|
|
- tolua_outside void VariantMapSetStringHash @ SetStringHash(const String key, const StringHash& value);
|
|
|
- tolua_outside void VariantMapSetBool @ SetBool(const String key, bool value);
|
|
|
- tolua_outside void VariantMapSetFloat @ SetFloat(const String key, float value);
|
|
|
- tolua_outside void VariantMapSetDouble @ SetDouble(const String key, double value);
|
|
|
- tolua_outside void VariantMapSetVector2 @ SetVector2(const String key, const Vector2 value);
|
|
|
- tolua_outside void VariantMapSetVector3 @ SetVector3(const String key, const Vector3 value);
|
|
|
- tolua_outside void VariantMapSetVector4 @ SetVector4(const String key, const Vector4 value);
|
|
|
- tolua_outside void VariantMapSetQuaternion @ SetQuaternion(const String key, const Quaternion value);
|
|
|
- tolua_outside void VariantMapSetColor @ SetColor(const String key, const Color value);
|
|
|
- tolua_outside void VariantMapSetString @ SetString(const String key, const String value);
|
|
|
- tolua_outside void VariantMapSetBuffer @ SetBuffer(const String key, const VectorBuffer& value);
|
|
|
- tolua_outside void VariantMapSetResourceRef @ SetResourceRef(const String key, const ResourceRef value);
|
|
|
- tolua_outside void VariantMapSetResourceRefList @ SetResourceRefList(const String key, const ResourceRefList value);
|
|
|
- tolua_outside void VariantMapSetVariantVector @ SetVariantVector(const String key, const VariantVector& value);
|
|
|
- tolua_outside void VariantMapSetIntRect @ SetIntRect(const String key, const IntRect value);
|
|
|
- tolua_outside void VariantMapSetIntVector2 @ SetIntVector2(const String key, const IntVector2 value);
|
|
|
- tolua_outside void VariantMapSetPtr @ SetPtr(const String key, void* value);
|
|
|
- tolua_outside void VariantMapSetMatrix3 @ SetMatrix3(const String key, const Matrix3 value);
|
|
|
- tolua_outside void VariantMapSetMatrix3x4 @ SetMatrix3x4(const String key, const Matrix3x4 value);
|
|
|
- tolua_outside void VariantMapSetMatrix4 @ SetMatrix4(const String key, const Matrix4 value);
|
|
|
-
|
|
|
- tolua_outside int VariantMapGetInt @ GetInt(const String key);
|
|
|
- tolua_outside int VariantMapGetUInt @ GetUInt(const String key);
|
|
|
- tolua_outside StringHash VariantMapGetStringHash @ GetStringHash(const String key);
|
|
|
- tolua_outside bool VariantMapGetBool @ GetBool(const String key);
|
|
|
- tolua_outside float VariantMapGetFloat @ GetFloat(const String key);
|
|
|
- tolua_outside double VariantMapGetDouble @ GetDouble(const String key);
|
|
|
- tolua_outside const Vector2& VariantMapGetVector2 @ GetVector2(const String key);
|
|
|
- tolua_outside const Vector3& VariantMapGetVector3 @ GetVector3(const String key);
|
|
|
- tolua_outside const Vector4& VariantMapGetVector4 @ GetVector4(const String key);
|
|
|
- tolua_outside const Quaternion& VariantMapGetQuaternion @ GetQuaternion(const String key);
|
|
|
- tolua_outside const Color& VariantMapGetColor @ GetColor(const String key);
|
|
|
- tolua_outside const String VariantMapGetString @ GetString(const String key);
|
|
|
- tolua_outside VectorBuffer VariantMapGetBuffer @ GetBuffer(const String key);
|
|
|
- tolua_outside const ResourceRef& VariantMapGetResourceRef @ GetResourceRef(const String key);
|
|
|
- tolua_outside const ResourceRefList& VariantMapGetResourceRefList @ GetResourceRefList(const String key);
|
|
|
- tolua_outside const VariantVector VariantMapGetVariantVector @ GetVariantVector(const String key);
|
|
|
-// const Vector<String>& GetStringVector() const;
|
|
|
- tolua_outside const IntRect& VariantMapGetIntRect @ GetIntRect(const String key);
|
|
|
- tolua_outside const IntVector2& VariantMapGetIntVector2 @ GetIntVector2(const String key);
|
|
|
- tolua_outside const void* VariantMapGetPtr @ GetPtr(const String type, const String key);
|
|
|
- tolua_outside const Matrix3& VariantMapGetMatrix3 @ GetMatrix3(const String key);
|
|
|
- tolua_outside const Matrix3x4& VariantMapGetMatrix3x4 @ GetMatrix3x4(const String key);
|
|
|
- tolua_outside const Matrix4& VariantMapGetMatrix4 @ GetMatrix4(const String key);
|
|
|
-};
|
|
|
-
|
|
|
${
|
|
|
-static void VariantSetInt(Variant* variant, int value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetUint(Variant* variant, unsigned value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetStringHash(Variant* variant, const StringHash& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetBool(Variant* variant, bool value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetFloat(Variant* variant, float value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetDouble(Variant* variant, double value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetVector2(Variant* variant, const Vector2& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetVector3(Variant* variant, const Vector3& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetVector4(Variant* variant, const Vector4& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetQuaternion(Variant* variant, const Quaternion& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetColor(Variant* variant, const Color& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetString(Variant* variant, const String value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetBuffer(Variant* variant, const VectorBuffer& value)
|
|
|
-{
|
|
|
- variant->SetBuffer(value.GetData(), value.GetBuffer().Size());
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetResourceRef(Variant* variant, const ResourceRef& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetResourceRefList(Variant* variant, const ResourceRefList& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
|
|
|
-static void VariantSetIntRect(Variant* variant, const IntRect& value)
|
|
|
+static void VariantConstructFromBuffer(Variant* variant, const VectorBuffer& value)
|
|
|
{
|
|
|
- *variant = value;
|
|
|
+ *variant = value.GetBuffer();
|
|
|
}
|
|
|
|
|
|
-static void VariantSetIntVector2(Variant* variant, const IntVector2& value)
|
|
|
+static bool VariantEqualWithBuffer(const Variant* variant, const VectorBuffer& rhs)
|
|
|
{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetMatrix3(Variant* variant, const Matrix3& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetMatrix3x4(Variant* variant, const Matrix3x4& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantSetMatrix4(Variant* variant, const Matrix4& value)
|
|
|
-{
|
|
|
- *variant = value;
|
|
|
+ return variant->operator ==(rhs.GetBuffer());
|
|
|
}
|
|
|
|
|
|
static VectorBuffer VariantGetBuffer(const Variant* variant)
|
|
|
@@ -320,292 +175,141 @@ static VectorBuffer VariantGetBuffer(const Variant* variant)
|
|
|
return VectorBuffer(variant->GetBuffer());
|
|
|
}
|
|
|
|
|
|
-static void VariantMapSetInt(VariantMap* vmap, const String& key, int value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetUInt(VariantMap* vmap, const String& key, unsigned value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetStringHash(VariantMap* vmap, const String& key, const StringHash& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetBool(VariantMap* vmap, const String& key, bool value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetFloat(VariantMap* vmap, const String& key, float value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetDouble(VariantMap* vmap, const String& key, double value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetVector2(VariantMap* vmap, const String& key, const Vector2& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetVector3(VariantMap* vmap, const String& key, const Vector3& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetVector4(VariantMap* vmap, const String& key, const Vector4& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetQuaternion(VariantMap* vmap, const String& key, const Quaternion& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetColor(VariantMap* vmap, const String& key, const Color& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetString(VariantMap* vmap, const String& key, const String& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetBuffer(VariantMap* vmap, const String& key, const VectorBuffer& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)].SetBuffer(value.GetData(), value.GetBuffer().Size());
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetResourceRef(VariantMap* vmap, const String& key, const ResourceRef& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetResourceRefList(VariantMap* vmap, const String& key, const ResourceRefList& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetVariantVector(VariantMap* vmap, const String& key, const VariantVector& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetIntRect(VariantMap* vmap, const String& key, const IntRect& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetIntVector2(VariantMap* vmap, const String& key, const IntVector2& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetPtr(VariantMap* vmap, const String& key, void* value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetMatrix3(VariantMap* vmap, const String& key, const Matrix3& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetMatrix3x4(VariantMap* vmap, const String& key, const Matrix3x4& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static void VariantMapSetMatrix4(VariantMap* vmap, const String& key, const Matrix4& value)
|
|
|
-{
|
|
|
- (*vmap)[StringHash(key)] = value;
|
|
|
-}
|
|
|
-
|
|
|
-static const Variant& FindVariant(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- VariantMap::ConstIterator i = vmap->Find(StringHash(key));
|
|
|
- return i != vmap->End() ? i->second_ : Variant::EMPTY;
|
|
|
-}
|
|
|
-
|
|
|
-static int VariantMapGetInt(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetInt();
|
|
|
-}
|
|
|
-
|
|
|
-static unsigned VariantMapGetUInt(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetUInt();
|
|
|
-}
|
|
|
-
|
|
|
-static StringHash VariantMapGetStringHash(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetStringHash();
|
|
|
-}
|
|
|
-
|
|
|
-static bool VariantMapGetBool(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetBool();
|
|
|
-}
|
|
|
-
|
|
|
-static float VariantMapGetFloat(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetFloat();
|
|
|
-}
|
|
|
-
|
|
|
-static double VariantMapGetDouble(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetDouble();
|
|
|
-}
|
|
|
-
|
|
|
-static const Vector2& VariantMapGetVector2(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetVector2();
|
|
|
-}
|
|
|
-
|
|
|
-static const Vector3& VariantMapGetVector3(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetVector3();
|
|
|
-}
|
|
|
-
|
|
|
-static const Vector4& VariantMapGetVector4(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetVector4();
|
|
|
-}
|
|
|
-
|
|
|
-static const Quaternion& VariantMapGetQuaternion(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetQuaternion();
|
|
|
-}
|
|
|
-
|
|
|
-static const Color& VariantMapGetColor(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetColor();
|
|
|
-}
|
|
|
-
|
|
|
-static const String& VariantMapGetString(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetString();
|
|
|
-}
|
|
|
-
|
|
|
-static VectorBuffer VariantMapGetBuffer(const VariantMap* vmap, const String key)
|
|
|
-{
|
|
|
- const PODVector<unsigned char>& buffer = FindVariant(vmap, key).GetBuffer();
|
|
|
- return VectorBuffer(buffer);
|
|
|
-}
|
|
|
-
|
|
|
-static const ResourceRef& VariantMapGetResourceRef(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetResourceRef();
|
|
|
-}
|
|
|
-
|
|
|
-static const ResourceRefList& VariantMapGetResourceRefList(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetResourceRefList();
|
|
|
-}
|
|
|
-
|
|
|
-static const VariantVector VariantMapGetVariantVector(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- // Return a new copy
|
|
|
- return VariantVector(FindVariant(vmap, key).GetVariantVector());
|
|
|
-}
|
|
|
-
|
|
|
-static const IntRect& VariantMapGetIntRect(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetIntRect();
|
|
|
-}
|
|
|
+$}
|
|
|
|
|
|
-static const IntVector2& VariantMapGetIntVector2(const VariantMap* vmap, const String& key)
|
|
|
+class VariantMap
|
|
|
{
|
|
|
- return FindVariant(vmap, key).GetIntVector2();
|
|
|
-}
|
|
|
+ VariantMap();
|
|
|
+ ~VariantMap();
|
|
|
|
|
|
-static const Matrix3& VariantMapGetMatrix3(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetMatrix3();
|
|
|
-}
|
|
|
+ static void _SetupIndex(const char* type);
|
|
|
+};
|
|
|
|
|
|
-static const Matrix3x4& VariantMapGetMatrix3x4(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetMatrix3x4();
|
|
|
-}
|
|
|
+$[
|
|
|
+ -- Call the setup method and then hide it immediately
|
|
|
+ VariantMap:_SetupIndex("VariantMap")
|
|
|
+ VariantMap:_SetupIndex("const VariantMap")
|
|
|
+ VariantMap._SetupIndex = nil
|
|
|
+$]
|
|
|
|
|
|
-static const Matrix4& VariantMapGetMatrix4(const VariantMap* vmap, const String& key)
|
|
|
-{
|
|
|
- return FindVariant(vmap, key).GetMatrix4();
|
|
|
-}
|
|
|
+${
|
|
|
|
|
|
-#define TOLUA_DISABLE_tolua_CoreLuaAPI_VariantMap_SetPtr00
|
|
|
-static int tolua_CoreLuaAPI_VariantMap_SetPtr00(lua_State* tolua_S)
|
|
|
+static int VariantMapIndexEvent (lua_State* tolua_S)
|
|
|
+{
|
|
|
+ int t = lua_type(tolua_S, 2);
|
|
|
+ StringHash key;
|
|
|
+ if (t == LUA_TSTRING)
|
|
|
+ key = StringHash(lua_tostring(tolua_S, 2));
|
|
|
+ else if (t == LUA_TNUMBER)
|
|
|
+ key = StringHash(lua_tonumber(tolua_S, 2));
|
|
|
+ else
|
|
|
+ {
|
|
|
+ lua_pushnil(tolua_S);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ Variant* variant = static_cast<const VariantMap*>(tolua_tousertype(tolua_S, 1, 0))->operator [](key);
|
|
|
+ if (variant)
|
|
|
+ tolua_pushusertype(tolua_S, variant, "Variant");
|
|
|
+ else
|
|
|
+ lua_pushnil(tolua_S);
|
|
|
+ return 1;
|
|
|
+}
|
|
|
+
|
|
|
+static int VariantMapNewIndexEvent (lua_State* tolua_S)
|
|
|
+{
|
|
|
+ int t = lua_type(tolua_S, 2);
|
|
|
+ StringHash key;
|
|
|
+ if (t == LUA_TSTRING)
|
|
|
+ key = StringHash(lua_tostring(tolua_S, 2));
|
|
|
+ else if (t == LUA_TNUMBER)
|
|
|
+ key = StringHash(lua_tonumber(tolua_S, 2));
|
|
|
+ else
|
|
|
+ return 0;
|
|
|
+ Variant& variant = static_cast<VariantMap*>(tolua_tousertype(tolua_S, 1, 0))->operator [](key); // autovivification
|
|
|
+ switch (lua_type(tolua_S, 3)) // Use the type of lua object to determine the final variant type
|
|
|
+ {
|
|
|
+ case LUA_TNIL:
|
|
|
+ variant = Variant::EMPTY;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case LUA_TBOOLEAN:
|
|
|
+ variant = (bool)lua_toboolean(tolua_S, 3); // Still need to cast to bool as Lua/LuaJIT return it as int
|
|
|
+ break;
|
|
|
+
|
|
|
+ case LUA_TNUMBER:
|
|
|
+ {
|
|
|
+ // Use the original variant type to further determine the final variant type
|
|
|
+ // CAVEAT:
|
|
|
+ // If lhs has integral data type and double is desired then lhs needs to be reset first before assigning
|
|
|
+ double value = lua_tonumber(tolua_S, 3);
|
|
|
+ switch (variant.GetType())
|
|
|
+ {
|
|
|
+ case VAR_INT:
|
|
|
+ variant = (int)value;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case VAR_BOOL:
|
|
|
+ variant = value != 0.0f;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case VAR_FLOAT:
|
|
|
+ variant = (float)value;
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ variant = value;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+ case LUA_TSTRING:
|
|
|
+ variant = lua_tostring(tolua_S, 3);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case LUA_TUSERDATA:
|
|
|
+ case LUA_TLIGHTUSERDATA:
|
|
|
+ case LUA_TTABLE:
|
|
|
+ case LUA_TFUNCTION:
|
|
|
+ case LUA_TTHREAD:
|
|
|
+ printf("TODO: VariantMapIndexEvent does not yet support Lua type %d", lua_type(tolua_S, 3));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+#define TOLUA_DISABLE_tolua_CoreLuaAPI_VariantMap__SetupIndex00
|
|
|
+static int tolua_CoreLuaAPI_VariantMap__SetupIndex00(lua_State* tolua_S)
|
|
|
{
|
|
|
#ifndef TOLUA_RELEASE
|
|
|
tolua_Error tolua_err;
|
|
|
if (
|
|
|
- !tolua_isusertype(tolua_S,1,"VariantMap",0,&tolua_err) ||
|
|
|
- !tolua_isurho3dstring(tolua_S,2,0,&tolua_err) ||
|
|
|
- !tolua_isuserdata(tolua_S,3,0,&tolua_err) ||
|
|
|
- !tolua_isnoobj(tolua_S,4,&tolua_err)
|
|
|
+ !tolua_isusertable(tolua_S,1,"VariantMap",0,&tolua_err) ||
|
|
|
+ !tolua_isstring(tolua_S,2,0,&tolua_err) ||
|
|
|
+ !tolua_isnoobj(tolua_S,3,&tolua_err)
|
|
|
)
|
|
|
goto tolua_lerror;
|
|
|
else
|
|
|
#endif
|
|
|
{
|
|
|
- VariantMap* self = (VariantMap*) tolua_tousertype(tolua_S,1,0);
|
|
|
- const String key = ((const String) tolua_tourho3dstring(tolua_S,2,0));
|
|
|
- void* value = ((void*) tolua_tousertype(tolua_S,3,0));
|
|
|
-#ifndef TOLUA_RELEASE
|
|
|
- if (!self) tolua_error(tolua_S,"invalid 'self' in function 'VariantMapSetPtr'", NULL);
|
|
|
-#endif
|
|
|
+ const char* type = ((const char*) tolua_tostring(tolua_S,2,0));
|
|
|
{
|
|
|
- VariantMapSetPtr(self,key,value);
|
|
|
+ // Register our own version of metamethod to handle index and new-index events
|
|
|
+ luaL_getmetatable(tolua_S, type);
|
|
|
+ lua_pushstring(tolua_S, "__index");
|
|
|
+ lua_pushcfunction(tolua_S, VariantMapIndexEvent);
|
|
|
+ lua_rawset(tolua_S, -3);
|
|
|
+ lua_pushstring(tolua_S, "__newindex");
|
|
|
+ lua_pushcfunction(tolua_S, VariantMapNewIndexEvent);
|
|
|
+ lua_rawset(tolua_S, -3);
|
|
|
+ lua_pop(tolua_S, 1);
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
#ifndef TOLUA_RELEASE
|
|
|
tolua_lerror:
|
|
|
- tolua_error(tolua_S,"#ferror in function 'SetPtr'.",&tolua_err);
|
|
|
+ tolua_error(tolua_S,"#ferror in function '_SetupIndex'.",&tolua_err);
|
|
|
return 0;
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-#define TOLUA_DISABLE_tolua_CoreLuaAPI_VariantMap_GetPtr00
|
|
|
-
|
|
|
-static int tolua_CoreLuaAPI_VariantMap_GetPtr00(lua_State* tolua_S)
|
|
|
-{
|
|
|
-#ifndef TOLUA_RELEASE
|
|
|
- tolua_Error tolua_err;
|
|
|
- if (!tolua_isusertype(tolua_S,1,"VariantMap",0,&tolua_err) ||
|
|
|
- !tolua_isurho3dstring(tolua_S,2,0,&tolua_err) ||
|
|
|
- !tolua_isurho3dstring(tolua_S,3,0,&tolua_err) ||
|
|
|
- !tolua_isnoobj(tolua_S,4,&tolua_err))
|
|
|
- goto tolua_lerror;
|
|
|
- else
|
|
|
-#endif
|
|
|
- {
|
|
|
- VariantMap* self = (VariantMap*) tolua_tousertype(tolua_S,1,0);
|
|
|
- const String type = ((const String) tolua_tourho3dstring(tolua_S,2,0));
|
|
|
- const String key = ((const String) tolua_tourho3dstring(tolua_S,3,0));
|
|
|
-#ifndef TOLUA_RELEASE
|
|
|
- if (!self) tolua_error(tolua_S,"invalid 'self' in function 'VariantMapGetPtr'", NULL);
|
|
|
-#endif
|
|
|
- {
|
|
|
- void* tolua_ret = (void*)FindVariant(self, key).GetVoidPtr();
|
|
|
- tolua_pushusertype(tolua_S,tolua_ret, type.CString());
|
|
|
- }
|
|
|
- }
|
|
|
- return 1;
|
|
|
-#ifndef TOLUA_RELEASE
|
|
|
-tolua_lerror:
|
|
|
- tolua_error(tolua_S,"#ferror in function 'GetPtr'.",&tolua_err);
|
|
|
- return 0;
|
|
|
-#endif
|
|
|
-}
|
|
|
$}
|