2013-02-16 16:14:39 -08:00

45 lines
985 B
Bash

#!/bin/sh
if [ ! -r "$1" -o -z "$2" ]; then
echo "Usage: $0 headerfile classname"
fi
name=`basename "$1" .h`
name="perl_${name}"
echo "Starting conversion of $2" >&2
{
cat "$1.xs"
cat "$1" \
| sed -e 's/inline//g' -e 's/const//g' -e 's/virtual//g' \
-e 's/{.*}/;/g' -e 's#//.*$##g' \
-e 's/(void)/()/g' \
| tr -d '[&;]' \
| perl -p -e "s/^\\s+(.+)[ \\t]([a-zA-Z0-9_]*)\\(/&\$1&$2::\$2(/g" \
| tr '&' '\n'
} > tmp
{
xsubpp -typemap class.typemap tmp \
| sed -e "s/\"$2::/\"/g" \
-e 's/("\([a-zA-Z0-9_]*\)"/(strcpy(buf, "\1")/g' \
-e 's/ / /g' -e 's/ / /g' \
-e 's#char\* file = __FILE__;#char file[256];^ strncpy(file, __FILE__, 256);^ file[255] = '\0';^ ^ if(items != 1)^ fprintf(stderr, "boot_quest does not take any arguments.");^ char buf[128];^^ //add the strcpy stuff to get rid of const warnings....^^#g' \
-e 's/Ptr//g' \
-e 's/Mob__e/Mob::e/g' \
| tr '^' '\n' \
| grep -v "^#line"
echo "#endif //EMBPERL_XS_CLASSES"
echo
} > "$name.cpp"
#rm -f tmp