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
- FreezableDefaultValueFactory.cs
- AssemblyHelper.cs
- ThemeableAttribute.cs
- StickyNoteHelper.cs
- DESCryptoServiceProvider.cs
- RMEnrollmentPage2.cs
- ADConnectionHelper.cs
- NumericPagerField.cs
- MethodCallTranslator.cs
- DbProviderConfigurationHandler.cs
- WindowsFormsDesignerOptionService.cs
- HTMLTagNameToTypeMapper.cs
- SubstitutionList.cs
- PreApplicationStartMethodAttribute.cs
- CodeBlockBuilder.cs
- FreeFormPanel.cs
- DataListComponentEditor.cs
- ReadOnlyHierarchicalDataSource.cs
- ProfileInfo.cs
- DataGridViewColumnCollectionDialog.cs
- TypeInitializationException.cs
- HttpSocketManager.cs
- KeyTime.cs
- Expressions.cs
- DataGridViewRowPostPaintEventArgs.cs
- Convert.cs
- EntryIndex.cs
- VirtualPath.cs
- PersonalizationStateInfo.cs
- WizardStepCollectionEditor.cs
- StagingAreaInputItem.cs
- SharedPersonalizationStateInfo.cs
- ToolStripTemplateNode.cs
- MarshalByRefObject.cs
- FileStream.cs
- ConstrainedDataObject.cs
- QueueTransferProtocol.cs
- InstanceView.cs
- Set.cs
- ClientProtocol.cs
- DataBoundControl.cs
- IncrementalCompileAnalyzer.cs
- CodeMethodReturnStatement.cs
- PlatformNotSupportedException.cs
- ElementsClipboardData.cs
- WindowsUpDown.cs
- GridViewRowEventArgs.cs
- XmlTextReaderImpl.cs
- Binding.cs
- WebPartEventArgs.cs
- querybuilder.cs
- BuildProvider.cs
- SiteMapDataSource.cs
- ApplicationHost.cs
- SortExpressionBuilder.cs
- EntitySetBase.cs
- querybuilder.cs
- SolidColorBrush.cs
- ListBase.cs
- WriteableOnDemandPackagePart.cs
- EditorZoneBase.cs
- PopOutPanel.cs
- Soap.cs
- XamlBrushSerializer.cs
- WebPartDisplayModeEventArgs.cs
- X509ChainElement.cs
- HttpStreamMessage.cs
- VirtualizedContainerService.cs
- CodeAttributeArgument.cs
- DataGridColumnCollection.cs
- ListView.cs
- TargetParameterCountException.cs
- PersonalizationState.cs
- PeerObject.cs
- MultiSelector.cs
- ImageIndexEditor.cs
- Popup.cs
- DrawingBrush.cs
- Message.cs
- AutoFocusStyle.xaml.cs
- CheckPair.cs
- FileAuthorizationModule.cs
- RenderData.cs
- KeyPressEvent.cs
- ApplicationInterop.cs
- ContextMarshalException.cs
- DataTableMapping.cs
- SqlMethodTransformer.cs
- ListDataBindEventArgs.cs
- AutomationProperties.cs
- WebPartDisplayMode.cs
- Message.cs
- XmlLanguageConverter.cs
- InlineCollection.cs
- RoleService.cs
- NetworkInformationPermission.cs
- LongValidatorAttribute.cs
- MetadataLocation.cs
- FormCollection.cs
- EventDescriptor.cs