示例#1
0
        public override void GenerateCodeForStringTable(TranspilerContext sb, StringTableBuilder stringTable)
        {
            List <string> names  = stringTable.Names;
            List <string> values = stringTable.Values;
            int           total  = names.Count;

            for (int i = 0; i < total; ++i)
            {
                sb.Append("int* ");
                sb.Append(names[i]);
                sb.Append(';');
                sb.Append(this.NewLine);
            }
            sb.Append("void populate_string_table_for_");
            sb.Append(stringTable.Prefix);
            sb.Append("()");
            sb.Append(this.NewLine);
            sb.Append('{');
            sb.Append(this.NewLine);
            for (int i = 0; i < total; ++i)
            {
                sb.Append('\t');
                sb.Append(names[i]);
                sb.Append(" = String_from_utf8(");
                sb.Append(Common.Util.ConvertStringValueToCode(values[i]).Replace("%", "%%"));
                sb.Append(");");
                sb.Append(this.NewLine);
            }
            sb.Append('}');
            sb.Append(this.NewLine);
            sb.Append(this.NewLine);
        }
 // Overridden in languages that can't allocate strings in the local scope.
 // For example, strings allocated in C will be reclaimed once the scope ends.
 public virtual void GenerateCodeForStringTable(TranspilerContext sb, StringTableBuilder stringTable)
 {
     throw new NotSupportedException();
 }