tools/combine: fold identical 'typedef struct' declarations

This commit is contained in:
Bert Belder 2019-06-12 19:12:49 +02:00
parent 06dd355e33
commit 017fa62aac
No known key found for this signature in database
GPG Key ID: 7A77887B2E2ED461

View File

@ -102,6 +102,15 @@ function include_sys(line, filename) {
sys_included[key] = true;
}
const declarations = {};
function declare(line) {
const key = line.replace(/\s+/g, ' ').trim();
if (declarations[key]) {
return ''; // Declared earlier.
}
declarations[key] = true;
}
let source = [];
source = source
@ -124,7 +133,8 @@ for (let i = 0; i < files.length; i++) {
const patterns = [
{ re: /^\s*#include\s*"([^"]*)".*$/, fn: include },
{ re: /^\s*#include\s*<([^"]*)>.*$/, fn: include_sys }
{ re: /^\s*#include\s*<([^"]*)>.*$/, fn: include_sys },
{ re: /^\s*typedef\s+struct\s+\w+\s+\w+\s*;\s*$/, fn: declare }
];
restart: for (let lno = 0; lno < source.length; ) {