예제 #1
0
        public DataType VisitTemplate(SerializedTemplate sTemplate)
        {
            //$TODO: Reko's type system doesn't encompass templated / generic
            // types yet, so we fake a template instance.
            var dts = sTemplate.TypeArguments.Select(ta => ta.Accept(this));

            return(new StructureType
            {
                Name = $"{sTemplate.Name}<{string.Join(",", dts)}>",
            });
        }
예제 #2
0
        private List <object> Prefix()
        {
            var prefixes = new List <object>();

            if (Peek('S'))
            {
                prefixes.AddRange(Substitution());
                return(prefixes);
            }

            while (true)
            {
                char c = str[i];
                if (Char.IsDigit(str[i]))
                {
                    var n = SourceName();
                    if (Peek('I'))
                    {
                        // n is the name of a template.
                        AddSubstitution(n);
                        var args    = TemplateArgs();
                        var tmplate = new SerializedTemplate(new string[0], n, args);
                        AddSubstitution(tmplate);
                        prefixes.Add(tmplate);
                        return(prefixes);
                    }
                    else if (Peek('D') || Peek('C'))
                    {
                        prefixes.Add(n);
                        return(prefixes);
                    }
                    else
                    {
                        AddSubstitution(new TypeReference_v1 {
                            TypeName = n
                        });
                    }
                }
                else
                {
                    break;
                }
            }
            return(prefixes);
        }
예제 #3
0
            public StringBuilder VisitTemplate(SerializedTemplate template)
            {
                var n = name;

                sb.Append(template.Name);
                sb.Append("<");
                var sep = "";

                foreach (var typeArg in template.TypeArguments)
                {
                    sb.Append(sep);
                    typeArg.Accept(this);
                }
                sb.Append(">");

                name = n;
                if (name != null)
                {
                    sb.AppendFormat(" {0}", name);
                }
                return(sb);
            }
예제 #4
0
 public DataType VisitTemplate(SerializedTemplate serializedTemplate)
 {
     throw new NotImplementedException();
 }
예제 #5
0
 public int VisitTemplate(SerializedTemplate template)
 {
     throw new NotImplementedException();
 }