예제 #1
0
        public override void ChangeSignatureParameterArraySupport <TParent, TIntermediateParent, TParameter, TIntermediateParameter>(IIntermediateParameterParent <TParent, TIntermediateParent, TParameter, TIntermediateParameter> target, IIntermediateAssembly associatedAssembly, bool support)
        {
            var metadatumType = this.IdentityManager.ObtainTypeReference(this.IdentityManager.RuntimeEnvironment.GetCoreIdentifier(CliRuntimeCoreType.ParamArrayMetadatum, associatedAssembly));

            if (metadatumType == null)
            {
                return;
            }
            if (target.Parameters.Count == 0)
            {
                return;
            }
            IIntermediateParameterMember <TParent, TIntermediateParent> lastParameter = target.Parameters.Values[target.Parameters.Count - 1];

            if (SignatureSupportsParameterArray(target, associatedAssembly))
            {
                if (support)
                {
                    return;
                }
                var metadatum = lastParameter.Metadata[metadatumType];
                lastParameter.Metadata.Remove(metadatum);
                return;
            }
            else if (support)
            {
                lastParameter.Metadata.Add(new MetadatumDefinitionParameterValueCollection(metadatumType));
            }
        }
예제 #2
0
            public string Visit <TParent, TIntermediateParent>(IIntermediateParameterMember <TParent, TIntermediateParent> parameter, IntermediateNameRequestDetails context)
                where TParent : Abstract.Members.IParameterParent
                where TIntermediateParent : TParent, IIntermediateParameterParent
            {
                string name = null;

                switch (context)
                {
                case IntermediateNameRequestDetails.TargetFileName:
                    if (this.HtmlContext)
                    {
                        name = string.Format("#arg{0:X8}", parameter.GetHashCode());
                    }
                    break;

                case IntermediateNameRequestDetails.DisplayName:
                    name = parameter.Name;
                    break;

                case IntermediateNameRequestDetails.ReferenceName:
                    if (this.HtmlContext)
                    {
                        name = string.Format("arg{0:X8}", parameter.GetHashCode());
                    }
                    break;
                }
                return(name);
            }
예제 #3
0
 bool IIntermediateParameterMemberDictionary.Remove(IIntermediateParameterMember member, bool dispose)
 {
     if (member == null || member is TIntermediateParameter)
     {
         return(this.Remove((TIntermediateParameter)member, dispose));
     }
     throw ThrowHelper.ObtainArgumentException(ArgumentWithException.member, ExceptionMessageId.ValueIsWrongType, ThrowHelper.GetArgumentName(ArgumentWithException.member), member.GetType().ToString(), typeof(TIntermediateParameter).ToString());
 }
예제 #4
0
        IIntermediateParameterMember[] IIntermediateParameterMemberDictionary.AddRange(params TypedName[] parameterInfo)
        {
            var resultOriginal = this.AddRange(parameterInfo);
            var result         = new IIntermediateParameterMember[resultOriginal.Length];

            for (int i = 0; i < resultOriginal.Length; i++)
            {
                result[i] = resultOriginal[i];
            }
            return(result);
        }
예제 #5
0
 public void ReferenceDeclaration(IIntermediateParameterMember declaration)
 {
 }
예제 #6
0
 public void DefineDeclaration(IIntermediateParameterMember declaration)
 {
 }
예제 #7
0
 void IIntermediateMemberVisitor.Visit <TParent, TIntermediateParent>(IIntermediateParameterMember <TParent, TIntermediateParent> intermediateMember)
 {
     this.Translate(intermediateMember);
 }
예제 #8
0
 public TestLinkerResult Visit <TParent, TIntermediateParent>(IIntermediateParameterMember <TParent, TIntermediateParent> parameter, ICompilationContext context)
     where TParent : IParameterParent
     where TIntermediateParent : TParent, IIntermediateParameterParent
 {
     throw new NotImplementedException();
 }
예제 #9
0
 public void DefineDeclaration(IIntermediateParameterMember declaration)
 {
     this.DefineDeclaration((IIntermediateMember)declaration);
 }
예제 #10
0
 public abstract void Translate <TParent, TIntermediateParent>(IIntermediateParameterMember <TParent, TIntermediateParent> intermediateMember)
     where TParent :
 IParameterParent
     where TIntermediateParent :
 TParent,
 IIntermediateParameterParent;
예제 #11
0
 public void ReferenceDeclaration(IIntermediateParameterMember declaration)
 {
     this.Formatter.ReferenceDeclaration(declaration);
 }
예제 #12
0
 public void DefineDeclaration(IIntermediateParameterMember declaration)
 {
     this.Formatter.DefineDeclaration(declaration);
 }
예제 #13
0
 public TransformationKind Visit <TParent, TIntermediateParent>(IIntermediateParameterMember <TParent, TIntermediateParent> parameter, ITransformationContext context)
     where TParent : IParameterParent
     where TIntermediateParent : TParent, IIntermediateParameterParent
 {
     throw new NotImplementedException();
 }