Files
Mozilla/mozilla/xpcom/reflect/xptcall/public/genstubs.pl
jband%netscape.com df6496d054 transposed two letters in a comment
git-svn-id: svn://10.0.0.236/trunk@41008 18797224-902f-48f8-a5cc-f745e15eee43
1999-07-24 21:53:11 +00:00

69 lines
1.9 KiB
Perl

#!/usr/local/bin/perl
# This is used to generate stub entry points. We generate a file to
# be included in the declaraion and a file to be used for expanding macros
# to represent the implementation of the stubs.
#
# if "$entry_count" is ever changed and the .inc files regenerated then
# the following issues need to be addressed:
#
# 1) Alpha NT has a .def file that lists exports by symbol. It will need
# updating.
# 2) The current Linux ARM code has a limitation of only having 256-3 stubs
#
# more dependencies???
#
$entry_count = 128;
$sentinel_count = 10;
$decl_name = "xptcstubsdecl.inc";
$def_name = "xptcstubsdef.inc";
##
## Write the declarations include file
##
die "Can't open $decl_name" if !open(OUTFILE, ">$decl_name");
print OUTFILE "/* generated file - DO NOT EDIT */\n\n";
print OUTFILE "/* includes ",$entry_count," stub entries, and ",
$sentinel_count," sentinel entries */\n\n";
print OUTFILE "/*\n";
print OUTFILE "* declarations of normal stubs...\n";
print OUTFILE "* 0 is QueryInterface\n";
print OUTFILE "* 1 is AddRef\n";
print OUTFILE "* 2 is Release\n";
print OUTFILE "*/\n";
for($i = 0; $i < $entry_count; $i++) {
print OUTFILE "XPTC_EXPORT NS_IMETHOD Stub",$i+3,"();\n";
}
print OUTFILE "\n/* declarations of sentinel stubs */\n";
for($i = 0; $i < $sentinel_count; $i++) {
print OUTFILE "XPTC_EXPORT NS_IMETHOD Sentinel",$i,"();\n";
}
close(OUTFILE);
##
## Write the definitions include file. This assumes a macro will be used to
## expand the entries written...
##
die "Can't open $def_name" if !open(OUTFILE, ">$def_name");
print OUTFILE "/* generated file - DO NOT EDIT */\n\n";
print OUTFILE "/* includes ",$entry_count," stub entries, and ",
$sentinel_count," sentinel entries */\n\n";
for($i = 0; $i < $entry_count; $i++) {
print OUTFILE "STUB_ENTRY(",$i+3,")\n";
}
for($i = 0; $i < $sentinel_count; $i++) {
print OUTFILE "SENTINEL_ENTRY(",$i,")\n";
}