/* * UltraStar Deluxe - Karaoke Game * * UltraStar Deluxe is the legal property of its developers, whose names * are too numerous to list here. Please refer to the COPYRIGHT * file distributed with this source distribution. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */ #ifndef CONTROL_HPP #define CONTROL_HPP #include namespace usdx { /** * Base class for all controls, either the drawable ones as well as the * hidden ones. This class handles a owner slave relation ship and handles * automatic destruction on destruction of the owner, */ class Control { private: /** * Owner of this control. The owner is responsible for destruction. */ Control* owner; protected: /** * All slaves the control owns. All these controls should be deleted * during decontruction of this control. */ std::list slaves; void add_slave(const Control*); void remove_slave(const Control*); public: Control(Control*); virtual ~Control(); /** * Change the current owner of this component. This requires to * unregister this control at the old owner and register it again * withthe new owner. */ void set_owner(Control*); /** * Returns the current owner of this control. */ const Control* get_owner(void) const; }; } #endif