source: libs/SamgarWRUTed/tags/1.0/QtGui/inc/SgModule.h @ 447

Revision 447, 5.2 KB checked in by lmalek, 10 years ago (diff)

tree structure reorganization

Line 
1#ifndef SGMODULE_H
2#define SGMODULE_H
3
4#include "SgPort.h"
5#include "SgPortContainer.h"
6#include <yarp/os/all.h>
7#include "SamgarVars.h"
8
9namespace Sg
10{
11    typedef yarp::os::BufferedPort<yarp::os::Bottle> SgPortDataType;
12    /** \brief Class modeling the SAMGAR module.
13     */
14    class SgModule : public SgObject
15    {
16    public:
17        /** \breif Default constructor
18         */
19        SgModule(const SgNameType name, const SgObject* parentObject=0);
20
21        /** \breif Parametric constructor
22         *
23         *  \param name the name of the module
24         *  \param category the category to witch module belongs
25         *  \param subcategory the sobcategory to witch module belongs
26         *  \param isActive flag defining the current activity state of the module
27         */
28        SgModule(const SgNameType name, const std::string category, const std::string subcategory,
29                 const bool isActive=true, const SgObject* parentObject=0);
30
31        /** \brief Destructor
32         */
33        virtual ~SgModule();
34
35
36        /** \brief Seting the category of the module
37         *
38         *  \param newCategory new category of the module.
39         */
40        void setCategory(const std::string newCategory);
41
42        /** \brief Seting the subcategory of the module
43         *
44         *  \param newSubCategory new subcategory of the module.
45         */
46        void setSubCategory(const std::string newSubCategory);
47
48        /** \brief Seting the activity flag of the module
49         *
50         *  \param newActive new activity flag of the module.
51         */
52        void setActive(const bool newActive);
53
54        /** \brief Obtaining the category of the module
55         *
56         *  \return Returns the category of the module.
57         */
58        const std::string getCategory() const;
59
60        /** \brief Obtaining the subcategory of the module
61         *
62         *  \return Returns the subcategory of the module.
63         */
64        const std::string getSubCategory() const;
65
66        /** \brief Obtaining the current activity flag of the module
67         *
68         *  \return Returns the current activity flag of the module.
69         */
70        bool getActive() const;
71
72        bool addPort(const SgNameType &newPortName);
73
74        /** \brief Remove a port from the module
75         *
76         *  \param portName name of the port to be removed
77         *  \return true on succes, false on failure.
78         */
79        bool delPort(const SgNameType &portName);
80
81        /** \brief Remove all ports from the module
82         *
83         *  \return true on succes, false on failure.
84         */
85        bool clearPorts();
86
87        /** \breif Check if port of given name exist in the module
88         *
89         *  \param portName name of the port to be checked if it exists
90         *  \return true if exists, false otherwise
91         */
92        bool existPort(const SgNameType &portName);
93
94        /** \breif Returns iterator to the port of given name
95         *
96         *  \param portName name of the port that iterator will be returned
97         *  \return on succes return iterator corresponding to the port of a name portName,
98         *          on failure returns value of a null() method
99         */
100        SgPortContainerIterator& getPort(const SgNameType &portName);
101
102        /** \brief Iterator to the begin of the container
103         *
104         *  \return Iterator to the module
105         */
106        SgPortContainerIterator begin();
107
108        /** \brief Iterator to the end of the container
109         *
110         *  \return Iterator to the module
111         */
112        SgPortContainerIterator end();
113
114        /** \brief Special iterator coresponding to the NULL pointer
115         *
116         *  \return Iterator to the module
117         */
118        SgPortContainerIterator null();
119
120
121        /** \brief Reference to container of the ports
122         *
123         *  \todo This is not good. It should be removed ASAP.
124         */
125        SgPortContainer& getPorts();
126
127        bool refreshState();
128
129        static SgPortDataType portForModules; // yarp port
130
131        static SgNameType portForModulesName;
132
133        static SgNameType FullModuleName(std::string moduleName)
134        {
135                    return "/Main_"+moduleName;
136        }
137
138        static SgNameType FullModuleName(const SgModule& org)
139        {
140                    return "/Main_"+ org.name;
141        }
142
143        static void StopAll()
144        {
145            yarp::os::Bottle& cc = portForModules.prepare();
146            cc.clear();
147            cc.addInt(Samgar::ModuleStateFullstopAll);
148            portForModules.write();
149        }
150
151        static void StartAll()
152        {
153            yarp::os::Bottle& cc = portForModules.prepare();
154            cc.clear();
155            cc.addInt(Samgar::ModuleStateRunningAll);
156            portForModules.write();
157        }
158
159    private:
160        /** \breif Name of the category to witch module belongs.
161         */
162        std::string category;
163
164        /** \breif Name of the subcategory to witch module belongs.
165         */
166        std::string subCategory;
167
168        /** \breif Module activity flag. If nodule is active it is equal true.
169         */
170        bool active;
171
172        /** \brief Container for ports belonging to the module.
173         */
174        SgPortContainer ports;
175    };
176
177} // namespace Sq (END)
178
179#endif // SGMODULE_H
Note: See TracBrowser for help on using the repository browser.