|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T g
Length: 2504 (0x9c8) Types: TextFile Names: »genclass.sh«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89 └─⟦cc8755de2⟧ »./libg++-1.36.1.tar.Z« └─⟦23757c458⟧ └─⟦this⟧ »libg++/genclass.sh«
#!/bin/sh # 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=/usr/local/lib/g++-include CURRENTDIR=`pwd` N="1" T2="" T2ACC="" case $1 in -2) N="2"; shift;; *) ;; esac T1=$1; T1NAME=$T1.; T1SEDNAME=$T1; case $2 in ref) T1ACC="\&";; val) T1ACC=" ";; *) echo "Must specify type1 access: ref or val"; exit 1;; esac case $N in 2) T2=$3; T2NAME=$T2.; T2SEDNAME=$T2; case $4 in ref) T2ACC="\&";; val) T2ACC=" ";; *) echo "Must specify type2 access: ref or val"; exit 1;; esac; CLASS=$5;; *) CLASS=$3;; esac REPLACEPREFIX="N" DFLTPREFIX=$T1NAME$T2NAME case $# in 3) PREFIX=$DFLTPREFIX;; 5) PREFIX=$DFLTPREFIX;; 4) PREFIX=$4; REPLACEPREFIX="Y";; 6) PREFIX=$6; REPLACEPREFIX="Y";; *) echo "bad arguments"; exit 1 ;; esac HSRC=$CLASS.hP CCSRC=$CLASS.ccP HOUT=$PREFIX$CLASS.h; CCOUT=$PREFIX$CLASS.cc ; # .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; fi CASES=$N$REPLACEPREFIX case $CASES in 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";; esac 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; fi case $CASES in 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";; esac exit 0