/usr/include/routino.h is in libroutino-dev 3.2-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 | /***************************************
Routino library header file.
Part of the Routino routing software.
******************/ /******************
This file Copyright 2015 Andrew M. Bishop
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
***************************************/
#ifndef ROUTINO_H
#define ROUTINO_H /*+ To stop multiple inclusions. +*/
/* Limit the exported symbols in the library */
#if defined(_MSC_VER)
#ifdef LIBROUTINO
#define DLL_PUBLIC __declspec(dllexport)
#else
#define DLL_PUBLIC __declspec(dllimport)
#endif
#endif
#if defined(__GNUC__) && __GNUC__ >= 4
#if defined(__MINGW32__) || defined(__CYGWIN__)
#ifdef LIBROUTINO
#define DLL_PUBLIC __attribute__ ((dllexport))
#else
#define DLL_PUBLIC __attribute__ ((dllimport))
#endif
#else
#ifdef LIBROUTINO
#define DLL_PUBLIC __attribute__ ((visibility ("default")))
#endif
#endif
#endif
#ifndef DLL_PUBLIC
#define DLL_PUBLIC
#endif
/* Handle compilation with a C++ compiler */
#ifdef __cplusplus
extern "C"
{
#endif
/* Routino library API version */
#define ROUTINO_API_VERSION 8 /*+ A version number for the Routino API. +*/
/* Routino error constants */
#define ROUTINO_ERROR_NONE 0 /*+ No error. +*/
#define ROUTINO_ERROR_NO_DATABASE 1 /*+ A function was called without the database variable set. +*/
#define ROUTINO_ERROR_NO_PROFILE 2 /*+ A function was called without the profile variable set. +*/
#define ROUTINO_ERROR_NO_TRANSLATION 3 /*+ A function was called without the translation variable set. +*/
#define ROUTINO_ERROR_NO_DATABASE_FILES 11 /*+ The specified database to load did not exist. +*/
#define ROUTINO_ERROR_BAD_DATABASE_FILES 12 /*+ The specified database could not be loaded. +*/
#define ROUTINO_ERROR_NO_PROFILES_XML 13 /*+ The specified profiles XML file did not exist. +*/
#define ROUTINO_ERROR_BAD_PROFILES_XML 14 /*+ The specified profiles XML file could not be loaded. +*/
#define ROUTINO_ERROR_NO_TRANSLATIONS_XML 15 /*+ The specified translations XML file did not exist. +*/
#define ROUTINO_ERROR_BAD_TRANSLATIONS_XML 16 /*+ The specified translations XML file could not be loaded. +*/
#define ROUTINO_ERROR_NO_SUCH_PROFILE 21 /*+ The requested profile name does not exist in the loaded XML file. +*/
#define ROUTINO_ERROR_NO_SUCH_TRANSLATION 22 /*+ The requested translation language does not exist in the loaded XML file. +*/
#define ROUTINO_ERROR_NO_NEARBY_HIGHWAY 31 /*+ There is no highway near the coordinates to place a waypoint. +*/
#define ROUTINO_ERROR_PROFILE_DATABASE_ERR 41 /*+ The profile and database do not work together. +*/
#define ROUTINO_ERROR_NOTVALID_PROFILE 42 /*+ The profile being used has not been validated. +*/
#define ROUTINO_ERROR_BAD_USER_PROFILE 43 /*+ The user specified profile contained invalid data. +*/
#define ROUTINO_ERROR_BAD_OPTIONS 51 /*+ The routing options specified are not consistent with each other. +*/
#define ROUTINO_ERROR_WRONG_API_VERSION 61 /*+ There is a mismatch between the library and caller API version. +*/
#define ROUTINO_ERROR_PROGRESS_ABORTED 71 /*+ The progress function returned false. +*/
#define ROUTINO_ERROR_NO_ROUTE_1 1001 /*+ A route could not be found to waypoint 1. +*/
#define ROUTINO_ERROR_NO_ROUTE_2 1002 /*+ A route could not be found to waypoint 2. +*/
#define ROUTINO_ERROR_NO_ROUTE_3 1003 /*+ A route could not be found to waypoint 3. +*/
/* Higher values of the error number refer to later waypoints. */
/* Routino routing option constants */
#define ROUTINO_ROUTE_SHORTEST 0 /*+ Calculate the shortest route. +*/
#define ROUTINO_ROUTE_QUICKEST 1 /*+ Calculate the quickest route. +*/
#define ROUTINO_ROUTE_FILE_HTML 2 /*+ Output an HTML route file. +*/
#define ROUTINO_ROUTE_FILE_GPX_TRACK 4 /*+ Output a GPX track file. +*/
#define ROUTINO_ROUTE_FILE_GPX_ROUTE 8 /*+ Output a GPX route file. +*/
#define ROUTINO_ROUTE_FILE_TEXT 16 /*+ Output a text file with important junctions. +*/
#define ROUTINO_ROUTE_FILE_TEXT_ALL 32 /*+ Output a text file with all nodes and segments. +*/
#define ROUTINO_ROUTE_FILE_STDOUT 64 /*+ Output a single file type to stdout. +*/
#define ROUTINO_ROUTE_LIST_HTML 128 /*+ Output a linked list of points containing the HTML file information but as plain text. +*/
#define ROUTINO_ROUTE_LIST_HTML_ALL 256 /*+ Output a linked list of points containing the HTML file information as plain text and with all points. +*/
#define ROUTINO_ROUTE_LIST_TEXT 512 /*+ Output a linked list of points containing the text file information. +*/
#define ROUTINO_ROUTE_LIST_TEXT_ALL 1024 /*+ Output a linked list of points containing the text all file information. +*/
#define ROUTINO_ROUTE_LOOP 2048 /*+ Route between the points in a loop returning to the first point. +*/
#define ROUTINO_ROUTE_REVERSE 4096 /*+ Route between the points in reverse order. +*/
/* Routino output point types */
#define ROUTINO_POINT_UNIMPORTANT 0 /*+ An unimportant, intermediate, node. +*/
#define ROUTINO_POINT_RB_NOT_EXIT 1 /*+ A roundabout exit that is not taken. +*/
#define ROUTINO_POINT_JUNCT_CONT 2 /*+ An un-interesting junction where the route continues without comment. +*/
#define ROUTINO_POINT_CHANGE 3 /*+ The highway changes type but nothing else happens. +*/
#define ROUTINO_POINT_JUNCT_IMPORT 4 /*+ An interesting junction to be described. +*/
#define ROUTINO_POINT_RB_ENTRY 5 /*+ The entrance to a roundabout. +*/
#define ROUTINO_POINT_RB_EXIT 6 /*+ The exit from a roundabout. +*/
#define ROUTINO_POINT_MINI_RB 7 /*+ The location of a mini-roundabout. +*/
#define ROUTINO_POINT_UTURN 8 /*+ The location of a U-turn. +*/
#define ROUTINO_POINT_WAYPOINT 9 /*+ A waypoint. +*/
/* Routino user profile array indexes */
#define ROUTINO_HIGHWAY_MOTORWAY 1 /*+ A Motorway highway. +*/
#define ROUTINO_HIGHWAY_TRUNK 2 /*+ A Trunk highway. +*/
#define ROUTINO_HIGHWAY_PRIMARY 3 /*+ A Primary highway. +*/
#define ROUTINO_HIGHWAY_SECONDARY 4 /*+ A Secondary highway. +*/
#define ROUTINO_HIGHWAY_TERTIARY 5 /*+ A Tertiary highway. +*/
#define ROUTINO_HIGHWAY_UNCLASSIFIED 6 /*+ A Unclassified highway. +*/
#define ROUTINO_HIGHWAY_RESIDENTIAL 7 /*+ A Residential highway. +*/
#define ROUTINO_HIGHWAY_SERVICE 8 /*+ A Service highway. +*/
#define ROUTINO_HIGHWAY_TRACK 9 /*+ A Track highway. +*/
#define ROUTINO_HIGHWAY_CYCLEWAY 10 /*+ A Cycleway highway. +*/
#define ROUTINO_HIGHWAY_PATH 11 /*+ A Path highway. +*/
#define ROUTINO_HIGHWAY_STEPS 12 /*+ A Steps highway. +*/
#define ROUTINO_HIGHWAY_FERRY 13 /*+ A Ferry highway. +*/
#define ROUTINO_PROPERTY_PAVED 1 /*+ A Paved highway. +*/
#define ROUTINO_PROPERTY_MULTILANE 2 /*+ A Multilane highway. +*/
#define ROUTINO_PROPERTY_BRIDGE 3 /*+ A Bridge highway. +*/
#define ROUTINO_PROPERTY_TUNNEL 4 /*+ A Tunnel highway. +*/
#define ROUTINO_PROPERTY_FOOTROUTE 5 /*+ A Footroute highway. +*/
#define ROUTINO_PROPERTY_BICYCLEROUTE 6 /*+ A Bicycleroute highway. +*/
/* Routino types */
/*+ A data structure to hold a Routino database loaded from a file (the contents are private). +*/
typedef struct _Routino_Database Routino_Database;
/*+ A data structure to hold a Routino waypoint found within the database (the contents are private). +*/
typedef struct _Routino_Waypoint Routino_Waypoint;
/*+ A data structure to hold a Routino routing profile (the contents are private). +*/
#ifdef LIBROUTINO
typedef struct _Profile Routino_Profile;
#else
typedef struct _Routino_Profile Routino_Profile;
#endif
/*+ A data structure to hold a Routino translation (the contents are private). +*/
#ifdef LIBROUTINO
typedef struct _Translation Routino_Translation;
#else
typedef struct _Routino_Translation Routino_Translation;
#endif
/*+ A data structure to hold a routing profile that can be defined by the user. +*/
typedef struct _Routino_UserProfile
{
int transport; /*+ The type of transport. +*/
float highway[14]; /*+ A floating point preference for travel on the highway (range 0 to 1). +*/
float speed[14]; /*+ The maximum speed on each type of highway (km/hour). +*/
float props[7]; /*+ A floating point preference for ways with this attribute (range 0 to 1). +*/
int oneway; /*+ A flag to indicate if one-way restrictions apply. +*/
int turns; /*+ A flag to indicate if turn restrictions apply. +*/
float weight; /*+ The weight of the vehicle (in tonnes). +*/
float height; /*+ The height of the vehicle (in metres). +*/
float width; /*+ The width of vehicle (in metres). +*/
float length; /*+ The length of vehicle (in metres). +*/
}
Routino_UserProfile;
/*+ Forward declaration of the Routino_Output data type. +*/
typedef struct _Routino_Output Routino_Output;
/*+ A linked list output of the calculated route whose contents depend on the ROUTINO_ROUTE_LIST_* options selected. +*/
struct _Routino_Output
{
Routino_Output *next; /*+ A pointer to the next route section. +*/
float lon; /*+ The longitude of the point (radians). +*/
float lat; /*+ The latitude of the point (radians). +*/
float dist; /*+ The total distance travelled (kilometres) up to the point. +*/
float time; /*+ The total journey time (seconds) up to the point. +*/
float speed; /*+ The speed (km/hr) for this section of the route (ROUTINO_ROUTE_LIST_TEXT_ALL format only). +*/
int type; /*+ The type of point (one of the ROUTINO_POINT_* values). +*/
int turn; /*+ The amount to turn (degrees) for the next section of the route (ROUTINO_ROUTE_LIST_TEXT or ROUTINO_ROUTE_LIST_HTML or ROUTINO_ROUTE_LIST_HTML_ALL format). +*/
int bearing; /*+ The compass direction (degrees) for the next section of the route. +*/
char *name; /*+ The name of the next section of the route (ROUTINO_ROUTE_LIST_TEXT or ROUTINO_ROUTE_LIST_HTML or ROUTINO_ROUTE_LIST_HTML_ALL format) or previous section of the route (ROUTINO_ROUTE_LIST_TEXT_ALL format). +*/
char *desc1; /*+ The first part of the description of the next section of route (ROUTINO_ROUTE_LIST_HTML or ROUTINO_ROUTE_LIST_HTML format). +*/
char *desc2; /*+ The second part of the description of the next section of route (ROUTINO_ROUTE_LIST_HTML or ROUTINO_ROUTE_LIST_HTML format). +*/
char *desc3; /*+ The third part of the description, the total distance and time at the end of the next section of route (ROUTINO_ROUTE_LIST_HTML or ROUTINO_ROUTE_LIST_HTML format). +*/
};
/*+ A type of function that can be used as a callback to indicate routing progress, if it returns false the router stops. +*/
typedef int (*Routino_ProgressFunc)(double complete);
/* Routino error number variable */
/*+ Contains the libroutino API version number. +*/
DLL_PUBLIC extern const int Routino_APIVersion;
/*+ Contains the Routino version number. +*/
DLL_PUBLIC extern const char *Routino_Version;
/*+ Contains the error number of the most recent Routino function (one of the ROUTINO_ERROR_* values). +*/
DLL_PUBLIC extern int Routino_errno;
/* Routino library functions */
#define Routino_CheckAPIVersion() Routino_Check_API_Version(ROUTINO_API_VERSION) /*+ A wrapper function to simplify the API version check. +*/
DLL_PUBLIC int Routino_Check_API_Version(int caller_version);
DLL_PUBLIC Routino_Database *Routino_LoadDatabase(const char *dirname,const char *prefix);
DLL_PUBLIC void Routino_UnloadDatabase(Routino_Database *database);
DLL_PUBLIC int Routino_ParseXMLProfiles(const char *filename);
DLL_PUBLIC char **Routino_GetProfileNames(void);
DLL_PUBLIC Routino_Profile *Routino_GetProfile(const char *name);
DLL_PUBLIC void Routino_FreeXMLProfiles(void);
DLL_PUBLIC int Routino_ParseXMLTranslations(const char *filename);
DLL_PUBLIC char **Routino_GetTranslationLanguages(void);
DLL_PUBLIC char **Routino_GetTranslationLanguageFullNames(void);
DLL_PUBLIC Routino_Translation *Routino_GetTranslation(const char *language);
DLL_PUBLIC void Routino_FreeXMLTranslations(void);
DLL_PUBLIC Routino_Profile *Routino_CreateProfileFromUserProfile(Routino_UserProfile *profile);
DLL_PUBLIC Routino_UserProfile *Routino_CreateUserProfileFromProfile(Routino_Profile *profile);
DLL_PUBLIC int Routino_ValidateProfile(Routino_Database *database,Routino_Profile *profile);
DLL_PUBLIC Routino_Waypoint *Routino_FindWaypoint(Routino_Database *database,Routino_Profile *profile,double latitude,double longitude);
DLL_PUBLIC Routino_Output *Routino_CalculateRoute(Routino_Database *database,Routino_Profile *profile,Routino_Translation *translation,
Routino_Waypoint **waypoints,int nwaypoints,int options,Routino_ProgressFunc progress);
DLL_PUBLIC void Routino_DeleteRoute(Routino_Output *output);
/* Handle compilation with a C++ compiler */
#ifdef __cplusplus
}
#endif
#endif /* ROUTINO_H */
|