Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Reflection / Emit / LocalBuilder.cs / 1 / LocalBuilder.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Reflection; using System.Security.Permissions; using System.Runtime.InteropServices; namespace System.Reflection.Emit { [ClassInterface(ClassInterfaceType.None)] [ComDefaultInterface(typeof(_LocalBuilder))] [System.Runtime.InteropServices.ComVisible(true)] public sealed class LocalBuilder : LocalVariableInfo, _LocalBuilder { #region Private Data Members private int m_localIndex; private Type m_localType; private MethodInfo m_methodBuilder; private bool m_isPinned; #endregion #region Constructor private LocalBuilder() { } internal LocalBuilder(int localIndex, Type localType, MethodInfo methodBuilder) : this(localIndex, localType, methodBuilder, false) { } internal LocalBuilder(int localIndex, Type localType, MethodInfo methodBuilder, bool isPinned) { m_isPinned = isPinned; m_localIndex = localIndex; m_localType = localType; m_methodBuilder = methodBuilder; } #endregion #region Internal Members internal int GetLocalIndex() { return m_localIndex; } internal MethodInfo GetMethodBuilder() { return m_methodBuilder; } #endregion #region LocalVariableInfo Override public override bool IsPinned { get { return m_isPinned; } } public override Type LocalType { get { return m_localType; } } public override int LocalIndex { get { return m_localIndex; } } #endregion #region Public Members public void SetLocalSymInfo(String name) { SetLocalSymInfo(name, 0, 0); } public void SetLocalSymInfo(String name, int startOffset, int endOffset) { ModuleBuilder dynMod; SignatureHelper sigHelp; int sigLength; byte[] signature; byte[] mungedSig; int index; MethodBuilder methodBuilder = m_methodBuilder as MethodBuilder; if (methodBuilder == null) // it's a light code gen entity throw new NotSupportedException(); dynMod = (ModuleBuilder) methodBuilder.Module; if (methodBuilder.IsTypeCreated()) { // cannot change method after its containing type has been created throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_TypeHasBeenCreated")); } // set the name and range of offset for the local if (dynMod.GetSymWriter() == null) { // cannot set local name if not debug module throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_NotADebugModule")); } sigHelp = SignatureHelper.GetFieldSigHelper(dynMod); sigHelp.AddArgument(m_localType); signature = sigHelp.InternalGetSignature(out sigLength); // The symbol store doesn't want the calling convention on the // front of the signature, but InternalGetSignature returns // the callinging convention. So we strip it off. This is a // bit unfortunate, since it means that we need to allocate // yet another array of bytes... mungedSig = new byte[sigLength - 1]; Array.Copy(signature, 1, mungedSig, 0, sigLength - 1); index = methodBuilder.GetILGenerator().m_ScopeTree.GetCurrentActiveScopeIndex(); if (index == -1) { // top level scope information is kept with methodBuilder methodBuilder.m_localSymInfo.AddLocalSymInfo( name, mungedSig, m_localIndex, startOffset, endOffset); } else { methodBuilder.GetILGenerator().m_ScopeTree.AddLocalSymInfoToCurrentScope( name, mungedSig, m_localIndex, startOffset, endOffset); } } #endregion void _LocalBuilder.GetTypeInfoCount(out uint pcTInfo) { throw new NotImplementedException(); } void _LocalBuilder.GetTypeInfo(uint iTInfo, uint lcid, IntPtr ppTInfo) { throw new NotImplementedException(); } void _LocalBuilder.GetIDsOfNames([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId) { throw new NotImplementedException(); } void _LocalBuilder.Invoke(uint dispIdMember, [In] ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr) { throw new NotImplementedException(); } } }
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- KeyboardEventArgs.cs
- PartialCachingAttribute.cs
- MailAddress.cs
- RunWorkerCompletedEventArgs.cs
- PointF.cs
- NetNamedPipeBinding.cs
- ConnectionStringsExpressionBuilder.cs
- EdmPropertyAttribute.cs
- XmlBaseReader.cs
- AuthenticationSection.cs
- ProfileService.cs
- Nullable.cs
- Stack.cs
- BrowserCapabilitiesCodeGenerator.cs
- BamlRecords.cs
- MultiTrigger.cs
- TdsEnums.cs
- GetUserPreferenceRequest.cs
- HttpProxyCredentialType.cs
- GradientStop.cs
- HttpSessionStateBase.cs
- CollectionDataContractAttribute.cs
- JoinCqlBlock.cs
- SystemColors.cs
- ConfigXmlComment.cs
- XmlSerializerVersionAttribute.cs
- NamespaceDecl.cs
- GeneralTransform.cs
- SHA512Cng.cs
- SemaphoreFullException.cs
- QilExpression.cs
- ProcessManager.cs
- RegionData.cs
- MissingMemberException.cs
- ResourceExpressionBuilder.cs
- WorkflowMarkupSerializationManager.cs
- DirectoryGroupQuery.cs
- COAUTHINFO.cs
- GeneralTransform3D.cs
- CapabilitiesAssignment.cs
- ListViewEditEventArgs.cs
- Command.cs
- ComPlusTypeLoader.cs
- ModelItemImpl.cs
- CollectionViewGroupRoot.cs
- ConfigurationElement.cs
- RoutedEvent.cs
- PlainXmlDeserializer.cs
- WebPartPersonalization.cs
- SuppressedPackageProperties.cs
- EmptyTextWriter.cs
- addressfiltermode.cs
- EnumUnknown.cs
- ConstraintConverter.cs
- HasCopySemanticsAttribute.cs
- ContainerUtilities.cs
- PlatformNotSupportedException.cs
- AppDomainShutdownMonitor.cs
- ChainOfResponsibility.cs
- SelectingProviderEventArgs.cs
- ProtectedConfigurationSection.cs
- PackageStore.cs
- TokenBasedSetEnumerator.cs
- DiscoveryMessageSequenceGenerator.cs
- Point.cs
- MessageQueuePermission.cs
- FontWeights.cs
- ConsumerConnectionPointCollection.cs
- AccessDataSourceView.cs
- AudioException.cs
- HttpMethodConstraint.cs
- QueryAccessibilityHelpEvent.cs
- RelationshipEndMember.cs
- WindowsBrush.cs
- ScopeCollection.cs
- IList.cs
- PageStatePersister.cs
- ValidatedMobileControlConverter.cs
- HttpCapabilitiesBase.cs
- DataGridViewRow.cs
- HttpRuntime.cs
- DragDropHelper.cs
- XslTransformFileEditor.cs
- ValueTypeFixupInfo.cs
- CriticalHandle.cs
- ToolStripDesignerAvailabilityAttribute.cs
- XamlStream.cs
- FormsAuthenticationConfiguration.cs
- XmlMessageFormatter.cs
- NoneExcludedImageIndexConverter.cs
- HttpConfigurationContext.cs
- NameValueSectionHandler.cs
- ContainerParaClient.cs
- ServiceDebugBehavior.cs
- ServiceModelReg.cs
- WebBrowser.cs
- UmAlQuraCalendar.cs
- TextBoxRenderer.cs
- Char.cs
- GridViewRowPresenter.cs