Routino SVN Repository Browser

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

ViewVC logotype

Contents of /trunk/src/segments.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 97 - (show annotations) (download) (as text)
Sun Feb 1 17:11:08 2009 UTC (16 years, 1 month ago) by amb
File MIME type: text/x-chdr
File size: 2671 byte(s)
Rename some variable types.

1 /***************************************
2 $Header: /home/amb/CVS/routino/src/segments.h,v 1.23 2009-02-01 17:11:08 amb Exp $
3
4 A header file for the segments.
5 ******************/ /******************
6 Written by Andrew M. Bishop
7
8 This file Copyright 2009 Andrew M. Bishop
9 It may be distributed under the GNU Public License, version 2, or
10 any higher version. See section COPYING of the GNU Public license
11 for conditions under which this file may be redistributed.
12 ***************************************/
13
14
15 #ifndef SEGMENTS_H
16 #define SEGMENTS_H /*+ To stop multiple inclusions. +*/
17
18 #include <stdint.h>
19
20 #include "types.h"
21 #include "nodes.h"
22 #include "profiles.h"
23
24
25 /* Data structures */
26
27
28 /*+ An extended structure used for processing. +*/
29 typedef struct _SegmentX
30 {
31 node_t node1; /*+ The starting node. +*/
32 node_t node2; /*+ The finishing node. +*/
33
34 Segment segment; /*+ The real segment data. +*/
35 }
36 SegmentX;
37
38 /*+ A structure containing a set of segments (mmap format). +*/
39 typedef struct _Segments
40 {
41 uint32_t number; /*+ How many entries are used in total? +*/
42
43 Segment *segments; /*+ An array of segments. +*/
44
45 void *data; /*+ The memory mapped data. +*/
46 }
47 Segments;
48
49 /*+ A structure containing a set of segments (memory format). +*/
50 typedef struct _SegmentsX
51 {
52 uint32_t sorted; /*+ Is the data sorted and therefore searchable? +*/
53 uint32_t alloced; /*+ How many entries are allocated? +*/
54 uint32_t number; /*+ How many entries are used? +*/
55
56 SegmentX *xdata; /*+ The extended segment data. +*/
57 }
58 SegmentsX;
59
60
61 /* Functions in segments.c */
62
63
64 Segments *LoadSegmentList(const char *filename);
65
66 SegmentsX *NewSegmentList(void);
67 void FreeSegmentList(SegmentsX *segmentsx);
68
69 void SaveSegmentList(SegmentsX *segmentsx,const char *filename);
70
71 SegmentX *FindFirstSegment(SegmentsX* segmentsx,node_t node);
72 SegmentX *FindNextSegment(SegmentsX* segmentsx,SegmentX *segmentx);
73
74 Segment *NextSegment(Segments *segments,Segment *segment);
75
76 SegmentX *AppendSegment(SegmentsX *segmentsx,node_t node1,node_t node2,index_t way);
77
78 void SortSegmentList(SegmentsX *segmentsx);
79
80 void RemoveBadSegments(SegmentsX *segmentsx);
81
82 void MeasureSegments(SegmentsX *segmentsx,NodesX *nodesx);
83 void FixupSegments(SegmentsX* segmentsx,NodesX *nodesx,SegmentsX* supersegmentsx);
84
85 distance_t Distance(Node *node1,Node *node2);
86
87 duration_t Duration(Segment *segment,Way *way,Profile *profile);
88
89 #define LookupSegmentX(xxx,yyy) (&(xxx)->xdata[yyy])
90
91 #define IndexSegmentX(xxx,yyy) ((yyy)-&(xxx)->xdata[0])
92
93
94 #endif /* SEGMENTS_H */

Properties

Name Value
cvs:description Header file for segments.