blob: 1acb016ebd490ffdb94888496c24f8497125a365 [file] [log] [blame]
import 'dart:collection';
import 'dart:io';
final skip = HashSet.from(
[
'hb_color_get_alpha',
'hb_color_get_green',
'hb_color_get_blue',
'hb_color_get_red',
'hb_glyph_info_get_glyph_flags',
'hb_declval',
],
);
final extras = HashSet.from(
[
'lookup_standard_encoding_for_code',
'lookup_expert_encoding_for_code',
'lookup_expert_charset_for_sid',
'lookup_expert_subset_charset_for_sid',
'lookup_standard_encoding_for_sid',
'accelerator_t',
'get_seac_components',
'data_destroy_arabic',
],
);
void main() {
final uniqueNames = HashSet<String>();
var header = StringBuffer();
header.writeln('// clang-format off');
header.writeln('// hb_*');
var contents = File('harfbuzz_names.txt').readAsStringSync();
RegExp exp = RegExp(r'\s(hb_([a-zA-Z0-9_]*))', multiLine: true);
Iterable<RegExpMatch> matches = exp.allMatches(contents);
for (final m in matches) {
var symbolName = m[1];
if (symbolName == null ||
skip.contains(symbolName) ||
uniqueNames.contains(symbolName)) {
continue;
}
uniqueNames.add(symbolName);
header.writeln('#define $symbolName rive_$symbolName');
}
header.writeln('// _hb_*');
{
RegExp exp = RegExp(r'\s_(hb_([a-zA-Z0-9_]*))', multiLine: true);
Iterable<RegExpMatch> matches = exp.allMatches(contents);
for (final m in matches) {
var symbolName = m[1];
if (symbolName == null ||
skip.contains(symbolName) ||
uniqueNames.contains(symbolName)) {
continue;
}
uniqueNames.add(symbolName);
header.writeln('#define $symbolName rive_$symbolName');
}
}
header.writeln('// __hb_*');
{
RegExp exp = RegExp(r'\s_(_hb_([a-zA-Z0-9_]*))', multiLine: true);
Iterable<RegExpMatch> matches = exp.allMatches(contents);
for (final m in matches) {
var symbolName = m[1];
if (symbolName == null ||
skip.contains(symbolName) ||
uniqueNames.contains(symbolName)) {
continue;
}
uniqueNames.add(symbolName);
header.writeln('#define $symbolName rive_$symbolName');
}
}
for (final symbolName in extras) {
header.writeln('#define $symbolName rive_$symbolName');
}
File('../rive_harfbuzz_renames.h').writeAsStringSync(header.toString());
}