コード例 #1
0
modify_collection& modify_collection::index(bsoncxx::document::view_or_value index_spec,
                                            std::chrono::seconds seconds) {
    _index.emplace(
        make_document(kvp("keyPattern", bsoncxx::types::b_document{std::move(index_spec)}),
                      kvp("expireAfterSeconds", bsoncxx::types::b_int64{seconds.count()})));
    return *this;
}
コード例 #2
0
void example02()
{
   static const std::string data[] =
                     {
                        "00=123456|01=1234567.1234567|02=Simple text|03=-3,-2,-1,0,1,2,3|04=1.1,2.2,3.3,4.4,5.5,6.6|05=Text1,Text2,Text3,Text4",
                        "01=1234567.1234567|02=Simple text|03=-3,-2,-1,0,1,2,3|04=1.1,2.2,3.3,4.4,5.5,6.6|05=Text1,Text2,Text3,Text4|00=123456",
                        "02=Simple text|03=-3,-2,-1,0,1,2,3|04=1.1,2.2,3.3,4.4,5.5,6.6|05=Text1,Text2,Text3,Text4|00=123456|01=1234567.1234567",
                        "03=-3,-2,-1,0,1,2,3|04=1.1,2.2,3.3,4.4,5.5,6.6|05=Text1,Text2,Text3,Text4|00=123456|01=1234567.1234567|02=Simple text",
                        "04=1.1,2.2,3.3,4.4,5.5,6.6|05=Text1,Text2,Text3,Text4|00=123456|01=1234567.1234567|02=Simple text|03=-3,-2,-1,0,1,2,3",
                        "05=Text1,Text2,Text3,Text4|00=123456|01=1234567.1234567|02=Simple text|03=-3,-2,-1,0,1,2,3|04=1.1,2.2,3.3,4.4,5.5,6.6",
                        "00=123456|03=-3,-2,-1,0,1,2,3|02=Simple text|04=1.1,2.2,3.3,4.4,5.5,6.6|01=1234567.1234567|05=Text1,Text2,Text3,Text4",
                        "03=-3,-2,-1,0,1,2,3|02=Simple text|04=1.1,2.2,3.3,4.4,5.5,6.6|01=1234567.1234567|05=Text1,Text2,Text3,Text4|00=123456",
                        "02=Simple text|04=1.1,2.2,3.3,4.4,5.5,6.6|01=1234567.1234567|05=Text1,Text2,Text3,Text4|00=123456|03=-3,-2,-1,0,1,2,3",
                        "04=1.1,2.2,3.3,4.4,5.5,6.6|01=1234567.1234567|05=Text1,Text2,Text3,Text4|00=123456|03=-3,-2,-1,0,1,2,3|02=Simple text",
                        "01=1234567.1234567|05=Text1,Text2,Text3,Text4|00=123456|03=-3,-2,-1,0,1,2,3|02=Simple text|04=1.1,2.2,3.3,4.4,5.5,6.6",
                        "05=Text1,Text2,Text3,Text4|00=123456|03=-3,-2,-1,0,1,2,3|02=Simple text|04=1.1,2.2,3.3,4.4,5.5,6.6|01=1234567.1234567",
                     };

   static const std::size_t data_size = sizeof(data) / sizeof(std::string);

   typedef strtk::keyvalue::parser<strtk::keyvalue::uintkey_map> kvp_type;

   strtk::keyvalue::uintkey_map::options options;

   options.key_count            =   6; //[0,5]
   options.pair_block_delimiter = '|';
   options.pair_delimiter       = '=';

   kvp_type kvp(options);

   complex_data cd;

   strtk::vector_sink<int>::type vec_sink(",");
   strtk::deque_sink<double>::type deq_sink(",");
   strtk::list_sink<std::string>::type lst_sink(",");

   kvp.register_keyvalue(0,cd.v0);
   kvp.register_keyvalue(1,cd.v1);
   kvp.register_keyvalue(2,cd.v2);
   kvp.register_keyvalue(3,vec_sink(cd.v3));
   kvp.register_keyvalue(4,deq_sink(cd.v4));
   kvp.register_keyvalue(5,lst_sink(cd.v5));

   for (std::size_t i = 0; i < data_size; ++i)
   {
      if (kvp(data[i]))
      {
         std::cout << "Seq[" << strtk::text::right_align(2,'0',i) << "] "
                   << "(Key0: " << cd.v0 << ") "
                   << "(Key1: " << cd.v1 << ") "
                   << "(Key2: " << cd.v2 << ") "
                   << "(Key3: " << strtk::join(" ",cd.v3) << ") "
                   << "(Key4: " << strtk::join(" ",cd.v4) << ") "
                   << "(Key5: " << strtk::join(" ",cd.v5) << ")\n";
         cd.reset();
      }
      else
         std::cout << "Failed to parse data: " << data[i] << std::endl;
   }
}
コード例 #3
0
void PreferencesDlg::setConfig()
{
    LayeredConfiguration &config = BasicApplication::instance().config();

    // Iterate over the _configMap and set the widgets' values to whatever the
    // configuration says depending on the respective widget type.
    QMutableMapIterator<QWidget *, const char *> kvp(_configMap);
    while (kvp.hasNext()) {
        kvp.next();
        if (kvp.key()->inherits("QCheckBox")) {
            QCheckBox *cb = static_cast<QCheckBox*>(kvp.key());
            config.setBool(kvp.value(), cb->isChecked());
        }
        else if (kvp.key()->inherits("QComboBox")) {
            QComboBox *cb = static_cast<QComboBox*>(kvp.key());
            config.setInt(kvp.value(), cb->currentIndex());
        }
        else if (kvp.key()->inherits("QSpinBox")) {
            QSpinBox *sb = static_cast<QSpinBox*>(kvp.key());
            config.setInt(kvp.value(), sb->value());
        }
        else if (kvp.key()->inherits("QDoubleSpinBox")) {
            QDoubleSpinBox *dsb = static_cast<QDoubleSpinBox*>(kvp.key());
            config.setDouble(kvp.value(), dsb->value());
        }
        else {
            throw Poco::NotImplementedException("Unknown configuration widget.");
        }
    }
}
コード例 #4
0
bsoncxx::document::value validation_criteria::to_document() const {
    bsoncxx::builder::basic::document doc;

    if (_rule) {
        doc.append(kvp("validator", bsoncxx::types::b_document{*_rule}));
    }

    if (_level) {
        doc.append(kvp("validationLevel", validation_level_to_string(*_level)));
    }

    if (_action) {
        doc.append(kvp("validationAction", validation_action_to_string(*_action)));
    }

    return doc.extract();
}
コード例 #5
0
bsoncxx::document::value modify_collection::to_document() const {
    bsoncxx::builder::basic::document doc;

    if (_index) {
        doc.append(kvp("index", bsoncxx::types::b_document{_index->view()}));
    }

    if (_no_padding) {
        doc.append(kvp("noPadding", *_no_padding));
    }

    if (_validation) {
        BSONCXX_SUPPRESS_DEPRECATION_WARNINGS_BEGIN;
        doc.append(concatenate(_validation->to_document()));
        BSONCXX_SUPPRESS_DEPRECATION_WARNINGS_END;
    }

    return doc.extract();
}
コード例 #6
0
void CValueMap::SetAt(const CString & strKey, const CVariant & varVal)
{
	CString strRealKey = strKey;
	if (!m_bCaseSensitive) {
		strRealKey.ToLower();
	}
	CKeyValPair kvp(strRealKey, varVal);

	m_map.Delete(kvp);
	m_map.Insert(kvp);
}
コード例 #7
0
void PreferencesDlg::getConfig()
{
    LayeredConfiguration &config = BasicApplication::instance().config();

    // Assign some default values where the "guessing" method in the next 
    // loop is not appropriate.
    if (!config.hasProperty("browser.processCreation.overlap")) {
        config.setDouble("browser.processCreation.overlap",
            config.getDouble("blissart.fft.overlap", 0.5));
    }
    if (!config.hasProperty("browser.processCreation.windowSizeMS")) {
        config.setInt("browser.processCreation.windowSizeMS",
            config.getDouble("blissart.fft.windowsize", 25));
    }
    if (!config.hasProperty("browser.processCreation.numComponents")) {
        config.setInt("browser.processCreation.numComponents", 20);
    }
    if (!config.hasProperty("browser.processCreation.maxIterations")) {
        config.setInt("browser.processCreation.maxIterations", 100);
    }

    // Iterate over the _configMap and set the widgets' values to whatever the
    // configuration says depending on the respective widget type.
    QMutableMapIterator<QWidget *, const char *> kvp(_configMap);
    while (kvp.hasNext()) {
        kvp.next();
        if (kvp.key()->inherits("QCheckBox")) {
            QCheckBox *cb = static_cast<QCheckBox*>(kvp.key());
            cb->setChecked(config.getBool(kvp.value(), true));
        }
        else if (kvp.key()->inherits("QComboBox")) {
            QComboBox *cb = static_cast<QComboBox*>(kvp.key());
            cb->setCurrentIndex(config.getInt(kvp.value(), 0));
        }
        else if (kvp.key()->inherits("QSpinBox")) {
            QSpinBox *sb = static_cast<QSpinBox*>(kvp.key());
            sb->setValue(config.getInt(kvp.value(), sb->minimum()));
        }
        else if (kvp.key()->inherits("QDoubleSpinBox")) {
            QDoubleSpinBox *dsb = static_cast<QDoubleSpinBox*>(kvp.key());
            dsb->setValue(config.getDouble(kvp.value(), dsb->minimum()));
        }
        else {
            throw Poco::NotImplementedException("Unknown configuration widget.");
        }
    }
}
コード例 #8
0
bsoncxx::document::value create_collection::to_document() const {
    auto doc = bsoncxx::builder::basic::document{};

    if (_auto_index_id) {
        doc.append(kvp("autoIndexId", *_auto_index_id));
    }

    if (_capped) {
        doc.append(kvp("capped", *_capped));
    }

    if (_collation) {
        doc.append(kvp("collation", bsoncxx::types::b_document{*_collation}));
    }

    if (_max_documents) {
        doc.append(kvp("max", *_max_documents));
    }

    if (_max_size) {
        doc.append(kvp("size", *_max_size));
    }

    if (_no_padding) {
        doc.append(kvp("flags", (*_no_padding ? 0x10 : 0x00)));
    }

    if (_storage_engine_opts) {
        doc.append(kvp("storageEngine", bsoncxx::types::b_document{*_storage_engine_opts}));
    }

    if (_validation) {
        doc.append(concatenate(_validation->to_document()));
    }

    return doc.extract();
}
コード例 #9
0
void example01()
{
   static const std::size_t rounds = 1000000;

   // Format: key_0=value_1|key_2=value_2|......|key_n=value_n
   static const std::string data[] =
                      {
                         //Seq 00
                         "121=A|122=z|123=-123|124=456|125=-12345678|126=789012345|127=-43654364634645235|128=777777777777777777|129=1234.56789|110=0.0003|111=abcdefghijklmnopqrstuvwxyz|"
                         "11321=A|11322=z|11323=-123|11324=456|11325=-12345678|11326=789012345|11327=-43654364634645235|11328=777777777777777777|11329=1234.56789|11310=0.0003|11311=abcdefghijklmnopqrstuvwxyz",
                         //Seq 01
                         "121=A|123=-111|125=-17171717|127=-43654364634645235|129=1234.56789|111=abcdefghijklmnopqrstuvwxyz|122=z|124=999|126=789012345|128=777777777777777777|110=0.0003|"
                         "11321=A|11323=-111|11325=-17171717|11327=-43654364634645235|11329=1234.56789|11311=abcdefghijklmnopqrstuvwxyz|11322=z|11324=999|11326=789012345|11328=777777777777777777|11310=0.0003",
                         //Seq 02
                         "122=z|124=999|126=789012345|128=777777777777777777|110=0.0003|121=A|123=-111|125=-17171717|127=-43654364634645235|129=1234.56789|111=abcdefghijklmnopqrstuvwxyz|"
                         "11322=z|11324=999|11326=789012345|11328=777777777777777777|11310=0.0003|11321=A|11323=-111|11325=-17171717|11327=-43654364634645235|11329=1234.56789|11311=abcdefghijklmnopqrstuvwxyz",
                         //Seq 03
                         "121=A|122=z|123=-123|124=456|125=-12345678|126=789012345|127=-43654364634645235|128=777777777777777777|129=1234.56789|110=0.0003|111=abcdefghijklmnopqrstuvwxyz|"
                         "11321=A|11322=z|11323=-123|11324=456|11325=-12345678|11326=789012345|11327=-43654364634645235|11328=777777777777777777|11329=1234.56789|11310=0.0003|11311=abcdefghijklmnopqrstuvwxyz",
                         //Seq 04
                         "111=abcdefghijklmnopqrstuvwxyz|110=0.0003|129=1234.56789|128=777777777777777777|127=-43654364634645235|126=789012345|125=-12345678|124=456|123=-123|122=z|121=A|"
                         "11311=abcdefghijklmnopqrstuvwxyz|11310=0.0003|11329=1234.56789|11328=777777777777777777|11327=-43654364634645235|11326=789012345|11325=-12345678|11324=456|11323=-123|11322=z|11321=A"
                       };

   static const std::size_t data_size = sizeof(data) / sizeof(std::string);

   {
      typedef strtk::keyvalue::parser<strtk::keyvalue::uintkey_map> kvp_type;

      strtk::keyvalue::uintkey_map::options options;

      options.key_count            = 11330; //[110,11329]
      options.pair_block_delimiter = '|';
      options.pair_delimiter       = '=';

      kvp_type kvp(options);

      data_store ds;

      kvp.register_keyvalue(  121,ds.  c1);
      kvp.register_keyvalue(  122,ds. uc1);
      kvp.register_keyvalue(  123,ds.  s1);
      kvp.register_keyvalue(  124,ds. us1);
      kvp.register_keyvalue(  125,ds.  i1);
      kvp.register_keyvalue(  126,ds. ui1);
      kvp.register_keyvalue(  127,ds. ll1);
      kvp.register_keyvalue(  128,ds.ull1);
      kvp.register_keyvalue(  129,ds.  d1);
      kvp.register_keyvalue(  110,ds.  f1);
      kvp.register_keyvalue(  111,ds.str1);

      kvp.register_keyvalue(11321,ds.  c2);
      kvp.register_keyvalue(11322,ds. uc2);
      kvp.register_keyvalue(11323,ds.  s2);
      kvp.register_keyvalue(11324,ds. us2);
      kvp.register_keyvalue(11325,ds.  i2);
      kvp.register_keyvalue(11326,ds. ui2);
      kvp.register_keyvalue(11327,ds. ll2);
      kvp.register_keyvalue(11328,ds.ull2);
      kvp.register_keyvalue(11329,ds.  d2);
      kvp.register_keyvalue(11310,ds.  f2);
      kvp.register_keyvalue(11311,ds.str2);

      unsigned int total = 0;

      strtk::util::timer timer;

      timer.start();
      for (std::size_t i = 0; i < rounds; ++i)
      {
         for (std::size_t j = 0; j < data_size; ++j)
         {
            if (kvp(data[j]))
               total += ds.ui1;
            else
            {
               std::cout << "Failed to parse data: " << data[j] << std::endl;
               return;
            }
         }
      }
      timer.stop();

      printf("[uintkeymap] Total: %d Time %8.5fsec Rates: %12.3fpairs/sec %12.3fseq/sec\n",
             total,
             timer.time(),
             (rounds * data_store::member_count * data_size) / timer.time (),
             (rounds * data_size) / timer.time ());
   }

   {
      typedef unsigned char char_type;
      typedef strtk::keyvalue::parser<strtk::keyvalue::stringkey_map> kvp_type;
      typedef strtk::keyvalue::options<char_type> opts_type;

      opts_type options;

      options.pair_block_delimiter = '|';
      options.pair_delimiter       = '=';

      kvp_type kvp(options);

      data_store ds;

      kvp.register_keyvalue("121",ds.  c1);
      kvp.register_keyvalue("122",ds. uc1);
      kvp.register_keyvalue("123",ds.  s1);
      kvp.register_keyvalue("124",ds. us1);
      kvp.register_keyvalue("125",ds.  i1);
      kvp.register_keyvalue("126",ds. ui1);
      kvp.register_keyvalue("127",ds. ll1);
      kvp.register_keyvalue("128",ds.ull1);
      kvp.register_keyvalue("129",ds.  d1);
      kvp.register_keyvalue("110",ds.  f1);
      kvp.register_keyvalue("111",ds.str1);

      kvp.register_keyvalue("11321",ds.  c2);
      kvp.register_keyvalue("11322",ds. uc2);
      kvp.register_keyvalue("11323",ds.  s2);
      kvp.register_keyvalue("11324",ds. us2);
      kvp.register_keyvalue("11325",ds.  i2);
      kvp.register_keyvalue("11326",ds. ui2);
      kvp.register_keyvalue("11327",ds. ll2);
      kvp.register_keyvalue("11328",ds.ull2);
      kvp.register_keyvalue("11329",ds.  d2);
      kvp.register_keyvalue("11310",ds.  f2);
      kvp.register_keyvalue("11311",ds.str2);

      unsigned int total = 0;

      strtk::util::timer timer;

      timer.start();
      for (std::size_t i = 0; i < rounds; ++i)
      {
         for (std::size_t j = 0; j < data_size; ++j)
         {
            if (kvp(data[j]))
               total += ds.ui1;
            else
            {
               std::cout << "Failed to parse data: " << data[j] << std::endl;
               return;
            }
         }
      }
      timer.stop();

      printf("[strkeymap ] Total: %d Time %8.5fsec Rates: %12.3fpairs/sec %12.3fseq/sec\n",
             total,
             timer.time(),
             (rounds * data_store::member_count * data_size) / timer.time (),
             (rounds * data_size) / timer.time ());
   }
}
コード例 #10
0
TEST_CASE("options::rewriter::rewrite_find_modifiers() with $comment", "[find][option]") {
    instance::current();

    SECTION("$comment with k_utf8 type is translated") {
        auto find_opts = options::rewriter::rewrite_find_modifiers(
            options::find{}.modifiers_deprecated(make_document(kvp("$comment", "test"))));
        REQUIRE(!find_opts.modifiers_deprecated());
        REQUIRE(find_opts.comment());
        REQUIRE(*find_opts.comment() == stdx::string_view("test"));
    }

    SECTION("$comment with other types is rejected") {
        REQUIRE_THROWS_AS(
            options::rewriter::rewrite_find_modifiers(
                options::find{}.modifiers_deprecated(make_document(kvp("$comment", 1)))),
            logic_error);
    }
}

