Example #1
0
 int IMethodSignatureMemberDictionary.IndexOf(IMethodSignatureMember method)
 {
     if (!(method is TSignature))
     {
         return(-1);
     }
     return(this.IndexOf((TSignature)(method)));
 }
Example #2
0
        public int IndexOf(IMethodSignatureMember method)
        {
            int valueIndex = this.master.Values.IndexOf(new MasterDictionaryEntry <IMember>(this, method));

            if (valueIndex == -1)
            {
                return(-1);
            }
            return(this.identifiers.GetIndexOf(master.Keys[valueIndex]));
        }
Example #3
0
 void _onAddMethod_Disposed(object sender, EventArgs e)
 {
     if (this._onAddMethod != null)
     {
         _onAddMethod.Disposed -= new EventHandler(_onAddMethod_Disposed);
         this._onAddMethod      = null;
     }
     if (this.onAddMethod != null)
     {
         this.onAddMethod.Dispose();
         this.onAddMethod = null;
     }
 }
Example #4
0
 public void ReferenceDeclaration(IMethodSignatureMember declaration)
 {
     if (declaration is IIntermediateMethodMember)
     {
         this.ReferenceDeclaration((IIntermediateMethodMember)declaration);
     }
     else if (declaration is IIntermediateMethodSignatureMember)
     {
         this.ReferenceDeclaration((IIntermediateMethodSignatureMember)declaration);
     }
     else
     {
         this.Formatter.ReferenceDeclaration(declaration);
     }
 }
Example #5
0
 public virtual void TranslateMember(IMethodSignatureMember methodSigMember)
 {
     this.TranslateMember <IMethodSignatureParameterMember, IMethodSignatureTypeParameterMember, CodeMemberMethod, ISignatureMemberParentType>(methodSigMember);
 }
Example #6
0
 public void RegisterGenericMethod(IMethodSignatureMember targetSignature, IControlledTypeCollection typeParameters)
 {
     this.CheckGenericCache();
     this.genericCache.RegisterGenericMethod(targetSignature, typeParameters);
 }
Example #7
0
 public void RegisterGenericChild(IMethodSignatureParent parent, IMethodSignatureMember genericChild)
 {
     throw new NotSupportedException();
 }
Example #8
0
 public MethodSignatureTypeParameterMember(string name, IMethodSignatureMember parentTarget)
     : base(name, parentTarget)
 {
 }
Example #9
0
 public void RegisterGenericChild(IMethodSignatureParent parent, IMethodSignatureMember genericChild)
 {
     this.CheckGenericCache();
     this.genericCache.RegisterGenericChild(parent, genericChild);
 }
Example #10
0
 public override void TranslateMember <TParameter, TTypeParameter, TSignatureDom, TParent>(IMethodSignatureMember <TParameter, TTypeParameter, TSignatureDom, TParent> ambigMethodSigMember)
 {
     this.Provider.GenerateCodeFromMember((CodeMemberMethod)ambigMethodSigMember.GenerateCodeDom(Options), base.Target, this.Options.Options);
 }
Example #11
0
 protected override IMethodSignatureMember OnGetMethod(IMethodSignatureMember original)
 {
     return(new _MethodsBase._Method(this.Parent, (IInterfaceMethodMember)original));
 }
Example #12
0
 protected abstract IMethodSignatureMember OnGetMethod(IMethodSignatureMember original);
Example #13
0
 public void ReferenceDeclaration(IMethodSignatureMember declaration)
 {
 }
Example #14
0
 public abstract void TranslateMember <TParameter, TTypeParameter, TSignatureDom, TParent>(IMethodSignatureMember <TParameter, TTypeParameter, TSignatureDom, TParent> ambigMethodSigMember)
     where TParameter :
 IParameteredParameterMember <TParameter, TSignatureDom, TParent>
     where TTypeParameter :
 IMethodSignatureTypeParameterMember <TParameter, TTypeParameter, TSignatureDom, TParent>
     where TSignatureDom :
 CodeMemberMethod,
 new()
     where TParent :
 IDeclarationTarget;
Example #15
0
 protected override IMembers <IMethodTypeParameterMember, IMethodSignatureMember <IMethodParameterMember, IMethodTypeParameterMember, CodeMemberMethod, IMemberParentType>, CodeTypeParameter> OnGetPartialClone(IMethodSignatureMember <IMethodParameterMember, IMethodTypeParameterMember, CodeMemberMethod, IMemberParentType> parent)
 {
     throw new NotSupportedException("Method Type-parameters cannot be spanned across multiple instances");
 }
Example #16
0
        //#region ITypeIdentityManager<ICliMetadataTypeSpecificationTableRow> Members

        public IType ObtainTypeReference(ICliMetadataTypeSpecificationTableRow typeIdentity, IType activeType, IMethodSignatureMember activeMethod, IAssembly activeAssembly = null)
        {
            if (typeIdentity.Signature is ICliMetadataTypeSignature)
            {
                return(this.ObtainTypeReference((ICliMetadataTypeSignature)typeIdentity.Signature, activeType, activeMethod, activeAssembly));
            }
            throw new NotSupportedException();
        }
Example #17
0
 public MethodSignatureParameterMembers(IMethodSignatureMember targetDeclaration)
     : base(targetDeclaration)
 {
 }
