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
- LinqDataSourceDisposeEventArgs.cs
- ModulesEntry.cs
- IImplicitResourceProvider.cs
- NullableIntMinMaxAggregationOperator.cs
- errorpatternmatcher.cs
- PipeStream.cs
- ImageClickEventArgs.cs
- Base64Encoding.cs
- CharacterMetricsDictionary.cs
- FunctionMappingTranslator.cs
- DesignerSerializationOptionsAttribute.cs
- ApplicationServicesHostFactory.cs
- WebPartAuthorizationEventArgs.cs
- SpellerError.cs
- BaseCodeDomTreeGenerator.cs
- ProfileServiceManager.cs
- Debug.cs
- SByteConverter.cs
- BinaryParser.cs
- DynamicILGenerator.cs
- GeometryCollection.cs
- SspiWrapper.cs
- WebPartActionVerb.cs
- Decoder.cs
- SymmetricAlgorithm.cs
- wmiprovider.cs
- XamlFigureLengthSerializer.cs
- TextElementAutomationPeer.cs
- ReflectionServiceProvider.cs
- TraceLog.cs
- GroupQuery.cs
- OdbcHandle.cs
- SoapCodeExporter.cs
- DataSourceListEditor.cs
- MessageQueueException.cs
- XmlSerializerFactory.cs
- SignatureResourcePool.cs
- FormsAuthenticationEventArgs.cs
- FixedBufferAttribute.cs
- CollectionBase.cs
- TextTreeTextElementNode.cs
- ElementsClipboardData.cs
- AvTraceDetails.cs
- SplitContainer.cs
- DataGridCaption.cs
- Module.cs
- ToolboxItemFilterAttribute.cs
- ObjectListGeneralPage.cs
- UnmanagedMarshal.cs
- DesignBindingPropertyDescriptor.cs
- DetailsViewPageEventArgs.cs
- EntityStoreSchemaGenerator.cs
- EncoderBestFitFallback.cs
- ConfigurationPermission.cs
- TrustManagerPromptUI.cs
- TextSpanModifier.cs
- CssStyleCollection.cs
- DBConnectionString.cs
- NamedServiceModelExtensionCollectionElement.cs
- ObjectConverter.cs
- DataControlButton.cs
- NumberEdit.cs
- DataGridViewRowCollection.cs
- AliasExpr.cs
- SmiMetaData.cs
- DebuggerAttributes.cs
- ParsedAttributeCollection.cs
- NetworkAddressChange.cs
- TabControl.cs
- OLEDB_Util.cs
- Error.cs
- CreatingCookieEventArgs.cs
- AsmxEndpointPickerExtension.cs
- ContextMenu.cs
- OracleInfoMessageEventArgs.cs
- HtmlInputPassword.cs
- AssemblyResourceLoader.cs
- AssemblyBuilder.cs
- PerfCounters.cs
- TableSectionStyle.cs
- XPathNavigatorKeyComparer.cs
- BridgeDataReader.cs
- Pair.cs
- TransformationRules.cs
- TraceContextEventArgs.cs
- ManifestResourceInfo.cs
- BadImageFormatException.cs
- TextTreeInsertUndoUnit.cs
- StylusDevice.cs
- TrustSection.cs
- SafeLocalMemHandle.cs
- WindowsSolidBrush.cs
- DrawListViewSubItemEventArgs.cs
- Timeline.cs
- EntityViewGenerationAttribute.cs
- NullableIntSumAggregationOperator.cs
- TextProperties.cs
- JapaneseLunisolarCalendar.cs
- ColorConvertedBitmap.cs
- SQLChars.cs