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
- PointLight.cs
- TextEffect.cs
- MultiPageTextView.cs
- PropagationProtocolsTracing.cs
- MergeFilterQuery.cs
- Psha1DerivedKeyGeneratorHelper.cs
- SinglePageViewer.cs
- wgx_render.cs
- ListViewDeletedEventArgs.cs
- Message.cs
- DataBinder.cs
- NonVisualControlAttribute.cs
- XmlSchemaProviderAttribute.cs
- BamlCollectionHolder.cs
- XamlInterfaces.cs
- SchemaImporterExtension.cs
- Normalization.cs
- ParameterCollectionEditor.cs
- Relationship.cs
- MasterPageCodeDomTreeGenerator.cs
- HashAlgorithm.cs
- XmlBoundElement.cs
- XmlSchemaSubstitutionGroup.cs
- DoubleConverter.cs
- FontConverter.cs
- TextBoxAutoCompleteSourceConverter.cs
- EUCJPEncoding.cs
- ProvideValueServiceProvider.cs
- FastEncoderWindow.cs
- TCPClient.cs
- RenameRuleObjectDialog.cs
- SaveLedgerEntryRequest.cs
- Pair.cs
- DataObjectFieldAttribute.cs
- TableLayoutRowStyleCollection.cs
- WebServiceResponseDesigner.cs
- DynamicRenderer.cs
- CacheDependency.cs
- FontUnit.cs
- DeferredTextReference.cs
- XmlCharacterData.cs
- XmlEncApr2001.cs
- XmlRawWriterWrapper.cs
- MimeXmlImporter.cs
- Point.cs
- TextServicesCompartmentEventSink.cs
- PeerName.cs
- SmiContextFactory.cs
- Form.cs
- TimeManager.cs
- ExceptionValidationRule.cs
- Size.cs
- WebPartConnectionsEventArgs.cs
- WebPartDescription.cs
- NativeMethods.cs
- TypefaceMap.cs
- BitArray.cs
- EntityTypeEmitter.cs
- MetadataPropertyvalue.cs
- JoinTreeSlot.cs
- FormsAuthentication.cs
- PolyQuadraticBezierSegment.cs
- XmlSchemaSimpleContent.cs
- KernelTypeValidation.cs
- OutputCacheModule.cs
- InputScopeManager.cs
- EdmToObjectNamespaceMap.cs
- TouchEventArgs.cs
- OleDbPropertySetGuid.cs
- xml.cs
- DbConnectionStringBuilder.cs
- TdsValueSetter.cs
- SectionInformation.cs
- HttpPostedFileWrapper.cs
- ReverseComparer.cs
- ProbeDuplexAsyncResult.cs
- DatatypeImplementation.cs
- HostingPreferredMapPath.cs
- XXXInfos.cs
- RenderingBiasValidation.cs
- OdbcEnvironmentHandle.cs
- storepermission.cs
- ScriptingAuthenticationServiceSection.cs
- SelectionUIHandler.cs
- HostedNamedPipeTransportManager.cs
- FileVersion.cs
- CollectionDataContract.cs
- UnsignedPublishLicense.cs
- __Filters.cs
- XmlSchemaSimpleContentExtension.cs
- BitmapEffectInput.cs
- Nullable.cs
- JsonSerializer.cs
- LockingPersistenceProvider.cs
- MenuEventArgs.cs
- DiscreteKeyFrames.cs
- _AutoWebProxyScriptEngine.cs
- CLSCompliantAttribute.cs
- SqlDeflator.cs
- processwaithandle.cs