Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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(); } } } // 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
- CroppedBitmap.cs
- QueryContinueDragEventArgs.cs
- TrustSection.cs
- XmlQualifiedName.cs
- ScriptRegistrationManager.cs
- Pts.cs
- GeometryModel3D.cs
- WebPartRestoreVerb.cs
- FirewallWrapper.cs
- MergeExecutor.cs
- HtmlInputReset.cs
- StringOutput.cs
- UIElementPropertyUndoUnit.cs
- XmlNamespaceMappingCollection.cs
- OrderedHashRepartitionEnumerator.cs
- ADConnectionHelper.cs
- DiscardableAttribute.cs
- SignatureResourcePool.cs
- ObjRef.cs
- WindowsNonControl.cs
- LineServicesCallbacks.cs
- SamlDoNotCacheCondition.cs
- PasswordTextNavigator.cs
- DropDownHolder.cs
- HttpCapabilitiesSectionHandler.cs
- WebPartDescriptionCollection.cs
- Semaphore.cs
- EntityCollection.cs
- SmtpNtlmAuthenticationModule.cs
- DetailsViewCommandEventArgs.cs
- StaticExtensionConverter.cs
- ScriptResourceAttribute.cs
- OperationInfo.cs
- ImageMapEventArgs.cs
- DbConnectionStringBuilder.cs
- CqlParser.cs
- ColumnHeaderConverter.cs
- InkSerializer.cs
- DeflateEmulationStream.cs
- PathSegment.cs
- WpfWebRequestHelper.cs
- EdgeProfileValidation.cs
- EditingMode.cs
- RadioButton.cs
- AutoGeneratedFieldProperties.cs
- DocumentXPathNavigator.cs
- RestHandler.cs
- IsolationInterop.cs
- CSharpCodeProvider.cs
- LayoutEditorPart.cs
- DataGridPagerStyle.cs
- TableRow.cs
- XmlSchemaAll.cs
- _SpnDictionary.cs
- ToolStripDropDownClosedEventArgs.cs
- HorizontalAlignConverter.cs
- TemplateInstanceAttribute.cs
- SqlUtil.cs
- ProxyDataContractResolver.cs
- TextEditorSpelling.cs
- FixedPage.cs
- Rotation3DAnimation.cs
- WebPartVerbCollection.cs
- RootContext.cs
- DragDrop.cs
- glyphs.cs
- DateTimeOffset.cs
- JsonClassDataContract.cs
- EncodingTable.cs
- ViewCellSlot.cs
- MonikerBuilder.cs
- Logging.cs
- ConfigurationErrorsException.cs
- LogEntry.cs
- StyleCollectionEditor.cs
- COM2EnumConverter.cs
- MessageEnumerator.cs
- PropertyDescriptorGridEntry.cs
- X509Chain.cs
- ListViewItem.cs
- PageAsyncTaskManager.cs
- _FixedSizeReader.cs
- NativeWindow.cs
- FileSystemEventArgs.cs
- DrawListViewColumnHeaderEventArgs.cs
- Aes.cs
- WindowsRegion.cs
- RuleSettingsCollection.cs
- HttpApplicationStateWrapper.cs
- ObjectStateFormatter.cs
- Predicate.cs
- RsaElement.cs
- MultiBinding.cs
- VisualProxy.cs
- DescendantBaseQuery.cs
- SurrogateSelector.cs
- UserPreferenceChangingEventArgs.cs
- EntityClassGenerator.cs
- ZipIOExtraFieldPaddingElement.cs
- QilInvoke.cs