Procházet zdrojové kódy

Add new predefined macros

mingodad před 7 roky
rodič
revize
d8567cfa92

+ 3 - 0
SquiLu/squirrel/sqbaselib.cpp

@@ -685,6 +685,9 @@ void sq_base_register(HSQUIRRELVM v)
 	sq_pushstring(v,_SC("_floatsize_"),-1);
 	sq_pushinteger(v,sizeof(SQFloat));
 	sq_newslot(v,-3, SQFalse);
+	sq_pushstring(v,_SC("_ptrsize_"),-1);
+	sq_pushinteger(v,sizeof(void*));
+	sq_newslot(v,-3, SQFalse);
 	sq_pop(v,1);
 }
 

+ 26 - 1
SquiLu/squirrel/sqstate.cpp

@@ -116,9 +116,31 @@ void SQSharedState::Init()
 	sq_new(_systemstrings,SQObjectPtrVec);
 	sq_new(_types,SQObjectPtrVec);
 	_defined_names = SQTable::Create(this,0);
-	_define_squilu = SQString::Create(this,_SC("__SQUILU__"));
+#define SQUILU_NAME_BASE "__SQUILU_"
+	_define_squilu = SQString::Create(this,_SC(SQUILU_NAME_BASE "_"));
+	_define_squilu_int_sz = SQString::Create(this,_SC(SQUILU_NAME_BASE
+#ifdef _SQ64
+        "INT_SZ8__"
+#else
+        "INT_SZ4__"
+#endif // _SQ64
+        ));
+	_define_squilu_float_sz = SQString::Create(this,_SC(SQUILU_NAME_BASE
+#ifdef SQUSEDOUBLE
+        "FLOAT_SZ8__"
+#else
+        "FLOAT_SZ4__"
+#endif // _SQ64
+        ));
+	_define_squilu_ptr_sz = SQString::Create(this,
+        _SC((sizeof(void *) == 8) ? SQUILU_NAME_BASE "PTR_SZ8__" :
+            SQUILU_NAME_BASE "PTR_SZ4__"));
+#undef SQUILU_NAME_BASE
 	SQObjectPtr value(true);
 	_table(_defined_names)->NewSlot(_define_squilu, value);
+	_table(_defined_names)->NewSlot(_define_squilu_int_sz, value);
+	_table(_defined_names)->NewSlot(_define_squilu_float_sz, value);
+	_table(_defined_names)->NewSlot(_define_squilu_ptr_sz, value);
 	_metamethodsmap = SQTable::Create(this,MT_LAST-1);
 	//adding type strings to avoid memory trashing
 	//types names
@@ -180,6 +202,9 @@ SQSharedState::~SQSharedState()
 	_constructoridx.Null();
 	_destructoridx.Null();
 	_define_squilu.Null();
+	_define_squilu_int_sz.Null();
+	_define_squilu_float_sz.Null();
+	_define_squilu_ptr_sz.Null();
 	_table(_registry)->Finalize();
 	_table(_consts)->Finalize();
 	_table(_metamethodsmap)->Finalize();

+ 3 - 0
SquiLu/squirrel/sqstate.h

@@ -94,6 +94,9 @@ public:
 	SQObjectPtr _constructoridx;
 	SQObjectPtr _destructoridx;
 	SQObjectPtr _define_squilu;
+	SQObjectPtr _define_squilu_int_sz;
+	SQObjectPtr _define_squilu_float_sz;
+	SQObjectPtr _define_squilu_ptr_sz;
 #ifndef NO_GARBAGE_COLLECTOR
 	SQCollectable *_gc_chain;
 #endif