1 1.1 christos #! /bin/sh 2 1.1 christos 3 1.2 christos if [ -z "$1" ]; then 4 1.2 christos echo "Usage: $0 nodes.h" 1>&2 5 1.2 christos exit 1 6 1.2 christos fi 7 1.2 christos 8 1.2 christos NODES=$1 9 1.2 christos 10 1.2 christos test -t 1 && exec > nodenames.h 11 1.1 christos 12 1.1 christos echo "#ifdef DEBUG" 13 1.1 christos echo ' 14 1.1 christos /* 15 1.1 christos * Automatically generated by '"$0"' 16 1.1 christos * DO NOT EDIT. Do Not "cvs add". 17 1.1 christos */ 18 1.1 christos ' 19 1.1 christos 20 1.2 christos MAX=$(awk < "$NODES" ' 21 1.1 christos /#define/ { 22 1.1 christos if ($3 > MAX) MAX = $3 23 1.1 christos } 24 1.1 christos END { print MAX } 25 1.1 christos ') 26 1.1 christos 27 1.1 christos echo 28 1.2 christos echo '#ifdef DEFINE_NODENAMES' 29 1.1 christos echo "STATIC const char * const NodeNames[${MAX} + 1] = {" 30 1.1 christos 31 1.2 christos grep '^#define' "$NODES" | sort -k2n | while read define name number opt_comment 32 1.1 christos do 33 1.1 christos : ${next:=0} 34 1.1 christos while [ "$number" -gt "$next" ] 35 1.1 christos do 36 1.1 christos echo ' "???",' 37 1.1 christos next=$(( next + 1)) 38 1.1 christos done 39 1.1 christos echo ' "'"$name"'",' 40 1.1 christos next=$(( number + 1 )) 41 1.1 christos done 42 1.1 christos 43 1.1 christos echo "};" 44 1.2 christos echo '#else' 45 1.2 christos echo "extern const char * const NodeNames[${MAX} + 1];" 46 1.2 christos echo '#endif' 47 1.1 christos echo 48 1.1 christos echo '#define NODETYPENAME(type) \' 49 1.1 christos echo ' ((unsigned)(type) <= '"${MAX}"' ? NodeNames[(type)] : "??OOR??")' 50 1.1 christos echo 51 1.1 christos echo '#endif' 52