TEST_CASE("options::rewriter::rewrite_find_modifiers() with $explain", "[find][option]") {
    instance::current();

    SECTION("$explain isn't supported") {
        REQUIRE_THROWS_AS(
            options::rewriter::rewrite_find_modifiers(
                options::find{}.modifiers_deprecated(make_document(kvp("$explain", true)))),
            logic_error);
    }
}
コード例 #11
0
ファイル: g_spawn.cpp プロジェクト: danninemx/ufoai
/**
 * @brief Takes a key/value pair and sets the binary values in an edict
 */
static void ED_ParseField (const char* key, const char* value, Edict* ent)
{
	KeyValuePair kvp(key, value);

	if (kvp.isKey("classname"))
		ent->classname = ED_NewString(value);
	else if (kvp.isKey("model"))
		ent->model = ED_NewString(value);
	else if (kvp.isKey("spawnflags"))
		ent->spawnflags = kvp.asInt();
	else if (kvp.isKey("speed"))
		ent->speed = kvp.asInt();
	else if (kvp.isKey("dir"))
		ent->dir = kvp.asInt();
	else if (kvp.isKey("active"))
		ent->active = kvp.asBool();
	else if (kvp.isKey("target"))
		ent->target = ED_NewString(value);
	else if (kvp.isKey("targetname"))
		ent->targetname = ED_NewString(value);
	else if (kvp.isKey("item"))
		ent->item = ED_NewString(value);
	else if (kvp.isKey("noise"))
		ent->noise = ED_NewString(value);
	else if (kvp.isKey("particle"))
		ent->particle = ED_NewString(value);
	else if (kvp.isKey("nextmap"))
		ent->nextmap = ED_NewString(value);
	else if (kvp.isKey("frame"))
		ent->frame = kvp.asInt();
	else if (kvp.isKey("team"))
		ent->team = kvp.asInt();
	else if (kvp.isKey("group"))
		ent->group = ED_NewString(value);
	else if (kvp.isKey("size"))
		ent->fieldSize = kvp.asInt();
	else if (kvp.isKey("count"))
		ent->count = kvp.asInt();
	else if (kvp.isKey("time"))
		ent->time = kvp.asInt();
	else if (kvp.isKey("health"))
		ent->HP = kvp.asInt();
	else if (kvp.isKey("radius"))
		ent->radius = kvp.asInt();
	else if (kvp.isKey("sounds"))
		ent->sounds = kvp.asInt();
	else if (kvp.isKey("material"))
		ent->material = static_cast<edictMaterial_t>(kvp.asInt()); // enum !!
	else if (kvp.isKey("light"))
		; // ignore
	/** @todo This (maxteams) should also be handled server side - currently this is
	 * only done client side */
	else if (kvp.isKey("maxteams"))
		; // ignore
	else if (kvp.isKey("maxlevel"))
		; // ignore
	else if (kvp.isKey("dmg"))
		ent->dmg = kvp.asInt();
	else if (kvp.isKey("origin"))
		kvp.asVec3(ent->origin);
	else if (kvp.isKey("angles"))
		kvp.asVec3(ent->angles);
	else if (kvp.isKey("angle"))
		ent->angle = kvp.asFloat();
	else if (kvp.isKey("message"))
		ent->message = ED_NewString(value);

	else if (kvp.isKey("norandomspawn"))
		spawnTemp.noRandomSpawn = kvp.asInt();
	else if (kvp.isKey("noequipment"))
		spawnTemp.noEquipment = kvp.asInt();
}
コード例 #12
0
ファイル: mymoneystoragexml.cpp プロジェクト: CGenie/kmymoney
bool MyMoneyXmlContentHandler::endElement(const QString& /* namespaceURI */, const QString& /* localName */, const QString& qName)
{
  bool rc = true;
  QString s = qName.toLower();
  if (m_level) {
    m_currNode = m_currNode.parentNode().toElement();
    m_level--;
    if (!m_level) {
      try {
        if (s == "transaction") {
          MyMoneyTransaction t0(m_baseNode);
          if (!t0.id().isEmpty()) {
            MyMoneyTransaction t1(m_reader->d->nextTransactionID(), t0);
            m_reader->d->tList[t1.uniqueSortKey()] = t1;
          }
          m_reader->signalProgress(++m_elementCount, 0);
        } else if (s == "account") {
          MyMoneyAccount a(m_baseNode);
          if (!a.id().isEmpty())
            m_reader->d->aList[a.id()] = a;
          m_reader->signalProgress(++m_elementCount, 0);
        } else if (s == "payee") {
          MyMoneyPayee p(m_baseNode);
          if (!p.id().isEmpty())
            m_reader->d->pList[p.id()] = p;
        } else if (s == "tag") {
          MyMoneyTag ta(m_baseNode);
          if (!ta.id().isEmpty())
            m_reader->d->taList[ta.id()] = ta;
        } else if (s == "currency") {
          MyMoneySecurity s(m_baseNode);
          if (!s.id().isEmpty())
            m_reader->d->secList[s.id()] = s;
          m_reader->signalProgress(++m_elementCount, 0);
        } else if (s == "security") {
          MyMoneySecurity s(m_baseNode);
          if (!s.id().isEmpty())
            m_reader->d->secList[s.id()] = s;
          m_reader->signalProgress(++m_elementCount, 0);
        } else if (s == "keyvaluepairs") {
          MyMoneyKeyValueContainer kvp(m_baseNode);
          m_reader->m_storage->setPairs(kvp.pairs());
        } else if (s == "institution") {
          MyMoneyInstitution i(m_baseNode);
          if (!i.id().isEmpty())
            m_reader->d->iList[i.id()] = i;
        } else if (s == "report") {
          MyMoneyReport r(m_baseNode);
          if (!r.id().isEmpty())
            m_reader->d->rList[r.id()] = r;
          m_reader->signalProgress(++m_elementCount, 0);
        } else if (s == "budget") {
          MyMoneyBudget b(m_baseNode);
          if (!b.id().isEmpty())
            m_reader->d->bList[b.id()] = b;
        } else if (s == "fileinfo") {
          rc = m_reader->readFileInformation(m_baseNode);
          m_reader->signalProgress(-1, -1);
        } else if (s == "user") {
          rc = m_reader->readUserInformation(m_baseNode);
          m_reader->signalProgress(-1, -1);
        } else if (s == "scheduled_tx") {
          MyMoneySchedule s(m_baseNode);
          if (!s.id().isEmpty())
            m_reader->d->sList[s.id()] = s;
        } else if (s == "price") {
          MyMoneyPrice p(m_reader->d->m_fromSecurity, m_reader->d->m_toSecurity, m_baseNode);
          m_reader->d->prList[MyMoneySecurityPair(m_reader->d->m_fromSecurity, m_reader->d->m_toSecurity)][p.date()] = p;
          m_reader->signalProgress(++m_elementCount, 0);
        } else if (s == "onlinejob") {
          onlineJob job(m_baseNode);
          if (!job.id().isEmpty())
            m_reader->d->onlineJobList[job.id()] = job;
        } else {
          m_errMsg = i18n("Unknown XML tag %1 found in line %2", qName, m_loc->lineNumber());
          kWarning() << m_errMsg;
          rc = false;
        }
      } catch (const MyMoneyException &e) {
        m_errMsg = i18n("Exception while creating a %1 element: %2", s, e.what());
        kWarning() << m_errMsg;
        rc = false;
      }
      m_doc = QDomDocument();
    }
  } else {
    if (s == "institutions") {
      // last institution read, now dump them into the engine
      m_reader->m_storage->loadInstitutions(m_reader->d->iList);
      m_reader->d->iList.clear();
    } else if (s == "accounts") {
      // last account read, now dump them into the engine
      m_reader->m_storage->loadAccounts(m_reader->d->aList);
      m_reader->d->aList.clear();
      m_reader->signalProgress(-1, -1);
    } else if (s == "payees") {
      // last payee read, now dump them into the engine
      m_reader->m_storage->loadPayees(m_reader->d->pList);
      m_reader->d->pList.clear();
    } else if (s == "tags") {
      // last tag read, now dump them into the engine
      m_reader->m_storage->loadTags(m_reader->d->taList);
      m_reader->d->taList.clear();
    } else if (s == "transactions") {
      // last transaction read, now dump them into the engine
      m_reader->m_storage->loadTransactions(m_reader->d->tList);
      m_reader->d->tList.clear();
      m_reader->signalProgress(-1, -1);
    } else if (s == "schedules") {
      // last schedule read, now dump them into the engine
      m_reader->m_storage->loadSchedules(m_reader->d->sList);
      m_reader->d->sList.clear();
    } else if (s == "securities") {
      // last security read, now dump them into the engine
      m_reader->m_storage->loadSecurities(m_reader->d->secList);
      m_reader->d->secList.clear();
      m_reader->signalProgress(-1, -1);
    } else if (s == "currencies") {
      // last currency read, now dump them into the engine
      m_reader->m_storage->loadCurrencies(m_reader->d->secList);
      m_reader->d->secList.clear();
      m_reader->signalProgress(-1, -1);
    } else if (s == "reports") {
      // last report read, now dump them into the engine
      m_reader->m_storage->loadReports(m_reader->d->rList);
      m_reader->d->rList.clear();
      m_reader->signalProgress(-1, -1);
    } else if (s == "budgets") {
      // last budget read, now dump them into the engine
      m_reader->m_storage->loadBudgets(m_reader->d->bList);
      m_reader->d->bList.clear();
    } else if (s == "prices") {
      // last price read, now dump them into the engine
      m_reader->m_storage->loadPrices(m_reader->d->prList);
      m_reader->d->bList.clear();
      m_reader->signalProgress(-1, -1);
    } else if (s == "onlinejobs") {
      m_reader->m_storage->loadOnlineJobs(m_reader->d->onlineJobList);
      m_reader->d->onlineJobList.clear();
    }
  }
  return rc;
}