1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
#!/bin/awk
#
# This awk script creates the function pointer initializations
# for the C callbacks; eg:
# rts/ExternalAI/Interface/SSkirmishAICallback.h
# rts/ExternalAI/Interface/SAIInterfaceCallback.h
#
BEGIN {
# initialize things
# define the field splitter(-regex)
#FS="[ \t]+"
}
# Some utility functions
function ltrim(s) { sub(/^[ \t]+/, "", s); return s; }
function rtrim(s) { sub(/[ \t]+$/, "", s); return s; }
function trim(s) { return rtrim(ltrim(s)); }
function printInit(functionName) {
print(" callback->" functionName " = &_" functionName ";")
}
/^.*CALLING_CONV.*$/ {
line = trim($0);
doWrapp = !match(line, /^[ \t]*\/\/.*/);
if (doWrapp) {
numParts = split(line, parts, /\(CALLING_CONV \*/);
if (numParts == 2) {
numParts2 = split(parts[2], parts2, /\)\(/);
if (numParts2 == 2) {
fn = parts2[1];
printInit(fn);
}
}
}
}
END {
# finalize things
}
|