clojure.lang.CljCompiler.Ast.FnMethod.Emit C# (CSharp) Метод

Emit() публичный Метод

public Emit ( ObjExpr fn, TypeBuilder tb ) : void
fn ObjExpr
tb TypeBuilder
Результат void
        public override void Emit(ObjExpr fn, TypeBuilder tb)
        {
            if ( fn.CanBeDirect)
            {
                //Console.WriteLine("emit static: {0}", fn.Name);
                DoEmitStatic(fn, tb);
            }
            else if (Prim != null)
            {
                //Console.WriteLine("emit prim: {0}", fn.Name);
                DoEmitPrim(fn, tb);
            }
            else
            {
                //Console.WriteLine("emit normal: {0}", fn.Name);
                DoEmit(fn, tb);
            }
        }

Usage Example

Пример #1
0
        protected override void EmitMethods(TypeBuilder tb)
        {
            for (ISeq s = RT.seq(_methods); s != null; s = s.next())
            {
                FnMethod method = (FnMethod)s.first();
                method.Emit(this, tb);
            }

            if (IsVariadic)
            {
                EmitGetRequiredArityMethod(_typeBuilder, _variadicMethod.RequiredArity);
            }

            List <int> supportedArities = new List <int>();

            for (ISeq s = RT.seq(_methods); s != null; s = s.next())
            {
                FnMethod method = (FnMethod)s.first();
                supportedArities.Add(method.NumParams);
            }

            EmitHasArityMethod(_typeBuilder, supportedArities, IsVariadic, IsVariadic ? _variadicMethod.RequiredArity : 0);
        }