| 241 | * to the group twice. |
| 242 | */ |
| 243 | class ClientGroup |
| 244 | { |
| 245 | std::vector<size_t> clients_; // clients in this group |
| 246 | |
| 247 | public: |
| 248 | bool const required; // is visiting the group required? |
| 249 | bool const mutuallyExclusive = true; // at most one visit in group? |
| 250 | char const *name; // Group name (for reference) |
| 251 | |
| 252 | explicit ClientGroup(std::vector<size_t> clients = {}, |
| 253 | bool required = true, |
| 254 | std::string name = ""); |
| 255 | |
| 256 | bool operator==(ClientGroup const &other) const; |
| 257 | |
| 258 | ClientGroup(ClientGroup const &group); |
| 259 | ClientGroup(ClientGroup &&group); |
| 260 | |
| 261 | ClientGroup &operator=(ClientGroup const &group) = delete; |
| 262 | ClientGroup &operator=(ClientGroup &&group) = delete; |
| 263 | |
| 264 | ~ClientGroup(); |
| 265 | |
| 266 | bool empty() const; |
| 267 | size_t size() const; |
| 268 | |
| 269 | std::vector<size_t>::const_iterator begin() const; |
| 270 | std::vector<size_t>::const_iterator end() const; |
| 271 | |
| 272 | std::vector<size_t> const &clients() const; |
| 273 | |
| 274 | void addClient(size_t client); |
| 275 | void clear(); |
| 276 | }; |
| 277 | |
| 278 | /** |
| 279 | * Depot( |
no outgoing calls