initial packaging
[routino] / src / profiles.h
1 /***************************************
2  $Header: /home/amb/routino/src/RCS/profiles.h,v 1.16 2010/05/29 10:37:12 amb Exp $
3
4  A header file for the profiles.
5
6  Part of the Routino routing software.
7  ******************/ /******************
8  This file Copyright 2008-2010 Andrew M. Bishop
9
10  This program is free software: you can redistribute it and/or modify
11  it under the terms of the GNU Affero General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  GNU Affero General Public License for more details.
19
20  You should have received a copy of the GNU Affero General Public License
21  along with this program.  If not, see <http://www.gnu.org/licenses/>.
22  ***************************************/
23
24
25 #ifndef PROFILES_H
26 #define PROFILES_H    /*+ To stop multiple inclusions. +*/
27
28 #include "types.h"
29 #include "ways.h"
30
31
32 /* Data structures */
33
34 /*+ A data structure to hold a transport type profile. +*/
35 typedef struct _Profile
36 {
37  char      *name;                      /*+ The name of the profile. +*/
38
39  Transport  transport;                 /*+ The type of transport. +*/
40
41  wayallow_t allow;                     /*+ The type of transport expressed as what must be allowed on a way. +*/
42
43  score_t    highway[Way_Count];        /*+ A floating point preference for travel on the highway. +*/
44  score_t    max_pref;                  /*+ The maximum preference for any highway type. +*/
45
46  speed_t    speed[Way_Count];          /*+ The maximum speed on each type of highway. +*/
47  speed_t    max_speed;                 /*+ The maximum speed for any highway type. +*/
48
49  score_t    props_yes[Property_Count]; /*+ A floating point preference for ways with this attribute. +*/
50  score_t    props_no [Property_Count]; /*+ A floating point preference for ways without this attribute. +*/
51
52  int        oneway;                    /*+ A flag to indicate if one-way restrictions apply. +*/
53
54  weight_t   weight;                    /*+ The minimum weight of the route. +*/
55
56  height_t   height;                    /*+ The minimum height of vehicles on the route. +*/
57  width_t    width;                     /*+ The minimum width of vehicles on the route. +*/
58  length_t   length;                    /*+ The minimum length of vehicles on the route. +*/
59 }
60  Profile;
61
62
63 /* Functions */
64
65 int ParseXMLProfiles(const char *filename);
66
67 Profile *GetProfile(const char *name);
68
69 int UpdateProfile(Profile *profile,Ways *ways);
70
71 void PrintProfile(const Profile *profile);
72
73 void PrintProfilesXML(void);
74
75 void PrintProfilesJSON(void);
76
77 void PrintProfilesPerl(void);
78
79 #endif /* PROFILES_H */