Files
libgtop/perl/Names/names.awk
Martin Baulig d1f3444da1 New directory. Defines `Libgtop::Names' module with is the Perl interface
1998-10-10  Martin Baulig  <martin@home-of-linux.org>

	* Names: New directory. Defines `Libgtop::Names' module with
	is the Perl interface of the LibGTop names library.
1998-10-10 21:39:11 +00:00

89 lines
2.7 KiB
Awk

BEGIN {
print "/* Names.xs */";
print "/* This is a generated file. Please modify `names.awk' */";
print "";
print "#ifdef __cplusplus";
print "extern \"C\" {";
print "#endif";
print "#include \"EXTERN.h\"";
print "#include \"perl.h\"";
print "#include \"XSUB.h\"";
print "#ifdef __cplusplus";
print "}";
print "#endif";
print "";
print "#undef PACKAGE";
print "";
print "#include <glibtop.h>";
print "#include <glibtop/union.h>";
print "#include <glibtop/xmalloc.h>";
print "";
print "MODULE = Libgtop::Names\t\tPACKAGE = Libgtop::Names";
print "";
print "PROTOTYPES: ENABLE";
print "";
}
function output(line) {
split (line, line_fields, /\|/);
retval = line_fields[1];
feature = line_fields[2];
element_def = line_fields[3];
param_def = line_fields[4];
orig = feature; sub(/^@/,"",feature);
space = feature; gsub(/./," ",space);
features[feature] = feature;
}
/^[^#]/ { output($0) }
END {
print "BOOT:";
print "{";
print "\tHV *names = perl_get_hv (\"Libgtop::Names::names\", TRUE);";
print "\tHV *labels = perl_get_hv (\"Libgtop::Names::labels\", TRUE);";
print "\tHV *types = perl_get_hv (\"Libgtop::Names::types\", TRUE);";
print "\tHV *descriptions = perl_get_hv (\"Libgtop::Names::descriptions\", TRUE);";
print "\tAV *array;";
print "\tSV *ref;";
print "\tint i;";
for (feature in features) {
print "\tarray = newAV ();";
print "\tref = newRV_inc ((SV*)array);";
print "\tfor (i = 0; i < GLIBTOP_MAX_"toupper(feature)"; i++)";
print "\t{";
print "\t\tav_push (array, newSVpv ((char*)glibtop_names_"feature" [i], 0));";
print "\t}";
print "\thv_store (names, \""feature"\", "length(feature)+1", ref, 0);";
print "\tarray = newAV ();";
print "\tref = newRV_inc ((SV*)array);";
print "\tfor (i = 0; i < GLIBTOP_MAX_"toupper(feature)"; i++)";
print "\t{";
print "\t\tav_push (array, newSVpv ((char*)_(glibtop_labels_"feature" [i]), 0));";
print "\t}";
print "\thv_store (labels, \""feature"\", "length(feature)+1", ref, 0);";
print "\tarray = newAV ();";
print "\tref = newRV_inc ((SV*)array);";
print "\tfor (i = 0; i < GLIBTOP_MAX_"toupper(feature)"; i++)";
print "\t{";
print "\t\tav_push (array, newSViv (glibtop_types_"feature" [i]));";
print "\t}";
print "\thv_store (types, \""feature"\", "length(feature)+1", ref, 0);";
print "\tarray = newAV ();";
print "\tref = newRV_inc ((SV*)array);";
print "\tfor (i = 0; i < GLIBTOP_MAX_"toupper(feature)"; i++)";
print "\t{";
print "\t\tav_push (array, newSVpv ((char*)_(glibtop_descriptions_"feature" [i]), 0));";
print "\t}";
print "\thv_store (descriptions, \""feature"\", "length(feature)+1", ref, 0);";
}
print "}";
print "";
}