Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Query / ResultAssembly / BitVec.cs / 2 / BitVec.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....], [....]
//---------------------------------------------------------------------
namespace System.Data.Query.ResultAssembly {
using System.Diagnostics;
using System.Text;
///
/// BitVector helper class; used to keep track of the used columns
/// in the result assembly.
///
///
/// BitVec can be a struct because it contains a readonly reference to an int[].
/// This code is a copy of System.Collections.BitArray so that we can have an efficient implementation of Minus.
///
internal struct BitVec {
private readonly int[] m_array;
private readonly int m_length;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal BitVec(int length)
{
Debug.Assert(0 < length, "zero length");
m_array = new int[(length + 31) / 32];
m_length = length;
}
internal int Count {
get { return m_length; }
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void Set(int index)
{
Debug.Assert(unchecked((uint)index < (uint)m_length), "index out of range");
m_array[index / 32] |= (1 << (index % 32));
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void ClearAll() {
for (int i = 0; i < m_array.Length; i++) {
m_array[i] = 0;
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal bool IsEmpty() {
for (int i = 0; i < m_array.Length; i++) {
if (0 != m_array[i]) {
return false;
}
}
return true;
}
internal bool IsSet(int index) {
Debug.Assert(unchecked((uint)index < (uint)m_length), "index out of range");
return (m_array[index / 32] & (1 << (index % 32))) != 0;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void Or(BitVec value) {
Debug.Assert(m_length == value.m_length, "unequal sized bitvec");
for (int i = 0; i < m_array.Length; i++) {
m_array[i] |= value.m_array[i];
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void Minus(BitVec value) {
Debug.Assert(m_length == value.m_length, "unequal sized bitvec");
for (int i = 0; i < m_array.Length; i++) {
m_array[i] &= ~value.m_array[i];
}
}
public override string ToString() {
StringBuilder sb = new StringBuilder(3 * Count);
string separator = string.Empty;
for (int i = 0; i < Count; i++) {
if (IsSet(i)) {
sb.Append(separator);
sb.Append(i);
separator = ",";
}
}
return sb.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....], [....]
//---------------------------------------------------------------------
namespace System.Data.Query.ResultAssembly {
using System.Diagnostics;
using System.Text;
///
/// BitVector helper class; used to keep track of the used columns
/// in the result assembly.
///
///
/// BitVec can be a struct because it contains a readonly reference to an int[].
/// This code is a copy of System.Collections.BitArray so that we can have an efficient implementation of Minus.
///
internal struct BitVec {
private readonly int[] m_array;
private readonly int m_length;
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal BitVec(int length)
{
Debug.Assert(0 < length, "zero length");
m_array = new int[(length + 31) / 32];
m_length = length;
}
internal int Count {
get { return m_length; }
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void Set(int index)
{
Debug.Assert(unchecked((uint)index < (uint)m_length), "index out of range");
m_array[index / 32] |= (1 << (index % 32));
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void ClearAll() {
for (int i = 0; i < m_array.Length; i++) {
m_array[i] = 0;
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal bool IsEmpty() {
for (int i = 0; i < m_array.Length; i++) {
if (0 != m_array[i]) {
return false;
}
}
return true;
}
internal bool IsSet(int index) {
Debug.Assert(unchecked((uint)index < (uint)m_length), "index out of range");
return (m_array[index / 32] & (1 << (index % 32))) != 0;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void Or(BitVec value) {
Debug.Assert(m_length == value.m_length, "unequal sized bitvec");
for (int i = 0; i < m_array.Length; i++) {
m_array[i] |= value.m_array[i];
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal void Minus(BitVec value) {
Debug.Assert(m_length == value.m_length, "unequal sized bitvec");
for (int i = 0; i < m_array.Length; i++) {
m_array[i] &= ~value.m_array[i];
}
}
public override string ToString() {
StringBuilder sb = new StringBuilder(3 * Count);
string separator = string.Empty;
for (int i = 0; i < Count; i++) {
if (IsSet(i)) {
sb.Append(separator);
sb.Append(i);
separator = ",";
}
}
return sb.ToString();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ButtonFieldBase.cs
- QilFactory.cs
- TransactionContextManager.cs
- RegisteredArrayDeclaration.cs
- CodeExpressionCollection.cs
- TreeNodeEventArgs.cs
- DesignerTextWriter.cs
- BuildProviderCollection.cs
- XmlDataSourceDesigner.cs
- TextTreeObjectNode.cs
- ObjRef.cs
- ScriptReferenceEventArgs.cs
- ManifestSignatureInformation.cs
- PlatformCulture.cs
- PrintDocument.cs
- ModuleBuilder.cs
- PersonalizableTypeEntry.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- Utils.cs
- AvTraceFormat.cs
- SqlNodeAnnotations.cs
- BitmapEffectInput.cs
- Dictionary.cs
- DbConnectionInternal.cs
- PlatformCulture.cs
- WebHttpEndpointElement.cs
- AppDomainProtocolHandler.cs
- Mouse.cs
- FrameworkContextData.cs
- CngKeyCreationParameters.cs
- ServiceRouteHandler.cs
- FontTypeConverter.cs
- DtdParser.cs
- DLinqTableProvider.cs
- BindableTemplateBuilder.cs
- AddInAttribute.cs
- ProcessModelSection.cs
- NavigationEventArgs.cs
- SBCSCodePageEncoding.cs
- PerformanceCounterPermissionEntry.cs
- Rotation3D.cs
- ScrollChrome.cs
- OperationResponse.cs
- BasePattern.cs
- TemplateManager.cs
- RectIndependentAnimationStorage.cs
- XmlNamespaceManager.cs
- SafeThreadHandle.cs
- ArraySubsetEnumerator.cs
- Constants.cs
- ContextBase.cs
- DbSetClause.cs
- RelationshipEntry.cs
- WebPartVerb.cs
- FunctionGenerator.cs
- MeasurementDCInfo.cs
- Cursor.cs
- HtmlInputRadioButton.cs
- GradientBrush.cs
- ComponentFactoryHelpers.cs
- GeneralTransform3DTo2DTo3D.cs
- CompilationRelaxations.cs
- SByteConverter.cs
- CheckBox.cs
- BindToObject.cs
- NumberFunctions.cs
- XmlBinaryWriterSession.cs
- LockCookie.cs
- IPipelineRuntime.cs
- FormViewRow.cs
- AutomationElement.cs
- CompleteWizardStep.cs
- RegexCaptureCollection.cs
- HttpListenerRequest.cs
- FilterEventArgs.cs
- SQLByte.cs
- HtmlElementEventArgs.cs
- ArrayExtension.cs
- AdapterUtil.cs
- TypeToken.cs
- DataGridViewSortCompareEventArgs.cs
- BaseValidatorDesigner.cs
- ModuleBuilderData.cs
- TdsParserSessionPool.cs
- SafeNativeMethods.cs
- KeyEvent.cs
- UserPreferenceChangingEventArgs.cs
- NumericUpDownAcceleration.cs
- CroppedBitmap.cs
- ColorConvertedBitmapExtension.cs
- LineUtil.cs
- VisualStateGroup.cs
- SoapHelper.cs
- StorageBasedPackageProperties.cs
- SafeNativeMethods.cs
- PageHandlerFactory.cs
- XmlSchemaSubstitutionGroup.cs
- CodeChecksumPragma.cs
- MailAddressCollection.cs
- CellTreeNode.cs