bool EventReceiver::sendRetroShareLink(const QString& link) { if (!sharedMemory.attach()) { /* No running instance found */ return false; } bool result = true; if (sharedMemory.lock()) { SharedMemoryInfo *info = (SharedMemoryInfo*) sharedMemory.data(); if (info) { #ifdef WINDOWS_SYS if (info->wid) { QByteArray linkData(link.toUtf8()); COPYDATASTRUCT send; send.dwData = OP_RETROSHARELINK; send.cbData = link.length() * sizeof(char); send.lpData = (void*) linkData.constData(); SendMessage((HWND) info->wid, WM_COPYDATA, (WPARAM) 0, (LPARAM) (PCOPYDATASTRUCT) &send); } else { result = false; } #else Q_UNUSED(link); QMessageBox mb(QMessageBox::Critical, "RetroShare", QObject::tr("Start with a RetroShare link is only supported for Windows."), QMessageBox::Ok); mb.setWindowIcon(QIcon(":/images/rstray3.png")); mb.exec(); result = false; #endif } else { result = false; std::cerr << "EventReceiver::sendRetroShareLink() Cannot lock shared memory !" << std::endl; } sharedMemory.unlock(); } else { result = false; std::cerr << "EventReceiver::start() Cannot lock shared memory !" << std::endl; } sharedMemory.detach(); return result; }
Link data and create a .z80 file"; int main (int argc, char **argv) { try { int i; COptionParser optParser(appliOption, appliName, appliUsageShort, appliUsageLong, authorName, authorMail); optParser.PrintHeader(std::cout); if (!optParser.ParseCommandLine(&argc, &argv, 0, true)) { optParser.PrintError(std::cout); optParser.PrintUsage(std::cout); return -1; } i=0; while (optParser.GetOptionI(i) != 0) { switch(optParser.GetOptionI(i)) { case 'd' : { SDataLinker file; std::string name = optParser.GetStringOptionI(i, 0); std::string label = optParser.GetStringOptionI(i, 1); unsigned int mask = optParser.GetIntOptionI(i, 2); file.data = CDataLink(name, label, mask); file.data.loadFile(); file.adr = -1; linkerDataTable.push_back(file); break; } case 'z': { SDataZone zone; zone.name = optParser.GetStringOptionI(i, 0); zone.bank = optParser.GetIntOptionI(i, 1); zone.start = optParser.GetIntOptionI(i, 2); zone.end = optParser.GetIntOptionI(i, 3); linkerZoneTable.push_back(zone); break; } case 'o' : { linkerOutASM = new std::ofstream(optParser.GetStringOptionI(i, 0).c_str()); break; } case 'c' : {break;} default : { std::cerr << "Unknow option ! " << optParser.GetOptionI(i) << std::endl; return -1; } } i++; } linkData(); saveFile(); } catch(tools::CException &e) { std::cerr << e << std::endl; return -1; } return 0; }
Archipelago::Archipelago(const std::string& islandFile, const std::string& linkFile) { // read from file if present std::string currentFileRead = islandFile; try { // consume island data file std::ifstream is(islandFile); if (is.good()) { // digest file std::istream_iterator<std::string> start(is), end; std::vector<std::string> islandDataStrings = std::vector<std::string>(start, end); // extact data to property set std::vector<IslandProperties> islandNodes(islandDataStrings.size()); std::transform (islandDataStrings.begin(), islandDataStrings.end(), islandNodes.begin(), ExtractIslandData); // insert data into graph for ( auto island : islandNodes ) { vertex_t u = boost::add_vertex(m_islandGraph); m_islandGraph[u].name = island.name; m_islandGraph[u].terrain = island.terrain; } } currentFileRead = linkFile; is = std::ifstream(linkFile); if (is.good()) { // digest file std::istream_iterator<std::string> start(is), end; std::vector<std::string> linkDataStrings = std::vector<std::string>(start, end); // extact data to property set std::vector<LinkData> linkData(linkDataStrings.size()); std::transform (linkDataStrings.begin(), linkDataStrings.end(), linkData.begin(), ExtractLinkData); // insert data into graph for ( auto link : linkData ) { unsigned int searchResultA; unsigned int searchResultB; if (FindIslandByName(link.nodeNameA, searchResultA) && FindIslandByName(link.nodeNameB, searchResultB)) { link.resolvedNodeA = searchResultA; link.resolvedNodeB = searchResultB; } else { throw std::runtime_error("Error: could not find one of " + link.nodeNameA + " or " + link.nodeNameB + "in island nodes\n"); } // Create an edge conecting those two vertices edge_t e; bool b; Graph::vertex_descriptor u = *vertices(m_islandGraph).first + link.resolvedNodeA; Graph::vertex_descriptor v = *vertices(m_islandGraph).first + link.resolvedNodeB; boost::tie(e,b) = boost::add_edge(u,v,m_islandGraph); // Set the properties of a vertex and the edge m_islandGraph[e].linkType = link.properties.linkType; } } } catch (std::runtime_error& error) { throw std::runtime_error(error.what() + std::string("Error in file: ") + currentFileRead + "\n"); } }