00001 00002 /* 00003 TEDDY - General graphics application library 00004 Copyright (C) 1999-2002 Timo Suoranta 00005 tksuoran@cc.helsinki.fi 00006 00007 This library is free software; you can redistribute it and/or 00008 modify it under the terms of the GNU Lesser General Public 00009 License as published by the Free Software Foundation; either 00010 version 2.1 of the License, or (at your option) any later version. 00011 00012 This library is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 Lesser General Public License for more details. 00016 00017 You should have received a copy of the GNU Lesser General Public 00018 License along with this library; if not, write to the Free Software 00019 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 00021 $Id: Options.h,v 1.6 2002/03/12 10:46:06 tksuoran Exp $ 00022 */ 00023 00024 00025 #ifndef TEDDY__MIX_IN__OPTIONS_H 00026 #define TEDDY__MIX_IN__OPTIONS_H 00027 00028 00029 namespace Teddy { 00030 namespace MixIn { 00031 00032 00034 class Options { 00035 public: 00036 Options(); 00037 Options( const unsigned long options ); 00038 virtual ~Options(); 00039 00040 void setOptions ( const unsigned long options ); 00041 unsigned long getOptions () const; 00042 unsigned long operator & ( const Options &other ); 00043 unsigned long operator | ( const Options &other ); 00044 Options &operator &= ( const Options &other ); 00045 Options &operator |= ( const Options &other ); 00046 Options &operator ^= ( const Options &other ); 00047 void enable ( const unsigned long options ); 00048 void disable ( const unsigned long options ); 00049 void toggle ( const unsigned long options ); 00050 bool isEnabled ( const unsigned long options ); 00051 const char *isEnabledStr( const unsigned long options ); 00052 bool isDisabled ( const unsigned long options ); 00053 00054 protected: 00055 unsigned long options; 00056 }; 00057 00058 00059 }; // namespace MixIn 00060 }; // namespace Teddy 00061 00062 00063 #endif // TEDDY__MIX_IN__OPTIONS_H 00064