Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / Tizen.Maps / Tizen.Maps / PlaceList.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="Place"/> objects to be used in <see cref="MapService"/> APIs
24     /// </summary>
25     internal class PlaceList : IDisposable
26     {
27         internal Interop.PlaceListHandle handle;
28         private List<Place> _list;
29
30         internal PlaceList(Interop.PlaceListHandle nativeHandle)
31         {
32             handle = nativeHandle;
33         }
34
35         /// <summary>
36         /// Gets an iterator for addresses in this list.
37         /// </summary>
38         public IEnumerable<Place> Places
39         {
40             get
41             {
42                 if (_list == null)
43                 {
44                     _list = new List<Place>();
45                     handle.Foreach(placeHandle => _list.Add(new Place(placeHandle)));
46                 }
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 }