[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebindings/perl/qtcore/src
From:       Chris Michael Burel <chrisburel () gmail ! com>
Date:       2010-12-30 14:29:31
Message-ID: 20101230142931.B9FE0AC8AC () svn ! kde ! org
[Download RAW message or body]

SVN commit 1210304 by burel:

Add support for Qt::File::read and Qt::DataStream::readRawData.


 M  +2 -0      QtCore4.xs  
 M  +37 -0     util.cpp  
 M  +1 -0      util.h  


--- trunk/KDE/kdebindings/perl/qtcore/src/QtCore4.xs #1210303:1210304
@@ -480,6 +480,8 @@
     newXS(" Qt::Buffer::read", XS_qiodevice_read, __FILE__);
     newXS(" Qt::TcpSocket::read", XS_qiodevice_read, __FILE__);
     newXS(" Qt::TcpServer::read", XS_qiodevice_read, __FILE__);
+    newXS(" Qt::File::read", XS_qiodevice_read, __FILE__);
+    newXS(" Qt::DataStream::readRawData", XS_qdatastream_readrawdata, __FILE__);
 
     newXS(" Qt::XmlStreamAttributes::EXISTS"   , XS_QXmlStreamAttributes_exists, \
                __FILE__);
     newXS(" Qt::XmlStreamAttributes::FETCH"    , XS_QXmlStreamAttributes_at, \
                __FILE__);
--- trunk/KDE/kdebindings/perl/qtcore/src/util.cpp #1210303:1210304
@@ -1612,6 +1612,43 @@
     }
 }
 
+XS(XS_qdatastream_readrawdata) {
+    dXSARGS;
+    if (items != 3) {
+        croak( "%s", "Invalid argument list to Qt::DataStream::readRawData()" );
+    }
+
+    smokeperl_object *o = sv_obj_info(ST(0));
+
+    if (!o) {
+        croak( "Qt::DataStream::read() called on a non-Qt object" );
+    }
+    if(isDerivedFrom(o, "QDataStream") == -1) {
+        croak( "%s", "Qt::DataStream::read() called on a"
+            " non-DataStream object");
+    }
+
+    QDataStream * stream = (QDataStream *) o->smoke->cast(
+        o->ptr,
+        o->classId,
+        o->smoke->idClass("QDataStream").index
+    );
+
+    if ( !SvROK(ST(1)) ) {
+        croak( "%s", "Error: First argument to Qt::DataStream::readRawData(char*, \
uint) should be a scalar reference" ); +    }
+    uint maxSize = SvIV( ST(2) );
+    char* data = new char[maxSize];
+    int bytesRead = stream->readRawData( data, maxSize );
+
+    sv_setsv( SvRV(ST(1)), newSVpvn( data, bytesRead ) );
+
+    // Return the QDataStream that's already at ST(0)
+    delete[] data;
+    ST(0) = sv_2mortal( newSViv( bytesRead ) );
+    XSRETURN(1);
+}
+
 // TODO: Find a better place to put these.
 Q_DECLARE_METATYPE(HV*)
 Q_DECLARE_METATYPE(AV*)
--- trunk/KDE/kdebindings/perl/qtcore/src/util.h #1210303:1210304
@@ -93,6 +93,7 @@
 XS(XS_qbytearray_data);
 
 XS(XS_qiodevice_read);
+XS(XS_qdatastream_readrawdata);
 
 XS(XS_qvariant_value);
 XS(XS_qvariant_from_value);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic