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
- SqlReorderer.cs
- baseshape.cs
- DateTimeFormatInfoScanner.cs
- MdImport.cs
- HtmlTitle.cs
- InfoCardClaimCollection.cs
- DependencyPropertyKind.cs
- XmlRootAttribute.cs
- RequiredAttributeAttribute.cs
- MenuItem.cs
- NumericUpDownAccelerationCollection.cs
- StylusPointPropertyInfoDefaults.cs
- SamlSubject.cs
- AttachedPropertyMethodSelector.cs
- GraphicsContext.cs
- SkipQueryOptionExpression.cs
- Int16AnimationUsingKeyFrames.cs
- GetTokenRequest.cs
- SqlErrorCollection.cs
- Transactions.cs
- HwndHost.cs
- ConsumerConnectionPointCollection.cs
- DrawingImage.cs
- Geometry3D.cs
- ManagementObjectSearcher.cs
- OracleBFile.cs
- COM2IProvidePropertyBuilderHandler.cs
- ProcessHostMapPath.cs
- StringComparer.cs
- OrderedEnumerableRowCollection.cs
- ControllableStoryboardAction.cs
- ClientScriptItem.cs
- ClientConfigurationSystem.cs
- SettingsProviderCollection.cs
- _SslSessionsCache.cs
- ResXResourceSet.cs
- OdbcConnectionPoolProviderInfo.cs
- PageAdapter.cs
- CopyCodeAction.cs
- SplitContainer.cs
- RSAPKCS1SignatureFormatter.cs
- CompositeActivityMarkupSerializer.cs
- typedescriptorpermission.cs
- ResolvePPIDRequest.cs
- OracleInfoMessageEventArgs.cs
- ContextProperty.cs
- Zone.cs
- EUCJPEncoding.cs
- WMIGenerator.cs
- SingleResultAttribute.cs
- HttpModuleCollection.cs
- UnionCqlBlock.cs
- SerializationUtility.cs
- PermissionAttributes.cs
- BackgroundFormatInfo.cs
- BinaryUtilClasses.cs
- IFlowDocumentViewer.cs
- TextWriter.cs
- PassportAuthenticationEventArgs.cs
- QfeChecker.cs
- ClassImporter.cs
- DeobfuscatingStream.cs
- TraceContext.cs
- Sentence.cs
- TemplateInstanceAttribute.cs
- arabicshape.cs
- AvTraceFormat.cs
- RootProjectionNode.cs
- CachedTypeface.cs
- BaseCodeDomTreeGenerator.cs
- StatusBar.cs
- ListItemCollection.cs
- TokenBasedSetEnumerator.cs
- ToolStripRenderer.cs
- QilExpression.cs
- SystemInfo.cs
- WebPartEditorCancelVerb.cs
- UIElement3D.cs
- OpenTypeLayoutCache.cs
- DataGridSortCommandEventArgs.cs
- HttpsTransportElement.cs
- DataGridViewRowsRemovedEventArgs.cs
- WindowHideOrCloseTracker.cs
- FileSystemEventArgs.cs
- DeadLetterQueue.cs
- BlobPersonalizationState.cs
- URLIdentityPermission.cs
- HttpRequestContext.cs
- ExtendedPropertyInfo.cs
- ArraySegment.cs
- EntityDataSourceView.cs
- UnsafeNativeMethodsPenimc.cs
- UriTemplateTrieNode.cs
- StringConverter.cs
- Overlapped.cs
- RightsManagementLicense.cs
- ComponentEditorForm.cs
- ParameterToken.cs
- peernodestatemanager.cs
- TabControlAutomationPeer.cs