summaryrefslogtreecommitdiffstats
path: root/squirrel_3_0_1_stable/sqrat/sqrat/sqratTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'squirrel_3_0_1_stable/sqrat/sqrat/sqratTypes.h')
-rw-r--r--squirrel_3_0_1_stable/sqrat/sqrat/sqratTypes.h341
1 files changed, 0 insertions, 341 deletions
diff --git a/squirrel_3_0_1_stable/sqrat/sqrat/sqratTypes.h b/squirrel_3_0_1_stable/sqrat/sqrat/sqratTypes.h
deleted file mode 100644
index 09c9a7192..000000000
--- a/squirrel_3_0_1_stable/sqrat/sqrat/sqratTypes.h
+++ /dev/null
@@ -1,341 +0,0 @@
-//
-// SqratTypes: Type Translators
-//
-
-//
-// Copyright (c) 2009 Brandon Jones
-//
-// This software is provided 'as-is', without any express or implied
-// warranty. In no event will the authors be held liable for any damages
-// arising from the use of this software.
-//
-// Permission is granted to anyone to use this software for any purpose,
-// including commercial applications, and to alter it and redistribute it
-// freely, subject to the following restrictions:
-//
-// 1. The origin of this software must not be misrepresented; you must not
-// claim that you wrote the original software. If you use this software
-// in a product, an acknowledgment in the product documentation would be
-// appreciated but is not required.
-//
-// 2. Altered source versions must be plainly marked as such, and must not be
-// misrepresented as being the original software.
-//
-// 3. This notice may not be removed or altered from any source
-// distribution.
-//
-
-#if !defined(_SCRAT_TYPES_H_)
-#define _SCRAT_TYPES_H_
-
-#include <squirrel.h>
-#include <string>
-
-#include "sqratClassType.h"
-
-namespace Sqrat {
-
-//
-// Variable Accessors
-//
-
-// Generic classes
-template<class T>
-struct Var {
- T value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- value = *ClassType<T>::GetInstance(vm, idx);
- }
- static void push(HSQUIRRELVM vm, T value) {
- ClassType<T>::PushInstanceCopy(vm, value);
- }
-};
-
-template<class T>
-struct Var<T&> {
- T value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- value = *ClassType<T>::GetInstance(vm, idx);
- }
- static void push(HSQUIRRELVM vm, T value) {
- ClassType<T>::PushInstanceCopy(vm, value);
- }
-};
-
-template<class T>
-struct Var<T*> {
- T* value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- value = ClassType<T>::GetInstance(vm, idx);
- }
- static void push(HSQUIRRELVM vm, T* value) {
- ClassType<T>::PushInstance(vm, value);
- }
-};
-
-template<class T>
-struct Var<const T&> {
- T value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- value = *ClassType<T>::GetInstance(vm, idx);
- }
- static void push(HSQUIRRELVM vm, T value) {
- ClassType<T>::PushInstanceCopy(vm, value);
- }
-};
-
-template<class T>
-struct Var<const T*> {
- T* value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- value = ClassType<T>::GetInstance(vm, idx);
- }
- static void push(HSQUIRRELVM vm, T* value) {
- ClassType<T>::PushInstance(vm, value);
- }
-};
-
-// Integer Types
-#define SCRAT_INTEGER( type ) \
- template<> \
- struct Var<type> { \
- type value; \
- Var(HSQUIRRELVM vm, SQInteger idx) { \
- SQInteger sqValue; \
- sq_getinteger(vm, idx, &sqValue); \
- value = static_cast<type>(sqValue); \
- } \
- static void push(HSQUIRRELVM vm, type& value) { \
- sq_pushinteger(vm, static_cast<SQInteger>(value)); \
- } \
- };\
- \
- template<> \
- struct Var<const type> { \
- type value; \
- Var(HSQUIRRELVM vm, SQInteger idx) { \
- SQInteger sqValue; \
- sq_getinteger(vm, idx, &sqValue); \
- value = static_cast<type>(sqValue); \
- } \
- static void push(HSQUIRRELVM vm, const type& value) { \
- sq_pushinteger(vm, static_cast<SQInteger>(value)); \
- } \
- }; \
- \
- template<> \
- struct Var<const type&> { \
- type value; \
- Var(HSQUIRRELVM vm, SQInteger idx) { \
- SQInteger sqValue; \
- sq_getinteger(vm, idx, &sqValue); \
- value = static_cast<type>(sqValue); \
- } \
- static void push(HSQUIRRELVM vm, const type& value) { \
- sq_pushinteger(vm, static_cast<SQInteger>(value)); \
- } \
- };
-
-SCRAT_INTEGER(unsigned int)
-SCRAT_INTEGER(signed int)
-SCRAT_INTEGER(unsigned long)
-SCRAT_INTEGER(signed long)
-SCRAT_INTEGER(unsigned short)
-SCRAT_INTEGER(signed short)
-
-#if defined(__int64)
-SCRAT_INTEGER(unsigned __int64)
-SCRAT_INTEGER(signed __int64)
-#endif
-
-// Float Types
-#define SCRAT_FLOAT( type ) \
- template<> \
- struct Var<type> { \
- type value; \
- Var(HSQUIRRELVM vm, SQInteger idx) { \
- SQFloat sqValue; \
- sq_getfloat(vm, idx, &sqValue); \
- value = static_cast<type>(sqValue); \
- } \
- static void push(HSQUIRRELVM vm, type& value) { \
- sq_pushfloat(vm, static_cast<SQFloat>(value)); \
- } \
- }; \
- \
- template<> \
- struct Var<const type> { \
- type value; \
- Var(HSQUIRRELVM vm, SQInteger idx) { \
- SQFloat sqValue; \
- sq_getfloat(vm, idx, &sqValue); \
- value = static_cast<type>(sqValue); \
- } \
- static void push(HSQUIRRELVM vm, const type& value) { \
- sq_pushfloat(vm, static_cast<SQFloat>(value)); \
- } \
- }; \
- template<> \
- struct Var<const type&> { \
- type value; \
- Var(HSQUIRRELVM vm, SQInteger idx) { \
- SQFloat sqValue; \
- sq_getfloat(vm, idx, &sqValue); \
- value = static_cast<type>(sqValue); \
- } \
- static void push(HSQUIRRELVM vm, const type& value) { \
- sq_pushfloat(vm, static_cast<SQFloat>(value)); \
- } \
- };
-
-SCRAT_FLOAT(float)
-SCRAT_FLOAT(double)
-
-// Boolean Types
-template<>
-struct Var<bool> {
- bool value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- SQBool sqValue;
- sq_tobool(vm, idx, &sqValue);
- value = (sqValue != 0);
- }
- static void push(HSQUIRRELVM vm, bool& value) {
- sq_pushbool(vm, static_cast<SQBool>(value));
- }
-};
-
-template<>
-struct Var<const bool> {
- bool value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- SQBool sqValue;
- sq_tobool(vm, idx, &sqValue);
- value = (sqValue != 0);
- }
- static void push(HSQUIRRELVM vm, const bool& value) {
- sq_pushbool(vm, static_cast<SQBool>(value));
- }
-};
-
-template<>
-struct Var<const bool&> {
- bool value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- SQBool sqValue;
- sq_tobool(vm, idx, &sqValue);
- value = (sqValue != 0);
- }
- static void push(HSQUIRRELVM vm, const bool& value) {
- sq_pushbool(vm, static_cast<SQBool>(value));
- }
-};
-
-// String Types
-typedef std::basic_string<SQChar> string;
-
-template<>
-struct Var<SQChar*> {
- SQChar* value;
- HSQOBJECT obj;/* hold a reference to the object holding value during the Var struct lifetime*/
- HSQUIRRELVM v;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- sq_tostring(vm, idx);
- sq_getstackobj(vm, -1, &obj);
- sq_getstring(vm, -1, (const SQChar**)&value);
- sq_addref(vm, &obj);
- sq_pop(vm,1);
- v = vm;
- }
- ~Var()
- {
- if(v && !sq_isnull(obj)) {
- sq_release(v, &obj);
- }
- }
- static void push(HSQUIRRELVM vm, SQChar* value) {
- sq_pushstring(vm, value, -1);
- }
-};
-
-template<>
-struct Var<const SQChar*> {
- const SQChar* value;
- HSQOBJECT obj; /* hold a reference to the object holding value during the Var struct lifetime*/
- HSQUIRRELVM v;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- sq_tostring(vm, idx);
- sq_getstackobj(vm, -1, &obj);
- sq_getstring(vm, -1, &value);
- sq_addref(vm, &obj);
- sq_pop(vm,1);
- v = vm;
- }
- ~Var()
- {
- if(v && !sq_isnull(obj)) {
- sq_release(v, &obj);
- }
- }
- static void push(HSQUIRRELVM vm, const SQChar* value) {
- sq_pushstring(vm, value, -1);
- }
-};
-
-template<>
-struct Var<string> {
- string value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- const SQChar* ret;
- sq_tostring(vm, idx);
- sq_getstring(vm, -1, &ret);
- value = string(ret);
- sq_pop(vm,1);
- }
- static void push(HSQUIRRELVM vm, string value) {
- sq_pushstring(vm, value.c_str(), -1);
- }
-};
-
-template<>
-struct Var<string&> {
- string value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- const SQChar* ret;
- sq_tostring(vm, idx);
- sq_getstring(vm, -1, &ret);
- value = string(ret);
- sq_pop(vm,1);
- }
- static void push(HSQUIRRELVM vm, string value) {
- sq_pushstring(vm, value.c_str(), -1);
- }
-};
-
-template<>
-struct Var<const string&> {
- string value;
- Var(HSQUIRRELVM vm, SQInteger idx) {
- const SQChar* ret;
- sq_tostring(vm, idx);
- sq_getstring(vm, -1, &ret);
- value = string(ret);
- sq_pop(vm,1);
- }
- static void push(HSQUIRRELVM vm, string value) {
- sq_pushstring(vm, value.c_str(), -1);
- }
-};
-
-//
-// Variable Accessors
-//
-
-// Push
-template<class T>
-inline void PushVar(HSQUIRRELVM vm, T value) {
- Var<T>::push(vm, value);
-}
-}
-
-#endif