double ModNeatExperiment7::readDoubleFromXml(string xmlCompleteFileName, string attribute) { TiXmlDocument doc1(xmlCompleteFileName); doc1.LoadFile(); if (doc1.Error()) { screen << "XML error. Exiting..." << endl; fflush(stdout); exit(-1); } TiXmlElement *root = doc1.FirstChildElement(); if (root == NULL) { screen << "root is NULL. Exiting..." << endl; fflush(stdout); exit(-1); } double value; const char* valueStr = root->Attribute(attribute.c_str(), &value); if (valueStr == NULL) { screen << "attribute " << attribute << " is NULL. Exiting..." << endl; fflush(stdout); exit(-1); } return value; }
main(int argc, char **argv) { fieldinfos fis; fix_document doc1(10); dyn_document doc2; document_helper h1(&doc1, fis); document_helper h2(&doc2, fis); return 0; }
main(int argc, char **argv) { slab_cache_init(100, 0, 0, NULL, NULL); fieldinfos fis; fix_document doc1(1, 10); dyn_document doc2(2); document_helper h1(&doc1, fis); document_helper h2(&doc2, fis); long i = 100; double d = 100.1234; char *s = "string"; fis.add("f1", TDT_STRING); fis.add("f2", TDT_LONG); fis.add("f3", TDT_DOUBLE); h1.add("f1", s); h1.add("f2", &i); h1.add("f3", &d); h2.add("f1", s); h2.add("f2", &i); h2.add("f3", &d); std::cout << fis.i2n(0) << ": " << (char *)doc1.field_data(0) << std::endl; std::cout << fis.i2n(1) << ": " << *(long *)doc1.field_data(1) << std::endl; std::cout << fis.i2n(2) << ": " << *(double *)doc1.field_data(2) << std::endl; std::cout << fis.i2n(0) << ": " << (char *)doc2.field_data(0) << std::endl; std::cout << fis.i2n(1) << ": " << *(long *)doc2.field_data(1) << std::endl; std::cout << fis.i2n(2) << ": " << *(double *)doc2.field_data(2) << std::endl; //std::string qs = "n1 > 01 AND (n2 < 0x2 OR n3 <= 3) NOT n4 >= 4. AND n5 == .5 AND n6 != 6.3 AND n7: (4.e10,.5e11) OR n8:(2.3e1,3e4] OR n9:[04e4,5223.2323e4) OR n10:[2,9]"; std::string qs = "n1 > "; ccFlexLexer lexer(new std::istringstream(qs), &std::cout); query_exp<document_helper>* exp = NULL; yy::query_parser parser(&lexer, &exp); if (parser.parse() != 0) { std::cerr << "parse failed" << std::endl; } else { std::cout << "iQuery: " << qs << std::endl; std::cout << "Parsed: " << exp->to_string() << std::endl; } return 0; }
shared_ptr<NEAT::GeneticIndividual> ModNeatExperiment7::readCppnFromXml(string xmlCompleteFileName) { TiXmlDocument doc1(xmlCompleteFileName); doc1.LoadFile(); if (doc1.Error()) { screen << "XML error. Exiting..." << endl; fflush(stdout); exit(-1); } TiXmlElement *root = doc1.FirstChildElement(); if (root == NULL) { screen << "root is NULL. Exiting..." << endl; fflush(stdout); exit(-1); } return boost::shared_ptr<GeneticIndividual>(new GeneticIndividual(root)); }
void BucketTest::testBucketGeneration() { BucketIdFactory factory; DocumentId doc1("doc:ns:spec"); DocumentId doc2("doc:ns2:spec"); DocumentId doc3("doc:ns:spec2"); DocumentId userDoc1("userdoc:ns:18:spec"); DocumentId userDoc2("userdoc:ns2:18:spec2"); DocumentId userDoc3("userdoc:ns:19:spec"); DocumentId groupDoc1("groupdoc:ns:yahoo.com:spec"); DocumentId groupDoc2("groupdoc:ns2:yahoo.com:spec2"); DocumentId groupDoc3("groupdoc:ns:yahoo:spec"); DocumentId orderDoc1("orderdoc(31,19):ns:13:1268182861:foo"); DocumentId orderDoc2("orderdoc(31,19):ns:13:1205110861:foo"); DocumentId orderDoc3("orderdoc(31,19):ns:13:1205715661:foo"); DocumentId orderDoc4("orderdoc(4,0):ns:13:2:foo"); DocumentId orderDoc5("orderdoc(4,0):ns:13:4:foo"); DocumentId orderDoc6("orderdoc(4,0):ns:13:11:foo"); BucketId docBucket1(factory.getBucketId(doc1)); BucketId docBucket2(factory.getBucketId(doc2)); BucketId docBucket3(factory.getBucketId(doc3)); BucketId userDocBucket1(factory.getBucketId(userDoc1)); BucketId userDocBucket2(factory.getBucketId(userDoc2)); BucketId userDocBucket3(factory.getBucketId(userDoc3)); BucketId groupDocBucket1(factory.getBucketId(groupDoc1)); BucketId groupDocBucket2(factory.getBucketId(groupDoc2)); BucketId groupDocBucket3(factory.getBucketId(groupDoc3)); BucketId orderDocBucket1(factory.getBucketId(orderDoc1)); BucketId orderDocBucket2(factory.getBucketId(orderDoc2)); BucketId orderDocBucket3(factory.getBucketId(orderDoc3)); BucketId orderDocBucket4(factory.getBucketId(orderDoc4)); BucketId orderDocBucket5(factory.getBucketId(orderDoc5)); BucketId orderDocBucket6(factory.getBucketId(orderDoc6)); CPPUNIT_ASSERT_EQUAL(Hex(0xe99703f200000012ull), Hex(userDocBucket1.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xebfa518a00000012ull), Hex(userDocBucket2.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xeac1850800000013ull), Hex(userDocBucket3.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xeae764e90000000dull), Hex(orderDocBucket1.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xeacb85f10000000dull), Hex(orderDocBucket2.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xea68ddf10000000dull), Hex(orderDocBucket3.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xe87526540000000dull), Hex(orderDocBucket4.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xea59f8f20000000dull), Hex(orderDocBucket5.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xe9eb703d0000000dull), Hex(orderDocBucket6.getRawId())); userDocBucket1.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000000012ull), Hex(userDocBucket1.getId())); userDocBucket2.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000000012ull), Hex(userDocBucket2.getId())); userDocBucket3.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000000013ull), Hex(userDocBucket3.getId())); CPPUNIT_ASSERT_EQUAL(Hex(0xe90ce4b09a1acd50ull), Hex(groupDocBucket1.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xe9cedaa49a1acd50ull), Hex(groupDocBucket2.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xe8cdb18bafe81f24ull), Hex(groupDocBucket3.getRawId())); groupDocBucket1.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x400000000000cd50ull), Hex(groupDocBucket1.getId())); groupDocBucket2.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x400000000000cd50ull), Hex(groupDocBucket2.getId())); groupDocBucket3.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000001f24ull), Hex(groupDocBucket3.getId())); CPPUNIT_ASSERT_EQUAL(Hex(0xe980c9abd5fd8d11ull), Hex(docBucket1.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xeafe870c5f9c37b9ull), Hex(docBucket2.getRawId())); CPPUNIT_ASSERT_EQUAL(Hex(0xeaebe9473ecbcd69ull), Hex(docBucket3.getRawId())); docBucket1.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x4000000000008d11ull), Hex(docBucket1.getId())); docBucket2.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x40000000000037b9ull), Hex(docBucket2.getId())); docBucket3.setUsedBits(16); CPPUNIT_ASSERT_EQUAL(Hex(0x400000000000cd69ull), Hex(docBucket3.getId())); }
bool Npc::fireToNpc(int pos) { if (!_loader->_db.isOpen()) { if (!_loader->_db.open()) { qDebug() << "Ошибка соединения к базе данных:" << _loader->_db.lastError(); exit(-1); } } QChar fireToClass = ' '; QSqlQuery q1; q1.prepare("SELECT data FROM map WHERE map_id=:map_id"); q1.bindValue(":map_id", _player->_map); q1.exec(); QString data = ""; if (q1.next()) { data = q1.value(0).toString(); } if (data == "") { return false; } fireToClass = data[pos]; QSqlQuery q12; q12.prepare("SELECT count(map) FROM ship_point WHERE map=:map AND pos=:pos"); q12.bindValue(":map", _player->_map); q12.bindValue(":pos", pos); q12.exec(); _found = false; if (q12.next()) { if (q12.value(0).toInt() == 1) { _found = true; } } if (!_found) { QSqlQuery q2; q2.prepare("SELECT life FROM ship_body WHERE class=:fireclass"); q2.bindValue(":fireclass", fireToClass); q2.exec(); int life = 0; if (q2.next()) { life = q2.value(0).toInt(); } if (life == 0) { return false; } life = (life - 100) + rand()%100; QSqlQuery q6; q6.prepare("INSERT INTO ship_point(ship_id, life, energy, armor, fuel, life_gen, " "energy_gen, armor_gen, net_speed, cartograph_link, grab_points, " "radar_ships, scaner_predm, fire, fire_speed, fire_link, map, pos) VALUES(" ":ship_id, :life, 0, 0, :fuel, 0, 0,0,0,0,0,0,0,0,0,0,:map,:pos)"); q6.bindValue(":ship_id", 0); q6.bindValue(":life", life); q6.bindValue(":fuel", 25); q6.bindValue(":map", _player->_map); q6.bindValue(":pos", pos); q6.exec(); } QSqlQuery q3; q3.prepare("SELECT ship_id FROM ship WHERE player_id=:player_id"); q3.bindValue(":player_id", _player->_player_id); q3.exec(); int ship_id = 0; if (q3.next()) { ship_id = q3.value(0).toInt(); } if (ship_id == 0) { return false; } QSqlQuery q4; q4.prepare("SELECT fire FROM ship_point WHERE ship_id=:ship_id"); q4.bindValue(":ship_id", ship_id); q4.exec(); int fire = 0; if (q4.next()) { fire = q4.value(0).toInt(); } if (fire == 0) { return false; } QSqlQuery q7; q7.prepare("SELECT life FROM ship_point WHERE map=:map AND pos=:pos"); q7.bindValue(":map", _player->_map); q7.bindValue(":pos", pos); q7.exec(); int npc_life = 0; if (q7.next()) { npc_life = q7.value(0).toInt(); } if (npc_life == 0) { return false; } npc_life -= fire; int opit = 0, kills = 0; if (npc_life <= 0) { QSqlQuery q9; q9.prepare("DELETE FROM ship_point WHERE map=:map AND pos=:pos"); q9.bindValue(":map", _player->_map); q9.bindValue(":pos", pos); q9.exec(); opit = 20; kills = 1; _killed = true; qDebug() << "[" << _player->_player_id << "]" << "огонь по " << fireToClass << " убит."; QSqlQuery q13; q13.prepare("SELECT data FROM map WHERE map_id=:id"); q13.bindValue(":id", _player->_map); q13.exec(); QString data; if (q13.next()) { data = q13.value(0).toString(); } data[pos] = ' '; QSqlQuery q16; q16.prepare("UPDATE map SET data=:data WHERE map_id=:id"); q16.bindValue(":id", _player->_map); q16.bindValue(":data", data); q16.exec(); QSqlQuery q17; int mission_id = 0; q17.prepare("SELECT params_json, id FROM mission WHERE player_id=:id"); q17.bindValue(":id", _player->_player_id); q17.exec(); while (q17.next()) { QString json = q17.value(0).toString(); mission_id = q17.value(1).toInt(); QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); QJsonObject obj = doc.object(); QJsonObject::iterator it = obj.begin(); QJsonObject obj1; while (it!= obj.end()) { QString str = QString::fromUtf8(it.key().toStdString().c_str()); if (str.contains("kill") && fireToClass == it.value().toString().at(0)) { //nothing to do.. } else { obj1.insert(it.key(), it.value()); } it++; } if (obj1.count() == 1) { QString priz = obj1.value("priz").toString(); QSqlQuery q21; q21.prepare("SELECT ship_id FROM ship WHERE player_id=:id"); q21.bindValue(":id", _player->_player_id); q21.exec(); int ship_bonus_id=0; if (q21.next()) { ship_bonus_id = q21.value(0).toInt(); } if (priz == "cartograph") { QSqlQuery q20; q20.prepare("UPDATE ship SET cartograph=1 WHERE player_id=:id"); q20.bindValue(":id", _player->_player_id); q20.exec(); int link = rand()%10; QSqlQuery q22; q22.prepare("UPDATE ship_point SET cartograph_link=:link WHERE ship_id=:id"); q22.bindValue(":link", link); q22.bindValue(":id", ship_bonus_id); q22.exec(); qDebug() << "[" << _player->_player_id << "] " << "Выигран бонус картограф!"; _player->_bonus = 1; } else if (priz == "droid") { QSqlQuery q23; int time = rand()%10; int points = rand()%10; q23.prepare("INSERT INTO droid(player_id, class, time, points) VALUES(:id, :class, :time, :points)"); q23.bindValue(":id", _player->_player_id); q23.bindValue(":class", "A"); q23.bindValue(":time", QDateTime::currentDateTime().addDays(time)); q23.bindValue(":points", points); q23.exec(); qDebug() << "[" << _player->_player_id << "] " << "Выигран бонус дроид!"; _player->_bonus = 2; } QSqlQuery q24; q24.prepare("DELETE FROM mission WHERE id=:id"); q24.bindValue(":id", mission_id); q24.exec(); } QJsonDocument doc1(obj1); QSqlQuery q25; QString str = QString::fromUtf8(doc1.toJson(QJsonDocument::Compact).toStdString().c_str()); q25.prepare("UPDATE mission SET params_json=:str WHERE id=:id"); q25.bindValue(":id", mission_id); q25.bindValue(":str", str); q25.exec(); } } else { QSqlQuery q8; q8.prepare("UPDATE ship_point SET life=:life WHERE map=:map AND pos=:pos"); q8.bindValue(":map", _player->_map); q8.bindValue(":pos", pos); q8.bindValue(":life", npc_life); q8.exec(); opit = 10; qDebug() << "[" << _player->_player_id << "]" << "огонь по " << fireToClass << " урон = " << fire; } QSqlQuery q10; q10.prepare("SELECT exp, kills FROM rating WHERE player_id=:player_id"); q10.bindValue(":player_id", _player->_player_id); q10.exec(); int exp = 0, kills_base = 0; if (q10.next()) { exp = q10.value(0).toInt(); kills_base = q10.value(1).toInt(); } exp+=opit; kills_base+=kills; QSqlQuery q11; q11.prepare("UPDATE rating SET exp=:exp, kills=:kills WHERE player_id=:player_id"); q11.bindValue(":exp", exp); q11.bindValue(":kills", kills_base); q11.bindValue(":player_id", _player->_player_id); q11.exec(); QSqlQuery q13; q13.prepare("SELECT level FROM player WHERE player_id=:id"); q13.bindValue(":id", _player->_player_id); q13.exec(); int level = 0; if (q13.next()) { level = q13.value(0).toInt(); } if (level == 0) { qDebug() << "Ошибка level поврежден."; exit(-1); } _levelup = false; if (level >= 1 && level <=10) { if (exp >=1300000) { _levelup = true; } } if (level >= 11 && level <=20) { if (exp >=2100000) { _levelup = true; } } if (level >= 21 && level <=30) { if (exp >=3300000) { _levelup = true; } } if (level >= 31 && level <=40) { if (exp >=4400000) { _levelup = true; } } if (level >= 41 && level <=50) { if (exp >=5500000) { _levelup = true; } } if (level >= 51 && level <=60) { if (exp >=7700000) { _levelup = true; } } if (_levelup) { level++; qDebug() << "Игрок с id = " << QString::number(_player->_player_id) << " Повышение уровня. " << level; QSqlQuery q14; q14.prepare("UPDATE rating SET exp=:exp WHERE player_id=:player_id"); q14.bindValue(":player_id", _player->_player_id); q14.bindValue(":exp", 0); q14.exec(); QSqlQuery q15; q15.prepare("UPDATE player SET level=:level WHERE player_id=:player_id"); q15.bindValue(":player_id", _player->_player_id); q15.bindValue(":level", level); q15.exec(); _player->_level = level; } return true; }