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
- AliasedSlot.cs
- PropertiesTab.cs
- PageSetupDialog.cs
- FormViewInsertedEventArgs.cs
- RuleSettingsCollection.cs
- Journal.cs
- DocumentApplication.cs
- ConsumerConnectionPointCollection.cs
- MailWriter.cs
- Int16AnimationUsingKeyFrames.cs
- ToolStripContentPanelRenderEventArgs.cs
- XmlValueConverter.cs
- BulletDecorator.cs
- ConnectionPointConverter.cs
- AuthorizationRule.cs
- Composition.cs
- WMIInterop.cs
- XmlSchema.cs
- HashAlgorithm.cs
- PreviewKeyDownEventArgs.cs
- CompilationUtil.cs
- RecipientInfo.cs
- DataSourceXmlAttributeAttribute.cs
- SerializerWriterEventHandlers.cs
- TileBrush.cs
- ConditionBrowserDialog.cs
- Tuple.cs
- DrawingAttributeSerializer.cs
- PathFigureCollection.cs
- _CacheStreams.cs
- FileDialog_Vista.cs
- ImageCreator.cs
- PackageRelationship.cs
- Stroke.cs
- ElementFactory.cs
- ControlPropertyNameConverter.cs
- DetailsViewCommandEventArgs.cs
- indexingfiltermarshaler.cs
- ListBoxItem.cs
- TextReader.cs
- WebPartDescription.cs
- Debug.cs
- HttpModuleActionCollection.cs
- IERequestCache.cs
- SchemaLookupTable.cs
- TargetInvocationException.cs
- Point.cs
- ActivityXamlServices.cs
- XmlSerializerVersionAttribute.cs
- CodeMemberMethod.cs
- WindowsRichEditRange.cs
- VisualStyleElement.cs
- SplitterEvent.cs
- CapiHashAlgorithm.cs
- COM2PropertyDescriptor.cs
- Int16.cs
- WebRequestModuleElement.cs
- ConfigXmlComment.cs
- Certificate.cs
- QueryComponents.cs
- XPathParser.cs
- DllHostInitializer.cs
- TemplateNameScope.cs
- DataGridViewControlCollection.cs
- CurrentTimeZone.cs
- TableItemStyle.cs
- WebPartTransformer.cs
- SqlPersonalizationProvider.cs
- MethodImplAttribute.cs
- PeerContact.cs
- Matrix3DConverter.cs
- NetCodeGroup.cs
- TextParaLineResult.cs
- BrowserDefinition.cs
- ResourceCategoryAttribute.cs
- EntityCodeGenerator.cs
- SendActivityValidator.cs
- BindingNavigator.cs
- LazyTextWriterCreator.cs
- filewebrequest.cs
- HtmlButton.cs
- ToolStripDropDownButton.cs
- TcpHostedTransportConfiguration.cs
- TdsParserStateObject.cs
- XPathException.cs
- CompatibleIComparer.cs
- precedingsibling.cs
- SchemaImporterExtensionElement.cs
- MenuBase.cs
- SQLString.cs
- StaticSiteMapProvider.cs
- RuntimeHandles.cs
- TableSectionStyle.cs
- DataRecord.cs
- wgx_render.cs
- ContextDataSourceContextData.cs
- DBDataPermission.cs
- cryptoapiTransform.cs
- GlyphRun.cs
- StringDictionaryWithComparer.cs