mirror of
https://github.com/love2d/love.git
synced 2026-08-18 19:54:22 +02:00
Add an easier std::string Variant constructor.
This commit is contained in:
@@ -58,21 +58,26 @@ Variant::Variant(double number)
|
|||||||
data.number = number;
|
data.number = number;
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant::Variant(const char *string, size_t len)
|
Variant::Variant(const char *str, size_t len)
|
||||||
{
|
{
|
||||||
if (len <= MAX_SMALL_STRING_LENGTH)
|
if (len <= MAX_SMALL_STRING_LENGTH)
|
||||||
{
|
{
|
||||||
type = SMALLSTRING;
|
type = SMALLSTRING;
|
||||||
memcpy(data.smallstring.str, string, len);
|
memcpy(data.smallstring.str, str, len);
|
||||||
data.smallstring.len = (uint8) len;
|
data.smallstring.len = (uint8) len;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
type = STRING;
|
type = STRING;
|
||||||
data.string = new SharedString(string, len);
|
data.string = new SharedString(str, len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Variant::Variant(const std::string &str)
|
||||||
|
: Variant(str.c_str(), str.length())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
Variant::Variant(void *lightuserdata)
|
Variant::Variant(void *lightuserdata)
|
||||||
: type(LUSERDATA)
|
: type(LUSERDATA)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,6 +26,7 @@
|
|||||||
#include "common/int.h"
|
#include "common/int.h"
|
||||||
|
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
@@ -59,6 +60,7 @@ public:
|
|||||||
: len(len)
|
: len(len)
|
||||||
{
|
{
|
||||||
str = new char[len+1];
|
str = new char[len+1];
|
||||||
|
str[len] = '\0';
|
||||||
memcpy(str, string, len);
|
memcpy(str, string, len);
|
||||||
}
|
}
|
||||||
virtual ~SharedString() { delete[] str; }
|
virtual ~SharedString() { delete[] str; }
|
||||||
@@ -99,7 +101,8 @@ public:
|
|||||||
Variant();
|
Variant();
|
||||||
Variant(bool boolean);
|
Variant(bool boolean);
|
||||||
Variant(double number);
|
Variant(double number);
|
||||||
Variant(const char *string, size_t len);
|
Variant(const char *str, size_t len);
|
||||||
|
Variant(const std::string &str);
|
||||||
Variant(void *lightuserdata);
|
Variant(void *lightuserdata);
|
||||||
Variant(love::Type *type, love::Object *object);
|
Variant(love::Type *type, love::Object *object);
|
||||||
Variant(std::vector<std::pair<Variant, Variant>> *table);
|
Variant(std::vector<std::pair<Variant, Variant>> *table);
|
||||||
|
|||||||
Reference in New Issue
Block a user