You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
#!/bin/sh
|
|
# Usage: digit_header < pi.h.in > pi.h
|
|
# converts a file containing the digits of pi (in hex) to
|
|
# a header file suitable for inclusion.
|
|
|
|
bytes=''
|
|
while true; do
|
|
IFS='@' read line || break
|
|
bytes="$bytes "`echo "$line" | sed -e 's,//.*$,,' -e 's,[{};], ,g' -e 's,D(, ,g' -e 's/[,)]/ /g' -e 's,0x, ,g'`
|
|
done
|
|
bytes=`echo "$bytes" | sed -e 's, *, ,g'`
|
|
|
|
blocks1=`echo " $bytes" | sed -e 's/ \([0-9A-Za-z]\+\)/ D1(0x\1),/g'`
|
|
blocks2=`echo " $bytes" | sed -e 's/ \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\)/ D2(0x\1,0x\2),/g'`
|
|
blocks4=`echo " $bytes" | sed -e 's/ \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\)/ D4(0x\1,0x\2,0x\3,0x\4),/g'`
|
|
blocks8=`echo " $bytes" | sed -e 's/ \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\) \([0-9A-Za-z]\+\)/ D8(0x\1,0x\2,0x\3,0x\4,0x\5,0x\6,0x\7,0x\8),/g'`
|
|
|
|
reverse () {
|
|
eval "l=\$$1"
|
|
r=''; for word in $l; do r="$word $r"; done
|
|
eval "$2=\$r"
|
|
}
|
|
|
|
reverse blocks1 revblocks1
|
|
reverse blocks2 revblocks2
|
|
reverse blocks4 revblocks4
|
|
reverse blocks8 revblocks8
|
|
|
|
echo "{"
|
|
echo "#if CL_DS_BIG_ENDIAN_P"
|
|
echo " #if (intDsize==8)"
|
|
echo " "`echo "$blocks1" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo " #if (intDsize==16)"
|
|
echo " "`echo "$blocks2" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo " #if (intDsize==32)"
|
|
echo " "`echo "$blocks4" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo " #if (intDsize==64)"
|
|
echo " "`echo "$blocks8" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo "#else"
|
|
echo " #if (intDsize==8)"
|
|
echo " "`echo "$revblocks1" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo " #if (intDsize==16)"
|
|
echo " "`echo "$revblocks2" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo " #if (intDsize==32)"
|
|
echo " "`echo "$revblocks4" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo " #if (intDsize==64)"
|
|
echo " "`echo "$revblocks8" | sed -e 's/, *$//'`
|
|
echo " #endif"
|
|
echo "#endif"
|
|
echo "} ;"
|