1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
#! /bin/sh
DOF_FREE_SIZE=$1
MAX_STRIDE=$2
FW=$(( ${DOF_FREE_SIZE} / 4 ))
PRINT="printf"
#echo -n -e
ALLBITS=$(( (1 << ${DOF_FREE_SIZE}) - 1 ))
if test ${ALLBITS} -eq 0; then
ALLBITS=$(( ~0 ))
fi
WRAP=$(( (80-4) / (${FW} + 4) ))
if test ${MAX_STRIDE} -gt 1; then
cat <<EOF
/* automatically generated by configure, do not edit */
#ifndef _ALBERTA_STRIDE_DOF_FREE_BIT_H_
#define _ALBERTA_STRIDE_DOF_FREE_BIT_H_
EOF
${PRINT} '\n#define MAX_STRIDE '"${MAX_STRIDE}"'\n\n'
cat <<EOF
const DOF_FREE_UNIT dof_stride_free_bit[MAX_STRIDE][DOF_FREE_SIZE] = {
EOF
else
cat <<EOF
/* automatically generated by configure, do not edit */
#ifndef _ALBERTA_DOF_FREE_BIT_H_
#define _ALBERTA_DOF_FREE_BIT_H_
const DOF_FREE_UNIT dof_free_bit[DOF_FREE_SIZE] = {
EOF
fi
STRIDE=1
while test ${STRIDE} -le ${MAX_STRIDE}; do
MASK=0
BIT=0
while test ${BIT} -lt ${STRIDE}; do
MASK=$(( ${MASK} | (1 << ${BIT}) ))
BIT=$(( ${BIT} + 1 ))
done
BIT=0
if test ${MAX_STRIDE} -gt 1; then
${PRINT} ' {\n '
else
${PRINT} ' '
fi
while test ${BIT} -lt ${DOF_FREE_SIZE}; do
VALUE=$(( (${MASK} << ${BIT}) & ${ALLBITS} ))
${PRINT} '0x%0'${FW}'x' ${VALUE}
BIT=$(( ${BIT} + 1 ))
if test ${BIT} -lt $(( ${DOF_FREE_SIZE} + ${MAX_STRIDE} - 1 )); then
if test $(( ${BIT} % ${WRAP} )) -eq 0; then
if test ${MAX_STRIDE} -gt 1; then
${PRINT} ',\n '
else
${PRINT} ',\n '
fi
else
${PRINT} ', '
fi
fi
done
if test ${MAX_STRIDE} -gt 1; then
${PRINT} '\n }'
fi
if test ${STRIDE} -lt ${MAX_STRIDE}; then
${PRINT} ',\n'
else
${PRINT} '\n'
fi
STRIDE=$(( ${STRIDE} + 1 ))
done
if test ${MAX_STRIDE} -gt 1; then
cat <<EOF
};
#endif /* _ALBERTA_DOF_STRIDE_FREE_BIT_H_ */
EOF
else
cat <<EOF
};
#endif /* _ALBERTA_DOF_FREE_BIT_H_ */
EOF
fi
|