00001 // BitFlags.h -- Interface to an object storing bit flags. 00002 00003 /* 00004 * Copyright (C) 2004 Tudor Hulubei <tudor@hulubei.net>. 00005 * 00006 * This library is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU Lesser General Public License as 00008 * published by the Free Software Foundation; either version 2, or (at 00009 * your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 00019 * 02111-1307, USA. 00020 */ 00021 00022 /* 00023 * NOTE: This is an interal header file. 00024 * You should not attempt to use it directly. 00025 */ 00026 00027 // $Id: BitFlags_8h-source.html,v 1.1 2005/05/25 12:37:18 tudor Exp $ 00028 00029 #ifndef _CSP_KERNEL_BitFlags_H 00030 #define _CSP_KERNEL_BitFlags_H 00031 00032 00033 CSP_NAMESPACE_BEGIN(csp); 00034 00035 00039 class CSP_API BitFlags 00040 { 00041 public: 00042 typedef unsigned int Flags; 00043 00045 BitFlags() { m_flags = 0; } 00046 00052 BitFlags(const Flags flags) { set(flags); } 00053 00060 inline void set(const Flags flags) { m_flags = flags; } 00061 00067 inline Flags get() const { return m_flags; } 00068 00075 inline bool all(const Flags flags) const 00076 { 00077 return (m_flags & flags) == flags; 00078 } 00079 00086 inline bool any(const Flags flags) const 00087 { 00088 return (m_flags & flags) != 0; 00089 } 00090 00091 private: 00093 Flags m_flags; 00094 }; 00095 00096 00097 CSP_NAMESPACE_END(csp); 00098 00099 00100 #endif // _CSP_KERNEL_BitFlags_H 00101 00102 // Local Variables: 00103 // mode: C++ 00104 // End:
1.3.9.1