Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / Web / Util / SimpleBitVector32.cs / 1305376 / SimpleBitVector32.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.Util { using System; // // This is a cut down copy of System.Collections.Specialized.BitVector32. The // reason this is here is because it is used rather intensively by Control and // WebControl. As a result, being able to inline this operations results in a // measurable performance gain, at the expense of some maintainability. // [Serializable] internal struct SimpleBitVector32 { private int data; internal SimpleBitVector32(int data) { this.data = data; } internal int IntegerValue { get { return data; } set { data = value; } } internal bool this[int bit] { get { return (data & bit) == bit; } set { int _data = data; if(value) { data = _data | bit; } else { data = _data & ~bit; } } } // Stores and retrieves a positive integer in the bit vector. The "mask" parameter selects the bits // to use in the vector, and the "offset" parameter is the index of the rightmost bit in the // mask. The offset could be calculated from the mask, but is passed in as a separate constant // for improved performance. NOTE: Because the data field is a signed integer, only 31 of the 32 // available bits may be used. // Example: To store a 4-bit integer in bits 4-7, use mask=0x000000F0 and offset=4. internal int this[int mask, int offset] { get { #if DEBUG VerifyMaskAndOffset(mask, offset); #endif return ((data & mask) >> offset); } set { #if DEBUG VerifyMaskAndOffset(mask, offset); #endif Debug.Assert(value >= 0, "Value must be non-negative."); Debug.Assert(((value << offset) & ~mask) == 0, "Value must fit within the mask."); data = (data & ~mask) | (value << offset); } } #if DEBUG private void VerifyMaskAndOffset(int mask, int offset) { Debug.Assert(mask > 0, "Mask must be nonempty and non-negative."); // Offset must be between 0 and 30 inclusive, since only 31 bits are available and at least one bit must be used. Debug.Assert(offset >= 0 && offset <= 30, "Offset must be between 0 and 30 inclusive."); Debug.Assert((mask & ((1 << offset) - 1)) == 0, "All mask bits to the right of the offset index must be zero."); Debug.Assert(((mask >> offset) & 1) == 1, "The mask bit at the offset index must be one."); } #endif internal void Set(int bit) { data |= bit; } internal void Clear(int bit) { data &= ~bit; } } } // 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
- EditCommandColumn.cs
- OpenFileDialog.cs
- AtomMaterializerLog.cs
- MimeMapping.cs
- SpinLock.cs
- RtType.cs
- ConnectionConsumerAttribute.cs
- PublisherMembershipCondition.cs
- ListViewUpdateEventArgs.cs
- WebBaseEventKeyComparer.cs
- SignatureToken.cs
- IIS7WorkerRequest.cs
- ScriptingWebServicesSectionGroup.cs
- DSACryptoServiceProvider.cs
- Point3DAnimationBase.cs
- MessagePropertyVariants.cs
- ListBase.cs
- ProtocolElementCollection.cs
- FilteredReadOnlyMetadataCollection.cs
- RepeatBehaviorConverter.cs
- SafeHandle.cs
- QilPatternVisitor.cs
- HtmlHistory.cs
- CleanUpVirtualizedItemEventArgs.cs
- Sentence.cs
- DataViewSettingCollection.cs
- autovalidator.cs
- SoundPlayerAction.cs
- Merger.cs
- PathSegment.cs
- CheckBoxFlatAdapter.cs
- SqlConnectionPoolProviderInfo.cs
- BulletedList.cs
- CollectionViewGroupInternal.cs
- StateElement.cs
- ACL.cs
- ControllableStoryboardAction.cs
- BamlStream.cs
- StackOverflowException.cs
- MsmqTransportSecurity.cs
- LoaderAllocator.cs
- WindowPatternIdentifiers.cs
- DropDownButton.cs
- TimelineGroup.cs
- TreeNode.cs
- CompositeDesignerAccessibleObject.cs
- CompilerError.cs
- _FtpDataStream.cs
- Compiler.cs
- CornerRadius.cs
- ToolBarTray.cs
- SudsCommon.cs
- MessageLogTraceRecord.cs
- Keywords.cs
- RegexCharClass.cs
- EventRecordWrittenEventArgs.cs
- OdbcUtils.cs
- XPathQilFactory.cs
- Int16.cs
- VisualCollection.cs
- CodeIndexerExpression.cs
- EventHandlerList.cs
- SettingsPropertyValue.cs
- FileNameEditor.cs
- XmlEncodedRawTextWriter.cs
- ColumnReorderedEventArgs.cs
- MailWriter.cs
- HostProtectionPermission.cs
- ListenerSessionConnectionReader.cs
- _SecureChannel.cs
- ContentControl.cs
- MouseButton.cs
- TrackingProfileCache.cs
- XmlNavigatorFilter.cs
- LinkedResourceCollection.cs
- SweepDirectionValidation.cs
- XmlSubtreeReader.cs
- TextServicesHost.cs
- SqlDataSourceQueryConverter.cs
- TreeNodeStyleCollection.cs
- AnnotationHighlightLayer.cs
- ArgIterator.cs
- EncoderNLS.cs
- RowsCopiedEventArgs.cs
- RuleSetDialog.Designer.cs
- Environment.cs
- ThreadLocal.cs
- SortExpressionBuilder.cs
- PrintDialog.cs
- SingleConverter.cs
- QueueException.cs
- PieceNameHelper.cs
- RadioButtonBaseAdapter.cs
- CodeLabeledStatement.cs
- sqlcontext.cs
- PointHitTestParameters.cs
- ManagementScope.cs
- PeerSecurityHelpers.cs
- XslAstAnalyzer.cs
- SimpleRecyclingCache.cs