diff options
Diffstat (limited to 'far2l/src/base/bitflags.hpp')
-rw-r--r-- | far2l/src/base/bitflags.hpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/far2l/src/base/bitflags.hpp b/far2l/src/base/bitflags.hpp new file mode 100644 index 00000000..1a99b757 --- /dev/null +++ b/far2l/src/base/bitflags.hpp @@ -0,0 +1,62 @@ +#pragma once + +/* +bitflags.hpp + +Флаги +*/ +/* +Copyright (c) 1996 Eugene Roshal +Copyright (c) 2000 Far Group +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the authors may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +#include <WinCompat.h> + +class BitFlags +{ + public: + DWORD Flags; + + public: + BitFlags() {Flags=0;} + BitFlags(DWORD Fl) {Flags=Fl;} + + ~BitFlags() {} + + public: + // установить набор флагов + DWORD Set(DWORD NewFlags) { Flags|=NewFlags; return Flags;} + // сбросить набор флагов + DWORD Clear(DWORD NewFlags) { Flags&=~NewFlags; return Flags; } + // проверить набор флагов + BOOL Check(DWORD NewFlags) const { return Flags&NewFlags?TRUE:FALSE; } + // изменить состояние набора флагов в заивисмости от Status + DWORD Change(DWORD NewFlags,BOOL Status) { if (Status) Flags|=NewFlags; else Flags&=~NewFlags; return Flags;} + // инвертировать состояние флагов + DWORD Swap(DWORD SwapedFlags) { if (Flags&SwapedFlags) Flags&=~SwapedFlags; else Flags|=SwapedFlags; return Flags;} + //сбросить все флаги + void ClearAll() {Flags=0;} +}; |