示例#1
0
void *lqtL_toudata (lua_State *L, int index, const char *name) {
    void *ret = 0;
    if (!lqtL_testudata(L, index, name)) return 0;
    void **pp = static_cast<void**>(lua_touserdata(L, index));
    ret = *pp;
    lua_getfield(L, index, name);
    ret = (void*)(lua_tointeger(L, -1) + (char*)ret);
    lua_pop(L, 1);
    return ret;
}
示例#2
0
void lqtL_eraseudata (lua_State *L, int index, const char *name) {
    void *ret = 0;
    if (name!=NULL && !lqtL_testudata(L, index, name)) return;
    void **pp = static_cast<void**>(lua_touserdata(L, index));
    void *p = *pp;
    *pp = 0;
    lqtL_getpointertable(L); // (1)
    lua_pushlightuserdata(L, p); // (2)
    lua_pushnil(L); // (3)
    lua_settable(L, -3); // (1)
    lua_pop(L, 1);
    return;
}
示例#3
0
// converts the value at index `n` to `to_type` and returns a pointer to it
void *lqtL_convert(lua_State *L, int n, const char *to_type) {
    if (lqtL_testudata(L, n, to_type))
        return lqtL_toudata(L, n, to_type);
    int oldtop = lua_gettop(L);
    luaL_getmetatable(L, to_type);
    lua_getfield(L, -1, "__convert");
    if (lua_isnil(L, -1)) {
        lua_settop(L, oldtop);
        return false;
    }
    lqt_convertfunc func = (lqt_convertfunc) lua_touserdata(L, -1);
    lua_settop(L, oldtop);
    return func(L, n);
}
示例#4
0
int lqtL_qvariant_setValue(lua_State *L) {
	QVariant* self = static_cast<QVariant*>(lqtL_toudata(L, 1, "QVariant*"));
	lqtL_selfcheck(L, self, "QVariant");
	/* basic types */
	if (lua_isnil(L, 2)) {
		self->clear();
	} else if (lua_isboolean(L, 2)) {
		self->setValue((bool)lua_toboolean(L, 2));
	} else if (lua_isnumber(L, 2)) {
		self->setValue((double)lua_tonumber(L, 2));
	} else if (lua_isstring(L, 2)) {
		size_t size;
		const char * str = lua_tolstring(L, 2, &size);
		self->setValue(QByteArray(str, size));
	} /* QtCore types */
	else if (lqtL_testudata(L, 2, "QBitArray*")) {
		self->setValue(*(QBitArray*)lqtL_toudata(L, 2, "QBitArray*"));
	} else if (lqtL_testudata(L, 2, "QByteArray*")) {
		self->setValue(*(QByteArray*)lqtL_toudata(L, 2, "QByteArray*"));
	} else if (lqtL_testudata(L, 2, "QChar*")) {
		self->setValue(*(QChar*)lqtL_toudata(L, 2, "QChar*"));
	} else if (lqtL_testudata(L, 2, "QDate*")) {
		self->setValue(*(QDate*)lqtL_toudata(L, 2, "QDate*"));
	} else if (lqtL_testudata(L, 2, "QDateTime*")) {
		self->setValue(*(QDateTime*)lqtL_toudata(L, 2, "QDateTime*"));
	} else if (lqtL_testudata(L, 2, "QKeySequence*")) {
		self->setValue(*(QKeySequence*)lqtL_toudata(L, 2, "QKeySequence*"));
	} else if (lqtL_testudata(L, 2, "QLine*")) {
		self->setValue(*(QLine*)lqtL_toudata(L, 2, "QLine*"));
	} else if (lqtL_testudata(L, 2, "QLineF*")) {
		self->setValue(*(QLineF*)lqtL_toudata(L, 2, "QLineF*"));
	} else if (lqtL_testudata(L, 2, "QList<QVariant>*")) {
		self->setValue(*(QList<QVariant>*)lqtL_toudata(L, 2, "QList<QVariant>*"));
	} else if (lqtL_testudata(L, 2, "QLocale*")) {
		self->setValue(*(QLocale*)lqtL_toudata(L, 2, "QLocale*"));
	} else if (lqtL_testudata(L, 2, "QRect*")) {
		self->setValue(*(QRect*)lqtL_toudata(L, 2, "QRect*"));
	} else if (lqtL_testudata(L, 2, "QRectF*")) {
		self->setValue(*(QRectF*)lqtL_toudata(L, 2, "QRectF*"));
	} else if (lqtL_testudata(L, 2, "QRegExp*")) {
		self->setValue(*(QRegExp*)lqtL_toudata(L, 2, "QRegExp*"));
	} else if (lqtL_testudata(L, 2, "QSize*")) {
		self->setValue(*(QSize*)lqtL_toudata(L, 2, "QSize*"));
	} else if (lqtL_testudata(L, 2, "QSizeF*")) {
		self->setValue(*(QSizeF*)lqtL_toudata(L, 2, "QSizeF*"));
	} else if (lqtL_testudata(L, 2, "QString*")) {
		self->setValue(*(QString*)lqtL_toudata(L, 2, "QString*"));
	} else if (lqtL_testudata(L, 2, "QStringList*")) {
		self->setValue(*(QStringList*)lqtL_toudata(L, 2, "QStringList*"));
	} else if (lqtL_testudata(L, 2, "QTime*")) {
		self->setValue(*(QTime*)lqtL_toudata(L, 2, "QTime*"));
	} else if (lqtL_testudata(L, 2, "QUrl*")) {
		self->setValue(*(QUrl*)lqtL_toudata(L, 2, "QUrl*"));
	} 
#ifdef MODULE_qtgui	
	/* QtGui types */
	else if (lqtL_testudata(L, 2, "QBitmap*")) {
		self->setValue(*(QBitmap*)lqtL_toudata(L, 2, "QBitmap*"));
	} else if (lqtL_testudata(L, 2, "QBrush*")) {
		self->setValue(*(QBrush*)lqtL_toudata(L, 2, "QBrush*"));
	} else if (lqtL_testudata(L, 2, "QColor*")) {
		self->setValue(*(QColor*)lqtL_toudata(L, 2, "QColor*"));
	} else if (lqtL_testudata(L, 2, "QCursor*")) {
		self->setValue(*(QCursor*)lqtL_toudata(L, 2, "QCursor*"));
	} else if (lqtL_testudata(L, 2, "QFont*")) {
		self->setValue(*(QFont*)lqtL_toudata(L, 2, "QFont*"));
	} else if (lqtL_testudata(L, 2, "QIcon*")) {
		self->setValue(*(QIcon*)lqtL_toudata(L, 2, "QIcon*"));
	} else if (lqtL_testudata(L, 2, "QImage*")) {
		self->setValue(*(QImage*)lqtL_toudata(L, 2, "QImage*"));
	} else if (lqtL_testudata(L, 2, "QMatrix*")) {
		self->setValue(*(QMatrix*)lqtL_toudata(L, 2, "QMatrix*"));
	} else if (lqtL_testudata(L, 2, "QMatrix4x4*")) {
		self->setValue(*(QMatrix4x4*)lqtL_toudata(L, 2, "QMatrix4x4*"));
	} else if (lqtL_testudata(L, 2, "QPalette*")) {
		self->setValue(*(QPalette*)lqtL_toudata(L, 2, "QPalette*"));
	} else if (lqtL_testudata(L, 2, "QPen*")) {
		self->setValue(*(QPen*)lqtL_toudata(L, 2, "QPen*"));
	} else if (lqtL_testudata(L, 2, "QPoint*")) {
		self->setValue(*(QPoint*)lqtL_toudata(L, 2, "QPoint*"));
	} else if (lqtL_testudata(L, 2, "QPointF*")) {
		self->setValue(*(QPointF*)lqtL_toudata(L, 2, "QPointF*"));
	} else if (lqtL_testudata(L, 2, "QPixmap*")) {
		self->setValue(*(QPixmap*)lqtL_toudata(L, 2, "QPixmap*"));
	} else if (lqtL_testudata(L, 2, "QPolygon*")) {
		self->setValue(*(QPolygon*)lqtL_toudata(L, 2, "QPolygon*"));
	} else if (lqtL_testudata(L, 2, "QQuaternion*")) {
		self->setValue(*(QQuaternion*)lqtL_toudata(L, 2, "QQuaternion*"));
	} else if (lqtL_testudata(L, 2, "QRegion*")) {
		self->setValue(*(QRegion*)lqtL_toudata(L, 2, "QRegion*"));
	} else if (lqtL_testudata(L, 2, "QSizePolicy*")) {
		self->setValue(*(QSizePolicy*)lqtL_toudata(L, 2, "QSizePolicy*"));
	} else if (lqtL_testudata(L, 2, "QTextFormat*")) {
		self->setValue(*(QTextFormat*)lqtL_toudata(L, 2, "QTextFormat*"));
	} else if (lqtL_testudata(L, 2, "QTextLength*")) {
		self->setValue(*(QTextLength*)lqtL_toudata(L, 2, "QTextLength*"));
	} else if (lqtL_testudata(L, 2, "QTransform*")) {
		self->setValue(*(QTransform*)lqtL_toudata(L, 2, "QTransform*"));
	} else if (lqtL_testudata(L, 2, "QVector2D*")) {
		self->setValue(*(QVector2D*)lqtL_toudata(L, 2, "QVector2D*"));
	} else if (lqtL_testudata(L, 2, "QVector3D*")) {
		self->setValue(*(QVector3D*)lqtL_toudata(L, 2, "QVector3D*"));
	} else if (lqtL_testudata(L, 2, "QVector4D*")) {
		self->setValue(*(QVector4D*)lqtL_toudata(L, 2, "QVector4D*"));
	}
#endif
	return 0;
}