genlist.sh   [plain text]


#!/bin/sh

tmp=/tmp/gl.$$
nm $* | egrep '(Widget|Obj|Object)Class' | \
awk '{ if ($2 == "D" || $2 == "G") print $3; }' | sed -e 's/^_//' | \
(cat - ; echo "objectClass") | sort -u | egrep -v 'ClassRec$' | \
egrep -v 'vPanedWidgetClass$' | \
egrep -v 'ascii(Disk|String)WidgetClass$' | \
awk '
{
    printf "extern WidgetClass %s;\n", $1;
    printf "{ \"%s\", &%s },\n", $1, $1;
}' | sed -e 's/WidgetClass"/"/' -e 's/ObjClass"/"/' \
	 -e 's/ObjectClass"/"/' -e 's/objectClass"/object"/' \
	 -e 's/widgetClass"/widget"/' >$tmp

cat <<EOF
/*
 * This file is generated by the genlist.sh script and contains an array of
 * all the widgets in Athena widget set.
 *
 * \$XConsortium\$
 */
#include <X11/IntrinsicP.h>
#include <X11/Xmu/WidgetNode.h>

EOF
egrep '^extern WidgetClass' $tmp
echo ""
cat <<EOF
XmuWidgetNode XawWidgetArray[] = {
EOF
egrep '^{' $tmp
cat <<EOF
};

int XawWidgetCount = XtNumber(XawWidgetArray);

EOF

rm $tmp