YARP
Yet Another Robot Platform
resource.cpp
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
7 
8 using namespace yarp::manager;
9 
10 
16 {
17  modOwner = nullptr;
18  bAvailable = true;
19  bDisabled = false;
20  if (szTypeName) {
21  strTypeName = szTypeName;
22  }
23 }
24 
26 
27 
28 
34 {
35 }
36 
37 
38 MultiResource::MultiResource(const char* szName) : GenericResource("MultipleResource")
39 {
40  setName(szName);
41 }
42 
43 
45 {
46  MultiResource::swap(resource);
47 }
48 
49 
51 {
52  GenericResource::operator=(rhs);
53  MultiResource::swap(rhs);
54  return *this;
55 }
56 
57 
59 {
60  auto* newres = (GenericResource*) res.clone();
61  resources.push_back(newres);
62  return true;
63 }
64 
66 {
67  // MultiResource is used as intermediate concept for
68  // disjunctive resource dependencies and it never
69  // can be a provider.
70  return false;
71 }
72 
73 
75 {
76  auto* resource = new MultiResource(*this);
77  return resource;
78 }
79 
80 void MultiResource::swap(const MultiResource &res)
81 {
82  clear();
83  // deep copy
84  for (int i = 0; i < res.resourceCount(); i++) {
85  addResource(res.getResourceAt(i));
86  }
87 }
88 
90 {
91  for(auto& resource : resources)
92  {
93  delete resource;
94  resource = nullptr;
95  }
96  resources.clear();
97 }
98 
99 
101 {
102  clear();
103 }
GenericResource(const char *szTypeName)
Class GenericResource.
Definition: resource.cpp:15
void setName(const char *szName)
Definition: resource.h:28
Class MultiResource.
Definition: resource.h:68
MultiResource()
Class MultiResource.
Definition: resource.cpp:33
bool satisfy(GenericResource *resource) override
Definition: resource.cpp:65
GenericResource & getResourceAt(int index) const
Definition: resource.h:79
MultiResource & operator=(const MultiResource &rhs)
Definition: resource.cpp:50
bool addResource(GenericResource &res)
Definition: resource.cpp:58
Node * clone() override
Definition: resource.cpp:74
a Node of a Graph
Definition: node.h:65
virtual Node * clone()=0