diff --git a/src/ecl_fun.cpp b/src/ecl_fun.cpp index 1676491..5a89fc9 100644 --- a/src/ecl_fun.cpp +++ b/src/ecl_fun.cpp @@ -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); } diff --git a/src/ecl_fun.h b/src/ecl_fun.h index d0bf31f..37eaf58 100644 --- a/src/ecl_fun.h +++ b/src/ecl_fun.h @@ -219,6 +219,12 @@ typedef QListIterator MetaArgIterator; typedef QList StrList; typedef QList IntList; +#ifdef Q_PROCESSOR_X86_64 +typedef qulonglong void_star_int; +#else +typedef qulong void_star_int; +#endif + class QByteArray; class QObject; class QEvent; diff --git a/src/eql.cpp b/src/eql.cpp index 9b71fbb..1975be4 100644 --- a/src/eql.cpp +++ b/src/eql.cpp @@ -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)")