// --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- DecimalDatatypeValidator::DecimalDatatypeValidator(MemoryManager* const manager) :AbstractNumericValidator(0, 0, 0, DatatypeValidator::Decimal, manager) , fTotalDigits(0) , fFractionDigits(0) { setOrdered(XSSimpleTypeDefinition::ORDERED_TOTAL); setNumeric(true); }
XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Constructors and Destructor // --------------------------------------------------------------------------- FloatDatatypeValidator::FloatDatatypeValidator(MemoryManager* const manager) :AbstractNumericValidator(0, 0, 0, DatatypeValidator::Float, manager) { setOrdered(XSSimpleTypeDefinition::ORDERED_PARTIAL); setBounded(true); setFinite(true); setNumeric(true); }
void RKVariable::rCommandDone (RCommand *command) { RK_TRACE (OBJECTS); if (command->getFlags () == ROBJECT_UDPATE_STRUCTURE_COMMAND) { RObject::rCommandDone (command); } else if (command->getFlags () == GET_DATA_COMMAND) { RK_ASSERT (myData ()); // prevent resyncing of data setSyncing (false); RK_ASSERT (command->getDataType () == RData::StructureVector); RK_ASSERT (command->getDataLength () == 3); RData *data = command->getStructureVector ()[0]; RData *levels = command->getStructureVector ()[1]; RData *invalids = command->getStructureVector ()[2]; // set factor levels first RK_ASSERT (levels->getDataType () == RData::StringVector); unsigned int levels_len = levels->getDataLength (); RK_ASSERT (levels_len >= 1); delete myData ()->value_labels; myData ()->value_labels = new RObject::ValueLabels; if ((levels_len == 1) && levels->getStringVector ()[0].isEmpty ()) { // no levels } else { for (unsigned int i=0; i < levels_len; ++i) { myData ()->value_labels->insert (QString::number (i+1), levels->getStringVector ()[i]); } } // now set the data RK_ASSERT (data->getDataLength () == (unsigned int) getLength ()); // not a problem due to the line below, I'd still like to know if / when this happens. extendToLength (data->getDataLength ()); if (data->getDataType () == RData::StringVector) { setCharacter (0, getLength () - 1, data->getStringVector ()); } else if (data->getDataType () == RData::RealVector) { setNumeric (0, getLength () - 1, data->getRealVector ()); } else if (data->getDataType () == RData::IntVector) { unsigned int len = getLength (); double *dd = new double[len]; for (unsigned int i = 0; i < len; ++i) { if (data->getIntVector ()[i] == INT_MIN) dd[i] = NAN; else dd[i] = (double) data->getIntVector ()[i]; } setNumeric (0, getLength () - 1, dd); delete [] dd; } // now set the invalid fields (only if they are still NAs in the R data) myData ()->invalid_fields.clear (); if (invalids->getDataLength () <= 1) { // no invalids } else { RK_ASSERT (invalids->getDataType () == RData::StringVector); unsigned int invalids_length = invalids->getDataLength (); RK_ASSERT ((invalids_length % 2) == 0); unsigned int invalids_count = invalids_length / 2; for (unsigned int i=0; i < invalids_count; ++i) { int row = invalids->getStringVector ()[i].toInt () - 1; if (myData ()->cell_states[row] & RKVarEditData::NA) { setText (row, invalids->getStringVector ()[invalids_count + i]); } } } myData ()->formatting_options = parseFormattingOptionsString (getMetaProperty ("format")); ChangeSet *set = new ChangeSet; set->from_index = 0; set->to_index = getLength (); RKGlobals::tracker ()->objectDataChanged (this, set); RKGlobals::tracker ()->objectMetaChanged (this); myData ()->dirty = false; setSyncing (true); } else { RK_ASSERT (false); } }
Item::e_sercode Item::deserialize( Stream *file, VMachine *vm ) { byte type = FLC_ITEM_NIL; if ( file->read((byte *) &type, 1 ) == 0 ) return sc_eof; if( ! file->good() ) return sc_ferror; switch( type ) { case FLC_ITEM_NIL: setNil(); return sc_ok; case FLC_ITEM_UNB: setUnbound(); return sc_ok; case FLC_ITEM_BOOL: { byte bval; file->read( (byte *) &bval, sizeof( bval ) ); if ( file->good() ) { setBoolean( bval != 0 ); return sc_ok; } return sc_ferror; } return sc_ok; case FLC_ITEM_INT: { int64 val; file->read( (byte *) &val, sizeof( val ) ); if ( file->good() ) { setInteger(endianInt64(val) ); return sc_ok; } return sc_ferror; } break; case FLC_ITEM_RANGE: { int64 val1; int64 val2; int64 val3; //byte isOpen; file->read( (byte *) &val1, sizeof( val1 ) ); file->read( (byte *) &val2, sizeof( val2 ) ); file->read( (byte *) &val3, sizeof( val3 ) ); //file->read( (byte *) &isOpen, sizeof( isOpen ) ); val1 = endianInt64( val1 ); val2 = endianInt64( val2 ); val3 = endianInt64( val3 ); if ( file->good() ) { setRange( new CoreRange( val1, val2, val3 ) ); return sc_ok; } return sc_ferror; } break; case FLC_ITEM_NUM: { numeric val; file->read( (byte *) &val, sizeof( val ) ); if ( file->good() ) { setNumeric( endianNum( val ) ); return sc_ok; } return sc_ferror; } break; case FLC_ITEM_LBIND: { int32 id; file->read( (byte*) &id, sizeof(id) ); String name; if ( ! name.deserialize( file ) ) return file->bad() ? sc_ferror : sc_invformat; setLBind( new CoreString( name ) ); } break; case FLC_ITEM_STRING: { CoreString *cs = new CoreString; setString( cs ); if ( ! cs->deserialize( file ) ) { return file->bad() ? sc_ferror : sc_invformat; } if ( file->good() ) { return sc_ok; } return sc_ferror; } break; case FLC_ITEM_MEMBUF |0x80: { // get the function pointer in the stream /*MemBuf *(*deserializer)( VMachine *, Stream * ); file->read( &deserializer, sizeof( deserializer ) ); if ( ! file->good() ) { return sc_ferror; } MemBuf *mb = deserializer( vm, file ); if( mb == 0 ) { return sc_invformat; }*/ MemBuf* mb; if( file->read( &mb, sizeof( mb ) ) == sizeof(mb) ) { setMemBuf( mb ); return sc_ok; } return sc_eof; } case FLC_ITEM_MEMBUF: { MemBuf *mb = MemBuf::deserialize( vm, file ); if ( file->good() && mb != 0 ) { setMemBuf( mb ); return sc_ok; } return sc_ferror; } break; case FLC_ITEM_ARRAY: { int32 val; file->read( (byte *) &val, sizeof( val ) ); e_sercode retval = sc_ok; if ( file->good() ) { val = endianInt32(val); CoreArray *array = new CoreArray(); array->resize(val); for( int i = 0; i < val; i ++ ) { retval = array->items()[i].deserialize( file, vm ); if( retval != sc_ok ) { break; } } if ( retval == sc_ok ) { setArray( array ); return sc_ok; } return retval; } } break; case FLC_ITEM_DICT: { byte blessed; file->read( &blessed, 1 ); int32 val; file->read( (byte *) &val, sizeof( val ) ); if ( file->good() ) { val = endianInt32(val); LinearDict *dict = new LinearDict( val ); LinearDictEntry *elems = dict->entries(); e_sercode retval = sc_ok; for( int i = 0; i < val; i ++ ) { LinearDictEntry *entry = elems + i; retval = entry->key().deserialize( file, vm ); if( retval == sc_ok ) retval = entry->value().deserialize( file, vm ); if ( retval != sc_ok ) break; dict->length( i + 1 ); } if( retval == sc_ok ) { CoreDict* cdict = new CoreDict( dict ); cdict->bless( blessed ? true : false ); setDict( cdict ); return sc_ok; } else delete dict; return retval; } } break; case FLC_ITEM_FUNC | 0x80: case FLC_ITEM_FUNC: { if( vm == 0 ) return sc_missvm; return deserialize_function( file, vm ); } break; case FLC_ITEM_METHOD: { if( vm == 0 ) return sc_missvm; Item obj; Item func; e_sercode sc; sc = obj.deserialize( file, vm ); if ( sc != sc_ok ) return sc; sc = func.deserialize( file, vm ); if ( sc != sc_ok ) return sc; if ( func.isFunction() ) setMethod( obj, func.asMethodFunc() ); else if ( func.isArray() && func.isCallable() ) { setMethod( obj, func.asArray() ); } else return sc_invformat; return sc_ok; } case FLC_ITEM_OBJECT | 0x80: case FLC_ITEM_OBJECT: { bool bLive = type != FLC_ITEM_OBJECT; if( vm == 0 ) return sc_missvm; // read the module name Symbol *sym; LiveModule *lmod; e_sercode sc = deserialize_symbol( file, vm, &sym, &lmod ); if ( sc != sc_ok ) return sc; Item *clitem = &lmod->globals()[ sym->itemId() ]; // Create the core object, but don't fill attribs. CoreObject *object = clitem->dereference()->asClass()->createInstance(0, true); if ( ! object->deserialize( file, bLive ) ) { return sc_missclass; } setObject( object ); return file->good() ? sc_ok : sc_ferror; } break; case FLC_ITEM_CLASS: return deserialize_class( file, vm ); case FLC_ITEM_CLSMETHOD: { e_sercode sc = deserialize_class( file, vm ); if ( sc != sc_ok ) return sc; return deserialize_function( file, vm ); } break; default: return sc_invformat; } return sc_ferror; }
/* * Read system locales using org.freedesktop.locale1 dbus interface */ void EnabledLocalesModel::updateSystemLocales() { QDBusInterface dbusInterface( "org.freedesktop.locale1", "/org/freedesktop/locale1", "org.freedesktop.locale1", QDBusConnection::systemBus() ); QStringList localeEnviromentVariables = dbusInterface.property( "Locale" ).toStringList(); QModelIndex defaultIndex = QModelIndex(); for ( QString lev : localeEnviromentVariables ) { if ( lev.startsWith( "LANG=" ) ) { int defaultLocaleRow = findKey( lev.section( '=', 1 ) ); defaultIndex = index( defaultLocaleRow,0 ); } } setAddress( defaultIndex ); setCollate( defaultIndex ); setCtype( defaultIndex ); setIdentification( defaultIndex ); setLang( defaultIndex ); setLanguage( defaultIndex ); setMeasurement( defaultIndex ); setMonetary( defaultIndex ); setMessages( defaultIndex ); setName( defaultIndex ); setNumeric( defaultIndex ); setPaper( defaultIndex ); setTelephone( defaultIndex ); setTime( defaultIndex ); for ( QString lev : localeEnviromentVariables ) { QString value = lev.section( '=', 1 ); if ( lev.startsWith( "LC_ADDRESS=" ) ) { if ( value.isEmpty() ) setAddress( defaultIndex ); else { int row = findKey( value ); setAddress( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_COLLATE=" ) ) { if ( value.isEmpty() ) setCollate( defaultIndex ); else { int row = findKey( value ); setCollate( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_CTYPE=" ) ) { if ( value.isEmpty() ) setCtype( defaultIndex ); else { int row = findKey( value ); setCtype( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_IDENTIFICATION=" ) ) { if ( value.isEmpty() ) setIdentification( defaultIndex ); else { int row = findKey( value ); setIdentification( index( row, 0 ) ); } } else if ( lev.startsWith( "LANG=" ) ) { if ( value.isEmpty() ) setLang( defaultIndex ); else { int row = findKey( value ); setLang( index( row, 0 ) ); } } else if ( lev.startsWith( "LANGUAGE=" ) ) { if ( value.isEmpty() ) setLanguage( defaultIndex ); else { int row = findKey( value ); setLanguage( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_MEASUREMENT=" ) ) { if ( value.isEmpty() ) setMeasurement( defaultIndex ); else { int row = findKey( value ); setMeasurement( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_MESSAGES=" ) ) { if ( value.isEmpty() ) setMessages( defaultIndex ); else { int row = findKey( value ); setMessages( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_MONETARY=" ) ) { if ( value.isEmpty() ) setMonetary( defaultIndex ); else { int row = findKey( value ); setMonetary( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_NAME=" ) ) { if ( value.isEmpty() ) setName( defaultIndex ); else { int row = findKey( value ); setName( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_NUMERIC=" ) ) { if ( value.isEmpty() ) setNumeric( defaultIndex ); else { int row = findKey( value ); setNumeric( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_PAPER=" ) ) { if ( value.isEmpty() ) setPaper( defaultIndex ); else { int row = findKey( value ); setPaper( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_TELEPHONE=" ) ) { if ( value.isEmpty() ) setTelephone( defaultIndex ); else { int row = findKey( value ); setTelephone( index( row, 0 ) ); } } else if ( lev.startsWith( "LC_TIME=" ) ) { if ( value.isEmpty() ) setTime( defaultIndex ); else { int row = findKey( value ); setTime( index( row, 0 ) ); } } } }