1 | #!/bin/bash
|
---|
2 | #
|
---|
3 | #
|
---|
4 |
|
---|
5 | if [ -z $1 ]; then
|
---|
6 | echo "Usage: $0 <Action.cpp>"
|
---|
7 | exit 1
|
---|
8 | fi
|
---|
9 |
|
---|
10 | DIR=`dirname $1`
|
---|
11 | ACTION=`basename $1 | awk -F"." {'print $1'} | awk -F"Action" {'print $1'}`
|
---|
12 | CATEGORY=`echo $DIR | awk -F"/" {'print $NF'} | awk -F"Action" {'print $1'}`
|
---|
13 | PARAMTYPES="#define paramtypes"
|
---|
14 | count=0
|
---|
15 | liste=`grep "void ${CATEGORY}${ACTION}(" $1 | awk -F"(" {'print $2'} | awk -F")" {'print $1'} | tr \ \# | sed -e "s/#*,#*/ /g" | sed -e "s/#*=#*/=/g"`
|
---|
16 | for paramtype in $liste; do
|
---|
17 | paramtype=`echo $paramtype | sed -e "s/^const#*//"`
|
---|
18 | ptype=`echo $paramtype | awk -F"=" {'print $1'} | rev | cut -d"#" -f2- | rev | tr -d \&\*`
|
---|
19 | PARAMTYPES="$PARAMTYPES ($ptype)"
|
---|
20 | ((count+=1))
|
---|
21 | done
|
---|
22 | PARAMTOKENS="#define paramtokens "`grep ValueStorage::getInstance\(\).setCurrentValue $1 | awk -F"(" {'print $3'} | awk -F"," {'print "("$1")"'}`
|
---|
23 | PARAMREFS="#define paramreferences "`grep ValueStorage::getInstance\(\).setCurrentValue $1 | awk -F"," {'print $2'} | awk -F")" {'print "("$1")"'} | tr -d \ `
|
---|
24 | PARAMTOKENS=`echo $PARAMTOKENS | sed -e "s#\n##g"`
|
---|
25 | PARAMREFS=`echo $PARAMREFS | sed -e "s#\n##g"`
|
---|
26 | if [ $count == 0 ]; then
|
---|
27 | PARAMTYPES="#undefine paramtypes"
|
---|
28 | PARAMTOKENS="#undefine paramtokens"
|
---|
29 | PARAMREFS="#undefine paramreferences"
|
---|
30 | fi
|
---|
31 | STATETYPES="#define statetypes"
|
---|
32 | STATEREFS="#define statereferences"
|
---|
33 | rcount=1
|
---|
34 | liste=`grep "^[[:blank:]]*${CATEGORY}${ACTION}State(" $1 | awk -F"(" {'print $2'} | awk -F")" {'print $1'} | tr \ \# | tr , \ `
|
---|
35 | for statetype in $liste; do
|
---|
36 | statetype=`echo $statetype | sed -e "s/^const#*//"`
|
---|
37 | ptype=`echo $statetype | sed -e "s/#*\&*_/_/" | awk -F"_" {'print $1'} | tr \# \ `
|
---|
38 | pstate=`echo $statetype | awk -F"_" {'print $2'} | tr \# \ `
|
---|
39 | STATETYPES="$STATETYPES ($ptype)"
|
---|
40 | STATEREFS="$STATEREFS ($pstate)"
|
---|
41 | ((rcount+=1))
|
---|
42 | if [ $rcount -ge $count ]; then
|
---|
43 | break
|
---|
44 | fi
|
---|
45 | done
|
---|
46 | if [ $rcount == 1 ]; then
|
---|
47 | STATETYPES="#undefine statetypes"
|
---|
48 | STATEREFS="#undefine statereferences"
|
---|
49 | fi
|
---|
50 |
|
---|
51 | TOKEN=`grep '::NAME\[\] =' $1 | awk -F"=" {'print $2'} | tr -d \ \;`
|
---|
52 | action=`echo ${ACTION}Action | tr [a-z] [A-Z]`
|
---|
53 | start=`grep -n "#define $action" ${DIR}/${ACTION}Action.hpp | awk -F":" {'print $1'}`
|
---|
54 | end=`grep -n "^void ${CATEGORY}${ACTION}(" ${DIR}/${ACTION}Action.hpp | awk -F":" {'print $1'}`
|
---|
55 | ((end-=1))
|
---|
56 | bitmore=$((end-start))
|
---|
57 | if [ $bitmore != 0 ]; then
|
---|
58 | INCLUDES=`head -n $end ${DIR}/${ACTION}Action.hpp | tail -n $bitmore | grep -v "/Action.hpp" | sed -e '/^$/d'`
|
---|
59 | else
|
---|
60 | INCLUDES=""
|
---|
61 | fi
|
---|
62 |
|
---|
63 | cat >${DIR}/${ACTION}Action.def <<EOF
|
---|
64 | /*
|
---|
65 | * ${ACTION}Action.def
|
---|
66 | *
|
---|
67 | * Created on: Aug 26, 2010
|
---|
68 | * Author: heber
|
---|
69 | */
|
---|
70 |
|
---|
71 | // all includes and forward declarations necessary for non-integral types below
|
---|
72 | $INCLUDES
|
---|
73 |
|
---|
74 | // i.e. there is an integer with variable name Z that can be found in
|
---|
75 | // ValueStorage by the token "Z" -> first column: int, Z, "Z"
|
---|
76 | // "undefine" if no parameters are required
|
---|
77 | $PARAMTYPES
|
---|
78 | $PARAMTOKENS
|
---|
79 | $PARAMREFS
|
---|
80 |
|
---|
81 | $STATETYPES
|
---|
82 | $STATEREFS
|
---|
83 |
|
---|
84 | // some defines for all the names, you may use ACTION, STATE and PARAMS
|
---|
85 | #define CATEGORY $CATEGORY
|
---|
86 | #define ACTIONNAME $ACTION
|
---|
87 | #define TOKEN $TOKEN
|
---|
88 |
|
---|
89 | EOF
|
---|