| ... | ... |
@@ -881,9 +881,15 @@ |
| 881 | 881 |
std::vector<int> map_index(_node_maps.size()); |
| 882 | 882 |
int map_num, label_index; |
| 883 | 883 |
|
| 884 |
if (!readLine()) |
|
| 885 |
throw DataFormatError("Cannot find map captions");
|
|
| 886 |
|
|
| 884 |
char c; |
|
| 885 |
if (!readLine() || !(line >> c) || c == '@') {
|
|
| 886 |
if (readSuccess() && line) line.putback(c); |
|
| 887 |
if (!_node_maps.empty()) |
|
| 888 |
throw DataFormatError("Cannot find map names");
|
|
| 889 |
return; |
|
| 890 |
} |
|
| 891 |
line.putback(c); |
|
| 892 |
|
|
| 887 | 893 |
{
|
| 888 | 894 |
std::map<std::string, int> maps; |
| 889 | 895 |
|
| ... | ... |
@@ -912,14 +918,15 @@ |
| 912 | 918 |
|
| 913 | 919 |
{
|
| 914 | 920 |
std::map<std::string, int>::iterator jt = maps.find("label");
|
| 915 |
if (jt == maps.end()) |
|
| 916 |
throw DataFormatError("Label map not found in file");
|
|
| 917 |
|
|
| 921 |
if (jt != maps.end()) {
|
|
| 922 |
label_index = jt->second; |
|
| 923 |
} else {
|
|
| 924 |
label_index = -1; |
|
| 925 |
} |
|
| 918 | 926 |
} |
| 919 | 927 |
map_num = maps.size(); |
| 920 | 928 |
} |
| 921 | 929 |
|
| 922 |
char c; |
|
| 923 | 930 |
while (readLine() && line >> c && c != '@') {
|
| 924 | 931 |
line.putback(c); |
| 925 | 932 |
|
| ... | ... |
@@ -937,8 +944,11 @@ |
| 937 | 944 |
Node n; |
| 938 | 945 |
if (!_use_nodes) {
|
| 939 | 946 |
n = _digraph.addNode(); |
| 940 |
|
|
| 947 |
if (label_index != -1) |
|
| 948 |
_node_index.insert(std::make_pair(tokens[label_index], n)); |
|
| 941 | 949 |
} else {
|
| 950 |
if (label_index == -1) |
|
| 951 |
throw DataFormatError("Label map not found in file");
|
|
| 942 | 952 |
typename std::map<std::string, Node>::iterator it = |
| 943 | 953 |
_node_index.find(tokens[label_index]); |
| 944 | 954 |
if (it == _node_index.end()) {
|
| ... | ... |
@@ -964,8 +974,14 @@ |
| 964 | 974 |
std::vector<int> map_index(_arc_maps.size()); |
| 965 | 975 |
int map_num, label_index; |
| 966 | 976 |
|
| 967 |
if (!readLine()) |
|
| 968 |
throw DataFormatError("Cannot find map captions");
|
|
| 977 |
char c; |
|
| 978 |
if (!readLine() || !(line >> c) || c == '@') {
|
|
| 979 |
if (readSuccess() && line) line.putback(c); |
|
| 980 |
if (!_arc_maps.empty()) |
|
| 981 |
throw DataFormatError("Cannot find map names");
|
|
| 982 |
return; |
|
| 983 |
} |
|
| 984 |
line.putback(c); |
|
| 969 | 985 |
|
| 970 | 986 |
{
|
| 971 | 987 |
std::map<std::string, int> maps; |
| ... | ... |
@@ -995,14 +1011,15 @@ |
| 995 | 1011 |
|
| 996 | 1012 |
{
|
| 997 | 1013 |
std::map<std::string, int>::iterator jt = maps.find("label");
|
| 998 |
if (jt == maps.end()) |
|
| 999 |
throw DataFormatError("Label map not found in file");
|
|
| 1000 |
|
|
| 1014 |
if (jt != maps.end()) {
|
|
| 1015 |
label_index = jt->second; |
|
| 1016 |
} else {
|
|
| 1017 |
label_index = -1; |
|
| 1018 |
} |
|
| 1001 | 1019 |
} |
| 1002 | 1020 |
map_num = maps.size(); |
| 1003 | 1021 |
} |
| 1004 | 1022 |
|
| 1005 |
char c; |
|
| 1006 | 1023 |
while (readLine() && line >> c && c != '@') {
|
| 1007 | 1024 |
line.putback(c); |
| 1008 | 1025 |
|
| ... | ... |
@@ -1013,7 +1030,7 @@ |
| 1013 | 1030 |
throw DataFormatError("Source not found");
|
| 1014 | 1031 |
|
| 1015 | 1032 |
if (!_reader_bits::readToken(line, target_token)) |
| 1016 |
throw DataFormatError("
|
|
| 1033 |
throw DataFormatError("Target not found");
|
|
| 1017 | 1034 |
|
| 1018 | 1035 |
std::vector<std::string> tokens(map_num); |
| 1019 | 1036 |
for (int i = 0; i < map_num; ++i) {
|
| ... | ... |
@@ -1048,8 +1065,11 @@ |
| 1048 | 1065 |
Node target = it->second; |
| 1049 | 1066 |
|
| 1050 | 1067 |
a = _digraph.addArc(source, target); |
| 1051 |
|
|
| 1068 |
if (label_index != -1) |
|
| 1069 |
_arc_index.insert(std::make_pair(tokens[label_index], a)); |
|
| 1052 | 1070 |
} else {
|
| 1071 |
if (label_index == -1) |
|
| 1072 |
throw DataFormatError("Label map not found in file");
|
|
| 1053 | 1073 |
typename std::map<std::string, Arc>::iterator it = |
| 1054 | 1074 |
_arc_index.find(tokens[label_index]); |
| 1055 | 1075 |
if (it == _arc_index.end()) {
|
| ... | ... |
@@ -1723,8 +1743,14 @@ |
| 1723 | 1743 |
std::vector<int> map_index(_node_maps.size()); |
| 1724 | 1744 |
int map_num, label_index; |
| 1725 | 1745 |
|
| 1726 |
if (!readLine()) |
|
| 1727 |
throw DataFormatError("Cannot find map captions");
|
|
| 1746 |
char c; |
|
| 1747 |
if (!readLine() || !(line >> c) || c == '@') {
|
|
| 1748 |
if (readSuccess() && line) line.putback(c); |
|
| 1749 |
if (!_node_maps.empty()) |
|
| 1750 |
throw DataFormatError("Cannot find map names");
|
|
| 1751 |
return; |
|
| 1752 |
} |
|
| 1753 |
line.putback(c); |
|
| 1728 | 1754 |
|
| 1729 | 1755 |
{
|
| 1730 | 1756 |
std::map<std::string, int> maps; |
| ... | ... |
@@ -1754,14 +1780,15 @@ |
| 1754 | 1780 |
|
| 1755 | 1781 |
{
|
| 1756 | 1782 |
std::map<std::string, int>::iterator jt = maps.find("label");
|
| 1757 |
if (jt == maps.end()) |
|
| 1758 |
throw DataFormatError("Label map not found in file");
|
|
| 1759 |
|
|
| 1783 |
if (jt != maps.end()) {
|
|
| 1784 |
label_index = jt->second; |
|
| 1785 |
} else {
|
|
| 1786 |
label_index = -1; |
|
| 1787 |
} |
|
| 1760 | 1788 |
} |
| 1761 | 1789 |
map_num = maps.size(); |
| 1762 | 1790 |
} |
| 1763 | 1791 |
|
| 1764 |
char c; |
|
| 1765 | 1792 |
while (readLine() && line >> c && c != '@') {
|
| 1766 | 1793 |
line.putback(c); |
| 1767 | 1794 |
|
| ... | ... |
@@ -1779,8 +1806,11 @@ |
| 1779 | 1806 |
Node n; |
| 1780 | 1807 |
if (!_use_nodes) {
|
| 1781 | 1808 |
n = _graph.addNode(); |
| 1782 |
|
|
| 1809 |
if (label_index != -1) |
|
| 1810 |
_node_index.insert(std::make_pair(tokens[label_index], n)); |
|
| 1783 | 1811 |
} else {
|
| 1812 |
if (label_index == -1) |
|
| 1813 |
throw DataFormatError("Label map not found in file");
|
|
| 1784 | 1814 |
typename std::map<std::string, Node>::iterator it = |
| 1785 | 1815 |
_node_index.find(tokens[label_index]); |
| 1786 | 1816 |
if (it == _node_index.end()) {
|
| ... | ... |
@@ -1806,8 +1836,14 @@ |
| 1806 | 1836 |
std::vector<int> map_index(_edge_maps.size()); |
| 1807 | 1837 |
int map_num, label_index; |
| 1808 | 1838 |
|
| 1809 |
if (!readLine()) |
|
| 1810 |
throw DataFormatError("Cannot find map captions");
|
|
| 1839 |
char c; |
|
| 1840 |
if (!readLine() || !(line >> c) || c == '@') {
|
|
| 1841 |
if (readSuccess() && line) line.putback(c); |
|
| 1842 |
if (!_edge_maps.empty()) |
|
| 1843 |
throw DataFormatError("Cannot find map names");
|
|
| 1844 |
return; |
|
| 1845 |
} |
|
| 1846 |
line.putback(c); |
|
| 1811 | 1847 |
|
| 1812 | 1848 |
{
|
| 1813 | 1849 |
std::map<std::string, int> maps; |
| ... | ... |
@@ -1837,14 +1873,15 @@ |
| 1837 | 1873 |
|
| 1838 | 1874 |
{
|
| 1839 | 1875 |
std::map<std::string, int>::iterator jt = maps.find("label");
|
| 1840 |
if (jt == maps.end()) |
|
| 1841 |
throw DataFormatError("Label map not found in file");
|
|
| 1842 |
|
|
| 1876 |
if (jt != maps.end()) {
|
|
| 1877 |
label_index = jt->second; |
|
| 1878 |
} else {
|
|
| 1879 |
label_index = -1; |
|
| 1880 |
} |
|
| 1843 | 1881 |
} |
| 1844 | 1882 |
map_num = maps.size(); |
| 1845 | 1883 |
} |
| 1846 | 1884 |
|
| 1847 |
char c; |
|
| 1848 | 1885 |
while (readLine() && line >> c && c != '@') {
|
| 1849 | 1886 |
line.putback(c); |
| 1850 | 1887 |
|
| ... | ... |
@@ -1852,10 +1889,10 @@ |
| 1852 | 1889 |
std::string target_token; |
| 1853 | 1890 |
|
| 1854 | 1891 |
if (!_reader_bits::readToken(line, source_token)) |
| 1855 |
throw DataFormatError("
|
|
| 1892 |
throw DataFormatError("Node u not found");
|
|
| 1856 | 1893 |
|
| 1857 | 1894 |
if (!_reader_bits::readToken(line, target_token)) |
| 1858 |
throw DataFormatError("
|
|
| 1895 |
throw DataFormatError("Node v not found");
|
|
| 1859 | 1896 |
|
| 1860 | 1897 |
std::vector<std::string> tokens(map_num); |
| 1861 | 1898 |
for (int i = 0; i < map_num; ++i) {
|
| ... | ... |
@@ -1890,8 +1927,11 @@ |
| 1890 | 1927 |
Node target = it->second; |
| 1891 | 1928 |
|
| 1892 | 1929 |
e = _graph.addEdge(source, target); |
| 1893 |
|
|
| 1930 |
if (label_index != -1) |
|
| 1931 |
_edge_index.insert(std::make_pair(tokens[label_index], e)); |
|
| 1894 | 1932 |
} else {
|
| 1933 |
if (label_index == -1) |
|
| 1934 |
throw DataFormatError("Label map not found in file");
|
|
| 1895 | 1935 |
typename std::map<std::string, Edge>::iterator it = |
| 1896 | 1936 |
_edge_index.find(tokens[label_index]); |
| 1897 | 1937 |
if (it == _edge_index.end()) {
|
| ... | ... |
@@ -2325,8 +2365,12 @@ |
| 2325 | 2365 |
} |
| 2326 | 2366 |
|
| 2327 | 2367 |
void readMaps(std::vector<std::string>& maps) {
|
| 2328 |
if (!readLine()) |
|
| 2329 |
throw DataFormatError("Cannot find map captions");
|
|
| 2368 |
char c; |
|
| 2369 |
if (!readLine() || !(line >> c) || c == '@') {
|
|
| 2370 |
if (readSuccess() && line) line.putback(c); |
|
| 2371 |
return; |
|
| 2372 |
} |
|
| 2373 |
line.putback(c); |
|
| 2330 | 2374 |
std::string map; |
| 2331 | 2375 |
while (_reader_bits::readToken(line, map)) {
|
| 2332 | 2376 |
maps.push_back(map); |
0 comments (0 inline)