⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 genclass.extnsn

📁 早期freebsd实现
💻 EXTNSN
字号:
#!/bin/csh# shell script for generating classes from prototypes## usage: genclass protodir cdir extension type {ref | val} [type {ref | val}] ...  proto #set PROGRAM_NAME=$0set USAGE="Usage: ${PROGRAM_NAME} '<Proto dir> <C dir> <C file extension> <type> {ref | val} [<type> {ref | val}] ...  <prototype>'";# there are at least 6 parameters, plus the program name (total of seven)if (($#argv < 6) || ($#argv % 2) > 0) then  echo "${PROGRAM_NAME}: invalid parameter count";  echo "${USAGE}";  exit 1;endifset PWD=`pwd`/# get the prototype directory, the C directory and the C file extension (.h or .cc)# from the argument listset PROTODIR = $1; 	shift;set OUTDIR = $1; 	shift;set EXTNSN = $1; 	shift;if ($PROTODIR !~ */) then  set PROTODIR = $PROTODIR/endifif ($OUTDIR !~ */) then  set OUTDIR = $OUTDIR/endifset FILE_NAME=;set CLASS_NAME=;set TYPES=;set VALS=;# loop through the parameters, pulling <type> <reference type> pairs off the # argument list.while ( $#argv > 2 )  set TYPES = (${TYPES} $1)  set VALS = (${VALS} $2)  set FILE_NAME = "${FILE_NAME}$1."  set CLASS_NAME = "${CLASS_NAME}$1"  if (($2 != "ref") && ($2 != "val")) then    echo "${PROGRAM_NAME}: invalid reference type" ;     echo ${USAGE} ;     exit 1;    endif  shift;   shift;endset CLASS = $1set FILE_NAME = "${FILE_NAME}${CLASS}.${EXTNSN}"set CLASS_NAME = "${CLASS_NAME}${CLASS}"set HSRC      = "$CLASS.hP"set SRC       = "$CLASS.${EXTNSN}P"set OUT       = "$OUTDIR$FILE_NAME"if ( (-f $PWD$SRC) && (-r $PWD$SRC) && (-f $PWD$HSRC) ) then  set PSRC = $PWD$SRC  set HSRC = $PWD$HSRCelse if ( (-f $PROTODIR$SRC) && (-r $PROTODIR$SRC) && (-f $PROTODIR$HSRC) ) then  set PSRC = $PROTODIR$SRC  set HSRC = $PROTODIR$HSRCelse   echo "${PROGRAM_NAME}: $SRC: no such file";   exit 1;endifset SEARCH_STRING = (generic class $CLASS\\\[.\*\\\])set SED_SCRIPT = /tmp/genclass.$$# this is so we can handle unreformed files from the distributionif (1) then  set TYPE_LIST = T  if ( $#TYPES == 2 ) set TYPE_LIST = (${TYPE_LIST} C)else  # get TYPE_LIST somehow... ???  set TEMP = "`grep $SEARCH_STRING $HSRC`"   set TYPE_LIST=(`expr $TEMP : \[^\\\[\]\*\\\[\(.*\)\\\].\* | tr ',' ' '`);  unset TEMP  echo "s/$SEARCH_STRING/class $CLASS_NAME/g" >> SED_SCRIPTendifset DUMMY=0while ( $DUMMY < $#TYPES )  @ DUMMY++  set PREAMBLE = 's/<';  set MIDDLE = '>/';  set POSTAMBLE = '/g';  echo ${PREAMBLE}${TYPE_LIST[$DUMMY]}${MIDDLE}${TYPES[$DUMMY]}${POSTAMBLE} >>$SED_SCRIPT  set MIDDLE = "&$MIDDLE"  if ($VALS[$DUMMY] == "ref") set POSTAMBLE = "\&$POSTAMBLE";  echo ${PREAMBLE}${TYPE_LIST[$DUMMY]}${MIDDLE}${TYPES[$DUMMY]}${POSTAMBLE} >>$SED_SCRIPTendsed -f $SED_SCRIPT < $PSRC > $OUT rm -f $SED_SCRIPT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -