[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tie: add some C++ rigor and concision (issue 252230043 by address@hi
From: |
David Kastrup |
Subject: |
Re: Tie: add some C++ rigor and concision (issue 252230043 by address@hidden) |
Date: |
Wed, 15 Jul 2015 06:53:36 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) |
address@hidden writes:
> Reviewers: ,
>
> Description:
> I wanted to see how Tie would look with instance methods instead of
> static methods. I'm looking forward to hearing your opinions.
Here's a script in progress that currently does way, way too much.
git grep '^MAKE_[_A-Z]*SCHEME_CALLBACK[_A-Z]* ' lily|sed -n
's/^\([^:]*\):MAKE_[_A-Z]*SCHEME_CALLBACK[_A-Z]* (\([^,]*\), \([^,]*\),
\([^)]*\)).*$/\1 \2 \3 \4/p' |
while read file class name args
do
argname=$(sed -n "s/^$class::$name (SCM \\?\\([^,)]*\\)[,)].*\$/\\1/p"
$file)
sed -i "/^\\(class\\|struct\\) $class\\( {\\)\\?\$/,/^}/s/^\\(
*DECLARE_\\)SCHEME\\(_CALLBACK ($name, (\\)SCM[^,)]*\\(, \\)\\?/\\1MEMBER\\2/"
$(git grep -l "^\\(class\\|struct\\) $class\\( \\|\$\\)") &&
case "$argname" in
[a-zA-Z]*)
thisexpr=$(echo "unsmob<[_a-zA-Z]*> *($argname)"
sed -n "/^$class::$name (/,/^}/s/^
*\\([_a-zA-Z]\\+\\) *\\* *\\([_a-zA-Z]\\+\\) *= *unsmob *<\\1>
($argname);\$/\\2/p" $file |
while read alias
do
sed -i "/^$class::$name (/,/^}/{/^
*\\([_a-zA-Z]\\+\\) *\\* *$alias *= *unsmob *<\\1> ($argname);\$/d;}" $file
echo $alias
done)
thisexpr=$(echo "$thisexpr"|sed -n
'1h;1!H;${x;s/\n/\\|/g;p}')
sed -i "/^$class::$name
(/,/^}/{s/\\b\\($thisexpr\\)\\b/this/g;s/\\bthis *-> *//g;s/\\*this\\.//g;}"
$file
sed -i "s/^\\(MAKE_[_A-Z]*\\)SCHEME\\(_CALLBACK[_A-Z]*
($class, $name,\\)/\\1MEMBER\\2/
s/^\\($class::$name (\\)SCM \\?[^,)]*\\(, \\)\\?\\(.*\\)\$/\\1\\3/" $file
;;
*)
sed -i "s/^\\(MAKE_[_A-Z]*\\)SCHEME\\(_CALLBACK[_A-Z]*
($class, $name,\\)/\\1MEMBER\\2/
s/^\\($class::$name (\\)SCM \\?[^,)]*\\(, \\)\\?\\(.*\\)\$/\\1\\3/" $file
esac
# sed "/^MAKE_SCHEME_CALLBACK ($class, $name, $args)/d;
# echo $file $class $name $args $argname $argtype $param
done
> Please review this at https://codereview.appspot.com/252230043/
--
David Kastrup