Imported Upstream version 1.1.0
[platform/upstream/iotivity.git] / service / scene-manager / include / SceneList.h
1 //******************************************************************
2 //
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef SM_SCENELIST_H_
22 #define SM_SCENELIST_H_
23
24 #include "SceneCollection.h"
25
26 #include <string>
27
28 namespace OIC
29 {
30     namespace Service
31     {
32
33         /**
34          * @class SceneList
35          *
36          * @brief SceneList class is an interface class to manage SceneList resource. This class
37          * provides APIs for creating a new SceneCollection instance and retrieving the existing
38          * instances as well as for setting/getting a name attribute of SceneList resource.
39          *
40          */
41         class SceneList
42         {
43         private:
44             SceneList() = default;
45             ~SceneList() = default;
46
47         public:
48             /**
49              * Gets static instance of SceneList
50              *
51              * @return SceneList instance
52              *
53              */
54             static SceneList* getInstance();
55
56             /**
57              * Adds new SceneCollection instance
58              *
59              * @return A shared pointer of SceneCollection instance
60              *
61              * @note SceneCollection instance is only produced by SceneList class
62              */
63             SceneCollection::Ptr addNewSceneCollection();
64
65             /**
66              * Gets all SceneCollection instances stored in SceneList resource
67              *
68              * @return A vector of shared pointers of SceneCollection instances
69              *
70              * @note SceneCollection instance that addNewSceneCollection returns is not same
71              * instance that getSceneCollections returns
72              */
73             std::vector<SceneCollection::Ptr> getSceneCollections() const;
74
75             /**
76              * Sets a name attribute of SceneList resource
77              *
78              * @param sceneListName               A SceneList resource's name
79              */
80             void setName(const std::string& sceneListName);
81
82             /**
83              * Gets a name attribute of SceneList resource
84              *
85              * @return A SceneList resource's name
86              */
87             std::string getName() const;
88         };
89     } /* namespace Service */
90 } /* namespace OIC */
91
92 #endif /* SM_SCENELIST_H_ */