Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/elfmz/far2l.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'far2l/src/base/bitflags.hpp')
-rw-r--r--far2l/src/base/bitflags.hpp62
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;}
+};