78 lines
2.4 KiB
Awk
Executable File
78 lines
2.4 KiB
Awk
Executable File
#Saluton Emacson! Bonvolu elekti -*- mode: awk; -*-. Dankon.
|
|
|
|
BEGIN{
|
|
headerfile="wrapped.h";
|
|
deffile="wrapdef.h";
|
|
structfile="wrapstruct.h";
|
|
tmpffile="wraptmpf.h";
|
|
FS=";";
|
|
WARNING="/* Automatically generated file. Do not edit. Edit wrapawk/wrapfunc.inp. */";
|
|
print WARNING > headerfile;
|
|
print "#ifndef WRAPPED_H" > headerfile;
|
|
print "#define WRAPPED_H" > headerfile;
|
|
print WARNING > deffile;
|
|
print "#ifndef WRAPDEF_H" > deffile;
|
|
print "#define WRAPDEF_H" > deffile;
|
|
print WARNING > tmpffile;
|
|
print "#ifndef WRAPTMPF_H" > tmpffile;
|
|
print "#define WRAPTMPF_H" > tmpffile;
|
|
print WARNING > structfile;
|
|
print "#ifndef WRAPSTRUCT_H" > structfile;
|
|
print "#define WRAPSTRUCT_H" > structfile;
|
|
print "struct next_wrap_st next_wrap[]= {" > structfile;
|
|
}
|
|
|
|
/\/\*/{
|
|
}
|
|
/^(\#)/{
|
|
print $0 > structfile;
|
|
print $0 > tmpffile;
|
|
print $0 > deffile;
|
|
print $0 > headerfile;
|
|
|
|
}
|
|
/^[^\/].*;.*;.*;/{
|
|
name=$1;
|
|
ret=$2;
|
|
argtype=$3;
|
|
argname=$4;
|
|
MACRO=$5;
|
|
if(MACRO){
|
|
print " {(void(*))&NEXT_" MACRO "_NOARG, " name "_QUOTE}," > structfile;
|
|
print "extern " ret " (*NEXT_" MACRO "_NOARG)" argtype ";" > headerfile;
|
|
print ret " (*NEXT_" MACRO "_NOARG)" argtype "=TMP_" MACRO ";"> deffile;
|
|
|
|
print ret " TMP_" MACRO, argtype "{" > tmpffile;
|
|
print " load_library_symbols();" > tmpffile;
|
|
print " return NEXT_" MACRO "_NOARG " argname ";" > tmpffile;
|
|
print "}" > tmpffile;
|
|
print "" > tmpffile;
|
|
} else {
|
|
print " {(void(*))&next_" name ", \"" name "\"}," > structfile;
|
|
print "extern " ret " (*next_" name ")" argtype ";" > headerfile;
|
|
print ret " (*next_" name ")" argtype "=tmp_" name ";"> deffile;
|
|
|
|
print ret " tmp_" name, argtype "{" > tmpffile;
|
|
print " load_library_symbols();" > tmpffile;
|
|
print " return next_" name, argname ";" > tmpffile;
|
|
print "}" > tmpffile;
|
|
print "" > tmpffile;
|
|
}
|
|
}
|
|
|
|
/^ *$/{
|
|
print > structfile;
|
|
print > headerfile;
|
|
print > deffile;
|
|
print > tmpffile;
|
|
}
|
|
|
|
END{
|
|
print " {NULL, NULL}," > structfile;
|
|
print "};" > structfile;
|
|
print "#endif" > structfile;
|
|
print "#endif" > tmpffile;
|
|
print "#endif" > deffile;
|
|
print "#endif" > headerfile;
|
|
}
|