Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Query / ResultAssembly / BitVec.cs / 3 / 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
- UnicodeEncoding.cs
- TabItemAutomationPeer.cs
- Composition.cs
- XmlHelper.cs
- SqlParameterizer.cs
- AutomationPatternInfo.cs
- CannotUnloadAppDomainException.cs
- CacheChildrenQuery.cs
- TableItemPatternIdentifiers.cs
- peersecurityelement.cs
- HtmlShimManager.cs
- ProfileGroupSettingsCollection.cs
- MemberCollection.cs
- MenuScrollingVisibilityConverter.cs
- EmptyStringExpandableObjectConverter.cs
- COM2DataTypeToManagedDataTypeConverter.cs
- FormViewInsertedEventArgs.cs
- TextUtf8RawTextWriter.cs
- XmlSchemaSimpleContentRestriction.cs
- EndpointDiscoveryMetadata.cs
- EventLogQuery.cs
- ITextView.cs
- GifBitmapEncoder.cs
- ClassHandlersStore.cs
- CodeDOMUtility.cs
- JpegBitmapEncoder.cs
- LayoutEditorPart.cs
- BuilderPropertyEntry.cs
- BinHexEncoder.cs
- MsmqEncryptionAlgorithm.cs
- BuilderInfo.cs
- BinaryParser.cs
- GeneralTransform3DGroup.cs
- RotateTransform.cs
- CompiledQueryCacheEntry.cs
- WebPartTransformerCollection.cs
- RowToFieldTransformer.cs
- FileDialog.cs
- QilGeneratorEnv.cs
- OrCondition.cs
- SQLBinary.cs
- HttpPostedFile.cs
- TraceListeners.cs
- ApplicationBuildProvider.cs
- TraceUtils.cs
- DirtyTextRange.cs
- HttpDebugHandler.cs
- NetworkInformationPermission.cs
- DataGridItemEventArgs.cs
- SimpleType.cs
- File.cs
- RandomNumberGenerator.cs
- ImageFormatConverter.cs
- EventHandlers.cs
- TextContainerHelper.cs
- OdbcRowUpdatingEvent.cs
- ToolStripComboBox.cs
- CodeNamespaceCollection.cs
- ComNativeDescriptor.cs
- MobileControlsSectionHelper.cs
- BufferedGraphicsContext.cs
- TrackBar.cs
- CalendarTable.cs
- BitmapEffectGroup.cs
- entityreference_tresulttype.cs
- HeaderLabel.cs
- HttpModulesSection.cs
- Calendar.cs
- LayoutExceptionEventArgs.cs
- MenuItemBindingCollection.cs
- DataGridViewSelectedColumnCollection.cs
- ResourceContainer.cs
- SimpleWebHandlerParser.cs
- Imaging.cs
- EmulateRecognizeCompletedEventArgs.cs
- Helpers.cs
- CharAnimationUsingKeyFrames.cs
- LoginUtil.cs
- ArraySubsetEnumerator.cs
- ColorTranslator.cs
- TextRangeProviderWrapper.cs
- DirtyTextRange.cs
- BamlMapTable.cs
- SessionEndedEventArgs.cs
- ListControl.cs
- JumpList.cs
- FormViewRow.cs
- AnonymousIdentificationModule.cs
- ManifestResourceInfo.cs
- GregorianCalendarHelper.cs
- RepeaterItem.cs
- CheckBoxField.cs
- TiffBitmapEncoder.cs
- PhonemeConverter.cs
- ProfessionalColors.cs
- XPathAncestorIterator.cs
- CompositeActivityTypeDescriptor.cs
- TemplateInstanceAttribute.cs
- XmlSchemaGroupRef.cs
- DataGridViewCell.cs