- if(i==track_ep) continue;
- Track *link = track.get_link(i);
- if(!link) continue;
- if(visited.count(link)) continue;
- if(!(eps[i].paths&eps[track_ep].paths)) continue;
-
- if(tracks.count(link))
- find_paths(*link, link->get_endpoint_by_link(track), path, visited);
- else
- {
- for(vector<Endpoint>::iterator j=endpoints.begin(); j!=endpoints.end(); ++j)
- if(j->track==&track && j->track_ep==i)
- j->paths |= path;
- }
+ unsigned id1 = endpoints[0].link ? endpoints[0].link->get_id() : 1;
+ unsigned id2 = endpoints[1].link ? endpoints[1].link->get_id() : 1;
+ if(id2<id1)
+ swap(id1, id2);
+ id = (id1<<16)|id2;
+ }
+ else if(endpoints.size()==1)
+ {
+ unsigned id1 = endpoints[0].link ? endpoints[0].link->get_id() : 1;
+ id = 0x10000 | id1;