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
- RadioButton.cs
- FirstMatchCodeGroup.cs
- AddressUtility.cs
- TemplatedWizardStep.cs
- SingleKeyFrameCollection.cs
- RequestCachingSection.cs
- DocumentViewerBaseAutomationPeer.cs
- SqlUnionizer.cs
- TimelineCollection.cs
- DesignRelationCollection.cs
- UriTemplateVariablePathSegment.cs
- TextBounds.cs
- SmtpNtlmAuthenticationModule.cs
- CodeIterationStatement.cs
- Events.cs
- SqlExpander.cs
- ParenthesizePropertyNameAttribute.cs
- EntitySetBaseCollection.cs
- NetworkInformationException.cs
- WebConfigurationHost.cs
- PartialCachingControl.cs
- ValidationResult.cs
- LabelDesigner.cs
- MimeMultiPart.cs
- Binding.cs
- AmbiguousMatchException.cs
- GeometryDrawing.cs
- DataGridViewCellCollection.cs
- ActiveXSite.cs
- ThreadPool.cs
- WSSecurityPolicy12.cs
- UrlAuthorizationModule.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- RightNameExpirationInfoPair.cs
- XmlCharCheckingWriter.cs
- ShapingEngine.cs
- ResourceDictionary.cs
- SystemNetworkInterface.cs
- SmtpFailedRecipientException.cs
- XsdCachingReader.cs
- Viewport2DVisual3D.cs
- ResourcePermissionBase.cs
- PropertyDescriptors.cs
- HtmlHistory.cs
- TextWriterTraceListener.cs
- RegexCompilationInfo.cs
- ParsedAttributeCollection.cs
- ToolboxItemFilterAttribute.cs
- ReceiveContext.cs
- PanelStyle.cs
- Brush.cs
- StringHandle.cs
- ColumnMapTranslator.cs
- RichTextBoxConstants.cs
- VariableDesigner.xaml.cs
- BoundingRectTracker.cs
- LineServicesRun.cs
- ParameterExpression.cs
- CompilerScopeManager.cs
- odbcmetadatacolumnnames.cs
- SqlVisitor.cs
- WpfXamlMember.cs
- CreateUserErrorEventArgs.cs
- DataPointer.cs
- ClientData.cs
- StylusPointProperties.cs
- Package.cs
- Size.cs
- InitializerFacet.cs
- DebugView.cs
- SecurityUtils.cs
- ClientTargetSection.cs
- WorkflowInvoker.cs
- VariableQuery.cs
- FactoryMaker.cs
- CallSiteOps.cs
- GenericEnumConverter.cs
- XmlQueryStaticData.cs
- ElapsedEventArgs.cs
- COM2ComponentEditor.cs
- Point.cs
- PartitionResolver.cs
- ExternalFile.cs
- DiscoveryClientBindingElement.cs
- RowToParametersTransformer.cs
- UserControlBuildProvider.cs
- ProxyHelper.cs
- SqlDataRecord.cs
- XmlChoiceIdentifierAttribute.cs
- ElementNotEnabledException.cs
- HttpCacheParams.cs
- ObjectCloneHelper.cs
- DesignerListAdapter.cs
- ServerValidateEventArgs.cs
- DbExpressionRules.cs
- WebPermission.cs
- PageCatalogPart.cs
- FormViewModeEventArgs.cs
- nulltextcontainer.cs
- GeneralTransformGroup.cs