Routino SVN Repository Browser

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

ViewVC logotype

Contents of /branches/MS-Windows/src/results.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 166 - (show annotations) (download) (as text)
Thu Apr 30 17:29:03 2009 UTC (15 years, 10 months ago) by amb
Original Path: trunk/src/results.h
File MIME type: text/x-chdr
File size: 3586 byte(s)
First attempt at preferences for highways - uses integer arithmetic and doesn't
work well.

1 /***************************************
2 $Header: /home/amb/CVS/routino/src/results.h,v 1.13 2009-04-30 17:29:03 amb Exp $
3
4 A header file for the results.
5
6 Part of the Routino routing software.
7 ******************/ /******************
8 This file Copyright 2008,2009 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 RESULTS_H
26 #define RESULTS_H /*+ To stop multiple inclusions. +*/
27
28 #include <stdint.h>
29
30 #include "types.h"
31
32
33 /* Data structures */
34
35 /*+ The result for a node. +*/
36 typedef struct _Result
37 {
38 index_t node; /*+ The node for which this result applies. +*/
39
40 index_t prev; /*+ The previous node following the best path. +*/
41 index_t next; /*+ The next node following the best path. +*/
42
43 distance_t distance; /*+ The distance travelled to the node following the best path. +*/
44 duration_t duration; /*+ The time taken to the node following the best path. +*/
45 score_t score; /*+ The weighted distance or duration score to the node following the best path. +*/
46
47 distance_t sortby; /*+ The value to sort the results by in the queue. +*/
48 }
49 Result;
50
51 /*+ A list of results. +*/
52 typedef struct _Results
53 {
54 uint32_t nbins; /*+ The number of bins. +*/
55 uint32_t mask; /*+ A bit mask to select the bottom 'nbins' bits. +*/
56
57 uint32_t alloced; /*+ The amount of space allocated for results
58 (the length of the number and pointers arrays and
59 1/nbins times the amount in the real results). +*/
60 uint32_t number; /*+ The total number of occupied results. +*/
61
62 uint32_t *count; /*+ An array of nbins counters of results in each array. +*/
63 Result ***point; /*+ An array of nbins arrays of pointers to actual results. +*/
64
65 Result **data; /*+ An array of arrays containing the actual results
66 (don't need to realloc the array of data when adding more,
67 only realloc the array that points to the array of data).
68 Most importantly pointers into the real data don't change
69 as more space is allocated (since realloc is not being used). +*/
70
71 index_t start; /*+ The start node. +*/
72 index_t finish; /*+ The finish node. +*/
73 }
74 Results;
75
76
77 /* Functions */
78
79 Results *NewResultsList(int nbins);
80 void FreeResultsList(Results *results);
81
82 Result *InsertResult(Results *results,index_t node);
83 void ZeroResult(Result *result);
84
85 Result *FindResult(Results *results,index_t node);
86
87 Result *FirstResult(Results *results);
88 Result *NextResult(Results *results,Result *result);
89
90 /* Queue Functions */
91
92 void insert_in_queue(Result *result);
93 Result *pop_from_queue(void);
94
95
96 #endif /* RESULTS_H */

Properties

Name Value
cvs:description Results data type.