Exemplo n.º 1
0
        void WriteMembers(Message message, CodeWriter writer)
        {
            var idx = 1;
            foreach (var member in message.Members)
            {
                writer.WriteLine(MemberTemplate, idx, member.Type, GeneratorUtil.MemberCase(member.Name));

                idx += 1;
            }
        }
Exemplo n.º 2
0
 void WriteParameters(Message message, CodeWriter writer)
 {
     var first = true;
     foreach (var member in message.Members)
     {
         if (first)
         {
             first = false;
         }
         else
         {
             writer.Write(", ");
         }
         writer.Write("{0} {1}", member.Type, GeneratorUtil.ParameterCase(member.Name));
     }
 }
Exemplo n.º 3
0
        private void WriteContext(CodeWriter writer, Context context)
        {
            foreach (var contract in context.Contracts)
            {
                writer.Write(ClassNameTemplate, contract.Name);

                if (contract.Modifiers.Any())
                {
                    writer.Write(" : {0}", string.Join(", ", contract.Modifiers.Select(s => s.Interface).ToArray()));
                }
                writer.WriteLine();

                writer.WriteLine("{");
                writer.Indent += 1;

                if (contract.Members.Count > 0)
                {
                    WriteMembers(contract, writer);

                    writer.WriteLine();
                    WritePrivateCtor(writer, contract);

                    writer.Write("public {0} (", contract.Name);
                    WriteParameters(contract, writer);
                    writer.WriteLine(")");
                    writer.WriteLine("{");

                    writer.Indent += 1;
                    WriteAssignments(contract, writer);
                    writer.Indent -= 1;

                    writer.WriteLine("}");

                }
                writer.Indent -= 1;
                writer.WriteLine("}");
            }
            foreach (var entity in context.Entities)
            {
                if ((entity.Name ?? "default") == "default")
                    continue;

                GenerateEntityInterface(entity, writer, "?", "public interface I{0}ApplicationService");
                GenerateEntityInterface(entity, writer, "!", "public interface I{0}State");
            }
        }
Exemplo n.º 4
0
 void WriteAssignments(Message message, CodeWriter writer)
 {
     foreach (var member in message.Members)
     {
         writer.WriteLine("{0} = {1};", GeneratorUtil.MemberCase(member.Name), GeneratorUtil.ParameterCase(member.Name));
     }
 }
Exemplo n.º 5
0
 void GenerateEntityInterface(Entity entity, CodeWriter writer, string member, string template)
 {
     var ms = member.Split(',');
     var matches = entity.Messages.Where(m => m.Modifiers.Select(s => s.Identifier).Intersect(ms).Any()).ToList();
     if (matches.Any())
     {
         writer.WriteLine();
         writer.WriteLine(template, entity.Name);
         writer.WriteLine("{");
         writer.Indent += 1;
         foreach (var contract in matches)
         {
             writer.WriteLine("void When({0} {1});", contract.Name, member == "!" ? "e" : "c");
         }
         writer.Indent -= 1;
         writer.WriteLine("}");
     }
 }
Exemplo n.º 6
0
 static void WritePrivateCtor(CodeWriter writer, Message contract)
 {
     var arrays = contract.Members.Where(p => p.Type.EndsWith("[]")).ToArray();
     if (!arrays.Any())
     {
         writer.WriteLine(@"{0} () {{}}", contract.Name);
     }
     else
     {
         writer.WriteLine(@"{0} ()
     {{", contract.Name);
         writer.Indent += 1;
         foreach (var array in arrays)
         {
             writer.WriteLine("{0} = new {1};",
                 GeneratorUtil.MemberCase(array.Name),
                 array.Type.Replace("[]", "[0]")
                 );
         }
         writer.Indent -= 1;
         writer.WriteLine("}");
     }
 }
Exemplo n.º 7
0
        public void Generate(Context context, IndentedTextWriter outer)
        {
            var writer = new CodeWriter(outer);
            if (!string.IsNullOrEmpty(Namespace))
            {
                writer.WriteLine("namespace {0}", Namespace);
                writer.WriteLine("{");
            }
            writer.Indent += 1;

            if (!string.IsNullOrEmpty(Region))
            {
                writer.WriteLine("#region {0}", Region);
            }

            WriteContext(writer, context);

            if (!string.IsNullOrEmpty(Region))
            {
                writer.WriteLine("#endregion");
            }

            writer.Indent -= 1;

            if (!string.IsNullOrEmpty(Namespace))
            {
                writer.WriteLine("}");
            }
        }