www.pudn.com > Tustena_CRM_OS_3.0.2_Stable.zip > Bit.cs
///TUSTENA PUBLIC LICENSE v1.0 ////// Portions Copyright (c) 2003-2005 Digita S.r.l. All Rights Reserved. /// /// Tustena CRM is a trademark of: /// Digita S.r.l. /// Viale Enrico Fermi 14/z /// 31011 Asolo (Italy) /// Tel. +39-0423-951251 /// Mail. info@digita.it /// /// This file contains Original Code and/or Modifications of Original Code /// as defined in and that are subject to the Tustena Public Source License /// Version 1.0 (the 'License'). You may not use this file except in /// compliance with the License. Please obtain a copy of the License at /// http://www.tustena.com/TPL/ and read it before using this // file. /// /// The Original Code and all software distributed under the License are /// distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER /// EXPRESS OR IMPLIED, AND DIGITA S.R.L. HEREBY DISCLAIMS ALL SUCH WARRANTIES, /// INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, /// FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. /// Please see the License for the specific language governing rights and /// limitations under the License. /// /// YOU MAY NOT REMOVE OR ALTER THIS COPYRIGHT NOTICE! /// using System; namespace Digita.Tustena { public class Bit { private long[] B = new long[64]; private long[] C = new long[64]; private long[] N = new long[64]; public Bit() { byte k; B[0] = 1; C[0] = ~B[0]; for(k=1;k<64;k++) { B[k] = B[k-1]<<1; C[k] = ~B[k]; } for(k=0;k<64;k++) { N[k] = 0; } } public void BitOn(ref byte byteContainer, byte bitNumber) { byteContainer = (byte)(byteContainer | B[bitNumber]); } public void BitOn(ref int intContainer, byte bitNumber) { intContainer = Convert.ToInt32(intContainer | B[bitNumber]); } public void BitOn(ref long longContainer, byte bitNumber) { longContainer = longContainer | B[bitNumber]; } public void BitOff(ref byte byteContainer, byte bitNumber) { byteContainer = (byte)(byteContainer & C[bitNumber]); } public void BitOff(ref int uIntContainer, byte bitNumber) { uIntContainer = (int)(uIntContainer & C[bitNumber]); } public void BitOff(ref long longContainer, byte bitNumber) { longContainer = longContainer & C[bitNumber]; } public bool isBitOn(ref byte byteContainer, byte bitNumber) { long mask = 0; BitOn(ref mask,bitNumber); return((mask & byteContainer)>0)?true:false; } public bool isBitOn(ref int uIntContainer, byte bitNumber) { long mask = 0; BitOn(ref mask,bitNumber); return((mask & uIntContainer)>0)?true:false; } public bool isBitOn(ref long longContainer, byte bitNumber) { long mask = 0; BitOn(ref mask,bitNumber); return((mask & longContainer)>0)?true:false; } } }