public override void EmitCpp(CppEmitContext cec)
        {
            base.EmitCpp(cec);

            if ((this.ModFlags & Modifiers.STATIC) != 0)
            {
                cec.Buf.Write("\tstatic ", Location);
            }
            else
            {
                cec.Buf.Write("\t", Location);
            }

            if (cec.Pass == CppPasses.CLASSDEF)
            {
                cec.Buf.Write(cec.MakeCppFullTypeName(this.ReturnType), " ", this.MethodName.Name, "(");
                parameters.EmitCpp(cec);
                cec.Buf.Write(");\n");
            }
            else
            {
                cec.Buf.Write(cec.MakeCppFullTypeName(this.ReturnType), " ", cec.MakeCppTypeName(Parent.CurrentType, false), "::", this.MethodName.Name, "(");
                parameters.EmitCpp(cec);
                cec.Buf.Write(") ");

                if (MethodData != null)
                {
                    MethodData.EmitCpp(Parent, cec);
                }

                Block = null;

                cec.Buf.Write("\n");
            }
        }
            public override void EmitCpp(CppEmitContext cec)
            {
                if (cec.Pass == CppPasses.CLASSDEF)
                {
                    cec.Buf.Write("\t", cec.MakeCppFullTypeName(this.Property.MemberType), " get_", Property.MemberName.Name, "();\n");
                }
                else
                {
                    cec.Buf.Write("\t", cec.MakeCppFullTypeName(this.Property.MemberType), cec.MakeCppTypeName(Parent.CurrentType, false), "::", " get_", Property.MemberName.Name, "() ", Location);
                    method_data.EmitCpp(Parent as TypeDefinition, cec);
                    cec.Buf.Write("\n");

                    block = null;
                }
            }
        protected override void DoEmitCpp(CppEmitContext cec)
        {
            if (Initializer != null)
            {
                cec.Buf.Write("\t", loc);
                Initializer.EmitCpp(cec);
            }
            else
            {
                cec.Buf.Write("\t", cec.MakeCppFullTypeName(this.type), " ", Variable.Name, loc);
            }

            if (declarators != null)
            {
                foreach (var d in declarators)
                {
                    cec.Buf.Write(", ");
                    if (d.Initializer != null)
                    {
                        d.Initializer.EmitCpp(cec);
                    }
                    else
                    {
                        cec.Buf.Write(d.Variable.Name);
                    }
                }
            }

            cec.Buf.Write(";\n");
        }
 public override void EmitCpp(CppEmitContext cec)
 {
     cec.Buf.Write("new ", cec.MakeCppFullTypeName(Type, false), "(", Location);
     if (arguments != null)
     {
         arguments.EmitCpp(cec);
     }
     cec.Buf.Write(")");
 }
 public override void EmitCpp(CppEmitContext cec)
 {
     if (IsStatic)
     {
         cec.Buf.Write(cec.MakeCppFullTypeName(best_candidate.DeclaringType, false), loc);
     }
     else
     {
         InstanceExpression.EmitCpp(cec);
     }
     cec.Buf.Write("->", "get_", best_candidate.Name, "()", loc);
 }
            public override void EmitCpp(CppEmitContext cec)
            {
                if (cec.Pass == CppPasses.CLASSDEF)
                {
                    var parms = this.ParameterInfo;
                    cec.Buf.Write("\tvoid set_", Property.MemberName.Name, "(");
                    cec.Buf.Write(cec.MakeCppFullTypeName(((Parameter)parms [0]).Type), " ", parms [0].Name);
                    cec.Buf.Write(");\n");
                }
                else
                {
                    var parms = this.ParameterInfo;
                    cec.Buf.Write("\tvoid set_", cec.MakeCppTypeName(Parent.CurrentType, false), "::", Property.MemberName.Name, "(");
                    cec.Buf.Write(cec.MakeCppFullTypeName(((Parameter)parms [0]).Type), " ", parms [0].Name);
                    cec.Buf.Write(") ", Location);
                    method_data.EmitCpp(Parent as TypeDefinition, cec);
                    cec.Buf.Write("\n");

                    block = null;
                }
            }
 public override void EmitAssignCpp(CppEmitContext cec, Expression source, bool leave_copy, bool isCompound)
 {
     if (IsStatic)
     {
         cec.Buf.Write(cec.MakeCppFullTypeName(best_candidate.DeclaringType, false), loc);
     }
     else
     {
         InstanceExpression.EmitCpp(cec);
     }
     cec.Buf.Write("->", "set_", best_candidate.Name, "(");
     source.EmitCpp(cec);
     cec.Buf.Write(")", loc);
 }
 public override void EmitCpp(CppEmitContext cec)
 {
     cec.Buf.Write("\t", cec.MakeCppFullTypeName(MemberType), " ", Name, Location);
     if (initializer != null)
     {
         ResolveContext rc   = new ResolveContext(this);
         var            expr = initializer.Resolve(rc);
         if (expr != null)
         {
             cec.Buf.Write(" = ");
             expr.EmitCpp(cec);
         }
     }
     cec.Buf.Write(";\n");
 }
        public void EmitCpp(CppEmitContext cec)
        {
            bool first = true;

            foreach (var p in this.FixedParameters)
            {
                var param = p as Parameter;
                if (param != null)
                {
                    if (!first)
                    {
                        cec.Buf.Write(", ");
                    }
                    cec.Buf.Write(cec.MakeCppFullTypeName(param.Type), " ", param.Name);
                    first = false;
                }
            }
        }
Example #10
0
        public override void EmitCpp(CppEmitContext cec)
        {
            // Write CPP literal code for __cpp__() invocation.
            if (expr is SimpleName && ((SimpleName)expr).Name == "__cpp__" &&
                arguments.Count == 1 && arguments[0].Expr is StringLiteral)
            {
                cec.Buf.Write(((StringLiteral)arguments[0].Expr).Value);
                return;
            }

            if (expr != null)
            {
                if (mg.IsStatic && expr is TypeExpr)
                {
                    cec.Buf.Write(cec.MakeCppFullTypeName(((TypeExpr)expr).Type, false), "::", Location);
                }
                else
                {
                    expr.EmitCpp(cec);
                }
            }
            mg.EmitCallCpp(cec, arguments);
        }
Example #11
0
 public override void EmitCpp(CppEmitContext cec)
 {
     cec.Buf.Write(cec.MakeCppFullTypeName(type), Location);
 }
Example #12
0
 public override void EmitCpp(CppEmitContext cec)
 {
     cec.Buf.Write("(", cec.MakeCppFullTypeName(Type), ")(", loc);
     Child.EmitCpp(cec);
     cec.Buf.Write(")");
 }