home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c017 / 7.ddi / GPPLIB.ZIP / GENCLASS < prev    next >
Encoding:
Text File  |  1988-08-17  |  1.3 KB  |  65 lines

  1. #!/bin/sh
  2. # shell script for generating classes from prototypes
  3. #
  4. # usage: genclass [-2] type1 {ref, val} [type2 {ref, val}] proto 
  5.  
  6.  
  7. # search in standard g++ prototype directory & in current
  8.  
  9. PROTODIR=/usr/local/lib/g++-proto
  10. CURRENTDIR=`pwd`
  11.  
  12. N=""
  13. T2=""
  14. T2ACC=""
  15.  
  16. case $1 in
  17.  -2) N="2"; shift;;
  18.   *) ;;
  19. esac
  20.  
  21. T1=$1
  22.  
  23. case $2 in
  24.  ref) T1ACC="\&";;
  25.  val) T1ACC=" ";;
  26.  *)   echo "Must specify type1 access: ref or val"; exit 1;;
  27. esac
  28.  
  29. case $N in
  30.  2) T2=$3;
  31.     case $4 in
  32.      ref) T2ACC="\&";;
  33.      val) T2ACC=" ";;
  34.      *)   echo "Must specify type2 access: ref or val"; exit 1;;
  35.     esac;
  36.     CLASS=$5;;
  37.  *) CLASS=$3;;
  38. esac
  39.  
  40. # .h and .cc parts done separately in case only a .h
  41.  
  42. HSRC=$CLASS.h.proto
  43. HOUT=$T1$T2$CLASS.h
  44.  
  45. if   test -f $CURRENTDIR/$HSRC
  46. then HSRC=$CURRENTDIR/$HSRC
  47. elif test -f $PROTODIR/$HSRC
  48. then HSRC=$PROTODIR/$HSRC
  49. else echo "genclass: $HSRC: no such file"; exit 1;
  50. fi
  51.  
  52. sed < $HSRC > $HOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/<U>/$T2/g" -e "s/<U&>/$T2$T2ACC/g"
  53.  
  54. CCSRC=$CLASS.cc.proto
  55. CCOUT=$T1$T2$CLASS.cc
  56.  
  57. if   test -f $CURRENTDIR/$CCSRC
  58. then CCSRC=$CURRENTDIR/$CCSRC
  59. elif test -f $PROTODIR/$CCSRC
  60. then CCSRC=$PROTODIR/$CCSRC
  61. else echo "genclass: no $CCSRC file"; exit 0;
  62. fi
  63.  
  64. sed < $CCSRC > $CCOUT -e "s/<T>/$T1/g" -e "s/<T&>/$T1$T1ACC/g" -e "s/<U>/$T2/g" -e "s/<U&>/$T2$T2ACC/g"
  65.