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

#!/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 "} ;"