915547bb6d6e0aafaa76ce0df45689be5ba90f45
[platform/upstream/iotivity.git] / service / notification / cpp-wrapper / common / NSTopicsList.cpp
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 #include "NSTopicsList.h"
22 #include "oic_malloc.h"
23
24 namespace OIC
25 {
26     namespace Service
27     {
28         NSTopicsList::NSTopicsList(::NSTopicLL *topics)
29         {
30             ::NSTopicLL *topicsNode = nullptr;
31             topicsNode = topics;
32
33             while (topicsNode != nullptr)
34             {
35                 addTopic(topicsNode->topicName, (NSTopic::NSTopicState)topicsNode->state);
36                 topicsNode = topicsNode->next;
37             }
38
39         }
40         NSTopicsList::NSTopicsList(const NSTopicsList &topicsList)
41         {
42             for (auto it : topicsList.getTopicsList())
43             {
44                 addTopic(it->getTopicName(), it->getState());
45             }
46         }
47
48         NSTopicsList &NSTopicsList::operator=(const NSTopicsList &topicsList)
49         {
50             for (auto it : topicsList.getTopicsList())
51             {
52                 this->addTopic(it->getTopicName(), it->getState());
53             }
54             return *this;
55         }
56
57         NSTopicsList::~NSTopicsList()
58         {
59             for (auto it : getTopicsList())
60             {
61                 delete it;
62             }
63             getTopicsList().clear();
64         }
65
66         void NSTopicsList::addTopic(const std::string &topicName, NSTopic::NSTopicState state)
67         {
68             m_topicsList.push_back(new NSTopic(topicName, state));
69         }
70
71         void NSTopicsList::removeTopic(const std::string &topicName)
72         {
73             for (auto it : getTopicsList())
74             {
75                 if (it->getTopicName().compare(topicName) == 0)
76                 {
77                     m_topicsList.remove(it);
78                 }
79             }
80         }
81
82         std::list<NSTopic *> NSTopicsList::getTopicsList() const
83         {
84             return m_topicsList;
85         }
86     }
87 }