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(); }