blob: cf07ea7d55e70a5374c5cc0bc034e6afcdde8dba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
$bitfield = '\d+:\d+|[A-Z_a-z]+';
$id = '[^()]+|[^()]*(?:(\((?:[^()]++|(?-1))*+\))[^()]*)*';
$hex = '0x[0-9a-fA-F]+';
$sub = "";
$name = "";
undef $prev;
while (<>) {
s/\(0 ?\? ?($bitfield)\)/__gcmSTART(\1)/g;
s/\(1 ?\? ?($bitfield)\)/__gcmEND(\1)/g;
s/\(__gcmEND\(($bitfield)\) ?- ?__gcmSTART\(\1\) ?\+ ?1\)/__gcmGETSIZE(\1)/g;
s/\(\(gctUINT32\) ?\(\(__gcmGETSIZE\(($bitfield)\) ?== ?32\) ?\? ?~0 ?: ?\(~\(~0 ?<< ?__gcmGETSIZE\((?-1)\)\)\)\)\)/__gcmMASK(\1)/g;
s/\(\(\(gctUINT32\) ?\(($id)\)\) ?\<\< ?__gcmSTART\((?<field>$bitfield)\)\)/__gcmALIGN(\1, $+{field})/g;
print;
}
|