Release Tizen2.0 beta
[framework/location/libslp-location.git] / location / map-service / location-route.h
1 /*
2  * libslp-location
3  *
4  * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Youngae Kang <youngae.kang@samsung.com>, Yunhan Kim <yhan.kim@samsung.com>,
7  *          Genie Kim <daejins.kim@samsung.com>, Minjune Kim <sena06.kim@samsung.com>
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21
22 #ifndef __LOCATION_ROUTE_H__
23 #define __LOCATION_ROUTE_H__
24
25 #include <location-map-types.h>
26
27 G_BEGIN_DECLS
28
29 /**
30  * @file location-route.h
31  * @brief This file contains the internal definitions and structures related to Route.
32  */
33
34 /**
35  * @addtogroup LocationMapService
36  * @{
37  * @defgroup LocationMapServiceRoute Location Route
38  * @brief This is a Location Route for providing location map services.
39  * @addtogroup LocationMapServiceRoute
40  * @{
41  */
42
43 /**
44  * @brief Create a new Location route preference
45  * @remarks None.
46  * @pre     #location_init should be called before.\n
47  * @post    None.
48  * @return a #LocationRoutePreference
49  * @retval NULL if error occured
50  * @see location_route_pref_free
51  */
52 LocationRoutePreference *location_route_pref_new (void);
53
54 /**
55  * @brief Copy Location route preference
56  * @remarks None.
57  * @pre     #location_init should be called before.\n
58  * @post    None.
59  * @param [in]  pref - a #LocationRoutePreference
60  * @return a new #LocationRoutePreference
61  * @retval NULL if error occured
62  */
63 LocationRoutePreference *location_route_pref_copy (const LocationRoutePreference *pref);
64
65 /**
66  * @brief Free Location route preference
67  * @remarks None.
68  * @pre     #location_init should be called before.\n
69  * @post    None.
70  * @param [in]  pref - a #LocationRoutePreference
71  * @see location_route_pref_new
72  * @return None
73  * @retval None
74  */
75 void location_route_pref_free (LocationRoutePreference * pref);
76
77 /**
78  * @brief Get a list of address structures to be avoided in Location route preference
79  * @remarks The service provider should support route service.
80  * @pre #location_route_pref_new should be called before.
81  * @post None.
82  * @param [in]  pref - a #LocationRoutePreference
83  * @return GList
84  * @retval list of #LocationAddress
85  * @see location_route_pref_set_addr_to_avoid
86  */
87 GList *location_route_pref_get_addr_to_avoid (const LocationRoutePreference *pref);
88
89 /**
90  * @brief Get a list of area to be avoided in Location route preference
91  * @remarks The service provider should support route service.
92  * @pre #location_route_pref_new should be called before.
93  * @post None.
94  * @param [in]  pref - a #LocationRoutePreference
95  * @return GList
96  * @retval list of #LocationBoundary
97  * @see location_route_pref_set_area_to_avoid
98  */
99 GList *location_route_pref_get_area_to_avoid (const LocationRoutePreference *pref);
100
101 /**
102  * @brief Get a list of features to be avoided in Location route preference
103  * @remarks The service provider should support route service.
104  * @pre #location_route_pref_new should be called before.
105  * @post None.
106  * @param [in]  pref - a #LocationRoutePreference
107  * @return GList
108  * @retval list of gchar
109  * @see location_route_pref_set_feature_to_avoid
110  */
111 GList *location_route_pref_get_feature_to_avoid (const LocationRoutePreference *pref);
112
113 /**
114  * @brief Get a list of freeformed address to be avoided in Location route preference
115  * @remarks The service provider should support route service.
116  * @pre #location_route_pref_new should be called before.
117  * @post None.
118  * @param [in]  pref - a #LocationRoutePreference
119  * @return GList
120  * @retval list of gchar
121  * @see location_route_pref_set_freeformed_to_avoid
122  */
123 GList *location_route_pref_get_freeformed_addr_to_avoid (const LocationRoutePreference *pref);
124
125 /**
126  * @brief Get a list of bounding box to be avoided in Location route preference
127  * @remarks The service provider should support route service.
128  * @pre #location_route_pref_new should be called before.
129  * @post None.
130  * @param [in]  pref - a #LocationRoutePreference
131  * @return #LocationBoundary
132  * @retval bounding box
133  * @see location_route_pref_set_addr_to_avoid
134  */
135 LocationBoundary *location_route_pref_get_bounding_box (const LocationRoutePreference *pref);
136
137 /**
138  * @brief Get a maximum number of matches returned from route service provider
139  * @remarks The service provider should support route service.
140  * @pre #location_route_pref_new should be called before.
141  * @post None.
142  * @param [in]  pref - a #LocationRoutePreference
143  * @return guint
144  * @retval maximum number of matches
145  * @see location_route_pref_set_max_result
146  */
147 guint location_route_pref_get_max_result (const LocationRoutePreference *pref);
148
149 /**
150  * @brief Get a route type to be used in route service
151  * @remarks The service provider should support route service.
152  * @pre #location_route_pref_new should be called before.
153  * @post None.
154  * @param [in]  pref - a #LocationRoutePreference
155  * @return gchar
156  * @retval route type
157  * @see location_route_pref_set_route_type
158  */
159 gchar *location_route_pref_get_route_type (const LocationRoutePreference *pref);
160
161 /**
162  * @brief Get a transport mode to be used in route service
163  * @remarks The service provider should support route service.
164  * @pre #location_route_pref_new should be called before.
165  * @post None.
166  * @param [in]  pref - a #LocationRoutePreference
167  * @return gchar
168  * @retval transport mode
169  * @see location_route_pref_set_transport_mode
170  */
171 gchar *location_route_pref_get_transport_mode (const LocationRoutePreference *pref);
172
173 /**
174  * @brief Get whether the route service provider must provide the route geometry in the service requests
175  * @remarks The service provider should support route service.
176  * @pre #location_route_pref_new should be called before.
177  * @post None.
178  * @param [in]  pref - a #LocationRoutePreference
179  * @return gboolean
180  * @retval TRUE                 if used
181  * @see location_route_pref_set_geometry_used
182  */
183 gboolean location_route_pref_get_geometry_used (const LocationRoutePreference *pref);
184 /**
185  * @brief Get whether the route service provider must provide the route instruction bounding box in the service requests
186  * @remarks The service provider should support route service.
187  * @pre #location_route_pref_new should be called before.
188  * @post None.
189  * @param [in]  pref - a #LocationRoutePreference
190  * @return gboolean
191  * @retval TRUE                 if used
192  * @see location_route_pref_set_instruction_bounding_box_used
193  */
194 gboolean location_route_pref_get_instruction_bounding_box_used (const LocationRoutePreference *pref);
195 /**
196  * @brief Get whether the route service provider must provide the route geometry in the service requests
197  * @remarks The service provider should support route service.
198  * @pre #location_route_pref_new should be called before.
199  * @post None.
200  * @param [in]  pref - a #LocationRoutePreference
201  * @return gboolean
202  * @retval TRUE                 if used
203  * @see location_route_pref_set_instruction_geometry_used
204  */
205 gboolean location_route_pref_get_instruction_geometry_used (const LocationRoutePreference *pref);
206
207 /**
208  * @brief Get whether the route service provider must provide the route instruction in the service requests
209  * @remarks The service provider should support route service.
210  * @pre #location_route_pref_new should be called before.
211  * @post None.
212  * @param [in]  pref - a #LocationRoutePreference
213  * @return gboolean
214  * @retval TRUE                 if used
215  * @see location_route_pref_set_instruction_used
216  */
217 gboolean location_route_pref_get_instruction_used (const LocationRoutePreference *pref);
218 /**
219  * @brief Get whether the route service provider must provide traffic data in the service requests
220  * @remarks The service provider should support route service.
221  * @pre #location_route_pref_new should be called before.
222  * @post None.
223  * @param [in]  pref - a #LocationRoutePreference
224  * @return gboolean
225  * @retval TRUE                 if used
226  * @see location_route_pref_set_traffic_data_used
227  */
228 gboolean location_route_pref_get_traffic_data_used (const LocationRoutePreference *pref);
229 /**
230  * @brief Get a list of Property Keys in #LocationRoutePreference
231  * @remarks The service provider should support route service.
232  * @pre #location_route_pref_new should be called before.
233  * @post None.
234  * @param [in]  pref - a #LocationRoutePreference
235  * @return GList
236  * @retval list of property key
237  */
238 GList *location_route_pref_get_property_key (const LocationRoutePreference *pref);
239 /**
240  * @brief Get Property value in #LocationRoutePreference
241  * @remarks The service provider should support route service.
242  * @pre #location_route_pref_new should be called before.
243  * @post None.
244  * @param [in]  pref - a #LocationRoutePreference
245  * @return GList
246  * @retval property value
247  * @see location_route_pref_set_property
248  */
249 gpointer location_route_pref_get_property (const LocationRoutePreference *pref, gconstpointer key);
250
251 /**
252  * @brief Set a list of address structures to be avoided in #LocationRoutePreference
253  * @remarks The service provider should support route service.
254  * @pre #location_route_pref_new should be called before.
255  * @post None.
256  * @param [in]  pref - a #LocationRoutePreference
257  * @param [in]  addr - a list of #LocationAddress
258  * @return gboolean
259  * @retval TRUE                              if success
260  * @see location_route_pref_get_addr_to_avoid
261  */
262 gboolean location_route_pref_set_addr_to_avoid (LocationRoutePreference * pref, GList *addr);
263
264 /**
265  * @brief Set a list of area to be avoided in Location route preference
266  * @remarks The service provider should support route service.
267  * @pre #location_route_pref_new should be called before.
268  * @post None.
269  * @param [in]  pref - a #LocationRoutePreference
270  * @param [in]  area - a list of #LocationBoundary
271  * @return gboolean
272  * @retval TRUE                              if success
273  * @see location_route_pref_get_area_to_avoid
274  */
275 gboolean location_route_pref_set_area_to_avoid (LocationRoutePreference * pref, GList *area);
276
277 /**
278  * @brief Set a list of features to be avoided in Location route preference
279  * @remarks The service provider should support route service.
280  * @pre #location_route_pref_new should be called before.
281  * @post None.
282  * @param [in]  pref - a #LocationRoutePreference
283  * @param [in]  feature - a list of features
284  * @return gboolean
285  * @retval TRUE                              if success
286  * @see location_route_pref_get_feature_to_avoid
287  */
288 gboolean location_route_pref_set_feature_to_avoid (LocationRoutePreference * pref, GList * feature);
289
290 /**
291  * @brief Set a list of freeformed address to be avoided in Location route preference
292  * @remarks The service provider should support route service.
293  * @pre #location_route_pref_new should be called before.
294  * @post None.
295  * @param [in]  pref - a #LocationRoutePreference
296  * @param [in]  addr - a list of #gchar
297  * @return gboolean
298  * @retval TRUE                              if success
299  * @see location_route_pref_get_freeformed_addr_to_avoid
300  */
301 gboolean location_route_pref_set_freeformed_addr_to_avoid (LocationRoutePreference *pref, GList * freeformed_addr);
302
303 /**
304  * @brief Set a bounding box #LocationBoundary in Location route preference
305  * @remarks The service provider should support route service.
306  * @pre #location_route_pref_new should be called before.
307  * @post None.
308  * @param [in]  pref - a #LocationRoutePreference
309  * @param [in]  bbox - a #LocationBoundary
310  * @return gboolean
311  * @retval TRUE                              if success
312  * @see location_route_pref_get_bounding_box
313  */
314 gboolean location_route_pref_set_bounding_box (LocationRoutePreference *pref, const LocationBoundary *boundary);
315
316 /**
317  * @brief Set a maximum number of matches returned from route service provider
318  * @remarks The service provider should support route service.
319  * @pre #location_route_pref_new should be called before.
320  * @post None.
321  * @param [in]  pref - a #LocationRoutePreference
322  * @param [in]  max_num - a #gint
323  * @return gboolean
324  * @retval TRUE                              if success
325  * @see location_route_pref_set_max_result
326  */
327 gboolean location_route_pref_set_max_result (LocationRoutePreference *pref, guint max_num);
328
329 /**
330  * @brief Set a route type to be used in route service
331  * @remarks The service provider should support route service.
332  * @pre #location_route_pref_new should be called before.
333  * @post None.
334  * @param [in]  pref - a #LocationRoutePreference
335  * @param [in]  type - a #gchar
336  * @return gboolean
337  * @retval TRUE                              if success
338  * @see location_route_pref_get_route_type
339  */
340 gboolean location_route_pref_set_route_type (LocationRoutePreference *pref, const gchar *type);
341
342 /**
343  * @brief Set a transport mode to be used in route service
344  * @remarks The service provider should support route service.
345  * @pre #location_route_pref_new should be called before.
346  * @post None.
347  * @param [in]  pref - a #LocationRoutePreference
348  * @param [in]  mode - a #gchar
349  * @return gboolean
350  * @retval TRUE                              if success
351  * @see location_route_pref_get_transport_mode
352  */
353 gboolean location_route_pref_set_transport_mode (LocationRoutePreference *pref, const gchar * mode);
354
355 /**
356  * @brief Set whether the route service provider must provide the route geometry in the service requests
357  * @remarks The service provider should support route service.
358  * @pre #location_route_pref_new should be called before.
359  * @post None.
360  * @param [in]  pref - a #LocationRoutePreference
361  * @param [in]  is_used - a #gboolean
362  * @return gboolean
363  * @retval TRUE                              if success
364  * @see location_route_pref_get_geometry_used
365  */
366 gboolean location_route_pref_set_geometry_used (LocationRoutePreference *pref, gboolean is_used);
367
368 /**
369  * @brief Set whether the route service provider must provide the route instruction bounding box in the service requests
370  * @remarks The service provider should support route service.
371  * @pre #location_route_pref_new should be called before.
372  * @post None.
373  * @param [in]  pref - a #LocationRoutePreference
374  * @param [in]  is_used - a #gboolean
375  * @return gboolean
376  * @retval TRUE                              if success
377  * @see location_route_pref_get_instruction_bounding_box_used
378  */
379 gboolean location_route_pref_set_instruction_bounding_box_used (LocationRoutePreference *pref, gboolean is_used);
380
381 /**
382  * @brief Set whether the route service provider must provide the route geometry in the service requests
383  * @remarks The service provider should support route service.
384  * @pre #location_route_pref_new should be called before.
385  * @post None.
386  * @param [in]  pref - a #LocationRoutePreference
387  * @param [in]  is_used - a #gboolean
388  * @return gboolean
389  * @retval TRUE                              if success
390  * @see location_route_pref_get_instruction_geometry_used
391  */
392 gboolean location_route_pref_set_instruction_geometry_used (LocationRoutePreference *pref, gboolean is_used);
393
394 /**
395  * @brief Set whether the route service provider must provide the route instruction in the service requests
396  * @remarks The service provider should support route service.
397  * @pre #location_route_pref_new should be called before.
398  * @post None.
399  * @param [in]  pref - a #LocationRoutePreference
400  * @param [in]  is_used - a #gboolean
401  * @return gboolean
402  * @retval TRUE                              if success
403  * @see location_route_pref_get_instruction_used
404  */
405 gboolean location_route_pref_set_instruction_used (LocationRoutePreference *pref, gboolean is_used);
406
407 /**
408  * @brief Set whether the route service provider must provide traffic data in the service requests
409  * @remarks The service provider should support route service.
410  * @pre #location_route_pref_new should be called before.
411  * @post None.
412  * @param [in]  pref - a #LocationRoutePreference
413  * @param [in]  is_used - a #gboolean
414  * @return #gboolean
415  * @retval TRUE                              if success
416  * @see location_route_pref_get_traffic_data_used
417  */
418 gboolean location_route_pref_set_traffic_data_used (LocationRoutePreference *pref, gboolean is_used);
419
420 /**
421  * @brief Set Property in Location route proference
422  * @remarks The service provider should support route service.
423  * @pre #location_route_pref_new should be called before.
424  * @post None.
425  * @param [in]  pref - a #LocationRoutePreference
426  * @param [in]  key - a #gconstpointer
427  * @param [in]  value - a #gconstpointer
428  * @return gboolean
429  * @retval TRUE                              if success
430  * @see location_route_pref_get_property
431  */
432 gboolean location_route_pref_set_property (LocationRoutePreference *pref, gconstpointer key, gconstpointer value);
433
434 /**
435  * @defgroup LocationMapServiceRouteResult Location Route Result
436  * @brief This provides structure, enumeration and APIs for Route Result
437  * @addtogroup LocationMapServiceRouteResult
438  * @{
439  */
440 /**
441  * @brief Create a new Location route
442  * @remarks The service provider should support route service.
443  * @pre None.
444  * @post None.
445  * @return #LocationRoute
446  * @retval a new location route
447  * @see location_route_free
448  */
449 LocationRoute *location_route_new (void);
450 /**
451  * @brief Copy Location route
452  * @remarks The service provider should support route service.
453  * @pre None.
454  * @post None.
455  * @param [in]  route - a #LocationRoute
456  * @return #LocationRoute
457  * @retval a copied location route
458  */
459 LocationRoute *location_route_copy (const LocationRoute *route);
460
461 /**
462  * @brief Free #LocationRoute
463  * @remarks The service provider should support route service.
464  * @pre None.
465  * @post None.
466  * @param [in]  route - a #LocationRoute
467  * @return void
468  * @retval None
469  */
470 void location_route_free (LocationRoute *route);
471
472 /**
473  * @brief Get the origin of Location route
474  * @remarks The service provider should support route service.
475  * @pre None.
476  * @post None.
477  * @param [in]  route - a #LocationRoute
478  * @return #Location position
479  * @retval origin
480  * @see location_route_set_origin
481  */
482 LocationPosition *location_route_get_origin (const LocationRoute *route);
483
484 /**
485  * @brief Get the destination of Location route
486  * @remarks The service provider should support route service.
487  * @pre None.
488  * @post None.
489  * @param [in]  route - a #LocationRoute
490  * @return #LocationPosition
491  * @retval destination
492  * @see location_route_set_destination
493  */
494 LocationPosition *location_route_get_destination (const LocationRoute *route);
495
496 /**
497  * @brief Get the bounding box of Location route
498  * @remarks The service provider should support route service.
499  * @pre None.
500  * @post None.
501  * @param [in]  route - a #LocationRoute
502  * @return #LocationBoundary
503  * @retval bounding box
504  * @see location_route_set_bounding box
505  */
506 LocationBoundary *location_route_get_bounding_box (const LocationRoute *route);
507
508 /**
509  * @brief Get the total distance of Location route
510  * @remarks The service provider should support route service.
511  * @pre None.
512  * @post None.
513  * @param [in]  route - a #LocationRoute
514  * @return gdouble
515  * @retval total distance
516  * @see location_route_set_total_distance
517  */
518 gdouble location_route_get_total_distance (const LocationRoute *route);
519
520 /**
521  * @brief Get the distance unit of Location route
522  * @remarks The service provider should support route service.
523  * @pre None.
524  * @post None.
525  * @param [in]  route - a #LocationRoute
526  * @return gchar
527  * @retval distance unit
528  * @see location_route_set_distance_unit
529  */
530 gchar *location_route_get_distance_unit (const LocationRoute *route);
531
532 /**
533  * @brief Get the total duration of location route
534  * @remarks The service provider should support route service.
535  * @pre None.
536  * @post None.
537  * @param [in]  route - a #LocationRoute
538  * @return glong
539  * @retval total duration
540  * @see location_route_set_total_duration
541  */
542 glong location_route_get_total_duration (const LocationRoute *route);
543
544 /**
545  * @brief Get the list of property key of Location route
546  * @remarks The service provider should support route service.
547  * @pre None.
548  * @post None.
549  * @param [in]  route - a #LocationRoute
550  * @return GList
551  * @retval list of property keys
552  * @see location_route_set_property
553  */
554 GList *location_route_get_property_key (const LocationRoute *route);
555
556 /**
557  * @brief Get the property value of Location route
558  * @remarks The service provider should support route service.
559  * @pre None.
560  * @post None.
561  * @param [in]  route - a #LocationRoute
562  * @return gconstpointer
563  * @retval property
564  * @see location_route_set_property
565  */
566 gpointer location_route_get_property (const LocationRoute *route, gconstpointer key);
567
568 /**
569  * @brief Get the list of segments in Location route
570  * @remarks The service provider should support route service.
571  * @post None.
572  * @pre None.
573  * @param [in]  route - a #LocationRoute
574  * @return GList
575  * @retval list of #LocationRouteSegment
576  * @see location_route_set_route_segment
577  */
578 GList *location_route_get_route_segment (const LocationRoute *route);
579
580 /**
581  * @brief Create a new Location route segment
582  * @remarks The service provider should support route service.
583  * @pre None.
584  * @post None.
585  * @return #LocationPositionSegment
586  * @retval Location route segment
587  * @see location_route_segment_free
588  */
589 LocationRouteSegment *location_route_segment_new (void);
590
591 /**
592  * @brief Copy Location route segment
593  * @remarks The service provider should support route service.
594  * @pre None.
595  * @post None.
596  * @param [in]  segment - a #LocationRouteSegment
597  * @return #LocationRouteSegment
598  * @retval copied Location route segment
599  */
600 LocationRouteSegment *location_route_segment_copy (LocationRouteSegment *segment);
601
602 /**
603  * @brief Free Location route segment
604  * @remarks The service provider should support route service.
605  * @pre None.
606  * @post None.
607  * @param [in]  segment - a #LocationRouteSegment
608  * @return void
609  * @retval None.
610  * @see location_route_segment_new
611  */
612 void location_route_segment_free (LocationRouteSegment *segment);
613
614 /**
615  * @brief Get the start point #LocationPosition of #LocationRouteSegment
616  * @remarks The service provider should support route service.
617  * @pre None.
618  * @post None.
619  * @param [in]  segment - a #LocationRouteSegment
620  * @return void
621  * @retval None.
622  * @see location_route_segment_set_start_point
623  */
624 LocationPosition *location_route_segment_get_start_point (const LocationRouteSegment *segment);
625
626 /**
627  * @brief Get the end point #LocationPosition of #LocationRouteSegment
628  * @remarks The service provider should support route service.
629  * @pre None.
630  * @post None.
631  * @param [in]  segment - a #LocationRouteSegment
632  * @return void
633  * @retval None.
634  * @see location_route_segment_set_end_point
635  */
636 LocationPosition *location_route_segment_get_end_point (const LocationRouteSegment *segment);
637
638 /**
639  * @brief Get the bounding box #LocationBoundary of #LocationRouteSegment
640  * @remarks The service provider should support route service.
641  * @pre None.
642  * @post None.
643  * @param [in]  segment - a #LocationRouteSegment
644  * @return void
645  * @retval None.
646  * @see location_route_segment_set_bounding_box
647  */
648 LocationBoundary *location_route_segment_get_bounding_box (const LocationRouteSegment *segment);
649
650 /**
651  * @brief Get the distance of #LocationRouteSegment
652  * @remarks The service provider should support route service.
653  * @pre None.
654  * @post None.
655  * @param [in]  segment - a #LocationRouteSegment
656  * @return void
657  * @retval None.
658  * @see location_route_segment_set_distance
659  */
660 gdouble location_route_segment_get_distance (const LocationRouteSegment *segment);
661
662 /**
663  * @brief Get the duration #LocationRouteSegment
664  * @remarks The service provider should support route service.
665  * @pre None.
666  * @post None.
667  * @param [in]  segment - a #LocationRouteSegment
668  * @return void
669  * @retval None.
670  * @see location_route_segment_set_duration
671  */
672 glong location_route_segment_get_duration (const LocationRouteSegment *segment);
673
674 /**
675  * @brief Get the list of property keys of #LocationRouteSegment
676  * @remarks The service provider should support route service.
677  * @pre None.
678  * @post None.
679  * @param [in]  segment - a #LocationRouteSegment
680  * @return void
681  * @retval None.
682  * @see location_route_segment_set_property_key
683  */
684 GList *location_route_segment_get_property_key (const LocationRouteSegment *segment);
685
686 /**
687  * @brief Get the property value of #LocationRouteSegment
688  * @remarks The service provider should support route service.
689  * @pre None.
690  * @post None.
691  * @param [in]  segment - a #LocationRouteSegment
692  * @return void
693  * @retval None.
694  * @see location_route_segment_set_property
695  */
696 gpointer location_route_segment_get_property (const LocationRouteSegment *segment, gconstpointer key);
697
698 /**
699  * @brief Get the list of route steps #LocationRouteStep in #LocationRouteSegment
700  * @remarks The service provider should support route service.
701  * @pre None.
702  * @post None.
703  * @param [in]  segment - a #LocationRouteSegment
704  * @return void
705  * @retval None.
706  * @see location_route_segment_set_route_step
707  */
708 GList *location_route_segment_get_route_step (const LocationRouteSegment *segment);
709
710 /**
711  * @brief Create a new #LocationRouteStep
712  * @remarks The service provider should support route service.
713  * @pre None.
714  * @post None.
715  * @param None.
716  * @return #LocationRouteStep
717  * @retval  route step
718  * @see location_route_step_free
719  */
720 LocationRouteStep *location_route_step_new (void);
721
722 /**
723  * @brief Copy #LocationRouteStep
724  * @remarks The service provider should support route service.
725  * @pre None.
726  * @post None.
727  * @param [in] step - a #LocationRouteStep
728  * @return #LocationRouteStep
729  * @retval  route step
730  * @see location_route_step_new
731  */
732 LocationRouteStep *location_route_step_copy (LocationRouteStep *step);
733
734 /**
735  * @brief Free #LocationRouteStep
736  * @remarks The service provider should support route service.
737  * @pre None.
738  * @post None.
739  * @param [in] step - a #LocationRouteStep
740  * @return void
741  * @retval  None
742  * @see location_route_step_new
743  */
744 void location_route_step_free (LocationRouteStep *step);
745
746 /**
747  * @brief Get the start point #LocationPosition of #LocationRouteStep
748  * @remarks The service provider should support route service.
749  * @pre None.
750  * @post None.
751  * @param [in] step - a #LocationRouteStep
752  * @return #LocationPosition
753  * @retval  start point
754  * @see location_route_step_set_start_point
755  */
756 LocationPosition *location_route_step_get_start_point (const LocationRouteStep *step);
757
758 /**
759  * @brief Get the end point #LocationPosition of #LocationRouteStep
760  * @remarks The service provider should support route service.
761  * @pre None.
762  * @post None.
763  * @param [in] step - a #LocationRouteStep
764  * @return #LocationPosition
765  * @retval  end point
766  * @see location_route_step_set_end_point
767  */
768 LocationPosition *location_route_step_get_end_point (const LocationRouteStep *step);
769
770 /**
771  * @brief Get the bounding box #LocationBoundary of #LocationRouteStep
772  * @remarks The service provider should support route service.
773  * @pre None.
774  * @post None.
775  * @param [in] step - a #LocationRouteStep
776  * @return #LocationBoundary
777  * @retval  bounding box
778  * @see location_route_step_set_bounding_box
779  */
780 LocationBoundary *location_route_step_get_bounding_box (const LocationRouteStep *step);
781
782 /**
783  * @brief Get the distance of #LocationRouteStep
784  * @remarks The service provider should support route service.
785  * @pre None.
786  * @post None.
787  * @param [in] step - a #LocationRouteStep
788  * @return gboolean
789  * @retval  distance
790  * @see location_route_step_set_distance
791  */
792 gdouble location_route_step_get_distance (const LocationRouteStep *step);
793
794 /**
795  * @brief Get the duration of #LocationRouteStep
796  * @remarks The service provider should support route service.
797  * @pre None.
798  * @post None.
799  * @param [in] step - a #LocationRouteStep
800  * @return glong
801  * @retval  duration
802  * @see location_route_step_set_duration
803  */
804 glong location_route_step_get_duration (const LocationRouteStep *step);
805
806 /**
807  * @brief Get the transport mode of #LocationRouteStep
808  * @remarks The service provider should support route service.
809  * @pre None.
810  * @post None.
811  * @param [in] step - a #LocationRouteStep
812  * @return gchar
813  * @retval  transport mode
814  * @see location_route_step_set_transport_mode
815  */
816 gchar *location_route_step_get_transport_mode (const LocationRouteStep *step);
817
818 /**
819  * @brief Get the instruction of #LocationRouteStep
820  * @remarks The service provider should support route service.
821  * @pre None.
822  * @post None.
823  * @param [in] step - a #LocationRouteStep
824  * @return gchar
825  * @retval  instruction
826  * @see location_route_step_set_instruction
827  */
828 gchar *location_route_step_get_instruction (const LocationRouteStep *step);
829
830 /**
831  * @brief Get the list of geometry #LocationPosition of #LocationRouteStep
832  * @remarks The service provider should support route service.
833  * @pre None.
834  * @post None.
835  * @param [in] step - a #LocationRouteStep
836  * @return GList
837  * @retval  a list of LocationPosition
838  * @see location_route_step_set_geometry
839  */
840 GList *location_route_step_get_geometry (const LocationRouteStep *step);
841
842 /**
843  * @brief Get the list of property key of #LocationRouteStep
844  * @remarks The service provider should support route service.
845  * @pre None.
846  * @post None.
847  * @param [in] step - a #LocationRouteStep
848  * @return GList
849  * @retval  a list of property key
850  * @see location_route_step_set_property_key
851  */
852 GList *location_route_step_get_property_key (const LocationRouteStep *step);
853
854 /**
855  * @brief Get the property value of #LocationRouteStep
856  * @remarks The service provider should support route service.
857  * @pre None.
858  * @post None.
859  * @param [in] step - a #LocationRouteStep
860  * @param [in] key - a gconstpointer
861  * @return gpointer
862  * @retval  value
863  * @see location_route_step_set_property
864  */
865 gpointer location_route_step_get_property (const LocationRouteStep *step, gconstpointer key);
866
867 /**
868  * @} @} @}
869  */
870
871 G_END_DECLS
872
873 #endif