70 lines
1.3 KiB
C++
70 lines
1.3 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#ifndef __NSCRIPTVARIANT__
|
|
#define __NSCRIPTVARIANT__
|
|
|
|
#include "data/nvariant.h"
|
|
#include "script/script_vm.h"
|
|
|
|
namespace GS {
|
|
namespace Script {
|
|
class Object;
|
|
|
|
/// Script variant.
|
|
struct Variant
|
|
{
|
|
enum Type
|
|
{
|
|
Type_None = 0,
|
|
Type_Variant,
|
|
Type_ScriptObject,
|
|
Type_UserObject
|
|
};
|
|
|
|
Type type;
|
|
|
|
GS::Variant variant;
|
|
|
|
bool object_owner;
|
|
Object *object;
|
|
void *ptr;
|
|
uint typetag;
|
|
|
|
bool operator == (const Variant &) const;
|
|
bool operator != (const Variant &) const;
|
|
|
|
void Set();
|
|
void Set(bool v);
|
|
void Set(int v);
|
|
void Set(uint v);
|
|
void Set(float v);
|
|
void Set(const char *v);
|
|
void Set(const GS::Variant &v);
|
|
void Set(Object *object, bool object_owner = false);
|
|
void Set(const void *p, size_t size);
|
|
void Set(void *ptr, uint typetag);
|
|
|
|
Variant();
|
|
Variant(bool v);
|
|
Variant(int v);
|
|
Variant(uint v);
|
|
Variant(float v);
|
|
Variant(const char *v);
|
|
Variant(const GS::Variant &v);
|
|
Variant(Object *object, bool object_owner = false);
|
|
Variant(const void *p, size_t size);
|
|
Variant(void *ptr, uint typetag);
|
|
|
|
~Variant();
|
|
};
|
|
|
|
} // Script
|
|
} // GS
|
|
|
|
|
|
#endif // __NSCRIPTVARIANT__
|