void RegionsHierarchy::reload() { Logger * log = &Logger::get("RegionsHierarchy"); if (!data_source->isModified()) return; LOG_DEBUG(log, "Reloading regions hierarchy"); const size_t initial_size = 10000; const size_t max_size = 15000000; RegionParents new_parents(initial_size); RegionParents new_city(initial_size); RegionParents new_country(initial_size); RegionParents new_area(initial_size); RegionParents new_district(initial_size); RegionParents new_continent(initial_size); RegionParents new_top_continent(initial_size); RegionPopulations new_populations(initial_size); RegionDepths new_depths(initial_size); RegionTypes types(initial_size); RegionID max_region_id = 0; auto regions_reader = data_source->createReader(); RegionEntry region_entry; while (regions_reader->readNext(region_entry)) { if (region_entry.id > max_region_id) { if (region_entry.id > max_size) throw DB::Exception("Region id is too large: " + DB::toString(region_entry.id) + ", should be not more than " + DB::toString(max_size)); max_region_id = region_entry.id; while (region_entry.id >= new_parents.size()) { new_parents.resize(new_parents.size() * 2); new_populations.resize(new_parents.size()); types.resize(new_parents.size()); } } new_parents[region_entry.id] = region_entry.parent_id; new_populations[region_entry.id] = region_entry.population; types[region_entry.id] = region_entry.type; } new_parents .resize(max_region_id + 1); new_city .resize(max_region_id + 1); new_country .resize(max_region_id + 1); new_area .resize(max_region_id + 1); new_district .resize(max_region_id + 1); new_continent .resize(max_region_id + 1); new_top_continent.resize(max_region_id + 1); new_populations .resize(max_region_id + 1); new_depths .resize(max_region_id + 1); types .resize(max_region_id + 1); /// prescribe the cities and countries for the regions for (RegionID i = 0; i <= max_region_id; ++i) { if (types[i] == RegionType::City) new_city[i] = i; if (types[i] == RegionType::Area) new_area[i] = i; if (types[i] == RegionType::District) new_district[i] = i; if (types[i] == RegionType::Country) new_country[i] = i; if (types[i] == RegionType::Continent) { new_continent[i] = i; new_top_continent[i] = i; } RegionDepth depth = 0; RegionID current = i; while (true) { ++depth; if (depth == std::numeric_limits<RegionDepth>::max()) throw Poco::Exception("Logical error in regions hierarchy: region " + DB::toString(current) + " possible is inside infinite loop"); current = new_parents[current]; if (current == 0) break; if (current > max_region_id) throw Poco::Exception("Logical error in regions hierarchy: region " + DB::toString(current) + " (specified as parent) doesn't exist"); if (types[current] == RegionType::City) new_city[i] = current; if (types[current] == RegionType::Area) new_area[i] = current; if (types[current] == RegionType::District) new_district[i] = current; if (types[current] == RegionType::Country) new_country[i] = current; if (types[current] == RegionType::Continent) { if (!new_continent[i]) new_continent[i] = current; new_top_continent[i] = current; } } new_depths[i] = depth; } parents.swap(new_parents); country.swap(new_country); city.swap(new_city); area.swap(new_area); district.swap(new_district); continent.swap(new_continent); top_continent.swap(new_top_continent); populations.swap(new_populations); depths.swap(new_depths); }
void ITunesImporterWorker::readTrackElement() { QString title, artist, album, url; int year = -1, bpm = -1, playcount = -1, rating = -1; QDateTime lastplayed; while( !( isEndElement() && name() == "dict" ) ) { readNext(); QString text = readElementText(); if( name() == "key" && text == "Name" ) { readNext(); // skip past the </key> and to the data tag QString text = readElementText(); title = text; } else if( name() == "key" && text == "Artist" ) { readNext(); // skip past the </key> and to the data tag artist = readElementText(); } else if( isStartElement() && name() == "key" && text == "Album" ) { readNext(); // skip past the </key> and to the data tag album = readElementText(); } else if( name() == "key" && text == "Year" ) { readNext(); // skip past the </key> and to the data tag year = readElementText().toInt(); } else if( name() == "key" && text == "BPM" ) { readNext(); // skip past the </key> and to the data tag bpm = readElementText().toInt(); } else if( name() == "key" && text == "Play Count" ) { readNext(); // skip past the </key> and to the data tag playcount = readElementText().toInt(); } else if( name() == "key" && text == "Rating" ) { readNext(); // skip past the </key> and to the data tag rating = readElementText().toInt() / 10; // itunes rates 0-100 } else if( name() == "key" && text == "Play Date" ) { readNext(); // skip past the </key> and to the data tag lastplayed = QDateTime::fromTime_t(readElementText().toInt()); } else if( name() == "key" && text == "Location" ) { readNext(); // skip past the </key> and to the data tag url = readElementText(); } } //split the file://localhost/path/to/track to just file:///path/to/track if( url.indexOf( "file://localhost" ) == 0 ) url = url.remove( 7, 9 ); debug() << "got track info:" << title << artist << album << year << bpm << url; Meta::TrackPtr track = CollectionManager::instance()->trackForUrl( KUrl( url ) ); if( track ) { QScopedPointer<Capabilities::StatisticsCapability> ec( track->create<Capabilities::StatisticsCapability>() ); if( ec ) { ec->beginStatisticsUpdate(); if( rating != -1 ) ec->setRating( rating ); if( lastplayed.isValid() ) ec->setLastPlayed( lastplayed ); if( playcount != -1 ) ec->setPlayCount( playcount ); ec->endStatisticsUpdate(); if( !track->inCollection() ) { m_tracksForInsert.insert( track, track->playableUrl().url() ); debug() << " inserting track:" << track->playableUrl(); } else { Collections::Collection* collection = track->collection(); if (collection) debug() << "track in collection (" << collection->location()->prettyLocation() << "):" << track->playableUrl(); } emit trackAdded( track ); } } }
void PdmlReader::readPacket() { PcapFileFormat::PcapPacketHeader pktHdr; Q_ASSERT(isStartElement() && name() == "packet"); qDebug("%s: packetNum = %d", __FUNCTION__, packetCount_); skipUntilEnd_ = false; // XXX: we play dumb and convert each packet to a stream, for now prevStream_ = currentStream_; currentStream_ = streams_->add_stream(); currentStream_->mutable_stream_id()->set_id(packetCount_); currentStream_->mutable_core()->set_is_enabled(true); // Set to a high number; will get reset to correct value during parse currentStream_->mutable_core()->set_frame_len(16384); // FIXME: Hard coding! expPos_ = 0; if (pcap_) pcap_->readPacket(pktHdr, pktBuf_); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (skipUntilEnd_) skipElement(); else if (name() == "proto") readProto(); else if (name() == "field") readField(NULL, NULL); // TODO: top level field!!!! else skipElement(); } } currentStream_->mutable_core()->set_name(""); // FIXME // If trailing bytes are missing, add those from the pcap if ((expPos_ < pktBuf_.size()) && pcap_) { OstProto::Protocol *proto = currentStream_->add_protocol(); OstProto::HexDump *hexDump = proto->MutableExtension( OstProto::hexDump); proto->mutable_protocol_id()->set_id( OstProto::Protocol::kHexDumpFieldNumber); qDebug("adding trailing %d bytes starting from %d", pktBuf_.size() - expPos_, expPos_); hexDump->set_content(pktBuf_.constData() + expPos_, pktBuf_.size() - expPos_); hexDump->set_pad_until_end(false); } packetCount_++; emit progress(int(characterOffset()*100/device()->size())); // in % if (prevStream_) prevStream_->mutable_control()->CopyFrom(currentStream_->control()); if (stop_ && *stop_) raiseError("USER-CANCEL"); }
QList<KeyData> QCrmlParser::parseKey(quint32 repoUid) { QList<KeyData> rv; QStringList mandatoryAttributes; mandatoryAttributes << QLatin1String("int"); if (!checkMandatoryAttributes(mandatoryAttributes)) return rv; QXmlStreamAttributes attribs = attributes(); QString keyIntStr = attribs.value(QLatin1String("int")).toString(); bool ok =false; quint32 keyInt = uidStringToUInt32(keyIntStr, &ok); if (!ok) { setError(ParseError,QObject::tr("key element has invalid int attribute on line %1"). arg(QString::number(lineNumber()))); return rv; } if (attribs.value(QLatin1String("ref")).isNull()) { //no ref attribute so this must be //a bitmask key while (!atEnd()) { readNext(); if (QXmlStreamReader::error() != QXmlStreamReader::NoError) { setError(ParseError, QXmlStreamReader::errorString()); rv.clear(); return rv; } if (isEndElement()) break; if (isStartElement()) { if (name() == "bit") { rv.append(parseBit(repoUid, keyInt)); } else { parseUnknownElement(); } } } } else { QString keyRef = attribs.value(QLatin1String("ref")).toString(); if (keyRef.isEmpty()) { setError(ParseError, QObject::tr("ref attribute of key element is empty on line %1") .arg(QString::number(lineNumber()))); rv.clear(); return rv; } while (!atEnd()) { readNext(); if (QXmlStreamReader::error() != QXmlStreamReader::NoError) { setError(ParseError, QXmlStreamReader::errorString()); rv.clear(); return rv; } if (isEndElement() && name() == "key") { break; } if (isStartElement()) { if (name() == "key" || name() == "keyRange") { setError(ParseError, QObject::tr("key and/or keyRange element has " "been nested in a key element on line %1").arg(QString::number(lineNumber()))); rv.clear(); return rv; } else { parseUnknownElement(); } } } QString keyPath(keyRef); if (!keyPath.startsWith(QLatin1Char('/'))) keyPath.prepend(QLatin1Char('/')); quint64 uid = repoUid; uid = uid << 32; uid += keyInt; rv.append(KeyData(keyPath, uid,m_target)); } return rv; }
QList<KeyData> QCrmlParser::parseRepository() { QList<KeyData> rv; QStringList mandatoryAttributes; mandatoryAttributes << QLatin1String("uidValue"); setError(NoError, QString()); if (!checkMandatoryAttributes(mandatoryAttributes)) return rv; bool ok; quint32 uidValue = uidStringToUInt32(attributes().value(QLatin1String("uidValue")).toString(), &ok); if (!ok) { setError(ParseError, QObject::tr("repository element has invalid uidValue on line %1") .arg(QString::number(lineNumber()))); return rv; } QString targetStr = attributes().value(QLatin1String("target")).toString(); if (targetStr.isEmpty() || targetStr == QLatin1String("CRepository")) { m_target = KeyData::CRepository; } else if (targetStr == QLatin1String("RProperty")) { m_target = KeyData::RProperty; } else { setError(ParseError, QObject::tr("repository element has unrecognised target attribute " "on line %1, attribute must be CRepository, RProperty or " "be left undefined").arg(QString::number(lineNumber()))); return rv; } while (!atEnd()) { readNext(); if (QXmlStreamReader::error() != QXmlStreamReader::NoError) { setError(ParseError, QXmlStreamReader::errorString()); rv.clear(); return rv; } if (isEndElement() && name() == "repository") break; if (isStartElement()) { if (name() == "key") rv.append(parseKey(uidValue)); else if (name() == "keyRange") rv.append(parseKeyRange(uidValue)); else parseUnknownElement(); } if (m_error != NoError) { rv.clear(); break; } } if (!isEndElement() && name() != "repository") { setError(ParseError, QObject::tr("File did not end with a repository end tag")); rv.clear(); return rv; } return rv; }
bool TSReader::read(Translator &translator) { STRING(both); STRING(byte); STRING(comment); STRING(context); STRING(defaultcodec); STRING(encoding); STRING(extracomment); STRING(filename); STRING(id); STRING(language); STRING(line); STRING(location); STRING(message); STRING(name); STRING(numerus); STRING(numerusform); STRING(obsolete); STRING(oldcomment); STRING(oldsource); STRING(source); STRING(sourcelanguage); STRING(translation); STRING(translatorcomment); STRING(true); STRING(TS); STRING(type); STRING(unfinished); STRING(userdata); STRING(utf8); STRING(value); //STRING(version); STRING(yes); static const QString strextrans(QLatin1String("extra-")); static const QString strUtf8(QLatin1String("UTF-8")); while (!atEnd()) { readNext(); if (isStartDocument()) { // <!DOCTYPE TS> //qDebug() << attributes(); } else if (isEndDocument()) { // <!DOCTYPE TS> //qDebug() << attributes(); } else if (isDTD()) { // <!DOCTYPE TS> //qDebug() << tokenString(); } else if (elementStarts(strTS)) { // <TS> //qDebug() << "TS " << attributes(); QHash<QString, int> currentLine; QString currentFile; QXmlStreamAttributes atts = attributes(); //QString version = atts.value(strversion).toString(); translator.setLanguageCode(atts.value(strlanguage).toString()); translator.setSourceLanguageCode(atts.value(strsourcelanguage).toString()); while (!atEnd()) { readNext(); if (isEndElement()) { // </TS> found, finish local loop break; } else if (isWhiteSpace()) { // ignore these, just whitespace } else if (elementStarts(strdefaultcodec)) { // <defaultcodec> const QString &codec = readElementText(); if (!codec.isEmpty()) translator.setCodecName(codec.toLatin1()); // </defaultcodec> } else if (isStartElement() && name().toString().startsWith(strextrans)) { // <extra-...> QString tag = name().toString(); translator.setExtra(tag.mid(6), readContents()); // </extra-...> } else if (elementStarts(strcontext)) { // <context> QString context; while (!atEnd()) { readNext(); if (isEndElement()) { // </context> found, finish local loop break; } else if (isWhiteSpace()) { // ignore these, just whitespace } else if (elementStarts(strname)) { // <name> context = readElementText(); // </name> } else if (elementStarts(strmessage)) { // <message> TranslatorMessage::References refs; QString currentMsgFile = currentFile; TranslatorMessage msg; msg.setId(attributes().value(strid).toString()); msg.setContext(context); msg.setType(TranslatorMessage::Finished); msg.setPlural(attributes().value(strnumerus) == stryes); const QStringRef &utf8Attr = attributes().value(strutf8); msg.setNonUtf8(utf8Attr == strboth); msg.setUtf8(msg.isNonUtf8() || utf8Attr == strtrue || attributes().value(strencoding) == strUtf8); while (!atEnd()) { readNext(); if (isEndElement()) { // </message> found, finish local loop msg.setReferences(refs); translator.append(msg); break; } else if (isWhiteSpace()) { // ignore these, just whitespace } else if (elementStarts(strsource)) { // <source>...</source> msg.setSourceText(readContents()); } else if (elementStarts(stroldsource)) { // <oldsource>...</oldsource> msg.setOldSourceText(readContents()); } else if (elementStarts(stroldcomment)) { // <oldcomment>...</oldcomment> msg.setOldComment(readContents()); } else if (elementStarts(strextracomment)) { // <extracomment>...</extracomment> msg.setExtraComment(readContents()); } else if (elementStarts(strtranslatorcomment)) { // <translatorcomment>...</translatorcomment> msg.setTranslatorComment(readContents()); } else if (elementStarts(strlocation)) { // <location/> QXmlStreamAttributes atts = attributes(); QString fileName = atts.value(strfilename).toString(); if (fileName.isEmpty()) { fileName = currentMsgFile; } else { if (refs.isEmpty()) currentFile = fileName; currentMsgFile = fileName; } const QString lin = atts.value(strline).toString(); if (lin.isEmpty()) { translator.setLocationsType(Translator::RelativeLocations); refs.append(TranslatorMessage::Reference(fileName, -1)); } else { bool bOK; int lineNo = lin.toInt(&bOK); if (bOK) { if (lin.startsWith(QLatin1Char('+')) || lin.startsWith(QLatin1Char('-'))) { lineNo = (currentLine[fileName] += lineNo); translator.setLocationsType(Translator::RelativeLocations); } else { translator.setLocationsType(Translator::AbsoluteLocations); } refs.append(TranslatorMessage::Reference(fileName, lineNo)); } } readContents(); } else if (elementStarts(strcomment)) { // <comment>...</comment> msg.setComment(readContents()); } else if (elementStarts(struserdata)) { // <userdata>...</userdata> msg.setUserData(readContents()); } else if (elementStarts(strtranslation)) { // <translation> QXmlStreamAttributes atts = attributes(); QStringRef type = atts.value(strtype); if (type == strunfinished) msg.setType(TranslatorMessage::Unfinished); else if (type == strobsolete) msg.setType(TranslatorMessage::Obsolete); if (msg.isPlural()) { QStringList translations; while (!atEnd()) { readNext(); if (isEndElement()) { break; } else if (isWhiteSpace()) { // ignore these, just whitespace } else if (elementStarts(strnumerusform)) { translations.append(readTransContents()); } else { handleError(); break; } } msg.setTranslations(translations); } else { msg.setTranslation(readTransContents()); } // </translation> } else if (isStartElement() && name().toString().startsWith(strextrans)) { // <extra-...> QString tag = name().toString(); msg.setExtra(tag.mid(6), readContents()); // </extra-...> } else { handleError(); } } // </message> } else { handleError(); } } // </context> } else { handleError(); } } // </TS> } else { handleError(); } } if (hasError()) { m_cd.appendError(errorString()); return false; } return true; }
//---------------------------------------------------------------------------- bool ctkCmdLineModuleObjectTreeWalker::readNextParameter() { while (!(readNext() == Parameter || AtEnd)) ; // deliberately empty loop body return !AtEnd; }
void XmlQueryReader::readFilters() { while( !atEnd() ) { readNext(); if( isEndElement() ) { if( name() == "and" || name() == "or" ) { d->qm->endAndOr(); break; } else if( name() == "filters" ) { break; } else continue; } if( name() == "include" || name() == "exclude" ) { Filter filter = readFilter(this); if( filter.field == 0 ) break; if( filter.compare != -1 ) { qint64 numValue = filter.value.toInt(); if( !filter.exclude ) { debug() << "XQR: number include filter:"; d->qm->addNumberFilter( filter.field, numValue, (Collections::QueryMaker::NumberComparison)filter.compare ); } else { debug() << "XQR: number exclude filter: "; d->qm->excludeNumberFilter( filter.field, numValue, (Collections::QueryMaker::NumberComparison)filter.compare ); } } else { if( !filter.exclude ) { debug() << "XQR: include filter"; d->qm->addFilter( filter.field, filter.value ); } else { debug() << "XQR: exclude filter"; d->qm->excludeFilter( filter.field, filter.value ); } } d->filters.append( filter ); } else if( name() == "and" ) { d->qm->beginAnd(); readFilters(); } else if( name() == "or" ) { d->qm->beginOr(); readFilters(); } } }
void XMLimport::readTimerGroup( TTimer * pParent ) { TTimer * pT; if( pParent ) { pT = new TTimer( pParent, mpHost ); } else { pT = new TTimer( 0, mpHost ); } pT->registerTimer(); pT->setShouldBeActive( ( attributes().value("isActive") == "yes" ) ); pT->mIsFolder = ( attributes().value("isFolder") == "yes" ); pT->mIsTempTimer = ( attributes().value("isTempTimer") == "yes" ); while( ! atEnd() ) { readNext(); if( isEndElement() ) break; if( isStartElement() ) { if( name() == "name" ) { pT->setName( readElementText() ); continue; } else if( name() == "packageName") { pT->mPackageName = readElementText(); continue; } else if( name() == "script") { QString script = readElementText(); pT->setScript( script ); continue; } else if( name() == "command") { pT->mCommand = readElementText(); continue; } else if( name() == "time") { QString timeString = readElementText(); QTime time = QTime::fromString( timeString, "hh:mm:ss.zzz" ); pT->setTime( time ); continue; } else if( name() == "TimerGroup" ) { readTimerGroup( pT ); } else if( name() == "Timer" ) { readTimerGroup( pT ); } else { readUnknownTimerElement(); } } } if( ( ! pT->isOffsetTimer() ) && ( pT->shouldBeActive() ) ) pT->enableTimer( pT->getID() ); else pT->disableTimer( pT->getID() ); }
OpenSearchEngine* OpenSearchReader::read() { OpenSearchEngine* engine = new OpenSearchEngine(); m_searchXml = device()->peek(1024 * 5); while (!isStartElement() && !atEnd()) { readNext(); } if (!m_searchXml.contains(QLatin1String("http://a9.com/-/spec/opensearch/1.1/"))) { raiseError(QObject::tr("The file is not an OpenSearch 1.1 file.")); return engine; } while (!atEnd()) { readNext(); if (!isStartElement()) { continue; } if (name() == QLatin1String("ShortName") || name() == QLatin1String("os:ShortName")) { engine->setName(readElementText()); } else if (name() == QLatin1String("Description") || name() == QLatin1String("os:Description")) { engine->setDescription(readElementText()); } else if (name() == QLatin1String("Url") || name() == QLatin1String("os:Url")) { QString type = attributes().value(QLatin1String("type")).toString(); QString url = attributes().value(QLatin1String("template")).toString(); QString method = attributes().value(QLatin1String("method")).toString(); if (type == QLatin1String("application/x-suggestions+json") && !engine->suggestionsUrlTemplate().isEmpty()) { continue; } if ((type.isEmpty() || type == QLatin1String("text/html") || type == QLatin1String("application/xhtml+xml")) && !engine->searchUrlTemplate().isEmpty()) { continue; } if (url.isEmpty()) { continue; } QList<OpenSearchEngine::Parameter> parameters; readNext(); while (!isEndElement() || (name() != QLatin1String("Url") && name() != QLatin1String("os:Url"))) { if (!isStartElement() || (name() != QLatin1String("Param") && name() != QLatin1String("Parameter") && name() != QLatin1String("os:Param") && name() != QLatin1String("os:Parameter"))) { readNext(); continue; } QString key = attributes().value(QLatin1String("name")).toString(); QString value = attributes().value(QLatin1String("value")).toString(); if (!key.isEmpty() && !value.isEmpty()) { parameters.append(OpenSearchEngine::Parameter(key, value)); } while (!isEndElement()) { readNext(); } } if (type == QLatin1String("application/x-suggestions+json")) { engine->setSuggestionsUrlTemplate(url); engine->setSuggestionsParameters(parameters); engine->setSuggestionsMethod(method); } else if (type.isEmpty() || type == QLatin1String("text/html") || type == QLatin1String("application/xhtml+xml")) { engine->setSearchUrlTemplate(url); engine->setSearchParameters(parameters); engine->setSearchMethod(method); } } else if (name() == QLatin1String("Image") || name() == QLatin1String("os:Image")) { engine->setImageUrl(readElementText()); } if (!engine->name().isEmpty() && !engine->description().isEmpty() && !engine->suggestionsUrlTemplate().isEmpty() && !engine->searchUrlTemplate().isEmpty() && !engine->imageUrl().isEmpty()) { break; } } return engine; }
void XmlQueryReader::readReturnValues() { if( d->flag & XmlQueryReader::IgnoreReturnValues ) { ignoreElements(); return; } else { bool customQueryStarted = false; while( !atEnd() ) { readNext(); if( name() == "tracks" ) { d->qm->setQueryType( Collections::QueryMaker::Track ); } else if( name() == "artists" ) { d->qm->setQueryType( Collections::QueryMaker::Artist ); } else if( name() == "albums" ) { d->qm->setQueryType( Collections::QueryMaker::Album ); } else if( name() == "albumartist" ) { d->qm->setQueryType( Collections::QueryMaker::AlbumArtist ); } else if( name() == "genres" ) { d->qm->setQueryType( Collections::QueryMaker::Genre ); } else if( name() == "composers" ) { d->qm->setQueryType( Collections::QueryMaker::Composer ); } else if( name() == "year" ) { d->qm->setQueryType( Collections::QueryMaker::Year ); } else { if( !customQueryStarted ) { d->qm->setQueryType( Collections::QueryMaker::Custom ); } //TODO write a mapping function somewhere if( name() == "title" ) { d->qm->addReturnValue( Meta::valTitle ); } else if( name() == "artist" ) { d->qm->addReturnValue( Meta::valArtist ); } } } } }
void RTF::Tokenizer::readNext() { // Reset values m_type = TextToken; m_hex.clear(); m_text.resize(0); m_value = 0; m_has_value = false; if (!m_device) { return; } // Read first character char c; do { c = next(); } while (c == '\n' || c == '\r'); // Determine token type if (c == '{') { m_type = StartGroupToken; } else if (c == '}') { m_type = EndGroupToken; } else if (c == '\\') { m_type = ControlWordToken; c = next(); if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { // Read control word while ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { m_text.append(c); c = next(); } // Read integer value int sign = (c != '-') ? 1 : -1; if (sign == -1) { c = next(); } QByteArray value; while (isdigit(c)) { value.append(c); c = next(); } m_has_value = !value.isEmpty(); m_value = value.toInt() * sign; // Eat space after control word if (c != ' ') { --m_position; } // Eat binary value if (m_text == "bin") { if (m_value > 0) { for (int i = 0; i < m_value; i++) { c = next(); } } return readNext(); } } else if (c == '\'') { // Read hexadecimal value m_text.append(c); QByteArray hex(2, 0); hex[0] = next(); hex[1] = next(); m_hex.append(hex.toInt(0, 16)); } else { // Read escaped character m_text.append(c); } } else { // Read text m_type = TextToken; while (c != '\\' && c != '{' && c != '}' && c != '\n' && c != '\r') { m_text.append(c); c = next(); } m_position--; } }
setNamespaceProcessing( false ); return continueRead(); } bool OpmlParser::continueRead() { // this is some kind of pushdown automata // with this it should be possible to parse feeds in parallel // without using threads DEBUG_BLOCK while( !atEnd() && error() != CustomError ) { TokenType token = readNext(); if( error() == PrematureEndOfDocumentError && m_transferJob ) return true; if( hasError() ) { emit doneParsing(); return false; } if( m_actionStack.isEmpty() ) { debug() << "expected element on stack!"; return false; }
void XmlNoteReader::readContent() { QTextCursor cursor(document_->rootFrame()); QTextCharFormat format; bool linkFormat = false; Q_UNUSED(linkFormat); while (!atEnd()) { TokenType token = readNext(); switch(token) { // read the text between the formatting elements case Characters: { // this commented out code does not work with formatted text and multiple links // TODO a QTextDocumentFragment must be created via QTextCursor::selected, the fragment must be exported to html // the link applied and reinserted via QTextCursor::insertHtml // if(linkFormat) // { // qDebug("link inserted"); // cursor.insertHtml("<a href=\"" + text().toString() + "\">" + text().toString() + "</a>"); // } // else cursor.insertText(text().toString(),format); break; } // read elements <bold> <italic> and set the formatting case StartElement: { if(name() == "bold") format.setFontWeight(QFont::Bold); if(name() == "italic") format.setFontItalic(true); if(name() == "underline") format.setUnderlineStyle(QTextCharFormat::SingleUnderline); if(name() == "strikethrough" || name() == "strikeout") // only strikethrough is written, but strikeout is also allowed for reading format.setFontStrikeOut(true); if(name() == "highlight") format.setBackground(QColor(255,255,0)); if(qualifiedName() == "size:small") format.setFontPointSize(QApplication::font().pointSize()* 0.8f); if(qualifiedName() == "size:large") format.setFontPointSize(QApplication::font().pointSize()*1.4f); if(qualifiedName() == "size:huge") format.setFontPointSize(QApplication::font().pointSize()*1.6f); if(name() == "monospace") format.setFontFamily("Monospace"); if(qualifiedName() == "link:url") linkFormat = true; break; } // unset formatting case EndElement: { if(name() == "note-content") // end of note content, exit this method return; if(name() == "bold") format.setFontWeight(QFont::Normal); if(name() == "italic") format.setFontItalic(false); if(name() == "underline") format.setUnderlineStyle(QTextCharFormat::NoUnderline); if(name() == "strikethrough" || name() == "strikeout") // only strikethrough is written, but strikeout is also allowed for reading format.setFontStrikeOut(false); if(name() == "highlight") format.clearBackground(); if(qualifiedName() == "size:small" || qualifiedName() == "size:large" || qualifiedName() == "size:huge") // mutual exclusive options format.setFontPointSize(QApplication::font().pointSizeF()); if(name() == "monospace") format.setFontFamily(QApplication::font().family()); if(name() == "link:url") linkFormat = false; // ignore id break; } default:; // suppress compiler warnings } if (QXmlStreamReader::hasError()) { qDebug("XmlNoteReader::read failed: Error reading xml content"); return; } } }
void ActivityXmlParser::readActivityInfo(Activity_Info *actiInfo) { while (!atEnd()) { readNext(); if (isStartElement()) { if (name() == "title") { QString title = readElementText(); actiInfo->setTitle(title); continue; } else if (name() == "time") { QString time = readElementText(); actiInfo->setTime(time); continue; } else if (name() == "address") { QString address = readElementText(); actiInfo->setAddress(address); continue; } else if (name() == "content") { QString content = readElementText(); actiInfo->setContent(content); continue; } else if (name() == "name") { QString name = readElementText(); actiInfo->setName(name); continue; } else if (name() == "stunum") { QString stunum = readElementText(); actiInfo->setStunum(stunum); continue; } else if (name() == "tel") { QString tel = readElementText(); actiInfo->setTel(tel); continue; } else if (name() == "schname") { QString schname = readElementText(); actiInfo->setSchname(schname); continue; } else if (name() == "colname") { QString colname = readElementText(); actiInfo->setColname(colname); continue; } } //当读到activity结束标签,此次读取activity信息结束 if (isEndElement()) { if (name() == "activity") break; } } }
void XMLimport::readAliasGroup( TAlias * pParent ) { TAlias * pT; if( pParent ) { pT = new TAlias( pParent, mpHost ); } else { pT = new TAlias( 0, mpHost ); } mpHost->getAliasUnit()->registerAlias( pT ); pT->setIsActive( ( attributes().value("isActive") == "yes" ) ); pT->mIsFolder = ( attributes().value("isFolder") == "yes" ); while( ! atEnd() ) { readNext(); if( isEndElement() ) break; if( isStartElement() ) { if( name() == "name" ) { pT->setName( readElementText() ); continue; } else if( name() == "packageName") { pT->mPackageName = readElementText(); continue; } else if( name() == "script") { QString script = readElementText(); pT->setScript( script ); continue; } else if( name() == "command") { pT->mCommand = readElementText(); continue; } else if( name() == "regex") { pT->setRegexCode( readElementText() ); continue; } else if( name() == "AliasGroup" ) { readAliasGroup( pT ); } else if( name() == "Alias" ) { readAliasGroup( pT ); } else { readUnknownAliasElement(); } } } }
void getNextToken (int *token, int *value, char * str){ int pos = 0; int match = FALSE; int flag = FALSE; char c; char * buf = (char *)malloc(sizeof(char)*64); FILE * fp = globalFile(SCAN_GET, ""); while(!match){ c = readNext(fp); if(c == '\n'){ lineno++; } else if(c == '\t' || c == ' '|| c == '\0'); //ignore white spaces else if(c == '\004'){ *token = END; match = TRUE; } else{ switch(c){ case '(': *token = LEFTPARENTHESIS; match = TRUE; break; case ')': *token = RIGHTPARENTHESIS; match = TRUE; break; case ',': *token = COMMA; match = TRUE; break; case '{': *token = LEFTBRACE; match = TRUE; break; case '}': *token = RIGHTBRACE; match = TRUE; break; case ';': *token = SEMICOLON; match = TRUE; break; case '=': *token = RELATIONOP; c = readNext(fp); if(c == '='){ *value = EQUAL; } else{ ungetc(c, fp); *token = ASSIGNOP; } match = TRUE; break; case '+': *token = PLUSOP; match = TRUE; break; case '-': *token = MINUSOP; match = TRUE; break; case '/': c = readNext(fp); if(c == '*'){ while(c != '/' && !flag){ flag = FALSE; c = readNext(fp); if(c == '\n'){ lineno++; } else if(c == '*'){ flag = TRUE; c = readNext(fp); } } flag = FALSE; match = FALSE; break; } else{ *token = DIVOP; ungetc(c, fp); flag = FALSE; } match = TRUE; break; case '*': *token = MULTOP; match = TRUE; break; case '!': c = readNext(fp); if( c != '='){ *token = NOTOP; ungetc(c, fp); } else{ *token = RELATIONOP; *value = NOTEQUAL; } match = TRUE; break; case '>': c = readNext(fp); if( c != '=') ungetc(c, fp); else{ *token = RELATIONOP; *value = BIGGER; } match = TRUE; break; case '<': c = readNext(fp); if( c != '=') ungetc(c, fp); else{ *token = RELATIONOP; *value = SMALLER; } match = TRUE; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': buf = matchNum(c); *token = NUM; *value = atoi(buf); match = TRUE; break; default: if(isAlpha(c)){ pos = 0; switch(c){ case 'r': buf[pos] = c; if(matchId("return", buf, &pos)){ *token = RETURN; } else if(matchId("read", buf, &pos)) *token = READ; else{ IdMatch(buf, &pos); *token = ID; strncpy(str, buf, 64); } break; case 'i': buf[pos] = c; if(matchId("if", buf, &pos)) *token = IF; else if(matchId("int", buf, &pos)) *token = INT; else{ IdMatch(buf, &pos); *token = ID; strncpy(str, buf, 64); } break; case 'w': buf[0] = c; if(matchId("while", buf, &pos)) *token = WHILE; else if(matchId("write", buf, &pos)) *token = WRITE; else{ IdMatch(buf, &pos); *token = ID; strncpy(str, buf, 64); } break; case 'e': buf[0] = c; if(matchId("else", buf, &pos)){ *token = ELSE; } else{ IdMatch(buf, &pos); *token = ID; strncpy(str, buf, 64); } break; case 'v': buf[0] = c; if(matchId("void", buf, &pos)) *token = VOID; else{ IdMatch(buf, &pos); *token = ID; strncpy(str, buf, 64); } break; default: buf[0] = c; IdMatch(buf, &pos); *token = ID; strncpy(str, buf, 64); break; } //strncpy(str,buf,64); match = TRUE; c = readNext(fp); ungetc(c, fp); } else{ *token = ERROR; match = TRUE; } } } } // DEBUGGING PRINT printToken(*token); free(buf); printf("POS %d\n", pos); str[pos+1] = '\0'; return; }
void XMLimport::readActionGroup( TAction * pParent ) { TAction * pT; if( pParent ) { pT = new TAction( pParent, mpHost ); } else { pT = new TAction( 0, mpHost ); } mpHost->getActionUnit()->registerAction( pT ); pT->setIsActive( ( attributes().value("isActive") == "yes" ) ); pT->mIsFolder = ( attributes().value("isFolder") == "yes" ); pT->mIsPushDownButton = ( attributes().value("isPushButton") == "yes" ); pT->mButtonFlat = ( attributes().value("isFlatButton") == "yes" ); pT->mUseCustomLayout = ( attributes().value("useCustomLayout") == "yes" ); while( ! atEnd() ) { readNext(); if( isEndElement() ) break; if( isStartElement() ) { if( name() == "name" ) { pT->mName = readElementText(); continue; } else if( name() == "packageName") { pT->mPackageName = readElementText(); continue; } else if( name() == "script") { QString script = readElementText(); pT->setScript( script ); continue; } else if( name() == "css") { pT->css = readElementText(); continue; } else if( name() == "commandButtonUp") { pT->mCommandButtonUp = readElementText(); continue; } else if( name() == "commandButtonDown") { pT->mCommandButtonDown = readElementText(); continue; } else if( name() == "icon") { pT->mIcon = readElementText(); continue; } else if( name() == "orientation") { pT->mOrientation = readElementText().toInt(); continue; } else if( name() == "location") { pT->mLocation = readElementText().toInt(); continue; } else if( name() == "buttonRotation") { pT->mButtonRotation = readElementText().toInt(); continue; } else if( name() == "sizeX") { pT->mSizeX = readElementText().toInt(); continue; } else if( name() == "sizeY") { pT->mSizeY = readElementText().toInt(); continue; } else if( name() == "mButtonState") { pT->mButtonState = readElementText().toInt(); continue; } else if( name() == "buttonColor") { pT->mButtonColor.setNamedColor( readElementText() ); continue; } else if( name() == "buttonColumn") { pT->mButtonColumns = readElementText().toInt(); continue; } else if( name() == "posX") { pT->mPosX = readElementText().toInt(); continue; } else if( name() == "posY") { pT->mPosY = readElementText().toInt(); continue; } else if( name() == "ActionGroup" ) { readActionGroup( pT ); } else if( name() == "Action" ) { readActionGroup( pT ); } else { readUnknownActionElement(); } } } }
//---------------------------------------------------------------------------- bool ctkCmdLineModuleObjectTreeWalker::readNextExecutable() { while (!(readNext() == Executable || AtEnd)) ; // deliberately empty loop body return !AtEnd; }
void XMLimport::readKeyGroup( TKey * pParent ) { TKey * pT; if( pParent ) { pT = new TKey( pParent, mpHost ); } else { pT = new TKey( 0, mpHost ); } mpHost->getKeyUnit()->registerKey( pT ); pT->setIsActive( ( attributes().value("isActive") == "yes" ) ); pT->mIsFolder = ( attributes().value("isFolder") == "yes" ); while( ! atEnd() ) { readNext(); if( isEndElement() ) break; if( isStartElement() ) { if( name() == "name" ) { pT->mName = readElementText(); continue; } else if( name() == "packageName") { pT->mPackageName = readElementText(); continue; } else if( name() == "script") { QString script = readElementText(); pT->setScript( script ); continue; } else if( name() == "command") { pT->mCommand = readElementText(); continue; } else if( name() == "keyCode" ) { pT->mKeyCode = readElementText().toInt(); continue; } else if( name() == "keyModifier" ) { pT->mKeyModifier = readElementText().toInt(); continue; } else if( name() == "KeyGroup" ) { readKeyGroup( pT ); } else if( name() == "Key" ) { readKeyGroup( pT ); } else { readUnknownKeyElement(); } } } }
DirectoryIterator& operator++() { readNext(); return *this; }
void XMLimport::readRoom() { TRoom * pT = new TRoom; pT->id = attributes().value("id").toString().toInt(); pT->area = attributes().value("area").toString().toInt(); pT->name = attributes().value("title").toString(); pT->environment = attributes().value("environment").toString().toInt(); while( ! atEnd() ) { readNext(); if( name() == "" ) continue; if( name() == "coord" ) { if( attributes().value("x").toString() == "" ) continue; pT->x = attributes().value("x").toString().toInt(); pT->y = attributes().value("y").toString().toInt(); pT->z = attributes().value("z").toString().toInt(); continue; } else if( name() == "exit") { QString dir = attributes().value("direction").toString(); int e = attributes().value("target").toString().toInt(); if( dir == "" ) continue; if( dir == "north" ) { pT->north = e; } if( dir == "south" ) { pT->south = e; } if( dir == "northwest" ) { pT->northwest = e; } if( dir == "southwest" ) { pT->southwest = e; } if( dir == "northeast" ) { pT->northeast = e; } if( dir == "southeast" ) { pT->southeast = e; } if( dir == "west" ) { pT->west = e; } if( dir == "east" ) { pT->east = e; } if( dir == "up" ) { pT->up = e; } if( dir == "down" ) { pT->down = e; } if( dir == "in" ) { pT->in = e; } if( dir == "out" ) { pT->out = e; } continue; } if( isEndElement() ) { break; } } if( pT->id != 0 ) { mpHost->mpMap->rooms[pT->id] = pT; maxRooms++; qDebug()<<"adding room:"<<pT->id<<" area:"<<pT->area<<" rooms:"<<maxRooms; qDebug()<<"-- n:"<<pT->north<<" s:"<<pT->south<<" w:"<<pT->west<<" e:"<<pT->east<<" ne:"<<pT->northeast<<" nw:"<<pT->northwest<<" se:"<<pT->southeast<<" nw:"<<pT->northwest<<" ne:"<<pT->northeast<<" up:"<<pT->up<<" down:"<<pT->down; } else delete pT; }
QList<KeyData> QCrmlParser::parseKeyRange(quint32 repoUid) { QList<KeyData> rv; //if keyRange has no ref attribute it must //only be used for creating access control //policies which we do not need to worry about if (attributes().value(QLatin1String("ref")).isNull()) return rv; QStringList mandatoryAttributes; mandatoryAttributes << QLatin1String("firstInt") << QLatin1String("lastInt"); if (!checkMandatoryAttributes(mandatoryAttributes)) return rv; bool ok = false; QString pathPrefix; pathPrefix = attributes().value(QLatin1String("ref")).toString(); if (!pathPrefix.startsWith(QLatin1Char('/'))) pathPrefix.prepend(QLatin1Char('/')); if (!attributes().value(QLatin1String("countInt")).isNull()) { quint32 countInt = uidStringToUInt32(attributes().value(QLatin1String("countInt")).toString(), &ok); if (!ok) { setError(ParseError, QObject::tr("keyRange element has invalid countInt attribute on line %1") .arg(QString::number(lineNumber()))); rv.clear(); return rv; } rv.append(KeyData(pathPrefix,(quint64)countInt + (((quint64)repoUid) << 32), m_target)); } if (!pathPrefix.endsWith(QLatin1Char('/'))) pathPrefix.append(QLatin1Char('/')); quint32 firstInt = uidStringToUInt32(attributes().value(QLatin1String("firstInt")).toString(), &ok); if (!ok) { setError(ParseError, QObject::tr("keyRange element has invalid firstInt attribute on line %1") .arg(QString::number(lineNumber()))); rv.clear(); return rv; } quint32 lastInt = uidStringToUInt32(attributes().value(QLatin1String("lastInt")).toString(),&ok); if (!ok) { setError(ParseError, QObject::tr("keyRange element has invalid lastInt attribute on line %1") .arg(QString::number(lineNumber()))); rv.clear(); return rv; } quint32 maxNum =0; quint32 indexBits = 0; quint32 firstIndex = 0; if (attributes().value(QLatin1String("indexBits")).isNull()) { //keyRange doesn't map to sequence setting maxNum = lastInt - firstInt + 1; for (quint32 i=0; i < maxNum; i++) { rv.append(KeyData(pathPrefix + QString::number(i), (quint64)firstInt + (((quint64)repoUid) << 32) + i, m_target)); } while (!atEnd()) { readNext(); if (QXmlStreamReader::error() != QXmlStreamReader::NoError) { setError(ParseError, QXmlStreamReader::errorString()); rv.clear(); return rv; } if (isEndElement()) break; if (isStartElement()) parseUnknownElement(); } } else { //keyRanges does map to sequence setting indexBits = uidStringToUInt32(attributes().value(QLatin1String("indexBits")).toString(), &ok); if (!ok) { setError(ParseError, QObject::tr("keyRange elment has invalid indexBits attribute on line %1") .arg(QString::number(lineNumber()))); rv.clear(); return rv; } if (!attributes().value(QLatin1String("firstIndex")).isNull()) { QString firstIndexStr = attributes().value(QLatin1String("firstIndex")).toString(); firstIndex = firstIndexStr.toUInt(&ok, 10); if (!ok) { setError(ParseError, QObject::tr("keyRange element has invalid firstIndex attribute on line %1") .arg(QString::number(lineNumber()))); rv.clear(); return rv; } } int indexBitsLSB =0; quint32 bitmask = 1; while ( (bitmask & indexBits) == 0) { bitmask = bitmask << 1; bitmask +=1; indexBitsLSB+=1; } maxNum =( ((lastInt - firstInt) & indexBits) >> indexBitsLSB) + 1 - firstIndex; int indexBitsMSB=31; bitmask = 0x80000000; while ((bitmask & indexBits) == 0) { bitmask = bitmask >> 1; bitmask += 0x80000000; indexBitsMSB -=1; } bitmask = bitmask << 1; quint32 settingIdentifier = lastInt & bitmask; QList<KeyData> subSettings; while (!atEnd()) { readNext(); if (QXmlStreamReader::error() != QXmlStreamReader::NoError) { setError(ParseError, QXmlStreamReader::errorString()); rv.clear(); return rv; } if (isEndElement()) break; if (isStartElement()) { if (name() == "key") { subSettings.append(parseKey(repoUid)); if (QXmlStreamReader::error() != QXmlStreamReader::NoError) { rv.clear(); return rv; } } else { parseUnknownElement(); } } } for(quint32 i = 0; i < maxNum; i++) { for(int j = 0; j < subSettings.count(); j++) { rv.append(KeyData(pathPrefix + QString::number(i) + subSettings.at(j).path(), subSettings.at(j).uid() + settingIdentifier + ((firstIndex + 1*i) << indexBitsLSB), m_target, subSettings.at(j).bitIndex())); } } } return rv; }
bool XMLimport::importPackage( QIODevice * device, QString packName ) { mPackageName = packName; setDevice( device ); gotTrigger = false; gotTimer = false; gotAlias = false; gotKey = false; gotAction = false; gotScript = false; if( ! packName.isEmpty() ) { mpKey = new TKey( 0, mpHost ); mpKey->setPackageName( mPackageName ); mpKey->setIsActive( true ); mpKey->setName( mPackageName ); mpKey->setIsFolder( true ); mpTrigger = new TTrigger( 0, mpHost ); mpTrigger->setPackageName( mPackageName ); mpTrigger->setIsActive( true ); mpTrigger->setName( mPackageName ); mpTrigger->setIsFolder( true ); mpTimer = new TTimer( 0, mpHost ); mpTimer->setPackageName( mPackageName ); mpTimer->setIsActive( true ); mpTimer->setName( mPackageName ); mpTimer->setIsFolder( true ); mpAlias = new TAlias( 0, mpHost ); mpAlias->setPackageName( mPackageName ); mpAlias->setIsActive( true ); mpAlias->setName( mPackageName ); mpAlias->setIsFolder( true ); mpAction = new TAction( 0, mpHost ); mpAction->setPackageName( mPackageName ); mpAction->setIsActive( true ); mpAction->setName( mPackageName ); mpAction->setIsFolder( true ); mpScript = new TScript( 0, mpHost ); mpScript->setPackageName( mPackageName ); mpScript->setIsActive( true ); mpScript->setName( mPackageName ); mpScript->setIsFolder( true ); mpHost->getTriggerUnit()->registerTrigger( mpTrigger ); mpHost->getTimerUnit()->registerTimer( mpTimer ); mpHost->getAliasUnit()->registerAlias( mpAlias ); mpHost->getActionUnit()->registerAction( mpAction ); mpHost->getKeyUnit()->registerKey( mpKey ); mpHost->getScriptUnit()->registerScript( mpScript ); } while( ! atEnd() ) { readNext(); if( isStartElement() ) { if( name() == "MudletPackage" )// && attributes().value("version") == "1.0") { readPackage(); } else if( name() == "map" ) { maxAreas = 0; maxRooms = 0; areaMap.clear(); readMap(); mpHost->mpMap->init(mpHost); } else { qDebug()<<"ERROR:name="<<name().toString()<<"text:"<<text().toString(); } } } if( ! packName.isEmpty() ) { if( ! gotTrigger ) mpHost->getTriggerUnit()->unregisterTrigger( mpTrigger ); if( ! gotTimer ) mpHost->getTimerUnit()->unregisterTimer( mpTimer ); if( ! gotAlias ) mpHost->getAliasUnit()->unregisterAlias( mpAlias ); if( ! gotAction ) mpHost->getActionUnit()->unregisterAction( mpAction ); if( ! gotKey ) mpHost->getKeyUnit()->unregisterKey( mpKey ); if( ! gotScript ) mpHost->getScriptUnit()->unregisterScript( mpScript ); } return ! error(); }
void ITunesImporterWorker::run() { DEBUG_BLOCK debug() << "file:" << m_databaseLocation; QFile* file = new QFile( m_databaseLocation ); if( !file->exists() ) { debug() << "COULDN'T FIND DB FILE!"; emit importError( "" ); m_failed = true; return; } if ( !file->open( QIODevice::ReadOnly ) ) { debug() << "COULDN'T OPEN DB FILE!"; emit importError( "" ); m_failed = true; return; } setDevice( file ); //debug() << "got element:" << name().toString(); while( !atEnd() ) { if( m_aborted ) return; readNext(); if ( name() == "key" && readElementText() == "Tracks" ) // ok, we're at the start { readNext(); readNext(); readNext(); // this skips the first all-encompassing <dict> tag debug() << "got start of tracks"; while( !atEnd() && !( isEndElement() && name() == "dict" ) ) { if( m_aborted ) return; //debug() << "reading element name:" << name().toString(); if( isStartElement() && name() == "dict") // this is a track item! { readTrackElement(); } readNext(); } } } if( m_tracksForInsert.size() > 0 ) { Collections::CollectionLocation *location = CollectionManager::instance()->primaryCollection()->location(); QMapIterator<Meta::TrackPtr, QString> j(m_tracksForInsert); while (j.hasNext()) { j.next(); location->insert( j.key(), j.value() ); } } debug() << "done importing xml file"; }
void XMLimport::readHostPackage( Host * pT ) { pT->mAutoClearCommandLineAfterSend = ( attributes().value("autoClearCommandLineAfterSend") == "yes" ); pT->mDisableAutoCompletion = ( attributes().value("disableAutoCompletion") == "yes" ); pT->mPrintCommand = ( attributes().value("printCommand") == "yes" ); pT->set_USE_IRE_DRIVER_BUGFIX( attributes().value("USE_IRE_DRIVER_BUGFIX") == "yes" ); pT->mUSE_FORCE_LF_AFTER_PROMPT = ( attributes().value("mUSE_FORCE_LF_AFTER_PROMPT") == "yes" ); pT->mUSE_UNIX_EOL = ( attributes().value("mUSE_UNIX_EOL") == "yes" ); pT->mNoAntiAlias = ( attributes().value("mNoAntiAlias") == "yes" ); pT->mRawStreamDump = ( attributes().value("mRawStreamDump") == "yes" ); pT->mAlertOnNewData = ( attributes().value("mAlertOnNewData") == "yes" ); pT->mFORCE_NO_COMPRESSION = ( attributes().value("mFORCE_NO_COMPRESSION") == "yes" ); pT->mFORCE_GA_OFF = ( attributes().value("mFORCE_GA_OFF") == "yes" ); pT->mFORCE_SAVE_ON_EXIT = ( attributes().value("mFORCE_SAVE_ON_EXIT") == "yes" ); pT->mEnableGMCP = ( attributes().value("mEnableGMCP") == "yes" ); pT->mMapStrongHighlight = ( attributes().value("mMapStrongHighlight") == "yes" ); pT->mLogStatus = ( attributes().value("mLogStatus") == "yes" ); pT->mEnableSpellCheck = ( attributes().value("mEnableSpellCheck") == "yes" ); while( ! atEnd() ) { readNext(); if( isEndElement() ) break; if( isStartElement() ) { if( name() == "name" ) { pT->mHostName = readElementText(); continue; } else if( name() == "mInstalledPackages") { readStringList( pT->mInstalledPackages ); continue; } else if( name() =="url" ) { pT->mUrl = readElementText(); continue; } else if( name() == "port") { pT->mPort = readElementText().toInt(); continue; } else if( name() == "borderTopHeight") { pT->mBorderTopHeight = readElementText().toInt(); continue; } else if( name() == "commandLineMinimumHeight") { pT->commandLineMinimumHeight = readElementText().toInt(); continue; } else if( name() == "borderBottomHeight") { pT->mBorderBottomHeight = readElementText().toInt(); continue; } else if( name() == "borderLeftWidth") { pT->mBorderLeftWidth = readElementText().toInt(); continue; } else if( name() == "borderRightWidth") { pT->mBorderRightWidth = readElementText().toInt(); continue; } else if( name() == "wrapAt") { pT->mWrapAt = readElementText().toInt(); continue; } else if( name() == "wrapIndentCount" ) { pT->mWrapIndentCount = readElementText().toInt(); continue; } else if( name() == "mCommandSeparator" ) { pT->mCommandSeparator = readElementText(); continue; } else if( name() == "mFgColor") { pT->mFgColor.setNamedColor( readElementText() ); continue; } else if( name() == "mBgColor") { pT->mBgColor.setNamedColor( readElementText() ); continue; } else if( name() == "mCommandFgColor") { pT->mCommandFgColor.setNamedColor( readElementText() ); continue; } else if( name() == "mCommandBgColor") { pT->mCommandBgColor.setNamedColor( readElementText() ); continue; } else if( name() == "mBlack") { pT->mBlack.setNamedColor( readElementText() ); continue; } else if( name() == "mLightBlack") { pT->mLightBlack.setNamedColor( readElementText() ); continue; } else if( name() == "mRed") { pT->mRed.setNamedColor( readElementText() ); continue; } else if( name() == "mLightRed") { pT->mLightRed.setNamedColor( readElementText() ); continue; } else if( name() == "mBlue") { pT->mBlue.setNamedColor( readElementText() ); continue; } else if( name() == "mLightBlue") { pT->mLightBlue.setNamedColor( readElementText() ); continue; } else if( name() == "mGreen") { pT->mGreen.setNamedColor( readElementText() ); continue; } else if( name() == "mLightGreen") { pT->mLightGreen.setNamedColor( readElementText() ); continue; } else if( name() == "mYellow") { pT->mYellow.setNamedColor( readElementText() ); continue; } else if( name() == "mLightYellow") { pT->mLightYellow.setNamedColor( readElementText() ); continue; } else if( name() == "mCyan") { pT->mCyan.setNamedColor( readElementText() ); continue; } else if( name() == "mLightCyan") { pT->mLightCyan.setNamedColor( readElementText() ); continue; } else if( name() == "mMagenta") { pT->mMagenta.setNamedColor( readElementText() ); continue; } else if( name() == "mLightMagenta") { pT->mLightMagenta.setNamedColor( readElementText() ); continue; } else if( name() == "mWhite") { pT->mWhite.setNamedColor( readElementText() ); continue; } else if( name() == "mLightWhite") { pT->mLightWhite.setNamedColor( readElementText() ); continue; } else if( name() == "mDisplayFont") { pT->mDisplayFont.fromString( readElementText() ); continue; } else if( name() == "mCommandLineFont") { pT->mCommandLineFont.fromString( readElementText() ); continue; } else if( name() == "mFgColor2") { pT->mFgColor_2.setNamedColor( readElementText() ); continue; } else if( name() == "mBgColor2") { pT->mBgColor_2.setNamedColor( readElementText() ); continue; } else if( name() == "mBlack2") { pT->mBlack_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightBlack2") { pT->mLightBlack_2.setNamedColor( readElementText() ); continue; } else if( name() == "mRed2") { pT->mRed_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightRed2") { pT->mLightRed_2.setNamedColor( readElementText() ); continue; } else if( name() == "mBlue2") { pT->mBlue_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightBlue2") { pT->mLightBlue_2.setNamedColor( readElementText() ); continue; } else if( name() == "mGreen2") { pT->mGreen_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightGreen2") { pT->mLightGreen_2.setNamedColor( readElementText() ); continue; } else if( name() == "mYellow2") { pT->mYellow_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightYellow2") { pT->mLightYellow_2.setNamedColor( readElementText() ); continue; } else if( name() == "mCyan2") { pT->mCyan_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightCyan2") { pT->mLightCyan_2.setNamedColor( readElementText() ); continue; } else if( name() == "mMagenta2") { pT->mMagenta_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightMagenta2") { pT->mLightMagenta_2.setNamedColor( readElementText() ); continue; } else if( name() == "mWhite2") { pT->mWhite_2.setNamedColor( readElementText() ); continue; } else if( name() == "mLightWhite2") { pT->mLightWhite_2.setNamedColor( readElementText() ); continue; } else if( name() == "mSpellDic") { pT->mSpellDic = readElementText(); continue; } else { readUnknownHostElement(); } } } }
void XbelReader::readSeparator(BookmarkNode *parent) { new BookmarkNode(BookmarkNode::Separator, parent); // empty elements have a start and end element readNext(); }
void XMLimport::readTriggerGroup( TTrigger * pParent ) { TTrigger * pT; if( pParent ) { pT = new TTrigger( pParent, mpHost ); } else { pT = new TTrigger( 0, mpHost ); } mpHost->getTriggerUnit()->registerTrigger( pT ); pT->setIsActive( (attributes().value("isActive") == "yes" ) ); pT->mIsFolder = ( attributes().value("isFolder") == "yes" ); pT->mIsTempTrigger = ( attributes().value("isTempTrigger") == "yes" ); pT->mIsMultiline = ( attributes().value("isMultiline") == "yes" ); pT->mPerlSlashGOption = ( attributes().value("isPerlSlashGOption") == "yes" ); pT->mIsColorizerTrigger = ( attributes().value("isColorizerTrigger") == "yes" ); pT->mFilterTrigger = ( attributes().value("isFilterTrigger") == "yes" ); pT->mSoundTrigger = ( attributes().value("isSoundTrigger") == "yes" ); pT->mColorTrigger = ( attributes().value("isColorTrigger") == "yes" ); pT->mColorTriggerBg = ( attributes().value("isColorTriggerBg") == "yes" ); pT->mColorTriggerFg = ( attributes().value("isColorTriggerFg") == "yes" ); while( ! atEnd() ) { readNext(); //qDebug()<<"[INFO] element:"<<name().toString()<<" text:"<<text().toString(); if( isEndElement() ) break; if( isStartElement() ) { if( name() == "name" ) { pT->setName( readElementText() ); continue; } else if( name() == "script") { pT->mScript = readElementText(); continue; } else if( name() == "packageName") { pT->mPackageName = readElementText(); continue; } else if( name() == "triggerType" ) { pT->mTriggerType = readElementText().toInt(); continue; } else if( name() == "conditonLineDelta" ) { pT->mConditionLineDelta = readElementText().toInt(); continue; } else if( name() == "mStayOpen" ) { pT->mStayOpen = readElementText().toInt(); continue; } else if( name() == "mCommand" ) { pT->mCommand = readElementText(); continue; } else if( name() == "mFgColor") { pT->mFgColor.setNamedColor( readElementText() ); continue; } else if( name() == "mBgColor") { pT->mBgColor.setNamedColor( readElementText() ); continue; } else if( name() == "colorTriggerFgColor") { pT->mColorTriggerFgColor.setNamedColor( readElementText() ); continue; } else if( name() == "colorTriggerBgColor") { pT->mColorTriggerBgColor.setNamedColor( readElementText() ); continue; } else if( name() == "mSoundFile" ) { pT->mSoundFile = readElementText(); continue; } else if( name() == "regexCodeList") { readStringList( pT->mRegexCodeList ); continue; } else if( name() == "regexCodePropertyList" ) { readIntegerList( pT->mRegexCodePropertyList ); continue; } else if( name() == "TriggerGroup" ) { readTriggerGroup( pT ); } else if( name() == "Trigger" ) { readTriggerGroup( pT ); } else { readUnknownTriggerElement(); } } } if( ! pT->setRegexCodeList( pT->mRegexCodeList, pT->mRegexCodePropertyList ) ) { qDebug()<<"IMPORT: ERROR: cant initialize pattern list for trigger "<<pT->getName(); } QString script = pT->mScript; if( ! pT->setScript( script ) ) { qDebug()<<"IMPORT: ERROR: trigger script "<< pT->getName()<<" does not compile"; } qDebug()<<"<-- ende trigger group()"; }
void PdmlReader::readProto() { PdmlProtocol *pdmlProto = NULL; OstProto::Protocol *pbProto = NULL; Q_ASSERT(isStartElement() && name() == "proto"); QString protoName; int pos = -1; int size = -1; if (!attributes().value("name").isEmpty()) protoName = attributes().value("name").toString(); if (!attributes().value("pos").isEmpty()) pos = attributes().value("pos").toString().toInt(); if (!attributes().value("size").isEmpty()) size = attributes().value("size").toString().toInt(); qDebug("proto: %s, pos = %d, expPos_ = %d, size = %d", protoName.toAscii().constData(), pos, expPos_, size); // This is a heuristic to skip protocols which are not part of // this frame, but of a reassembled segment spanning several frames // 1. Proto starting pos is 0, but we've already seen some protocols // 2. Protocol Size exceeds frame length if (((pos == 0) && (currentStream_->protocol_size() > 0)) || ((pos + size) > int(currentStream_->core().frame_len()))) { skipElement(); return; } if (isDontCareProto()) { skipElement(); return; } // if we detect a gap between subsequent protocols, we "fill-in" // with a "hexdump" from the pcap if (pos > expPos_ && pcap_) { appendHexDumpProto(expPos_, pos - expPos_); expPos_ = pos; } // for unknown protocol, read a hexdump from the pcap if (!factory_.contains(protoName) && pcap_) { int size = -1; if (!attributes().value("size").isEmpty()) size = attributes().value("size").toString().toInt(); // Check if this proto is a subset of previous proto - if so, do nothing if ((pos >= 0) && (size > 0) && ((pos + size) <= expPos_)) { qDebug("subset proto"); skipElement(); return; } if (pos >= 0 && size > 0 && ((pos + size) <= pktBuf_.size())) { appendHexDumpProto(pos, size); expPos_ += size; skipElement(); return; } } pdmlProto = appendPdmlProto(protoName, &pbProto); qDebug("%s: preProtocolHandler(expPos = %d)", protoName.toAscii().constData(), expPos_); pdmlProto->preProtocolHandler(protoName, attributes(), expPos_, pbProto, currentStream_); while (!atEnd()) { readNext(); if (isEndElement()) break; if (isStartElement()) { if (name() == "proto") { // an embedded proto qDebug("embedded proto: %s\n", attributes().value("name") .toString().toAscii().constData()); if (isDontCareProto()) { skipElement(); continue; } // if we are in the midst of processing a protocol, we // end it prematurely before we start processing the // embedded protocol // // XXX: pdmlProto may be NULL for a sequence of embedded protos if (pdmlProto) { int endPos = -1; if (!attributes().value("pos").isEmpty()) endPos = attributes().value("pos").toString().toInt(); pdmlProto->prematureEndHandler(endPos, pbProto, currentStream_); pdmlProto->postProtocolHandler(pbProto, currentStream_); StreamBase s; s.protoDataCopyFrom(*currentStream_); expPos_ = s.frameProtocolLength(0); } readProto(); pdmlProto = NULL; pbProto = NULL; } else if (name() == "field") { if ((protoName == "fake-field-wrapper") && (attributes().value("name") == "tcp.segments")) { skipElement(); qDebug("[skipping reassembled tcp segments]"); skipUntilEnd_ = true; continue; } if (pdmlProto == NULL) { pdmlProto = appendPdmlProto(protoName, &pbProto); qDebug("%s: preProtocolHandler(expPos = %d)", protoName.toAscii().constData(), expPos_); pdmlProto->preProtocolHandler(protoName, attributes(), expPos_, pbProto, currentStream_); } readField(pdmlProto, pbProto); } else skipElement(); } } // Close-off current protocol if (pdmlProto) { pdmlProto->postProtocolHandler(pbProto, currentStream_); freePdmlProtocol(pdmlProto); StreamBase s; s.protoDataCopyFrom(*currentStream_); expPos_ = s.frameProtocolLength(0); } }
f64 CFileReader::readDouble() { return xtod(readNext(m_buffer_2, BUF_2_SIZE)); }