Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions include/sqconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,21 @@
#ifdef _MSC_VER
typedef __int64 SQInteger;
typedef unsigned __int64 SQUnsignedInteger;
#ifndef _SQ64ON32
typedef unsigned __int64 SQHash; /*should be the same size of a pointer*/
#endif
#else
typedef long long SQInteger;
typedef unsigned long long SQUnsignedInteger;
#ifndef _SQ64ON32
typedef unsigned long long SQHash; /*should be the same size of a pointer*/
#endif
#endif
typedef int SQInt32;
typedef unsigned int SQUnsignedInteger32;
#ifdef _SQ64ON32
typedef unsigned int SQHash; /*should be the same size of a pointer*/
#endif
#else
typedef int SQInteger;
typedef int SQInt32; /*must be 32 bits(also on 64bits processors)*/
Expand All @@ -20,14 +27,13 @@ typedef unsigned int SQUnsignedInteger;
typedef unsigned int SQHash; /*should be the same size of a pointer*/
#endif


#ifdef SQUSEDOUBLE
typedef double SQFloat;
#else
typedef float SQFloat;
#endif

#if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64)
#if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) || defined(_SQ64ON32)
#ifdef _MSC_VER
typedef __int64 SQRawObjectVal; //must be 64bits
#else
Expand All @@ -51,6 +57,12 @@ typedef void* SQUserPointer;
typedef SQUnsignedInteger SQBool;
typedef SQInteger SQRESULT;

#if defined(__cpp_static_assert) && __cpp_static_assert >= 201411L
static_assert(sizeof(SQUserPointer) == sizeof(SQHash));
#else
typedef char _SQ_assert_hash_size[sizeof(SQUserPointer) == sizeof(SQHash) ? 1 : -1];
#endif

#ifdef SQUNICODE
#include <wchar.h>
#include <wctype.h>
Expand Down
4 changes: 4 additions & 0 deletions include/squirrel.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ extern "C" {
#ifndef _SQ64
#define _SQ64
#endif
#else
#if (defined(_SQ64) && !defined(_SQ64ON32) && !defined(_NOSQ64ON32))
#define _SQ64ON32
#endif
#endif


Expand Down
2 changes: 1 addition & 1 deletion squirrel/sqobject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ SQWeakRef *SQRefCounted::GetWeakRef(SQObjectType type)
{
if(!_weakref) {
sq_new(_weakref,SQWeakRef);
#if defined(SQUSEDOUBLE) && !defined(_SQ64)
#if defined(SQUSEDOUBLE) && !defined(_SQ64) || defined(_SQ64ON32)
_weakref->_obj._unVal.raw = 0; //clean the whole union on 32 bits with double
#endif
_weakref->_obj._type = type;
Expand Down
2 changes: 1 addition & 1 deletion squirrel/sqobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ struct SQObjectPtr;
#define tointeger(num) ((sq_type(num)==OT_FLOAT)?(SQInteger)_float(num):_integer(num))
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
#if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64)
#if defined(SQUSEDOUBLE) && !defined(_SQ64) || !defined(SQUSEDOUBLE) && defined(_SQ64) || defined(_SQ64ON32)
#define SQ_REFOBJECT_INIT() SQ_OBJECT_RAWINIT()
#else
#define SQ_REFOBJECT_INIT()
Expand Down