Example #18
0
        public static int CalculateStackRequirement <TSignatureParameter, TSignature, TSignatureParent>(this IMethodSignatureMember <TSignatureParameter, TSignature, TSignatureParent> method)
            where TSignatureParameter :
        IMethodSignatureParameterMember <TSignatureParameter, TSignature, TSignatureParent>
            where TSignature :
        IMethodSignatureMember <TSignatureParameter, TSignature, TSignatureParent>
            where TSignatureParent :
        ISignatureParent <IGeneralGenericSignatureMemberUniqueIdentifier, TSignature, TSignatureParameter, TSignatureParent>
        {
            var extendedInstanceMember = method as IExtendedInstanceMember;

            if (extendedInstanceMember != null)
            {
                if (extendedInstanceMember.IsStatic)
                {
                    return(method.Parameters.Count);
                }
                else
                {
                    return(method.Parameters.Count + 1);
                }
            }
            return(method.Parameters.Count);
        }
Example #19
0
 /// <summary>
 /// Creates a new instance of <see cref="MethodSignatureParameterMember"/>
 /// with the parameter type, name and target provided.
 /// </summary>
 /// <param name="nameAndType">The type and name of the parameter.</param>
 /// <param name="parentTarget">The place the parameter exists on.</param>
 public MethodSignatureParameterMember(TypedName nameAndType, IMethodSignatureMember parentTarget)
     : base(nameAndType, parentTarget)
 {
 }
Example #20
0
 public CliSignatureTypeCollection(_ICliManager manager, ICliMetadataMethodSignature signature, IType activeType, IMethodSignatureMember activeMethod)
 {
     if (manager == null)
     {
         throw new ArgumentNullException("manager");
     }
     if (signature == null)
     {
         throw new ArgumentNullException("signature");
     }
     this.manager        = manager;
     this.signatureTypes = new IType[signature.Parameters.Count];
     this.ActiveType     = activeType;
     this.ActiveMethod   = activeMethod;
     this.signature      = signature;
 }
Example #21
0
 public CliParameterMemberDictionary(_ICliManager manager, uint methodIndex, ICliMetadataRoot metadataRoot, TParent parent, IMethodSignatureMember activeMethod)
     : this(manager, methodIndex, metadataRoot, parent)
 {
     this.activeMethod = activeMethod;
 }
Example #22
0
 protected sealed override IMethodSignatureMember OnGetMethod(IMethodSignatureMember original)
 {
     return(this.OnGetMethod(((IMethodMember)(original))));
 }
Example #23
0
 public void ReferenceDeclaration(IMethodSignatureMember declaration)
 {
     referenceStack.Push(declaration);
 }
Example #24
0
        /// <summary><para>Creates a C&#9839; compiler warning, relative to the
        /// abstract model, (level 2) &#35;280:</para><para><paramref name="offendingType"/> does not implement the <paramref name="patternName"/>. <paramref name="offendingMethod"/> has the wrong signature.</para></summary>
        public static ICompilerSourceModelWarning <IExpression, IType, string, IMethodSignatureMember> WarningCS0280(IExpression offendingExpression, IType offendingType, string patternName, IMethodSignatureMember offendingMethod)
        {
            var start = offendingExpression.Start ?? LineColumnPair.Zero;
            var end   = offendingExpression.End ?? LineColumnPair.Zero;

            return(new CompilerSourceModelWarning <IExpression, IType, string, IMethodSignatureMember>(CS0280, offendingExpression, offendingType, patternName, offendingMethod, offendingExpression.Location, start, end, offendingType.UniqueIdentifier.ToString(), patternName, offendingMethod.UniqueIdentifier.ToString()));
        }
Example #25
0
        internal static IEnumerable <IInterfaceType> GetImplementations(ICliMetadataTypeDefinitionTableRow parentDef, ICliMetadataMethodDefinitionTableRow methodMetadata, CliManager identityManager, IType activeType, IMethodSignatureMember activeMethod, IAssembly activeAssembly)
        {
            var targets = (from t in parentDef.ImplementationMap
                           where t.MethodBody == methodMetadata
                           select t.MethodDeclaration);

            foreach (var target in targets)
            {
                IType currentType = null;
                switch (target.MethodDefOrRefEncoding)
                {
                case CliMetadataMethodDefOrRefTag.MethodDefinition:
                    ICliMetadataMethodDefinitionTableRow methodDef = (ICliMetadataMethodDefinitionTableRow)target;
                    currentType = identityManager.ObtainTypeReference(methodMetadata.MetadataRoot.TableStream.TypeDefinitionTable[(int)methodMetadata.MetadataRoot.TableStream.TypeDefinitionTable.GetTypeFromMethodIndex(methodDef.Index)], activeType, activeMethod, activeAssembly);
                    break;

                case CliMetadataMethodDefOrRefTag.MemberRef:
                    ICliMetadataMemberReferenceTableRow memberRef = (ICliMetadataMemberReferenceTableRow)target;
                    switch (memberRef.ClassSource)
                    {
                    case CliMetadataMemberRefParentTag.TypeDefinition:
                        currentType = identityManager.ObtainTypeReference((ICliMetadataTypeDefinitionTableRow)memberRef.Class, activeType, activeMethod, activeAssembly);
                        break;

                    case CliMetadataMemberRefParentTag.TypeReference:
                        currentType = identityManager.ObtainTypeReference((ICliMetadataTypeRefTableRow)memberRef.Class, activeType, activeMethod, activeAssembly);
                        break;

                    case CliMetadataMemberRefParentTag.TypeSpecification:
                        currentType = identityManager.ObtainTypeReference((ICliMetadataTypeSpecificationTableRow)memberRef.Class, activeType, activeMethod, activeAssembly);
                        break;
                    }
                    break;
                }
                if (currentType != null && currentType is IInterfaceType)
                {
                    yield return((IInterfaceType)currentType);
                }
            }
        }