Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Reflection / Emit / LocalBuilder.cs / 1305376 / 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); } [System.Security.SecuritySafeCritical] // auto-generated 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(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // 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); } [System.Security.SecuritySafeCritical] // auto-generated 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(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ServiceOperationWrapper.cs
- IRCollection.cs
- TypeConverter.cs
- MimeTextImporter.cs
- MessageHeaderException.cs
- WebControlsSection.cs
- precedingsibling.cs
- ExecutorLocksHeldException.cs
- RC2CryptoServiceProvider.cs
- DefaultShape.cs
- HTMLTagNameToTypeMapper.cs
- TabControlCancelEvent.cs
- HtmlUtf8RawTextWriter.cs
- ServiceProviders.cs
- SimpleWebHandlerParser.cs
- LabelExpression.cs
- MouseEvent.cs
- ArraySet.cs
- DataViewListener.cs
- ConfigurationProviderException.cs
- CallSiteHelpers.cs
- QueryOperationResponseOfT.cs
- TextRangeEditTables.cs
- TemplateKeyConverter.cs
- LoginDesignerUtil.cs
- typedescriptorpermissionattribute.cs
- DataGridViewCheckBoxCell.cs
- Parser.cs
- DocobjHost.cs
- Utils.cs
- DocumentPageView.cs
- PropertyIDSet.cs
- SystemUnicastIPAddressInformation.cs
- MarkupCompilePass2.cs
- AutomationPatternInfo.cs
- GuidelineCollection.cs
- WebControlsSection.cs
- DataGridTable.cs
- SiteMap.cs
- MenuItemStyleCollection.cs
- Matrix3D.cs
- EntryIndex.cs
- ToolStripTextBox.cs
- DbConnectionPoolOptions.cs
- StreamSecurityUpgradeInitiator.cs
- XmlImplementation.cs
- CuspData.cs
- _AutoWebProxyScriptWrapper.cs
- securestring.cs
- VisualTarget.cs
- TCPClient.cs
- ThumbAutomationPeer.cs
- UserPreferenceChangedEventArgs.cs
- RadioButtonList.cs
- BinaryKeyIdentifierClause.cs
- DataGridHelper.cs
- IsolatedStorageFile.cs
- SafeRightsManagementPubHandle.cs
- DataSourceControlBuilder.cs
- HtmlTernaryTree.cs
- DefaultEventAttribute.cs
- RealizedColumnsBlock.cs
- HGlobalSafeHandle.cs
- SizeAnimationClockResource.cs
- Compilation.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- StreamUpgradeAcceptor.cs
- PerformanceCounterPermission.cs
- WebPartZone.cs
- SqlCharStream.cs
- RuntimeConfigLKG.cs
- SqlParameter.cs
- StatusBar.cs
- ASCIIEncoding.cs
- StaticResourceExtension.cs
- PerformanceCounterCategory.cs
- DataServiceProviderMethods.cs
- Geometry3D.cs
- VisualCollection.cs
- GridItemPattern.cs
- NotifyParentPropertyAttribute.cs
- StoreContentChangedEventArgs.cs
- GridViewSelectEventArgs.cs
- Int64Converter.cs
- SqlUtils.cs
- PropertyGridView.cs
- Compress.cs
- DataColumnChangeEvent.cs
- DataObject.cs
- GridItem.cs
- StringTraceRecord.cs
- XamlRtfConverter.cs
- DriveNotFoundException.cs
- ConfigXmlElement.cs
- CanonicalXml.cs
- StyleReferenceConverter.cs
- ServicePointManager.cs
- BaseCollection.cs
- Types.cs
- TabControlEvent.cs