Line data Source code
1 :
2 : /* Copyright (c) 2006-2013, Stefan Eilemann <eile@equalizergraphics.com>
3 : * 2008-2010, Cedric Stalder <cedric.stalder@gmail.com>
4 : * 2014, Daniel Nachbaur <danielnachbaur@gmail.com>
5 : *
6 : * This library is free software; you can redistribute it and/or modify it under
7 : * the terms of the GNU Lesser General Public License version 2.1 as published
8 : * by the Free Software Foundation.
9 : *
10 : * This library is distributed in the hope that it will be useful, but WITHOUT
11 : * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 : * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
13 : * details.
14 : *
15 : * You should have received a copy of the GNU Lesser General Public License
16 : * along with this library; if not, write to the Free Software Foundation, Inc.,
17 : * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 : */
19 :
20 : #ifndef EQSERVER_GLOBAL_H
21 : #define EQSERVER_GLOBAL_H
22 :
23 : #include "channel.h" // nested enum
24 : #include "compound.h" // nested enum
25 : #include "config.h" // nested enum
26 : #include "connectionDescription.h" // nested enum
27 : #include "node.h" // nested enum
28 : #include "pipe.h" // nested enum
29 : #include "view.h" // nested enum
30 : #include "window.h" // nested enum
31 :
32 : namespace eq
33 : {
34 : namespace server
35 : {
36 : /**
37 : * The global default attributes.
38 : */
39 608 : class Global
40 : {
41 : public:
42 : EQSERVER_API static Global* instance();
43 :
44 : /** De-allocate the global instance. */
45 : EQSERVER_API static void clear();
46 :
47 : /** @name Connection (Description) Attributes. */
48 : //@{
49 8 : void setConnectionSAttribute(const ConnectionDescription::SAttribute attr,
50 : const std::string& value)
51 : {
52 8 : _connectionSAttributes[attr] = value;
53 8 : }
54 1924 : const std::string& getConnectionSAttribute(
55 : const ConnectionDescription::SAttribute attr) const
56 : {
57 1924 : return _connectionSAttributes[attr];
58 : }
59 :
60 4 : void setConnectionIAttribute(const ConnectionDescription::IAttribute attr,
61 : const int32_t value)
62 : {
63 4 : _connectionIAttributes[attr] = value;
64 4 : }
65 2886 : int32_t getConnectionIAttribute(
66 : const ConnectionDescription::IAttribute attr) const
67 : {
68 2886 : return _connectionIAttributes[attr];
69 : }
70 : //@}
71 :
72 : /** @name Config Attributes. */
73 : //@{
74 396 : void setConfigFAttribute(const Config::FAttribute attr, const float value)
75 : {
76 396 : _configFAttributes[attr] = value;
77 396 : }
78 1646 : float getConfigFAttribute(const Config::FAttribute attr) const
79 : {
80 1646 : return _configFAttributes[attr];
81 : }
82 :
83 4 : void setConfigIAttribute(const Config::IAttribute attr, const int32_t value)
84 : {
85 4 : _configIAttributes[attr] = value;
86 4 : }
87 2424 : int32_t getConfigIAttribute(const Config::IAttribute attr) const
88 : {
89 2424 : return _configIAttributes[attr];
90 : }
91 : //@}
92 :
93 : /** @name Node Attributes. */
94 : //@{
95 4 : void setNodeSAttribute(const Node::SAttribute attr,
96 : const std::string& value)
97 : {
98 4 : _nodeSAttributes[attr] = value;
99 4 : }
100 1244 : const std::string& getNodeSAttribute(const Node::SAttribute attr) const
101 : {
102 1244 : return _nodeSAttributes[attr];
103 : }
104 :
105 4 : void setNodeCAttribute(const Node::CAttribute attr, const char value)
106 : {
107 4 : _nodeCAttributes[attr] = value;
108 4 : }
109 1244 : char getNodeCAttribute(const Node::CAttribute attr) const
110 : {
111 1244 : return _nodeCAttributes[attr];
112 : }
113 :
114 12 : void setNodeIAttribute(const Node::IAttribute attr, const int32_t value)
115 : {
116 12 : _nodeIAttributes[attr] = value;
117 12 : }
118 3732 : int32_t getNodeIAttribute(const Node::IAttribute attr) const
119 : {
120 3732 : return _nodeIAttributes[attr];
121 : }
122 : //@}
123 :
124 : /** @name Pipe Attributes. */
125 : //@{
126 8 : void setPipeIAttribute(const Pipe::IAttribute attr, const int32_t value)
127 : {
128 8 : _pipeIAttributes[attr] = value;
129 8 : }
130 3460 : int32_t getPipeIAttribute(const Pipe::IAttribute attr) const
131 : {
132 3460 : return _pipeIAttributes[attr];
133 : }
134 : //@}
135 :
136 : /** @name Window Attributes. */
137 : //@{
138 316 : void setWindowIAttribute(const WindowSettings::IAttribute attr,
139 : const int32_t value)
140 : {
141 316 : _windowIAttributes[attr] = value;
142 316 : }
143 47166 : int32_t getWindowIAttribute(const WindowSettings::IAttribute attr) const
144 : {
145 47166 : return _windowIAttributes[attr];
146 : }
147 : //@}
148 :
149 : /** @name Channel Attributes. */
150 : //@{
151 6 : void setChannelIAttribute(const Channel::IAttribute attr,
152 : const int32_t value)
153 : {
154 6 : _channelIAttributes[attr] = value;
155 6 : }
156 11550 : int32_t getChannelIAttribute(const Channel::IAttribute attr) const
157 : {
158 11550 : return _channelIAttributes[attr];
159 : }
160 :
161 4 : void setChannelSAttribute(const Channel::SAttribute attr,
162 : const std::string& value)
163 : {
164 4 : _channelSAttributes[attr] = value;
165 4 : }
166 9900 : const std::string& getChannelSAttribute(
167 : const Channel::SAttribute attr) const
168 : {
169 9900 : return _channelSAttributes[attr];
170 : }
171 : //@}
172 :
173 : /** @name Compound Attributes. */
174 : //@{
175 20 : void setCompoundIAttribute(const Compound::IAttribute attr,
176 : const int32_t value)
177 : {
178 20 : _compoundIAttributes[attr] = value;
179 20 : }
180 74700 : int32_t getCompoundIAttribute(const Compound::IAttribute attr) const
181 : {
182 74700 : return _compoundIAttributes[attr];
183 : }
184 : //@}
185 :
186 : /** @name View Attributes. */
187 : //@{
188 0 : void setViewSAttribute(const View::SAttribute attr,
189 : const std::string& value)
190 : {
191 0 : _viewSAttributes[attr] = value;
192 0 : }
193 4984 : const std::string& getViewSAttribute(const View::SAttribute attr) const
194 : {
195 4984 : return _viewSAttributes[attr];
196 : }
197 : //@}
198 :
199 : private:
200 : Global();
201 :
202 : std::string _connectionSAttributes[ConnectionDescription::SATTR_ALL];
203 : int32_t _connectionIAttributes[ConnectionDescription::IATTR_ALL];
204 :
205 : float _configFAttributes[Config::FATTR_ALL];
206 : int32_t _configIAttributes[Config::IATTR_ALL];
207 :
208 : std::string _nodeSAttributes[Node::SATTR_ALL];
209 : char _nodeCAttributes[Node::CATTR_ALL];
210 : int32_t _nodeIAttributes[Node::IATTR_ALL];
211 :
212 : int32_t _pipeIAttributes[Pipe::IATTR_ALL];
213 :
214 : int32_t _windowIAttributes[WindowSettings::IATTR_ALL];
215 :
216 : int32_t _channelIAttributes[Channel::IATTR_ALL];
217 : std::string _channelSAttributes[Channel::SATTR_ALL];
218 :
219 : int32_t _compoundIAttributes[Compound::IATTR_ALL];
220 :
221 : std::string _viewSAttributes[View::SATTR_ALL];
222 :
223 : struct Private;
224 : Private* _private; // placeholder for binary-compatible changes
225 :
226 : void _setupDefaults();
227 : void _readEnvironment();
228 :
229 : friend EQSERVER_API std::ostream& operator<<(std::ostream&, const Global*);
230 : };
231 :
232 : EQSERVER_API std::ostream& operator<<(std::ostream&, const Global*);
233 : }
234 : }
235 : #endif // EQSERVER_GLOBAL_H
|