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/types.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1989 - (hide annotations) (download) (as text)
Wed Apr 17 17:54:45 2019 UTC (5 years, 11 months ago) by amb
File MIME type: text/x-csrc
File size: 13696 byte(s)
Rename some structure members and function names to reflect more
clearly their meaning (mostly change "allow" to "transport").  No
changes to file formats or API.

1 amb 364 /***************************************
2     Functions for handling the data types.
3    
4     Part of the Routino routing software.
5     ******************/ /******************
6 amb 1989 This file Copyright 2008-2015, 2019 Andrew M. Bishop
7 amb 364
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     #include <string.h>
24    
25     #include "types.h"
26    
27    
28     /*++++++++++++++++++++++++++++++++++++++
29     Decide on the type of a way given the "highway" parameter.
30    
31     Highway HighwayType Returns the highway type of the way.
32    
33     const char *highway The string containing the type of the way.
34     ++++++++++++++++++++++++++++++++++++++*/
35    
36     Highway HighwayType(const char *highway)
37     {
38     switch(*highway)
39     {
40     case 'c':
41 amb 1174 if(!strcmp(highway,"cycleway")) return(Highway_Cycleway);
42     break;
43 amb 364
44 amb 492 case 'f':
45 amb 1174 if(!strcmp(highway,"ferry")) return(Highway_Ferry);
46     break;
47 amb 492
48 amb 364 case 'm':
49 amb 1174 if(!strcmp(highway,"motorway")) return(Highway_Motorway);
50     break;
51 amb 364
52     case 'p':
53 amb 1174 if(!strcmp(highway,"primary")) return(Highway_Primary);
54     if(!strcmp(highway,"path")) return(Highway_Path);
55     break;
56 amb 364
57     case 'r':
58 amb 1174 if(!strcmp(highway,"residential")) return(Highway_Residential);
59     break;
60 amb 364
61     case 's':
62 amb 1174 if(!strcmp(highway,"secondary")) return(Highway_Secondary);
63     if(!strcmp(highway,"service")) return(Highway_Service);
64     if(!strcmp(highway,"steps")) return(Highway_Steps);
65     break;
66 amb 364
67     case 't':
68 amb 1174 if(!strcmp(highway,"trunk")) return(Highway_Trunk);
69     if(!strcmp(highway,"tertiary")) return(Highway_Tertiary);
70     if(!strcmp(highway,"track")) return(Highway_Track);
71     break;
72 amb 364
73     case 'u':
74 amb 1174 if(!strcmp(highway,"unclassified")) return(Highway_Unclassified);
75     break;
76 amb 364
77     default:
78     ;
79     }
80    
81 amb 1174 return(Highway_None);
82 amb 364 }
83    
84    
85     /*++++++++++++++++++++++++++++++++++++++
86     Decide on the type of transport given the name of it.
87    
88     Transport TransportType Returns the type of the transport.
89    
90     const char *transport The string containing the method of transport.
91     ++++++++++++++++++++++++++++++++++++++*/
92    
93     Transport TransportType(const char *transport)
94     {
95     switch(*transport)
96     {
97     case 'b':
98     if(!strcmp(transport,"bicycle"))
99     return(Transport_Bicycle);
100     break;
101    
102     case 'f':
103     if(!strcmp(transport,"foot"))
104     return(Transport_Foot);
105     break;
106    
107     case 'g':
108     if(!strcmp(transport,"goods"))
109     return(Transport_Goods);
110     break;
111    
112     case 'h':
113     if(!strcmp(transport,"horse"))
114     return(Transport_Horse);
115     if(!strcmp(transport,"hgv"))
116     return(Transport_HGV);
117     break;
118    
119     case 'm':
120     if(!strcmp(transport,"moped"))
121     return(Transport_Moped);
122 amb 1243 if(!strcmp(transport,"motorcycle"))
123     return(Transport_Motorcycle);
124 amb 364 if(!strcmp(transport,"motorcar"))
125     return(Transport_Motorcar);
126     break;
127    
128     case 'p':
129     if(!strcmp(transport,"psv"))
130     return(Transport_PSV);
131     break;
132    
133     case 'w':
134     if(!strcmp(transport,"wheelchair"))
135     return(Transport_Wheelchair);
136     break;
137    
138     default:
139     return(Transport_None);
140     }
141    
142     return(Transport_None);
143     }
144    
145    
146     /*++++++++++++++++++++++++++++++++++++++
147     Decide on the type of property given the name of it.
148    
149     Property PropertyType Returns the type of the property.
150    
151     const char *property The string containing the method of property.
152     ++++++++++++++++++++++++++++++++++++++*/
153    
154     Property PropertyType(const char *property)
155     {
156     switch(*property)
157     {
158     case 'b':
159 amb 497 if(!strcmp(property,"bicycleroute"))
160     return(Property_BicycleRoute);
161    
162 amb 364 if(!strcmp(property,"bridge"))
163     return(Property_Bridge);
164     break;
165    
166 amb 497 case 'f':
167     if(!strcmp(property,"footroute"))
168     return(Property_FootRoute);
169     break;
170    
171 amb 364 case 'm':
172     if(!strcmp(property,"multilane"))
173     return(Property_Multilane);
174     break;
175    
176     case 'p':
177     if(!strcmp(property,"paved"))
178     return(Property_Paved);
179     break;
180    
181     case 't':
182     if(!strcmp(property,"tunnel"))
183     return(Property_Tunnel);
184     break;
185    
186     default:
187     return(Property_None);
188     }
189    
190     return(Property_None);
191     }
192    
193    
194     /*++++++++++++++++++++++++++++++++++++++
195     A string containing the name of a type of highway.
196    
197     const char *HighwayName Returns the name.
198    
199     Highway highway The highway type.
200     ++++++++++++++++++++++++++++++++++++++*/
201    
202     const char *HighwayName(Highway highway)
203     {
204     switch(highway)
205     {
206 amb 1174 case Highway_None:
207     return("NONE");
208    
209     case Highway_Motorway:
210 amb 364 return("motorway");
211 amb 1174 case Highway_Trunk:
212 amb 364 return("trunk");
213 amb 1174 case Highway_Primary:
214 amb 364 return("primary");
215 amb 1174 case Highway_Secondary:
216 amb 364 return("secondary");
217 amb 1174 case Highway_Tertiary:
218 amb 364 return("tertiary");
219 amb 1174 case Highway_Unclassified:
220 amb 364 return("unclassified");
221 amb 1174 case Highway_Residential:
222 amb 364 return("residential");
223 amb 1174 case Highway_Service:
224 amb 364 return("service");
225 amb 1174 case Highway_Track:
226 amb 364 return("track");
227 amb 1174 case Highway_Cycleway:
228 amb 364 return("cycleway");
229 amb 1174 case Highway_Path:
230 amb 364 return("path");
231 amb 1174 case Highway_Steps:
232 amb 364 return("steps");
233 amb 1174 case Highway_Ferry:
234 amb 492 return("ferry");
235 amb 364
236 amb 1174 case Highway_Count:
237 amb 364 ;
238    
239 amb 1559 case Highway_CycleBothWays:
240     ;
241 amb 1174 case Highway_OneWay:
242 amb 364 ;
243 amb 1174 case Highway_Roundabout:
244 amb 923 ;
245 amb 1339 case Highway_Area:
246     ;
247 amb 364 }
248    
249     return(NULL);
250     }
251    
252    
253     /*++++++++++++++++++++++++++++++++++++++
254     A string containing the name of a type of transport.
255    
256     const char *TransportName Returns the name.
257    
258     Transport transport The transport type.
259     ++++++++++++++++++++++++++++++++++++++*/
260    
261     const char *TransportName(Transport transport)
262     {
263     switch(transport)
264     {
265     case Transport_None:
266     return("NONE");
267    
268     case Transport_Foot:
269     return("foot");
270     case Transport_Horse:
271     return("horse");
272     case Transport_Wheelchair:
273     return("wheelchair");
274     case Transport_Bicycle:
275     return("bicycle");
276     case Transport_Moped:
277     return("moped");
278 amb 1243 case Transport_Motorcycle:
279     return("motorcycle");
280 amb 364 case Transport_Motorcar:
281     return("motorcar");
282     case Transport_Goods:
283     return("goods");
284     case Transport_HGV:
285     return("hgv");
286     case Transport_PSV:
287     return("psv");
288 amb 405
289     case Transport_Count:
290     ;
291 amb 364 }
292    
293     return(NULL);
294     }
295    
296    
297     /*++++++++++++++++++++++++++++++++++++++
298     A string containing the name of a highway property.
299    
300     const char *PropertyName Returns the name.
301    
302     Property property The property type.
303     ++++++++++++++++++++++++++++++++++++++*/
304    
305     const char *PropertyName(Property property)
306     {
307     switch(property)
308     {
309     case Property_None:
310     return("NONE");
311    
312     case Property_Paved:
313     return("paved");
314    
315     case Property_Multilane:
316     return("multilane");
317    
318     case Property_Bridge:
319     return("bridge");
320    
321     case Property_Tunnel:
322     return("tunnel");
323    
324 amb 497 case Property_FootRoute:
325     return("footroute");
326    
327     case Property_BicycleRoute:
328     return("bicycleroute");
329    
330 amb 364 case Property_Count:
331     ;
332     }
333    
334     return(NULL);
335     }
336    
337    
338     /*++++++++++++++++++++++++++++++++++++++
339 amb 526 A string containing the names of highways.
340    
341     const char *HighwaysNameList Returns the list of names.
342    
343     highways_t highways The highways type.
344     ++++++++++++++++++++++++++++++++++++++*/
345    
346     const char *HighwaysNameList(highways_t highways)
347     {
348 amb 1784 static char string[256]; /* static allocation of return value (set each call) */
349 amb 526
350     string[0]=0;
351    
352     if(highways & Highways_Motorway)
353     strcat(string,"motorway");
354    
355     if(highways & Highways_Trunk)
356     {
357     if(*string) strcat(string,", ");
358     strcat(string,"trunk");
359     }
360    
361     if(highways & Highways_Primary)
362     {
363     if(*string) strcat(string,", ");
364     strcat(string,"primary");
365     }
366    
367     if(highways & Highways_Tertiary)
368     {
369     if(*string) strcat(string,", ");
370     strcat(string,"tertiary");
371     }
372    
373     if(highways & Highways_Unclassified)
374     {
375     if(*string) strcat(string,", ");
376     strcat(string,"unclassified");
377     }
378    
379     if(highways & Highways_Residential)
380     {
381     if(*string) strcat(string,", ");
382     strcat(string,"residential");
383     }
384    
385     if(highways & Highways_Service)
386     {
387     if(*string) strcat(string,", ");
388     strcat(string,"service");
389     }
390    
391     if(highways & Highways_Track)
392     {
393     if(*string) strcat(string,", ");
394     strcat(string,"track");
395     }
396    
397     if(highways & Highways_Cycleway)
398     {
399     if(*string) strcat(string,", ");
400     strcat(string,"cycleway");
401     }
402    
403     if(highways & Highways_Path)
404     {
405     if(*string) strcat(string,", ");
406     strcat(string,"path");
407     }
408    
409     if(highways & Highways_Steps)
410     {
411     if(*string) strcat(string,", ");
412     strcat(string,"steps");
413     }
414    
415     if(highways & Highways_Ferry)
416     {
417     if(*string) strcat(string,", ");
418     strcat(string,"ferry");
419     }
420    
421     return(string);
422     }
423    
424    
425     /*++++++++++++++++++++++++++++++++++++++
426 amb 1989 A string containing the names of transports.
427 amb 364
428 amb 1989 const char *TransportsNameList Returns the list of names.
429 amb 364
430 amb 1989 transports_t transports The transports type.
431 amb 364 ++++++++++++++++++++++++++++++++++++++*/
432    
433 amb 1989 const char *TransportsNameList(transports_t transports)
434 amb 364 {
435 amb 1784 static char string[256]; /* static allocation of return value (set each call) */
436 amb 364
437     string[0]=0;
438    
439 amb 1989 if(transports & Transports_Foot)
440 amb 364 strcat(string,"foot");
441    
442 amb 1989 if(transports & Transports_Horse)
443 amb 364 {
444     if(*string) strcat(string,", ");
445     strcat(string,"horse");
446     }
447    
448 amb 1989 if(transports & Transports_Wheelchair)
449 amb 364 {
450     if(*string) strcat(string,", ");
451     strcat(string,"wheelchair");
452     }
453    
454 amb 1989 if(transports & Transports_Bicycle)
455 amb 364 {
456     if(*string) strcat(string,", ");
457     strcat(string,"bicycle");
458     }
459    
460 amb 1989 if(transports & Transports_Moped)
461 amb 364 {
462     if(*string) strcat(string,", ");
463     strcat(string,"moped");
464     }
465    
466 amb 1989 if(transports & Transports_Motorcycle)
467 amb 364 {
468     if(*string) strcat(string,", ");
469 amb 1243 strcat(string,"motorcycle");
470 amb 364 }
471    
472 amb 1989 if(transports & Transports_Motorcar)
473 amb 364 {
474     if(*string) strcat(string,", ");
475     strcat(string,"motorcar");
476     }
477    
478 amb 1989 if(transports & Transports_Goods)
479 amb 364 {
480     if(*string) strcat(string,", ");
481     strcat(string,"goods");
482     }
483    
484 amb 1989 if(transports & Transports_HGV)
485 amb 364 {
486     if(*string) strcat(string,", ");
487     strcat(string,"hgv");
488     }
489    
490 amb 1989 if(transports & Transports_PSV)
491 amb 364 {
492     if(*string) strcat(string,", ");
493     strcat(string,"psv");
494     }
495    
496     return(string);
497     }
498    
499    
500     /*++++++++++++++++++++++++++++++++++++++
501     A string containing the names of the properties of a way.
502    
503     const char *PropertiesNameList Returns the list of names.
504    
505 amb 530 properties_t properties The properties of the way.
506 amb 364 ++++++++++++++++++++++++++++++++++++++*/
507    
508 amb 530 const char *PropertiesNameList(properties_t properties)
509 amb 364 {
510 amb 1784 static char string[256]; /* static allocation of return value (set each call) */
511 amb 364
512     string[0]=0;
513    
514     if(properties & Properties_Paved)
515     {
516     if(*string) strcat(string,", ");
517     strcat(string,"paved");
518     }
519    
520     if(properties & Properties_Multilane)
521     {
522     if(*string) strcat(string,", ");
523     strcat(string,"multilane");
524     }
525    
526     if(properties & Properties_Bridge)
527     {
528     if(*string) strcat(string,", ");
529     strcat(string,"bridge");
530     }
531    
532     if(properties & Properties_Tunnel)
533     {
534     if(*string) strcat(string,", ");
535     strcat(string,"tunnel");
536     }
537    
538 amb 497 if(properties & Properties_FootRoute)
539     {
540     if(*string) strcat(string,", ");
541     strcat(string,"footroute");
542     }
543    
544     if(properties & Properties_BicycleRoute)
545     {
546     if(*string) strcat(string,", ");
547     strcat(string,"bicycleroute");
548     }
549    
550 amb 364 return(string);
551     }
552    
553    
554     /*++++++++++++++++++++++++++++++++++++++
555     Returns a list of all the highway types.
556    
557     const char *HighwayList Return a list of all the highway types.
558     ++++++++++++++++++++++++++++++++++++++*/
559    
560     const char *HighwayList(void)
561     {
562     return " motorway = Motorway\n"
563     " trunk = Trunk\n"
564     " primary = Primary\n"
565     " secondary = Secondary\n"
566     " tertiary = Tertiary\n"
567     " unclassified = Unclassified\n"
568     " residential = Residential\n"
569     " service = Service\n"
570     " track = Track\n"
571     " cycleway = Cycleway\n"
572     " path = Path\n"
573     " steps = Steps\n"
574 amb 492 " ferry = Ferry\n"
575 amb 364 ;
576     }
577    
578    
579     /*++++++++++++++++++++++++++++++++++++++
580     Returns a list of all the transport types.
581    
582     const char *TransportList Return a list of all the transport types.
583     ++++++++++++++++++++++++++++++++++++++*/
584    
585     const char *TransportList(void)
586     {
587     return " foot = Foot\n"
588     " bicycle = Bicycle\n"
589     " wheelchair = Wheelchair\n"
590     " horse = Horse\n"
591 amb 1243 " moped = Moped (Small motorcycle, limited speed)\n"
592     " motorcycle = Motorcycle\n"
593 amb 364 " motorcar = Motorcar\n"
594     " goods = Goods (Small lorry, van)\n"
595     " hgv = HGV (Heavy Goods Vehicle - large lorry)\n"
596     " psv = PSV (Public Service Vehicle - bus, coach)\n"
597     ;
598     }
599    
600    
601     /*++++++++++++++++++++++++++++++++++++++
602     Returns a list of all the property types.
603    
604     const char *PropertyList Return a list of all the highway proprties.
605     ++++++++++++++++++++++++++++++++++++++*/
606    
607     const char *PropertyList(void)
608     {
609 amb 497 return " paved = Paved (suitable for normal wheels)\n"
610     " multilane = Multiple lanes\n"
611     " bridge = Bridge\n"
612     " tunnel = Tunnel\n"
613     " footroute = A route marked for foot travel\n"
614     " bicycleroute = A route marked for bicycle travel\n"
615 amb 364 ;
616     }

Properties

Name Value
cvs:description Move the type checking/printing functions from way.c to type.c.