File: mkdoffreemasks.sh

package info (click to toggle)
alberta 3.1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 19,176 kB
  • sloc: ansic: 135,836; cpp: 6,601; makefile: 2,801; sh: 333; fortran: 180; lisp: 177; xml: 30
file content (86 lines) | stat: -rwxr-xr-x 1,830 bytes parent folder | download | duplicates (5)
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