bool ContractionHierarchiesClient::LoadData() { QString filename = fileInDirectory( m_directory,"Contraction Hierarchies" ); UnloadData(); if ( !m_graph.loadGraph( filename, 1024 * 1024 * 4 ) ) return false; m_namesFile.setFileName( filename + "_names" ); if ( !openQFile( &m_namesFile, QIODevice::ReadOnly ) ) return false; m_names = ( const char* ) m_namesFile.map( 0, m_namesFile.size() ); if ( m_names == NULL ) return false; m_namesFile.close(); m_heapForward = new Heap( m_graph.numberOfNodes() ); m_heapBackward = new Heap( m_graph.numberOfNodes() ); QFile typeFile( filename + "_types" ); if ( !openQFile( &typeFile, QIODevice::ReadOnly ) ) return false; QByteArray buffer = typeFile.readAll(); QString types = QString::fromUtf8( buffer.constData() ); m_types = types.split( ';' ); return true; }
void handleConsoleInput() { uint8_t retval; uint8_t index=0; uint8_t ch='0'; SdFile finger; switch (console.keyValue()) { case _DIR_: console.printf("SOD:\r\n"); root.ls(LS_DATE | LS_SIZE); console.printf("EOD:\r\n"); break; case _LSV_: console.printf("LSV:" BOM_VERSION "\r\n"); break; case _TYP_: typeFile(console.arguments()); break; case _NSC_: console.printf("SOD:\r\n"); retval=networkScan(); console.printf("EOD:\r\n"); console.printf("\nDBG: found=%d\r\n",retval); break; case _NJN_: //console.printf("SOD:\r\n"); retval=networkJoin(console.arguments()); //console.printf("EOD:\r\n"); console.printf("\nDBG: joined=%s\r\n",retval?"TRUE":"FALSE"); break; case _NPW_: //console.printf("SOD:\r\n"); retval=networkSetPassword(console.arguments()); //console.printf("EOD:\r\n"); console.printf("\nDBG: pwd set=%s\r\n",retval?"TRUE":"FALSE"); break; case _NST_: retval=networkStatus(); console.printf("NST: %s\r\n",retval?"CONNECTED":"NOT CONNECTED"); break; case _FMT_: // there really should be some REALLY do you mean this here but..... root.openRoot(&volume); if (finger.open(&root, ".", O_WRITE|O_READ)) { console.printf("\nDBG: Opened / \r\n"); finger.rmRfStar(); } else { console.printf("\nDBG: FAIL \r\n"); } break; case _TPT_: toPachube(1, console.arguments()); break; case _TX2_: radio.printf("%s",console.arguments()); index=0; // delay(1000); while (radio.available()) { inBuffer[index++]=ch=radio.read(); if( index>= 99 || ((ch== '\n') || ch !='\r')) { inBuffer[index]='\0'; console.puts(inBuffer); index=0; delay(100); } } inBuffer[index]='\0'; console.puts(inBuffer); console.puts((char *) "\r\n"); break; // set to one to test output for. #if 1 case _TS1_: toPachube(0, console.arguments()); break; case _TS2_: toPachube(1, console.arguments()); break; case _TS3_: toPachube(2, console.arguments()); break; case _TS4_: toPachube(3, console.arguments()); break; case _TS5_: toPachube(4, console.arguments()); break; case _FAN_: toPachube(5, console.arguments()); break; case _CHL_: toPachube(6, console.arguments()); break; case _STC_: toPachube(7, console.arguments()); break; #endif case _PKY_: strncpy(pachubeKey, console.arguments(), MAX_PATCHUBE_KEY_LENGHT-1); stripcrlf(pachubeKey); break; case _PFD_: strncpy(pachubeFeed, console.arguments(), MAX_PATCHUBE_FEED_LENGHT-1); stripcrlf(pachubeFeed); break; case _SGT_ : readSettings(); break; case _SSV_ : writeSettings(); break; default: console.printf("DBG: forwarding (%s) to device\r\n",console.key()); device.puts(console.line()); //device.puts("\r\n"); break; } }
COptionTreeWrapper::COptionTreeWrapper(DWORD dwStyle, RECT rcRect, CWnd* pParentWnd, DWORD dwTreeOptions, UINT nID, CString basePath) { m_viewName = _T("COptionTreeWrapper"); m_Style = dwStyle; m_Rect = rcRect; m_pParentWnd = pParentWnd; m_TreeOptions = dwTreeOptions; m_ID = nID; m_mTrees[NULL].m_Tree = new COptionTree(); m_mTrees[NULL].m_Tree->Create(dwStyle, rcRect, pParentWnd, dwTreeOptions, nID); m_mTrees[NULL].m_Tree->SetNotify(TRUE, pParentWnd); m_ToolBox = EngineGetToolBox(); m_szBasePath = basePath; MAPTYPECREATEFUNC *createFuncs; CHashString typeInt(_T("int")); CHashString typeFloat(_T("float")); CHashString typeDouble(_T("double")); CHashString typeBool(_T("bool")); CHashString typeString(_T("string")); CHashString typeCheckBox(_T("check")); CHashString typeRadio(_T("radio")); CHashString typeSpinner(_T("spinner")); CHashString typeEdit(_T("edit")); CHashString typeStatic(_T("static")); CHashString typeHidden(_T("hidden")); CHashString typeFile(_T("file")); CHashString typeCombo(_T("combo")); CHashString typeColor(_T("color")); // setting up optiontree additem function calls createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeInt.GetUniqueID(), &COptionTreeWrapper::SerializeSpinnerItemInt) ); createFuncs->insert( make_pair(typeFloat.GetUniqueID(), &COptionTreeWrapper::SerializeSpinnerItemFloat) ); createFuncs->insert( make_pair(typeDouble.GetUniqueID(), &COptionTreeWrapper::SerializeSpinnerItemDouble) ); m_TypeFuncMap[typeSpinner.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeInt.GetUniqueID(), &COptionTreeWrapper::SerializeEditItemInt) ); createFuncs->insert( make_pair(typeFloat.GetUniqueID(), &COptionTreeWrapper::SerializeEditItemFloat) ); createFuncs->insert( make_pair(typeDouble.GetUniqueID(), &COptionTreeWrapper::SerializeEditItemDouble) ); createFuncs->insert( make_pair(typeString.GetUniqueID(), &COptionTreeWrapper::SerializeEditItemString) ); m_TypeFuncMap[typeEdit.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeInt.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemInt) ); createFuncs->insert( make_pair(typeFloat.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemFloat) ); createFuncs->insert( make_pair(typeDouble.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemDouble) ); createFuncs->insert( make_pair(typeString.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemString) ); m_TypeFuncMap[typeStatic.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeInt.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemInt) ); createFuncs->insert( make_pair(typeFloat.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemFloat) ); createFuncs->insert( make_pair(typeDouble.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemDouble) ); createFuncs->insert( make_pair(typeString.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemString) ); createFuncs->insert( make_pair(typeBool.GetUniqueID(), &COptionTreeWrapper::SerializeStaticItemBool) ); m_TypeFuncMap[typeHidden.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeString.GetUniqueID(), &COptionTreeWrapper::SerializeFileItem) ); m_TypeFuncMap[typeFile.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeString.GetUniqueID(), &COptionTreeWrapper::SerializeComboItem) ); m_TypeFuncMap[typeCombo.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeBool.GetUniqueID(), &COptionTreeWrapper::SerializeCheckBoxItem) ); m_TypeFuncMap[typeCheckBox.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeString.GetUniqueID(), &COptionTreeWrapper::SerializeRadioItem) ); m_TypeFuncMap[typeRadio.GetUniqueID()] = createFuncs; createFuncs = new MAPTYPECREATEFUNC; createFuncs->insert( make_pair(typeInt.GetUniqueID(), &COptionTreeWrapper::SerializeColorItem) ); m_TypeFuncMap[typeColor.GetUniqueID()] = createFuncs; // setting up coptiontreeitem create functions m_TreeItemCreateFuncs[typeSpinner.GetUniqueID()] = &COptionTreeWrapper::CreateSpinnerItem; m_TreeItemCreateFuncs[typeEdit.GetUniqueID()] = &COptionTreeWrapper::CreateEditItem; m_TreeItemCreateFuncs[typeStatic.GetUniqueID()] = &COptionTreeWrapper::CreateStaticItem; m_TreeItemCreateFuncs[typeHidden.GetUniqueID()] = &COptionTreeWrapper::CreateHiddenItem; m_TreeItemCreateFuncs[typeFile.GetUniqueID()] = &COptionTreeWrapper::CreateFileItem; m_TreeItemCreateFuncs[typeCheckBox.GetUniqueID()] = &COptionTreeWrapper::CreateCheckBoxItem; m_TreeItemCreateFuncs[typeRadio.GetUniqueID()] = &COptionTreeWrapper::CreateRadioItem; m_TreeItemCreateFuncs[typeCombo.GetUniqueID()] = &COptionTreeWrapper::CreateComboItem; m_TreeItemCreateFuncs[typeColor.GetUniqueID()] = &COptionTreeWrapper::CreateColorItem; }
bool ContractionHierarchies::Preprocess( IImporter* importer, QString dir ) { QString filename = fileInDirectory( dir, "Contraction Hierarchies" ); std::vector< IImporter::RoutingNode > inputNodes; std::vector< IImporter::RoutingEdge > inputEdges; if ( !importer->GetRoutingNodes( &inputNodes ) ) return false; if ( !importer->GetRoutingEdges( &inputEdges ) ) return false; unsigned numEdges = inputEdges.size(); unsigned numNodes = inputNodes.size(); Contractor* contractor = new Contractor( numNodes, inputEdges ); std::vector< IImporter::RoutingEdge >().swap( inputEdges ); contractor->Run(); std::vector< Contractor::Witness > witnessList; contractor->GetWitnessList( witnessList ); std::vector< ContractionCleanup::Edge > contractedEdges; std::vector< ContractionCleanup::Edge > contractedLoops; contractor->GetEdges( &contractedEdges ); contractor->GetLoops( &contractedLoops ); delete contractor; ContractionCleanup* cleanup = new ContractionCleanup( inputNodes.size(), contractedEdges, contractedLoops, witnessList ); std::vector< ContractionCleanup::Edge >().swap( contractedEdges ); std::vector< ContractionCleanup::Edge >().swap( contractedLoops ); std::vector< Contractor::Witness >().swap( witnessList ); cleanup->Run(); std::vector< CompressedGraph::Edge > edges; std::vector< NodeID > map; cleanup->GetData( &edges, &map ); delete cleanup; { std::vector< unsigned > edgeIDs( numEdges ); for ( unsigned edge = 0; edge < edges.size(); edge++ ) { if ( edges[edge].data.shortcut ) continue; unsigned id = 0; unsigned otherEdge = edge; while ( true ) { if ( otherEdge == 0 ) break; otherEdge--; if ( edges[otherEdge].source != edges[edge].source ) break; if ( edges[otherEdge].target != edges[edge].target ) continue; if ( edges[otherEdge].data.shortcut ) continue; id++; } edgeIDs[edges[edge].data.id] = id; } importer->SetEdgeIDMap( edgeIDs ); } std::vector< IRouter::Node > nodes( numNodes ); for ( std::vector< IImporter::RoutingNode >::const_iterator i = inputNodes.begin(), iend = inputNodes.end(); i != iend; i++ ) nodes[map[i - inputNodes.begin()]].coordinate = i->coordinate; std::vector< IImporter::RoutingNode >().swap( inputNodes ); std::vector< IRouter::Node > pathNodes; { std::vector< IImporter::RoutingNode > edgePaths; if ( !importer->GetRoutingEdgePaths( &edgePaths ) ) return false; pathNodes.resize( edgePaths.size() ); for ( unsigned i = 0; i < edgePaths.size(); i++ ) pathNodes[i].coordinate = edgePaths[i].coordinate; } if ( !importer->GetRoutingEdges( &inputEdges ) ) return false; { std::vector< QString > inputNames; if ( !importer->GetRoutingWayNames( &inputNames ) ) return false; QFile nameFile( filename + "_names" ); if ( !openQFile( &nameFile, QIODevice::WriteOnly ) ) return false; std::vector< unsigned > nameMap( inputNames.size() ); for ( unsigned name = 0; name < inputNames.size(); name++ ) { nameMap[name] = nameFile.pos(); QByteArray buffer = inputNames[name].toUtf8(); buffer.push_back( ( char ) 0 ); nameFile.write( buffer ); } nameFile.close(); nameFile.open( QIODevice::ReadOnly ); const char* test = ( const char* ) nameFile.map( 0, nameFile.size() ); for ( unsigned name = 0; name < inputNames.size(); name++ ) { QString testName = QString::fromUtf8( test + nameMap[name] ); assert( testName == inputNames[name] ); } for ( unsigned edge = 0; edge < numEdges; edge++ ) inputEdges[edge].nameID = nameMap[inputEdges[edge].nameID]; } { std::vector< QString > inputTypes; if ( !importer->GetRoutingWayTypes( &inputTypes ) ) return false; QFile typeFile( filename + "_types" ); if ( !openQFile( &typeFile, QIODevice::WriteOnly ) ) return false; QStringList typeList; for ( unsigned type = 0; type < inputTypes.size(); type++ ) typeList.push_back( inputTypes[type] ); typeFile.write( typeList.join( ";" ).toUtf8() ); } for ( std::vector< IImporter::RoutingEdge >::iterator i = inputEdges.begin(), iend = inputEdges.end(); i != iend; i++ ) { i->source = map[i->source]; i->target = map[i->target]; } CompressedGraphBuilder* builder = new CompressedGraphBuilder( 1u << m_settings.blockSize, nodes, edges, inputEdges, pathNodes ); if ( !builder->run( filename, &map ) ) return false; delete builder; importer->SetIDMap( map ); return true; }