Vic2::Relations::Relations(const std::string& theTag, std::istream& theStream): tag(theTag) { registerKeyword(std::regex("value"), [this](const std::string& unused, std::istream& theStream){ commonItems::singleInt valueInt(theStream); value = valueInt.getInt(); }); registerKeyword(std::regex("level"), [this](const std::string& unused, std::istream& theStream){ commonItems::singleInt levelInt(theStream); level = levelInt.getInt(); }); registerKeyword(std::regex("military_access"), [this](const std::string& unused, std::istream& theStream){ commonItems::singleString stateString(theStream); militaryAccess = (stateString.getString() == "yes"); }); registerKeyword(std::regex("last_send_diplomat"), [this](const std::string& unused, std::istream& theStream){ commonItems::singleString dateString(theStream); lastSentDiplomat = date(dateString.getString()); }); registerKeyword(std::regex("last_war"), [this](const std::string& unused, std::istream& theStream){ commonItems::singleString dateString(theStream); lastWar = date(dateString.getString()); }); registerKeyword(std::regex("truce_until"), [this](const std::string& unused, std::istream& theStream){ commonItems::singleString dateString(theStream); truceUntil = date(dateString.getString()); }); registerKeyword(std::regex("[A-Za-z0-9_]+"), commonItems::ignoreItem); parseStream(theStream); }
// ---------------------------------------------------------------------------------- // CSSYChannel::SetPropertyL() // ---------------------------------------------------------------------------------- // void CSSYChannel::SetPropertyL( const TSensrvChannelId aChannelId, const TSensrvProperty& aProperty ) { SSY_TRACE_IN(); SSY_TRACE( EExtended, "ORIENTATIONSSY:ChannelId %d", iChannelInfo.iChannelId ); if ( ChannelId() != aChannelId ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: SetPropertyL wrong channelId!" ); User::Leave( KErrArgument ); } TBool valueChanged( ETrue ); RSensrvChannelList affectedChannels; TInt valueInt( 0 ); // try first common sensor properties TInt ret = iSensorProperties->SetProperty( aProperty, affectedChannels ); if ( ret == KErrNotFound ) { // then try the channel properties ret = iChannelProperties->SetProperty( aProperty, affectedChannels ); } if ( ret != KErrNone && ret != KErrAlreadyExists ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Property is not supported or it's readonly: 0x%x ", aProperty.GetPropertyId() ); User::Leave( KErrNotSupported ); } if ( ret == KErrAlreadyExists ) { // client tried to set the same value that the property already has, lets just return without doing anything // but informing the "change" via the callback valueChanged = EFalse; } // do something if the value was really changed if ( valueChanged ) { aProperty.GetValue( valueInt ); // These are ReadOnly values, cannot change these if ( ( aProperty.GetPropertyId() == KSensrvPropIdDataRate ) || ( aProperty.GetPropertyId() == KSensrvPropIdAvailability ) || ( aProperty.GetPropertyId() == KSensrvPropIdMeasureRange ) || ( aProperty.GetPropertyId() == KSensrvPropIdChannelDataFormat ) || ( aProperty.GetPropertyId() == KSensrvPropIdChannelAccuracy ) ) { SSY_TRACE( EError, "ORIENTATIONSSY:ERROR: Setting the property is not supported: 0x%x ", aProperty.GetPropertyId() ); User::Leave( KErrNotSupported ); } } // we call the callback function to inform that property was changed, even if it was not actually changed iCallback->PropertyChanged( iChannelInfo.iChannelId, affectedChannels, aProperty ); affectedChannels.Reset(); SSY_TRACE_OUT(); }