Ancestry.QueryProcessor.Type.NaryType.EmitUnaryOperator C# (CSharp) Method

EmitUnaryOperator() protected method

protected EmitUnaryOperator ( MethodContext method, Compiler compiler, ExpressionContext inner, Parse expression ) : void
method Ancestry.QueryProcessor.Compile.MethodContext
compiler Compiler
inner Ancestry.QueryProcessor.Compile.ExpressionContext
expression Parse
return void
        protected override void EmitUnaryOperator(MethodContext method, Compiler compiler, ExpressionContext inner, Parse.UnaryExpression expression)
        {
            switch (expression.Operator)
            {
                case Parse.Operator.Exists:
                    method.IL.EmitCall(OpCodes.Callvirt, typeof(ICollection<>).MakeGenericType(inner.Type.GetNative(compiler.Emitter)).GetProperty("Count").GetGetMethod(), null);
                    method.IL.Emit(OpCodes.Ldc_I4_0);
                    method.IL.Emit(OpCodes.Cgt);
                    break;
                case Parse.Operator.IsNull:
                    method.IL.Emit(OpCodes.Pop);
                    method.IL.Emit(OpCodes.Ldc_I4_0);
                    break;
                default: throw NotSupported(expression);
            }
        }