YARP
Yet Another Robot Platform
resource.h
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 
6 #ifndef YARP_MANAGER_RESOURCE
7 #define YARP_MANAGER_RESOURCE
8 
10 #include <yarp/manager/node.h>
11 #include <yarp/manager/utility.h>
12 #include <yarp/conf/api.h>
13 
14 namespace yarp {
15 namespace manager {
16 
17 class GenericResource : public Node
18 {
19 public:
20  GenericResource(const char* szTypeName);
21  ~GenericResource() override;
22 
23  void setAvailability(bool flag) { bAvailable = flag; }
24  bool getAvailability() { return bAvailable; }
25  void setDisable(bool flag) { bDisabled = flag; }
26  bool getDisable() { return bDisabled; }
27 
28  void setName(const char* szName) { if(szName) { strName = szName; } }
29  const char* getName() { return strName.c_str(); }
30  void setDescription(const char* szDesc) { if(szDesc) { strDescription = szDesc; } }
31  const char* getDescription() { return strDescription.c_str(); }
32  const char* getTypeName() { return strTypeName.c_str(); }
33 
34  void setOwner(Node* owner) { modOwner = owner; }
35  Node* owner() { return modOwner; }
36  void setXmlFile(const char* szFilename) { if(szFilename) { strXmlFile = szFilename; } }
37  const char* getXmlFile() { return strXmlFile.c_str(); }
38 
39  //virtual Node* clone();
40  virtual bool satisfy(GenericResource* resource) = 0;
41 
42  bool operator==(const GenericResource& res) const {
43  return (strName == res.strName);
44  }
45 
46 protected:
47 
48 private:
49  bool bAvailable;
50  bool bDisabled;
51  std::string strName;
52  std::string strTypeName;
53  std::string strDescription;
54  Node* modOwner;
55  std::string strXmlFile;
56 
57 };
58 
59 typedef std::vector<GenericResource*> ResourcePContainer;
60 typedef std::vector<GenericResource*>::iterator ResourcePIterator;
61 
62 
63 
68 {
69 public:
70  MultiResource();
71  MultiResource(const char* szName);
72  MultiResource(const MultiResource& rhs);
74  ~MultiResource() override;
75  Node* clone() override;
76  bool satisfy(GenericResource* resource) override;
77 
78  int resourceCount() const { return resources.size(); }
79  GenericResource& getResourceAt(int index) const { return *(resources[index]); }
80  bool addResource(GenericResource& res);
81  void clear();
82 
83 protected:
84 
85 private:
86  ResourcePContainer resources;
87  void swap(const MultiResource &res);
88 };
89 
90 } // namespace yarp
91 } // namespace manager
92 
93 
94 #endif // __YARP_MANAGER_RESOURCE__
const char * getDescription()
Definition: resource.h:31
void setAvailability(bool flag)
Definition: resource.h:23
bool operator==(const GenericResource &res) const
Definition: resource.h:42
GenericResource(const char *szTypeName)
Class GenericResource.
Definition: resource.cpp:15
void setName(const char *szName)
Definition: resource.h:28
const char * getXmlFile()
Definition: resource.h:37
const char * getTypeName()
Definition: resource.h:32
void setXmlFile(const char *szFilename)
Definition: resource.h:36
void setDescription(const char *szDesc)
Definition: resource.h:30
virtual bool satisfy(GenericResource *resource)=0
void setDisable(bool flag)
Definition: resource.h:25
void setOwner(Node *owner)
Definition: resource.h:34
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
std::vector< GenericResource * >::iterator ResourcePIterator
Definition: resource.h:60
std::vector< GenericResource * > ResourcePContainer
Definition: resource.h:59
The main, catch-all namespace for YARP.
Definition: dirs.h:16