예제 #1
0
		public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName)
		{
			// the parameter is named "position", but it is actually a sequence number (i.e. 0 = return parameter, 1 = first parameter)
			int sequence = position--;
			if (parameters == null)
			{
				parameters = new List<ParameterBuilder>();
			}
			this.ModuleBuilder.Param.AddVirtualRecord();
			ParameterBuilder pb = new ParameterBuilder(this.ModuleBuilder, sequence, attributes, strParamName);
			if (parameters.Count == 0 || position > parameters[parameters.Count - 1].Position)
			{
				parameters.Add(pb);
			}
			else
			{
				for (int i = 0; i < parameters.Count; i++)
				{
					if (parameters[i].Position > position)
					{
						parameters.Insert(i, pb);
						break;
					}
				}
			}
			return pb;
		}
예제 #2
0
파일: MethodBuilder.cs 프로젝트: mono/ikvm
 public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName)
 {
     if (parameters == null)
     {
         parameters = new List<ParameterBuilder>();
     }
     this.ModuleBuilder.Param.AddVirtualRecord();
     ParameterBuilder pb = new ParameterBuilder(this.ModuleBuilder, position, attributes, strParamName);
     if (parameters.Count == 0 || position > parameters[parameters.Count - 1].Position)
     {
         parameters.Add(pb);
     }
     else
     {
         for (int i = 0; i < parameters.Count; i++)
         {
             if (parameters[i].Position > position)
             {
                 parameters.Insert(i, pb);
                 break;
             }
         }
     }
     return pb;
 }
예제 #3
0
 internal void AddXmlMapParameterAttributes(MethodBuilder method, string className, string methodName, string methodSig, ref ParameterBuilder[] pbs)
 {
     IKVM.Internal.MapXml.Param[] parameters = classLoader.GetXmlMapParameters(className, methodName, methodSig);
     if(parameters != null)
     {
         if(pbs == null)
         {
             // let's hope that the parameters array is the right length
             pbs = GetParameterBuilders(method, parameters.Length, null);
         }
         for(int i = 0; i < pbs.Length; i++)
         {
             if(parameters[i].Attributes != null)
             {
                 foreach(IKVM.Internal.MapXml.Attribute attr in parameters[i].Attributes)
                 {
                     AttributeHelper.SetCustomAttribute(classLoader, pbs[i], attr);
                 }
             }
         }
     }
 }
예제 #4
0
		public ParameterBuilder DefineParameter(int position, ParameterAttributes attributes, string strParamName)
		{
			if (parameters == null)
			{
				parameters = new List<ParameterBuilder>();
			}
			this.ModuleBuilder.Param.AddVirtualRecord();
			ParameterBuilder pb = new ParameterBuilder(this.ModuleBuilder, position, attributes, strParamName);
			parameters.Add(pb);
			return pb;
		}