forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using MonoFN.Cecil;
 | 
						|
using MonoFN.Cecil.Cil;
 | 
						|
 | 
						|
namespace FishNet.CodeGenerating.Helping.Extension
 | 
						|
{
 | 
						|
 | 
						|
    internal static class MethodDefinitionExtensions
 | 
						|
    {
 | 
						|
        /// <summary>
 | 
						|
        /// Clears the method content and returns ret.
 | 
						|
        /// </summary>
 | 
						|
        internal static void ClearMethodWithRet(this MethodDefinition md, CodegenSession session, ModuleDefinition importReturnModule = null)
 | 
						|
        {
 | 
						|
            md.Body.Instructions.Clear();
 | 
						|
            ILProcessor processor = md.Body.GetILProcessor();
 | 
						|
            processor.Add(session.GetClass<GeneralHelper>().CreateRetDefault(md, importReturnModule));
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Returns the ParameterDefinition index from end of parameters.
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="md"></param>
 | 
						|
        /// <param name="index"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        internal static ParameterDefinition GetEndParameter(this MethodDefinition md, int index)
 | 
						|
        {
 | 
						|
            //Not enough parameters.
 | 
						|
            if (md.Parameters.Count < (index + 1))
 | 
						|
                return null;
 | 
						|
 | 
						|
            return md.Parameters[md.Parameters.Count - (index + 1)];
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Creates a variable type within the body and returns it's VariableDef.
 | 
						|
        /// </summary>
 | 
						|
        internal static VariableDefinition CreateVariable(this MethodDefinition methodDef, TypeReference variableTypeRef)
 | 
						|
        {
 | 
						|
            VariableDefinition variableDef = new VariableDefinition(variableTypeRef);
 | 
						|
            methodDef.Body.Variables.Add(variableDef);
 | 
						|
            return variableDef;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// Creates a variable type within the body and returns it's VariableDef.
 | 
						|
        /// </summary>
 | 
						|
        internal static VariableDefinition CreateVariable(this MethodDefinition methodDef, CodegenSession session, System.Type variableType)
 | 
						|
        {
 | 
						|
            return CreateVariable(methodDef, session.GetClass<GeneralHelper>().GetTypeReference(variableType));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
} |