author | jacint |
Sun, 22 Feb 2004 12:17:16 +0000 | |
changeset 113 | cf7b01232d86 |
permissions | -rw-r--r-- |
ladanyi@63 | 1 |
#ifndef LOADER_H |
ladanyi@63 | 2 |
#define LOADER_H |
ladanyi@63 | 3 |
|
ladanyi@63 | 4 |
#include <map> |
ladanyi@63 | 5 |
|
ladanyi@63 | 6 |
#define LINE_LEN 1024 |
ladanyi@63 | 7 |
|
ladanyi@63 | 8 |
template<typename Graph> |
ladanyi@63 | 9 |
void LoadGraph(Graph &G, char *filename) { |
ladanyi@63 | 10 |
FILE *file; |
ladanyi@63 | 11 |
if ((file = fopen(filename, "r")) == NULL) { |
ladanyi@63 | 12 |
printf("Could not open %s\n", filename); |
ladanyi@63 | 13 |
return; |
ladanyi@63 | 14 |
} |
ladanyi@63 | 15 |
int i, n1, n2; |
ladanyi@63 | 16 |
std::map<int, typename Graph::NodeIt> nmap; |
ladanyi@63 | 17 |
char line[LINE_LEN]; |
ladanyi@63 | 18 |
while (fgets(line, LINE_LEN, file)) { |
ladanyi@63 | 19 |
switch (line[0]) { |
ladanyi@63 | 20 |
case 'n': |
ladanyi@63 | 21 |
nmap[atoi(line + 1)] = G.addNode(); |
ladanyi@63 | 22 |
break; |
ladanyi@63 | 23 |
case 'a': |
ladanyi@63 | 24 |
n1 = atoi(line + 1); |
ladanyi@63 | 25 |
i = 1; |
ladanyi@63 | 26 |
while (isspace(line[i])) i++; |
ladanyi@63 | 27 |
while (isdigit(line[i])) i++; |
ladanyi@63 | 28 |
n2 = atoi(line + i); |
ladanyi@63 | 29 |
if (nmap.find(n1) == nmap.end()) { |
ladanyi@63 | 30 |
nmap[n1] = G.addNode(); |
ladanyi@63 | 31 |
} |
ladanyi@63 | 32 |
if (nmap.find(n2) == nmap.end()) { |
ladanyi@63 | 33 |
nmap[n2] = G.addNode(); |
ladanyi@63 | 34 |
} |
ladanyi@63 | 35 |
G.addEdge(nmap[n1], nmap[n2]); |
ladanyi@63 | 36 |
break; |
ladanyi@63 | 37 |
} |
ladanyi@63 | 38 |
} |
ladanyi@63 | 39 |
} |
ladanyi@63 | 40 |
|
ladanyi@63 | 41 |
#endif |