#! /bin/sh

# $Id: uic_fix,v 1.3 2000/12/01 19:54:47 seli Exp $
# ugly hack to put files generated by uic in the correct namespace
# also make data member protected ( I wonder why they are public !? )
# and make virtual methods pure virtual instead of complaining about not being implemented yet

if grep "^// namespace_fix$" "$2" >/dev/null; then
    cat "$2" > "$3"
    exit 0
fi

if test "$1" = "cpp"; then
    cat $2 | (
        ifs_sav=$IFS
        IFS=
        rmv_cnt=0
        echo "// namespace_fix"
        while read ln; do
            echo "$ln" | grep "^void .*" >/dev/null && rmv_cnt=5
            [ $rmv_cnt -gt 0 ] && rmv_cnt=$((rmv_cnt - 1 )) && continue
            echo "$ln" | grep "^#include.*\.moc\"$" >/dev/null && echo "} // namespace"
            
            echo "$ln"
            echo "$ln" | grep "^#include <qwhatsthis\.h>$" >/dev/null && echo "namespace KHotKeys {"
        done
        IFS=$ifs_sav
        ) > $3
elif test "$1" = "h"; then
    cat $2 | (
        ifs_sav=$IFS
        IFS=
        is_in_nm=
        is_in_prt=
        echo "// namespace_fix"
        while read ln; do
            [ -z "$is_in_nm" ] && echo "$ln" | grep "^class .*_.*;$" >/dev/null && is_in_nm=1 && echo "namespace KHotKeys {"
            [ -z "$is_in_nm" ] && echo "$ln" | grep "^class .*:.*" >/dev/null && is_in_nm=1 && echo "namespace KHotKeys {"
            echo "$ln" | grep "^#endif" >/dev/null && echo "} // namespace"
            echo "$ln" | sed 's/^\([ \t]*virtual .*\);$/\1 = 0;/'
            [ -z "$is_in_ptr" ] && echo "$ln" | grep "^[ \t]*~.*" >/dev/null && is_in_ptr=1 && echo "protected:"
        done
        IFS=$ifs_sav
        ) > $3
fi
