コード例 #1
0
 public override void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
 {
     writer.Write ("Util.CreateLiteralHash (new object [] {");
     foreach (var pair in Values) {
         var tail = Values.Last () == pair ? "" : ", ";
         if (pair.Key is Literal)
             ((Literal) pair.Key).GenerateCode (ctx, writer);
         else
             writer.Write (ctx.SafeName ((Identifier) pair.Key));
         writer.Write (", ");
         pair.Value.GenerateCode (ctx, writer);
         writer.Write (tail);
     }
     writer.Write ("})");
 }
コード例 #2
0
 public void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
 {
     if (LocalVariableType != null) {
         writer.Write (LocalVariableType.ToCSharp ());
         writer.Write (' ');
     }
     writer.Write (ctx.SafeName (Name));
 }
コード例 #3
0
 internal void OnGenerateCode(CodeGenerationContext ctx, TextWriter writer, bool returnVoid, string namePrefix)
 {
     bool isConstructor = ctx.CurrentType != null && ctx.CurrentType.Name == Name;
     if (returnVoid)
         writer.Write ("void");
     else if (!isConstructor && ReturnTypeName != null)
         writer.Write (ReturnTypeName.ToCSharp ());
     else if (!isConstructor)
         writer.Write ("/* no type? */");
     writer.Write (' ');
     writer.Write (namePrefix);
     if (Name == "getTimer")
         writer.Write ("GlobalContext.getTimer");
     else if (Name == "toString")
         writer.Write ("ToString");
     else
         writer.Write (ctx.SafeName (Name));
     writer.Write (" (");
     foreach (var arg in Arguments) {
         var tail = Arguments.Last () == arg ? "" : ", ";
         if (arg.IsVarArg)
             writer.Write ("params object [] {0}", arg.Name);
         else {
             writer.Write (arg.Type.ToCSharp ());
             writer.Write (' ');
             writer.Write (ctx.SafeName (arg.Name));
             if (arg.DefaultValue != null) {
                 writer.Write (" = ");
                 arg.DefaultValue.GenerateCode (ctx, writer);
             }
         }
         writer.Write (tail);
     }
     writer.Write (')');
     if (Body == null) // interface
         writer.WriteLine (';');
     else {
         writer.WriteLine ();
         Body.GenerateCode (ctx, writer);
     }
 }
コード例 #4
0
 public override void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
 {
     ctx.WriteHeaders (Headers, writer, false, this is ConstantDeclaration);
     var bak = ctx.KnownLValueType;
     foreach (var ntv in NameTypeValues) {
         // because AS3 variable types could differ within a line (unlike C#), they have to be declared in split form (or I have to do something more complicated.)
         if (this is ConstantDeclaration)
             writer.Write ("const ");
         if (ntv.Type != null)
             writer.Write (ntv.Type.ToCSharp ());
         else if (ntv.Value != null)
             writer.Write ("var");
         else
             writer.Write ("dynamic");
         ctx.KnownLValueType = ntv.Type;
         writer.Write (' ');
         writer.Write (ctx.SafeName (ntv.Name));
         if (ntv.Value != null) {
             writer.Write (" = ");
             ntv.Value.GenerateCode (ctx, writer);
         }
         writer.WriteLine (';');
         ctx.KnownLValueType = null;
     }
     ctx.KnownLValueType = bak;
 }
コード例 #5
0
 public void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
 {
     writer.Write ("[");
     writer.Write (Name.ToCSharp ());
     writer.Write ("(");
     foreach (var member in Members) {
         var tail = Members.Last () == member ? "" : ", ";
         writer.Write (ctx.SafeName (member.Name));
         writer.Write (" = ");
         member.Value.GenerateCode (ctx, writer);
         writer.Write (tail);
     }
     writer.WriteLine (")]");
 }
コード例 #6
0
 public void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
 {
     writer.Write ("catch (");
     writer.Write (NameAndType.Type.ToCSharp ());
     writer.Write (' ');
     writer.Write (ctx.SafeName (NameAndType.Name));
     writer.Write (')');
     Block.GenerateCode (ctx, writer);
 }
コード例 #7
0
 public void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
 {
     switch (Member != null ? Member.ToString () : null) {
     case "MIN_VALUE":
         ctx.DoNotEscape = true;
         Target.GenerateCode (ctx, writer);
         ctx.DoNotEscape = false;
         writer.Write ('.');
         writer.Write ("MinValue");
         break;
     case "MAX_VALUE":
         ctx.DoNotEscape = true;
         Target.GenerateCode (ctx, writer);
         ctx.DoNotEscape = false;
         writer.Write ('.');
         writer.Write ("MaxValue");
         break;
     default:
         bool gen = AccessType == MemberAccessType.GenericSubtype;
         if (Target != null) {
             if (gen)
                 writer.Write ("new ");
             Target.GenerateCode (ctx, writer);
             if (gen)
                 writer.Write ("<" + GenericSubtype + ">");
             else
                 writer.Write ("." + ctx.SafeName (Member));
         }
         else if (!gen)
             writer.Write (ctx.GetActualName (Member));
         break;
     }
 }
コード例 #8
0
        public override void GenerateCode(CodeGenerationContext ctx, TextWriter writer)
        {
            if (Pairs.Any (p => p.Value != null))
                writer.Write ("var ");
            else
                writer.Write ("dynamic ");

            foreach (var pair in Pairs) {
                var tail = Pairs.Last () == pair ? "" : ", ";
                writer.Write (ctx.SafeName (pair.Name));
                if (pair.Value != null) {
                    writer.Write (" = ");
                    pair.Value.GenerateCode (ctx, writer);
                }
                writer.Write (tail);
            }
            if (!ctx.InForHeadings)
                writer.WriteLine (';');
        }