fixes for MSVC 64bit compilers

This commit is contained in:
polos 2016-11-27 12:18:14 +01:00
parent 0e4c00499a
commit 489084cd17
3 changed files with 13 additions and 7 deletions

View file

@ -621,7 +621,7 @@ static cl_object new_qt_object(void* pointer, uint unique, int id, bool finalize
STATIC_SYMBOL_PKG (s_new_qt_object, "NEW-QT-OBJECT", "EQL")
cl_object l_qt_object = cl_funcall(5,
s_new_qt_object,
ecl_make_unsigned_integer((ulong)pointer),
ecl_make_unsigned_integer((void_star_int)pointer),
ecl_make_unsigned_integer(unique),
MAKE_FIXNUM(id),
finalize ? Ct : Cnil);
@ -1122,7 +1122,7 @@ static MetaArg toMetaArg(const QByteArray& sType, cl_object l_arg) {
else if(sType.endsWith('*')) {
if(sType.startsWith('Q') || sType.startsWith("const Q")) {
QtObject o = toQtObject(l_arg);
ulong l = (ulong)o.pointer;
void_star_int l = (void_star_int)o.pointer;
// cast from QObject to non QObject + multiple inheritance problem
// e.g. QGraphicsObject, which inherits both QObject and QGraphicsItem
int q = sType.indexOf('Q');
@ -1286,7 +1286,7 @@ cl_object to_lisp_arg(const MetaArg& arg) {
else if("const char*" == sType) {
l_ret = STRING_COPY(*(char**)p); }
else {
l_ret = ecl_make_unsigned_integer((ulong)*(void**)p); }}
l_ret = ecl_make_unsigned_integer((void_star_int)*(void**)p); }}
else if(T_QFileInfo == n) l_ret = from_qfileinfo(*(QFileInfo*)p);
else if(T_QFileInfoList == n) l_ret = from_qfileinfolist(*(QFileInfoList*)p);
else if(T_QGradientStop == n) l_ret = from_qgradientstop(*(QGradientStop*)p);
@ -1892,7 +1892,7 @@ cl_object qinvoke_method2(cl_object l_obj, cl_object l_cast, cl_object l_name, c
int i = -1;
void* _this = 0;
if(this_arg) {
ulong l = (ulong)obj.pointer;
void_star_int l = (void_star_int)obj.pointer;
if(qobject_align) {
// cast from QObject to non QObject + multiple inheritance problem
l += sizeof(QObject); }

View file

@ -219,6 +219,12 @@ typedef QListIterator<MetaArg> MetaArgIterator;
typedef QList<QByteArray> StrList;
typedef QList<int> IntList;
#ifdef Q_PROCESSOR_X86_64
typedef qulonglong void_star_int;
#else
typedef qulong void_star_int;
#endif
class QByteArray;
class QObject;
class QEvent;

View file

@ -11,11 +11,11 @@ const char EQL::version[] = "16.11.1"; // Nov 2016
extern "C" void ini_EQL(cl_object);
static char* argv[] = {"EQL5"};
static const char* _argv_[] = {"EQL5"};
EQL::EQL() : QObject() {
if(!cl_booted) {
cl_boot(1, argv); }
cl_boot(1, (char**)_argv_); }
iniCLFunctions();
LObjects::ini(this);
read_VV(OBJNULL, ini_EQL); } // see "src/make-eql-lib.lisp"
@ -146,7 +146,7 @@ void EQL::exec(QWidget* widget, const QString& lispFile, const QString& slimeHoo
eval("(in-package :eql)");
forms << QString("(set-home \"%1\")").arg(home())
<< QString("(defvar *qt-main* (qt-object %1 0 (qid \"%2\")))")
.arg((ulong)widget)
.arg((void_star_int)widget)
.arg(QString(LObjects::vanillaQtSuperClassName(widget->metaObject())))
<< QString("(export '*qt-main*)")
<< QString("(in-package :eql-user)")