Routino SVN Repository Browser

Check out the latest version of Routino: svn co http://routino.org/svn/trunk routino

ViewVC logotype

Annotation of /trunk/src/relationsx.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1479 - (hide annotations) (download) (as text)
Thu Jan 2 17:36:10 2014 UTC (11 years, 2 months ago) by amb
File MIME type: text/x-chdr
File size: 4672 byte(s)
Fix error in function prototype (argument names switched).

1 amb 496 /***************************************
2     A header file for the extended Relations structure.
3    
4     Part of the Routino routing software.
5     ******************/ /******************
6 amb 1479 This file Copyright 2010-2014 Andrew M. Bishop
7 amb 496
8     This program is free software: you can redistribute it and/or modify
9     it under the terms of the GNU Affero General Public License as published by
10     the Free Software Foundation, either version 3 of the License, or
11     (at your option) any later version.
12    
13     This program is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16     GNU Affero General Public License for more details.
17    
18     You should have received a copy of the GNU Affero General Public License
19     along with this program. If not, see <http://www.gnu.org/licenses/>.
20     ***************************************/
21    
22    
23     #ifndef RELATIONSX_H
24     #define RELATIONSX_H /*+ To stop multiple inclusions. +*/
25    
26     #include <stdint.h>
27    
28     #include "types.h"
29    
30     #include "typesx.h"
31    
32    
33     /* Data structures */
34    
35    
36     /*+ An extended structure containing a single route relation. +*/
37     struct _RouteRelX
38     {
39 amb 529 relation_t id; /*+ The relation identifier. +*/
40 amb 496
41 amb 529 transports_t routes; /*+ The types of transports that that this relation is for. +*/
42 amb 496 };
43    
44    
45 amb 540 /*+ An extended structure containing a single turn restriction relation. +*/
46 amb 1163 struct _TurnRelX
47 amb 540 {
48     relation_t id; /*+ The relation identifier. +*/
49    
50 amb 1353 way_t from; /*+ The id of the starting way; initially the OSM value, later the SegmentX index. +*/
51 amb 540 node_t via; /*+ The id of the via node; initially the OSM value, later the NodeX index. +*/
52 amb 1353 way_t to; /*+ The id of the ending way; initially the OSM value, later the SegmentX index. +*/
53 amb 540
54 amb 786 TurnRestriction restriction; /*+ The type of restriction. +*/
55 amb 540 transports_t except; /*+ The types of transports that that this relation does not apply to. +*/
56     };
57    
58    
59 amb 496 /*+ A structure containing a set of relations. +*/
60     struct _RelationsX
61     {
62     /* Route relations */
63    
64 amb 1342 char *rrfilename; /*+ The name of the intermediate file (for the RouteRelX). +*/
65     char *rrfilename_tmp; /*+ The name of the temporary file (for the RouteRelX). +*/
66 amb 496
67 amb 1342 int rrfd; /*+ The file descriptor of the open file (for the RouteRelX). +*/
68 amb 1120
69 amb 1342 index_t rrnumber; /*+ The number of extended route relations. +*/
70     index_t rrknumber; /*+ The number of extended route relations kept for next time. +*/
71 amb 540
72 amb 1342 relation_t *rridata; /*+ The extended relation IDs (sorted by ID). +*/
73     off_t *rrodata; /*+ The offset of the route relation in the file (used for error log). +*/
74 amb 1341
75 amb 540 /* Turn restriction relations */
76    
77 amb 1341 char *trfilename; /*+ The name of the intermediate file (for the TurnRelX). +*/
78     char *trfilename_tmp; /*+ The name of the temporary file (for the TurnRelX). +*/
79 amb 1120
80 amb 1341 int trfd; /*+ The file descriptor of the temporary file (for the TurnRelX). +*/
81 amb 540
82 amb 1341 index_t trnumber; /*+ The number of extended turn restriction relations. +*/
83     index_t trknumber; /*+ The number of extended turn relations kept for next time. +*/
84    
85     relation_t *tridata; /*+ The extended relation IDs (sorted by ID). +*/
86 amb 496 };
87    
88    
89 amb 680 /* Functions in relationsx.c */
90 amb 496
91 amb 1123 RelationsX *NewRelationList(int append,int readonly);
92 amb 1167 void FreeRelationList(RelationsX *relationsx,int keep);
93 amb 496
94 amb 1161 void AppendRouteRelationList(RelationsX* relationsx,relation_t id,
95     transports_t routes,
96 amb 1479 node_t *nodes,int nnodes,
97 amb 1161 way_t *ways,int nways,
98     relation_t *relations,int nrelations);
99     void AppendTurnRelationList(RelationsX* relationsx,relation_t id,
100     way_t from,way_t to,node_t via,
101     TurnRestriction restriction,transports_t except);
102 amb 1151 void FinishRelationList(RelationsX *relationsx);
103    
104 amb 1341 index_t IndexRouteRelX(RelationsX *relationsx,relation_t id);
105     index_t IndexTurnRelX(RelationsX *relationsx,relation_t id);
106    
107 amb 496 void SortRelationList(RelationsX *relationsx);
108    
109 amb 1167 void ProcessRouteRelations(RelationsX *relationsx,WaysX *waysx,int keep);
110 amb 496
111 amb 1353 void ProcessTurnRelations(RelationsX *relationsx,NodesX *nodesx,SegmentsX *segmentsx,WaysX *waysx,int keep);
112 amb 496
113 amb 1098 void RemovePrunedTurnRelations(RelationsX *relationsx,NodesX *nodesx);
114    
115 amb 1427 void SortTurnRelationListGeographically(RelationsX *relationsx,NodesX *nodesx,SegmentsX *segmentsx);
116 amb 542
117     void SaveRelationList(RelationsX* relationsx,const char *filename);
118    
119    
120 amb 496 #endif /* RELATIONSX_H */