From a90666180d85b5fe3d69ea12ecece9af725232fc Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Wed, 10 Feb 2016 10:23:13 +0100 Subject: [PATCH] feature #4217: Add missing file --- include/ActionSet.h | 62 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 include/ActionSet.h diff --git a/include/ActionSet.h b/include/ActionSet.h new file mode 100644 index 0000000000..f788f810ad --- /dev/null +++ b/include/ActionSet.h @@ -0,0 +1,62 @@ +/* -------------------------------------------------------------------------- */ +/* Copyright 2002-2015, OpenNebula Project, OpenNebula Systems */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); you may */ +/* not use this file except in compliance with the License. You may obtain */ +/* a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ +/* See the License for the specific language governing permissions and */ +/* limitations under the License. */ +/* -------------------------------------------------------------------------- */ + +#ifndef ACTION_SET_H +#define ACTION_SET_H + +/** + * This class defines actions sets (for example the set of actions supported + * by the driver). Just the basic methods to initialize the set and check if a + * an action is included is provided (similar to FD_SET(3) or SIGSETOPS(3)) + * + * Types should be enums with uint values. + */ +template +class ActionSet +{ +public: + ActionSet():action_set(0){}; + ActionSet(const T * actions, int actions_len):action_set(0) + { + for (int i=0; i(action); + }; + + /** + * Check if action is included in the set + * @param action + * @return true if included + */ + bool is_set(T action) const + { + return (action_set && (1 << static_cast(action))) != 0; + }; + +private: + long long action_set; +}; + +#endif /*ACTION_SET_H*/