Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / Runtime / Serialization / BitFlagsGenerator.cs / 1 / BitFlagsGenerator.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Runtime.Serialization { using System; using System.Reflection; using System.Reflection.Emit; using System.Security; //// Critical - works on CodeGenerator objects, which require Critical access // [SecurityRequiresReview(SecurityCriticalScope.Everything)] class BitFlagsGenerator { int bitCount; CodeGenerator ilg; LocalBuilder[] locals; public BitFlagsGenerator(int bitCount, CodeGenerator ilg, string localName) { this.ilg = ilg; this.bitCount = bitCount; int localCount = (bitCount + 7) / 8; locals = new LocalBuilder[localCount]; for (int i = 0; i < locals.Length; i++) { locals[i] = ilg.DeclareLocal(typeof(byte), localName + i, (byte) 0); } } public static bool IsBitSet(byte[] bytes, int bitIndex) { int byteIndex = GetByteIndex(bitIndex); byte bitValue = GetBitValue(bitIndex); return (bytes[byteIndex] & bitValue) == bitValue; } public static void SetBit(byte[] bytes, int bitIndex) { int byteIndex = GetByteIndex(bitIndex); byte bitValue = GetBitValue(bitIndex); bytes[byteIndex] |= bitValue; } public int GetBitCount() { return bitCount; } public LocalBuilder GetLocal(int i) { return locals[i]; } public int GetLocalCount() { return locals.Length; } public void Load(int bitIndex) { LocalBuilder local = locals[GetByteIndex(bitIndex)]; byte bitValue = GetBitValue(bitIndex); ilg.Load(local); ilg.Load(bitValue); ilg.And(); ilg.Load(bitValue); ilg.Ceq(); } public void LoadArray() { LocalBuilder localArray = ilg.DeclareLocal(Globals.TypeOfByteArray, "localArray"); ilg.NewArray(typeof(byte), locals.Length); ilg.Store(localArray); for (int i = 0; i < locals.Length; i++) { ilg.StoreArrayElement(localArray, i, locals[i]); } ilg.Load(localArray); } public void Store(int bitIndex, bool value) { LocalBuilder local = locals[GetByteIndex(bitIndex)]; byte bitValue = GetBitValue(bitIndex); if (value) { ilg.Load(local); ilg.Load(bitValue); ilg.Or(); ilg.Stloc(local); } else { ilg.Load(local); ilg.Load(bitValue); ilg.Not(); ilg.And(); ilg.Stloc(local); } } static byte GetBitValue(int bitIndex) { return (byte)(1 << (bitIndex & 7)); } static int GetByteIndex(int bitIndex) { return bitIndex >> 3; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CacheAxisQuery.cs
- fixedPageContentExtractor.cs
- XPathSingletonIterator.cs
- TileBrush.cs
- MatcherBuilder.cs
- StringArrayConverter.cs
- TabControlAutomationPeer.cs
- XamlSerializationHelper.cs
- ToolBarPanel.cs
- SafeArchiveContext.cs
- RectangleF.cs
- MessageSmuggler.cs
- ActivationArguments.cs
- BitmapEffectInputData.cs
- SerializationEventsCache.cs
- HtmlControl.cs
- IODescriptionAttribute.cs
- RequestDescription.cs
- Int64Converter.cs
- XmlReader.cs
- AppDomainResourcePerfCounters.cs
- PopOutPanel.cs
- OleDbFactory.cs
- AnnotationHighlightLayer.cs
- WriteFileContext.cs
- PathGeometry.cs
- UIElementParaClient.cs
- MembershipSection.cs
- StyleModeStack.cs
- wgx_exports.cs
- AliasGenerator.cs
- PerformanceCounterLib.cs
- _FixedSizeReader.cs
- SkinBuilder.cs
- CodeMemberProperty.cs
- ReadOnlyObservableCollection.cs
- SecureEnvironment.cs
- ContainerFilterService.cs
- SerializationInfoEnumerator.cs
- AuthStoreRoleProvider.cs
- ButtonColumn.cs
- EncoderExceptionFallback.cs
- ToolboxBitmapAttribute.cs
- PolyBezierSegment.cs
- Util.cs
- CompositeCollection.cs
- StrokeIntersection.cs
- ExtendedPropertyCollection.cs
- SqlNodeTypeOperators.cs
- DbBuffer.cs
- CriticalHandle.cs
- LinearGradientBrush.cs
- DataGridHyperlinkColumn.cs
- GetPageCompletedEventArgs.cs
- CompilerResults.cs
- WebAdminConfigurationHelper.cs
- Normalizer.cs
- FrameworkElement.cs
- LiteralControl.cs
- XmlNodeChangedEventArgs.cs
- QuaternionAnimationBase.cs
- NetworkStream.cs
- XmlTextReaderImplHelpers.cs
- DataGridViewBindingCompleteEventArgs.cs
- GeneralTransform2DTo3D.cs
- HttpHostedTransportConfiguration.cs
- CommonDialog.cs
- ToolBarButtonDesigner.cs
- DesignColumn.cs
- EqualityComparer.cs
- ExceptionWrapper.cs
- DateTimeOffsetAdapter.cs
- WaitHandleCannotBeOpenedException.cs
- Int32Storage.cs
- figurelengthconverter.cs
- ConsoleKeyInfo.cs
- PrintSystemException.cs
- XmlQueryTypeFactory.cs
- XmlSchemaObject.cs
- Component.cs
- SelectorAutomationPeer.cs
- ChooseAction.cs
- HandlerFactoryWrapper.cs
- mediaeventshelper.cs
- DefaultAssemblyResolver.cs
- DCSafeHandle.cs
- DoubleKeyFrameCollection.cs
- XmlSignatureManifest.cs
- CompilationRelaxations.cs
- SystemIPGlobalStatistics.cs
- GridViewRowCollection.cs
- TypeSemantics.cs
- DefaultMemberAttribute.cs
- DataServiceException.cs
- JoinGraph.cs
- Exceptions.cs
- BasicExpressionVisitor.cs
- RawAppCommandInputReport.cs
- SerializationInfoEnumerator.cs
- XmlObjectSerializerWriteContextComplexJson.cs