Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Maps / Tizen.Maps / GeocoordinatesList.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Collections.Generic;
19
20 namespace Tizen.Maps
21 {
22     /// <summary>
23     /// List of <see cref="Geocoordinates"/> objects to be used in <see cref="MapService"/> APIs
24     /// </summary>
25     internal class GeocoordinatesList : IDisposable
26     {
27         internal Interop.CoordinatesListHandle handle;
28
29         internal GeocoordinatesList(IEnumerable<Geocoordinates> coordinateList, bool ownerShip = false)
30         {
31             handle = new Interop.CoordinatesListHandle(ownerShip);
32             foreach (var coordinates in coordinateList)
33             {
34                 handle.Add(coordinates.handle);
35             }
36         }
37
38         /// <summary>
39         /// Iterator for coordinates in this list
40         /// </summary>
41         internal IEnumerable<Geocoordinates> Coordinates
42         {
43             get
44             {
45                 List<Geocoordinates> list = new List<Geocoordinates>();
46                 handle.ForEach(coordinateHandle => list.Add(new Geocoordinates(coordinateHandle)));
47                 return list;
48             }
49         }
50
51         #region IDisposable Support
52         private bool _disposedValue = false;
53
54         protected virtual void Dispose(bool disposing)
55         {
56             if (!_disposedValue)
57             {
58                 handle.Dispose();
59                 _disposedValue = true;
60             }
61         }
62
63         /// <summary>
64         /// Releases all resources used by this object.
65         /// </summary>
66         /// <since_tizen>3</since_tizen>
67         public void Dispose()
68         {
69             Dispose(true);
70             GC.SuppressFinalize(this);
71         }
72         #endregion
73     }
74 }