# shell script for generating classes from prototypes
# usage: genclass [-2] type1 {ref, val} [type2 {ref, val}] proto [out-prefix]
# search in standard g++ prototype directory & in current
PROTODIR
=${PROTODIR-/usr/local/lib/g++-include/gen}
*) echo "Must specify type1 access: ref or val"; exit 1;;
T2NAME
=$T2.
; T2SEDNAME
=$T2;
*) echo "Must specify type2 access: ref or val"; exit 1;;
DFLTPREFIX
=$T1NAME$T2NAME
4) PREFIX
=$4; REPLACEPREFIX
="Y";;
6) PREFIX
=$6; REPLACEPREFIX
="Y";;
*) echo "bad arguments"; exit 1 ;;
# .h and .cc parts done separately in case only a .h
if test -f $CURRENTDIR/$HSRC
then HSRC
=$CURRENTDIR/$HSRC
elif test -f $PROTODIR/$HSRC
then HSRC
=$PROTODIR/$HSRC
else echo "genclass: $HSRC: no such file"; exit 1;
2Y
) sed < $HSRC > $HOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/<C>/$T2/g" -e "s/<C&>/$T2$T2ACC/g" -e "s/$T1SEDNAME\.$T2SEDNAME\./$PREFIX/g" -e "s/$T1SEDNAME\./$PREFIX/g" -e "s/$T2SEDNAME\./$PREFIX/g" ;;
2N
) sed < $HSRC > $HOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/<C>/$T2/g" -e "s/<C&>/$T2$T2ACC/g" ;;
1Y
) sed < $HSRC > $HOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/$T1SEDNAME\./$PREFIX/g" ;;
*) sed < $HSRC > $HOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g";;
if test -f $CURRENTDIR/$CCSRC
then CCSRC
=$CURRENTDIR/$CCSRC
elif test -f $PROTODIR/$CCSRC
then CCSRC
=$PROTODIR/$CCSRC
else echo "genclass warning: class has a .h but no .cc file"; exit 0;
2Y
) sed < $CCSRC > $CCOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/<C>/$T2/g" -e "s/<C&>/$T2$T2ACC/g" -e "s/$T1SEDNAME\.$T2SEDNAME\./$PREFIX/g" -e "s/$T1SEDNAME\./$PREFIX/g" -e "s/$T2SEDNAME\./$PREFIX/g" ;;
2N
) sed < $CCSRC > $CCOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/<C>/$T2/g" -e "s/<C&>/$T2$T2ACC/g" ;;
1Y
) sed < $CCSRC > $CCOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/$T1SEDNAME\./$PREFIX/g" ;;
*) sed < $CCSRC > $CCOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g";;