Ejemplo n.º 1
0
void GFFStruct::load() const {
	if (!_fields.empty())
		return;

	Common::SeekableReadStream &gff = _parent->getStream();

	// Read the field(s)
	if      (_fieldCount == 1)
		readField (gff, _fieldIndex);
	else if (_fieldCount > 1)
		readFields(gff, _fieldIndex, _fieldCount);
}
Ejemplo n.º 2
0
void GFF3Struct::load(uint32 offset) {
	Common::SeekableReadStream &data = _parent->getStream(offset);

	_id         = data.readUint32LE();
	_fieldIndex = data.readUint32LE();
	_fieldCount = data.readUint32LE();

	// Read the field(s)
	if      (_fieldCount == 1)
		readField (data, _fieldIndex);
	else if (_fieldCount > 1)
		readFields(data, _fieldIndex, _fieldCount);
}
Ejemplo n.º 3
0
void Q3DataBrowser::postNav(bool primeUpd)
{
    if (primeUpd) {
        QSqlRecord* buf = d->frm.record();
        Q3SqlCursor* cur = d->cur.cursor();
        if (!buf || !cur)
            return;
        currentChanged(cur);
        cur->primeUpdate();
        emit primeUpdate(buf);
        readFields();
    }
    updateBoundary();
}
Ejemplo n.º 4
0
void Q3DataBrowser::insert()
{
    QSqlRecord* buf = d->frm.record();
    Q3SqlCursor* cur = d->cur.cursor();
    if (!buf || !cur)
        return;
    bool doIns = true;
    QSql::Confirm conf = QSql::Yes;
    switch (d->dat.mode()) {
    case QSql::Insert:
        if (autoEdit()) {
            if (confirmInsert())
                conf = confirmEdit(QSql::Insert);
            switch (conf) {
            case QSql::Yes:
                insertCurrent();
                break;
            case QSql::No:
                break;
            case QSql::Cancel:
                doIns = false;
                break;
            }
        }
        break;
    default:
        if (autoEdit() && currentEdited()) {
            if (confirmUpdate())
                conf = confirmEdit(QSql::Update);
            switch (conf) {
            case QSql::Yes:
                updateCurrent();
                break;
            case QSql::No:
                break;
            case QSql::Cancel:
                doIns = false;
                break;
            }
        }
        break;
    }
    if (doIns) {
        d->dat.setMode(QSql::Insert);
        sqlCursor()->primeInsert();
        emit primeInsert(d->frm.record());
        readFields();
    }
}
void
OSBNameElement::read(const std::string &typeName)
{
    OSG_OSB_LOG(("OSBNameElement::read [%s]\n", typeName.c_str()));

    BinaryReadHandler *rh        = editRoot()->getReadHandler();
    UInt8              fcPtrType;
    UInt16             version;

    rh->getValue(fcPtrType);
    rh->getValue(version  );

    setContainer(NameUnrecPtr(Name::create()));
    readFields("", "");
}
Ejemplo n.º 6
0
bool QSqlForm::qt_invoke( int _id, QUObject* _o )
{
    switch ( _id - staticMetaObject()->slotOffset() ) {
    case 0: readField((QWidget*)static_QUType_ptr.get(_o+1)); break;
    case 1: writeField((QWidget*)static_QUType_ptr.get(_o+1)); break;
    case 2: readFields(); break;
    case 3: writeFields(); break;
    case 4: clear(); break;
    case 5: clearValues(); break;
    case 6: clearValues((bool)static_QUType_bool.get(_o+1)); break;
    default:
	return QObject::qt_invoke( _id, _o );
    }
    return TRUE;
}
int Q3DataView::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QWidget::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: refresh((*reinterpret_cast< QSqlRecord*(*)>(_a[1]))); break;
        case 1: readFields(); break;
        case 2: writeFields(); break;
        case 3: clearValues(); break;
        }
        _id -= 4;
    }
    return _id;
}
Ejemplo n.º 8
0
//------------------------------------------------------------------------------
void SdoDialog::startRead()
{
    eObdType obdType;
    int size = 0;
    tOplkError ret;

    enableFields(false);
    readFields();

    obdType = pDataTypeBox->itemData(pDataTypeBox->currentIndex()).value<eObdType>();

    switch (obdType)
    {
        case kObdTypeUInt8:
        case kObdTypeInt8:
            size = 1;
            break;

        case kObdTypeUInt16:
        case kObdTypeInt16:
            size = 2;
            break;

        case kObdTypeUInt32:
        case kObdTypeInt32:
            size = 4;
            break;

        case kObdTypeUInt64:
        case kObdTypeInt64:
            size = 8;
            break;

        case kObdTypeVString:
        case kObdTypeDomain:
            size = 4096*1024;
            break;
    }
    data.resize(size);

    ret = oplk_postUserEvent(readButton);
    if (ret != kErrorOk)
    {
        enableFields(true);
    }
}
Ejemplo n.º 9
0
void Q3DataBrowser::update()
{
    QSqlRecord* buf = d->frm.record();
    Q3SqlCursor* cur = d->cur.cursor();
    if (!buf || !cur)
        return;
    QSql::Confirm conf = QSql::Yes;
    switch (d->dat.mode()){
    case QSql::Insert:
        if (confirmInsert())
            conf = confirmEdit(QSql::Insert);
        switch (conf) {
            case QSql::Yes:
                if (insertCurrent())
                    d->dat.setMode(QSql::Update);
            break;
            case QSql::No:
                d->dat.setMode(QSql::Update);
            cur->editBuffer(true);
            readFields();
            break;
            case QSql::Cancel:
            break;
        }
    break;
    default:
        d->dat.setMode(QSql::Update);
        if (confirmUpdate())
            conf = confirmEdit(QSql::Update);
        switch (conf) {
        case QSql::Yes:
            updateCurrent();
            break;
        case QSql::No:
        case QSql::Cancel:
            break;
        }
        break;
    }
}
void Foam::Cloud<ParticleType>::initCloud(const bool checkClass)
{
    IOPosition<ParticleType> ioP(*this);

    if (ioP.headerOk())
    {
        ioP.readData(*this, checkClass);
        ioP.close();

        if (this->size())
        {
            readFields();
        }
    }
    else
    {
        WarningIn("Cloud<ParticleType>::initCloud(const bool checkClass)")
            << "Cannot read particle positions file " << nl
            << "    " << ioP.path() << nl
            << "    assuming the initial cloud contains 0 particles." << endl;
    }
}
Ejemplo n.º 11
0
Transfer * ResponseProtocol::parse( const QByteArray & wire, uint & bytes )
{
	m_bytes = 0;
	m_collatingFields.clear();
	//m_din = new QDataStream( wire, IO_ReadOnly );
	QBuffer inBuf( wire );
	inBuf.open( IO_ReadOnly); 
	m_din.setDevice( &inBuf );
	m_din.setByteOrder( QDataStream::LittleEndian );
	
	// check that this begins with a HTTP (is a response)
	Q_UINT32 val;
	m_din >> val;
	m_bytes += sizeof( Q_UINT32 );
	
	Q_ASSERT( qstrncmp( (const char *)&val, "HTTP", strlen( "HTTP" ) ) == 0 );
	
	// read rest of HTTP header and look for a 301 redirect. 
	QCString headerFirst;
	if ( !readGroupWiseLine( headerFirst ) )
		return 0;
	// pull out the HTTP return code
	int firstSpace = headerFirst.find( ' ' );
	QString rtnField = headerFirst.mid( firstSpace, headerFirst.find( ' ', firstSpace + 1 ) );
	bool ok = true;
	int rtnCode;
	int packetState = -1;
	rtnCode = rtnField.toInt( &ok );
	debug( "CoreProtocol::readResponse() got HTTP return code " );
	// read rest of header
	QStringList headerRest;
	QCString line;
	while ( line != "\r\n" )
	{
		if ( !readGroupWiseLine( line ) )
		{
			m_din.unsetDevice();
			return 0;
		}
		headerRest.append( line );
		debug( QString( "- read header line - (%1) : %2" ).arg( line.length() ).arg( line.data() ) );
	}
	debug( "ResponseProtocol::readResponse() header finished" );
	// if it's a redirect, set flag
	if ( ok && rtnCode == 301 )
	{	
		debug( "- server redirect " );
		packetState = ServerRedirect;
		m_din.unsetDevice();
		return 0;
	}
	// other header processing ( 500! )
	if ( ok && rtnCode == 500 )
	{
		debug( QString( "- server error %1" ).arg( rtnCode ) );
		packetState = ServerError;
		m_din.unsetDevice();
		return 0;
	}
	if ( ok && rtnCode == 404 )
	{
		debug( QString( "- server error %1" ).arg( rtnCode ) );
		packetState = ServerError;
		m_din.unsetDevice();
		return 0;
	}
	if ( m_din.atEnd() )
	{
		debug( "- no fields" );
		packetState = ProtocolError;
		m_din.unsetDevice();
		return 0;
	}
	
	// read fields
	if ( !readFields( -1 ) )
	{
		m_din.unsetDevice();
		return 0;
	}
	// find transaction id field and create Response object if nonzero
	int tId = 0;
	int resultCode = 0;
	Field::FieldListIterator it;
	Field::FieldListIterator end = m_collatingFields.end();
	it = m_collatingFields.find( NM_A_SZ_TRANSACTION_ID );
	if ( it != end )
	{
		Field::SingleField * sf = dynamic_cast<Field::SingleField*>( *it );
		if ( sf )
		{
			tId = sf->value().toInt();
			debug( QString( "ResponseProtocol::readResponse() - transaction ID is %1" ).arg( tId ) );
			m_collatingFields.remove( it );
			delete sf;
		}
	}
	it = m_collatingFields.find( NM_A_SZ_RESULT_CODE );
	if ( it != end )
	{
		Field::SingleField * sf = dynamic_cast<Field::SingleField*>( *it );
		if ( sf )
		{
			resultCode = sf->value().toInt();
			debug( QString( "ResponseProtocol::readResponse() - result code is %1" ).arg( resultCode ) );
			m_collatingFields.remove( it );
			delete sf;
		}
	}
	// append to inQueue
	if ( tId )
	{
		debug( QString( "ResponseProtocol::readResponse() - setting state Available, got %1 fields in base array" ).arg(m_collatingFields.count() ) );
		packetState = Available;
		bytes = m_bytes;
		m_din.unsetDevice();
		return new Response( tId, resultCode, m_collatingFields );
	}
	else
	{
		debug( "- WARNING - NO TRANSACTION ID FOUND!" );
		m_state = ProtocolError;
		m_din.unsetDevice();
		m_collatingFields.purge();
		return 0;
	}
}
Ejemplo n.º 12
0
bool ResponseProtocol::readFields( int fieldCount, Field::FieldList * list )
{
	// build a list of fields.  
	// If there is already a list of fields stored in m_collatingFields, 
	// the list we're reading on this iteration must be a nested list
	// so when we're done reading it, add it to the MultiList element
	// that is the last element in the top list in m_collatingFields.
	// if we find the beginning of a new nested list, push the current list onto m_collatingFields
	debug( "ResponseProtocol::readFields()" );
	if ( fieldCount > 0 )
		debug( QString( "reading %1 fields" ).arg( fieldCount ) );
	Field::FieldList currentList;
	while ( fieldCount != 0 )  // prevents bad input data from ruining our day
	{
		// the field being read
		// read field
		Q_UINT8 type, method;
		Q_UINT32 val;
		QCString tag;
		// read uint8 type
		if ( !okToProceed() )
		{
			currentList.purge();
			return false;
		}
		m_din >> type;
		m_bytes += sizeof( Q_UINT8 );
		// if type is 0 SOMETHING_INVALID, we're at the end of the fields
		if ( type == 0 ) /*&& m_din->atEnd() )*/
		{
			debug( "- end of field list" );
			m_packetState = FieldsRead;
			// do something to indicate we're done
			break;
		}
		// read uint8 method
		if ( !okToProceed() )
		{
			currentList.purge();
			return false;
		}
		m_din >> method;
		m_bytes += sizeof( Q_UINT8 );
		// read tag and length
		if ( !safeReadBytes( tag, val ) )
		{
			currentList.purge();
			return false;
		}

		debug( QString( "- type: %1, method: %2, tag: %3," ).arg( type ).arg( method ).arg( tag.data() ) );
		// if multivalue or array
		if ( type == NMFIELD_TYPE_MV || type == NMFIELD_TYPE_ARRAY )
		{
			// read length uint32
			if ( !okToProceed() )
			{
				currentList.purge();
				return false;
			}
			m_din >> val;
			m_bytes += sizeof( Q_UINT32 );

			// create multifield
			debug( QString( " multi field containing: %1" ).arg( val ) );
			Field::MultiField* m = new Field::MultiField( tag, method, 0, type );
			currentList.append( m );
			if ( !readFields( val, &currentList) )
			{
				currentList.purge();
				return false;
			}
		}
		else 
		{
		
			if ( type == NMFIELD_TYPE_UTF8 || type == NMFIELD_TYPE_DN )
			{
				QCString rawData;
				if( !safeReadBytes( rawData, val ) )
				{
					currentList.purge();
					return false;
				}
				if ( val > NMFIELD_MAX_STR_LENGTH )
				{
					m_packetState = ProtocolError;
					break;
				}
				// convert to unicode - ignore the terminating NUL, because Qt<3.3.2 doesn't sanity check val.
				QString fieldValue = QString::fromUtf8( rawData.data(), val - 1 );
				debug( QString( "- utf/dn single field: %1" ).arg( fieldValue ) );
				// create singlefield
				Field::SingleField* s = new Field::SingleField( tag, method, 0, type, fieldValue );
				currentList.append( s );
			}
			else
			{
				// otherwise ( numeric )
				// read value uint32
				if ( !okToProceed() )
				{
					currentList.purge();
					return false;
				}
				m_din >> val;
				m_bytes += sizeof( Q_UINT32 );
				debug( QString( "- numeric field: %1" ).arg( val ) );
				Field::SingleField* s = new Field::SingleField( tag, method, 0, type, val );
				currentList.append( s );
			}
		}
		// decrease the fieldCount if we're using it
		if ( fieldCount > 0 )
			fieldCount--;
	}
Ejemplo n.º 13
0
//------------------------------------------------------------------------------
void SdoDialog::startWrite()
{
    eObdType obdType;
    int size = 0;
    tOplkError ret;

    enableFields(false);
    readFields();

    obdType = pDataTypeBox->itemData(pDataTypeBox->currentIndex()).value<eObdType>();

    switch (obdType)
    {
        case kObdTypeVString:
            data = pDataEdit->text().toAscii();
            break;

        case kObdTypeDomain:
            data = QByteArray::fromHex(pDataEdit->text().toAscii());
            break;

        default:
            QStringList list = pDataEdit->text().split(QRegExp("[^0-9a-fA-Fx]+"), QString::SkipEmptyParts);
            if (list.count() < 1)
            {
                QMessageBox::critical(this, "Data invalid",
                        "The specified data field does not consist of one number. Please correct and try again.");
                enableFields(true);
                return;
            }
            bool fConvOk = false;
            quint64 uval;
            qint64 val;
            switch (obdType)
            {
                case kObdTypeUInt8:
                case kObdTypeUInt16:
                case kObdTypeUInt32:
                case kObdTypeUInt64:
                    uval = list[0].toULongLong(&fConvOk, 0);
                    if (!fConvOk)
                    {
                        QMessageBox::critical(this, "Data invalid",
                                "The specified data format is not an unsigned integer. Please correct and try again.");
                        enableFields(true);
                        return;
                    }
                    data.resize(8);
                    qToLittleEndian<quint64>(uval, (uchar*)data.data());
                    break;

                case kObdTypeInt8:
                case kObdTypeInt16:
                case kObdTypeInt32:
                case kObdTypeInt64:
                    val = list[0].toLongLong(&fConvOk, 0);
                    if (!fConvOk)
                    {
                        QMessageBox::critical(this, "Data invalid",
                                "The specified data format is not a signed integer. Please correct and try again.");
                        enableFields(true);
                        return;
                    }
                    data.resize(8);
                    qToLittleEndian<qint64>(val, (uchar*)data.data());
                    break;
            }
            switch (obdType)
            {
                case kObdTypeUInt8:
                case kObdTypeInt8:
                    size = 1;
                    break;

                case kObdTypeUInt16:
                case kObdTypeInt16:
                    size = 2;
                    break;

                case kObdTypeUInt32:
                case kObdTypeInt32:
                    size = 4;
                    break;

                case kObdTypeUInt64:
                case kObdTypeInt64:
                    size = 8;
                    break;
            }
            data.resize(size);
    }

    ret = oplk_postUserEvent(writeButton);
    if (ret != kErrorOk)
    {
        enableFields(true);
    }
}
Ejemplo n.º 14
0
void Q3DataView::refresh(QSqlRecord* buf)
{
    if (buf && buf != record())
        setRecord(buf);
    readFields();
}