Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / xsp / System / Web / Util / SafeBitVector32.cs / 1 / SafeBitVector32.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Threading;
namespace System.Web.Util {
//
// This is a multithreadsafe version of System.Collections.Specialized.BitVector32.
//
[Serializable]
internal struct SafeBitVector32 {
private volatile int _data;
internal SafeBitVector32(int data) {
this._data = data;
}
#if UNUSED_CODE
internal int IntegerValue {
get { return _data; }
set {
#pragma warning disable 0420
Interlocked.Exchange(ref _data, value);
#pragma warning restore 0420
}
}
#endif
internal bool this[int bit] {
get {
int data = _data;
return (data & bit) == bit;
}
set {
for (;;) {
int oldData = _data;
int newData;
if (value) {
newData = oldData | bit;
}
else {
newData = oldData & ~bit;
}
#pragma warning disable 0420
int result = Interlocked.CompareExchange(ref _data, newData, oldData);
#pragma warning restore 0420
if (result == oldData) {
break;
}
}
}
}
internal bool ChangeValue(int bit, bool value) {
for (;;) {
int oldData = _data;
int newData;
if (value) {
newData = oldData | bit;
}
else {
newData = oldData & ~bit;
}
if (oldData == newData) {
return false;
}
#pragma warning disable 0420
int result = Interlocked.CompareExchange(ref _data, newData, oldData);
#pragma warning restore 0420
if (result == oldData) {
return true;
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
using System;
using System.Threading;
namespace System.Web.Util {
//
// This is a multithreadsafe version of System.Collections.Specialized.BitVector32.
//
[Serializable]
internal struct SafeBitVector32 {
private volatile int _data;
internal SafeBitVector32(int data) {
this._data = data;
}
#if UNUSED_CODE
internal int IntegerValue {
get { return _data; }
set {
#pragma warning disable 0420
Interlocked.Exchange(ref _data, value);
#pragma warning restore 0420
}
}
#endif
internal bool this[int bit] {
get {
int data = _data;
return (data & bit) == bit;
}
set {
for (;;) {
int oldData = _data;
int newData;
if (value) {
newData = oldData | bit;
}
else {
newData = oldData & ~bit;
}
#pragma warning disable 0420
int result = Interlocked.CompareExchange(ref _data, newData, oldData);
#pragma warning restore 0420
if (result == oldData) {
break;
}
}
}
}
internal bool ChangeValue(int bit, bool value) {
for (;;) {
int oldData = _data;
int newData;
if (value) {
newData = oldData | bit;
}
else {
newData = oldData & ~bit;
}
if (oldData == newData) {
return false;
}
#pragma warning disable 0420
int result = Interlocked.CompareExchange(ref _data, newData, oldData);
#pragma warning restore 0420
if (result == oldData) {
return true;
}
}
}
}
}
// 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
- BindingsCollection.cs
- DataBoundLiteralControl.cs
- UnaryNode.cs
- RegistrationServices.cs
- CellNormalizer.cs
- Enlistment.cs
- BaseUriHelper.cs
- WebPartDisplayModeCollection.cs
- QilScopedVisitor.cs
- TypeConstant.cs
- DataAccessor.cs
- ContextStack.cs
- RoleServiceManager.cs
- ScrollChrome.cs
- EventLogTraceListener.cs
- ProcessHost.cs
- RequiredFieldValidator.cs
- StringHandle.cs
- ConnectionPointCookie.cs
- RightNameExpirationInfoPair.cs
- Executor.cs
- SqlFacetAttribute.cs
- CodeGenerator.cs
- GeneralTransform3DGroup.cs
- MaterialGroup.cs
- Help.cs
- Point3DCollectionValueSerializer.cs
- SQLInt64Storage.cs
- InfoCardRSACryptoProvider.cs
- SqlParameter.cs
- SplitterDesigner.cs
- CalendarDay.cs
- XPathQilFactory.cs
- Hashtable.cs
- LineServicesCallbacks.cs
- CheckoutException.cs
- ItemCollection.cs
- TokenFactoryCredential.cs
- RawStylusInputCustomData.cs
- WpfXamlType.cs
- LeafCellTreeNode.cs
- PeerCredential.cs
- sqlcontext.cs
- ImageMap.cs
- X509Certificate2Collection.cs
- SiteIdentityPermission.cs
- SrgsElementList.cs
- DelegateBodyWriter.cs
- ClockGroup.cs
- HtmlButton.cs
- HttpRuntimeSection.cs
- PartialCachingAttribute.cs
- DataColumnPropertyDescriptor.cs
- CodeObjectCreateExpression.cs
- ValueChangedEventManager.cs
- NamespaceEmitter.cs
- AssemblyAttributesGoHere.cs
- Restrictions.cs
- DurableOperationAttribute.cs
- InteropBitmapSource.cs
- wgx_render.cs
- OleDbRowUpdatedEvent.cs
- OdbcConnectionStringbuilder.cs
- ExceptionHandlersDesigner.cs
- FrameAutomationPeer.cs
- TreeNodeSelectionProcessor.cs
- DocumentPageHost.cs
- SqlFacetAttribute.cs
- Faults.cs
- ListViewCancelEventArgs.cs
- WindowsIdentity.cs
- HttpClientCertificate.cs
- CodeAttributeDeclaration.cs
- SafeNativeMethodsMilCoreApi.cs
- SqlClientMetaDataCollectionNames.cs
- WrapPanel.cs
- CultureTableRecord.cs
- RelationshipWrapper.cs
- MetadataCache.cs
- MaskedTextBoxTextEditor.cs
- ExpressionConverter.cs
- MarkupExtensionParser.cs
- FloaterBaseParagraph.cs
- Attributes.cs
- BStrWrapper.cs
- WebControl.cs
- ColorComboBox.cs
- ParentUndoUnit.cs
- DataRow.cs
- ResourcesGenerator.cs
- BufferManager.cs
- TemplateColumn.cs
- ToolStripLabel.cs
- EncodingDataItem.cs
- MailDefinition.cs
- FixedPage.cs
- ClientTargetCollection.cs
- BitmapEffect.cs
- SubpageParagraph.cs
- TrackingLocation.cs