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
- DbCommandTree.cs
- SRDisplayNameAttribute.cs
- Renderer.cs
- InlineObject.cs
- xml.cs
- MatrixAnimationUsingPath.cs
- dsa.cs
- XmlSchemaGroupRef.cs
- ValidationSummaryDesigner.cs
- ElementProxy.cs
- rsa.cs
- SpeechRecognizer.cs
- GenericParameterDataContract.cs
- Int32Collection.cs
- TypedColumnHandler.cs
- IgnorePropertiesAttribute.cs
- GroupItemAutomationPeer.cs
- M3DUtil.cs
- ValidatingPropertiesEventArgs.cs
- ObjectDataSourceChooseMethodsPanel.cs
- _WebProxyDataBuilder.cs
- AnnotationResource.cs
- DetailsViewPagerRow.cs
- OpenFileDialog.cs
- UniqueSet.cs
- ListItemCollection.cs
- AssemblyResourceLoader.cs
- QuotedPrintableStream.cs
- BaseAsyncResult.cs
- AutomationPropertyInfo.cs
- SmtpFailedRecipientException.cs
- StructuralType.cs
- BufferModesCollection.cs
- NameValueCollection.cs
- TcpChannelHelper.cs
- DelegateInArgument.cs
- PageEventArgs.cs
- PageParserFilter.cs
- PreservationFileWriter.cs
- EditorZone.cs
- CodeGeneratorOptions.cs
- TabletDeviceInfo.cs
- CroppedBitmap.cs
- coordinator.cs
- PagesSection.cs
- IApplicationTrustManager.cs
- documentsequencetextpointer.cs
- TextDecorationCollectionConverter.cs
- OneOfElement.cs
- CodeObjectCreateExpression.cs
- MDIClient.cs
- MetadataSource.cs
- WorkflowDebuggerSteppingAttribute.cs
- MergePropertyDescriptor.cs
- NamespaceTable.cs
- DoubleAnimationBase.cs
- SimpleFileLog.cs
- ActivityExecutorSurrogate.cs
- XmlSchemaChoice.cs
- DBCommandBuilder.cs
- xmlformatgeneratorstatics.cs
- SqlXml.cs
- FindCriteriaApril2005.cs
- TogglePattern.cs
- _Events.cs
- MarshalDirectiveException.cs
- FastEncoderWindow.cs
- NonVisualControlAttribute.cs
- ContentElementAutomationPeer.cs
- WorkflowInstanceProxy.cs
- IntegrationExceptionEventArgs.cs
- ApplicationTrust.cs
- IOThreadTimer.cs
- Color.cs
- TempEnvironment.cs
- WorkflowServiceHost.cs
- ScrollChangedEventArgs.cs
- TemplatedWizardStep.cs
- TreeViewHitTestInfo.cs
- CompilationUnit.cs
- TableColumn.cs
- ListItemConverter.cs
- DictionaryManager.cs
- ToolboxBitmapAttribute.cs
- RightsManagementEncryptionTransform.cs
- OleDbConnectionFactory.cs
- CodeTypeDelegate.cs
- ToolStripLabel.cs
- UIntPtr.cs
- DependencyPropertyValueSerializer.cs
- ReflectionHelper.cs
- Model3DGroup.cs
- CodeDirectoryCompiler.cs
- ObjectConverter.cs
- StringValidatorAttribute.cs
- MonthCalendar.cs
- BinaryWriter.cs
- RegexFCD.cs
- QueryableDataSourceEditData.cs
- ComplexTypeEmitter.cs