diff options
Diffstat (limited to 'ACE/bin/ACE-casts-convert')
-rwxr-xr-x | ACE/bin/ACE-casts-convert | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/ACE/bin/ACE-casts-convert b/ACE/bin/ACE-casts-convert new file mode 100755 index 00000000000..0b158ea1afa --- /dev/null +++ b/ACE/bin/ACE-casts-convert @@ -0,0 +1,50 @@ +#! /bin/sh + +# ============================================================================= +# +# @file ACE-casts-convert +# +# $Id$ +# +# Script to convert all ACE cast macro calls (e.g. +# ACE_static_cast (foo, bar)) to their standard C++ counterparts (e.g. +# static_cast<foo> (bar)). +# +# Use this script at your own risk. It appears to work correctly for +# most cases, but verify the results "just in case". +# +# @note Wildcards may be supplied as the "FILE" arguments to this +# script since the shell should expand the wildcards before +# executing the script. +# +# @bug The sed program used in this script may loop indefinitely on +# ACE casts with arguments split across multiple lines +# containing patterns it doesn't recognize. +# +# @author Ossama Othman +# +# ============================================================================= + + +if test "$#" -eq 0; then + echo "Usage: $0 FILE [FILE2] ..." + echo "" + exit 1 +fi + +echo "" +echo "Converting ACE cast macro calls to standard C++ syntax in:" + +while test "$#" -gt 0 +do + arg="$1" + shift + + if grep "ACE_\(static\|dynamic\|const\|reinterpret\)_cast" $arg > /dev/null 2>&1; then + echo " $arg" + sed -e :a -e 's/ACE_\(const\|static\|reinterpret\|dynamic\)_cast[ \t]*([ \t]*\([^,]*\)[ \t]*,[ \t]*\([^ \t].*\)/\1_cast<\2> (\3/g; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast[ \t]*([ \t]*\([^,]*\)[ \t]*,[ \t]*$/{N;s/\n//;ba;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast[ \t]*([ \t]*$/{N;s/\n//;ba;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast[ \t]*$/{N;s/\n//;ba;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast[ \t]*(/ba' \ + -e :aa -e 's/ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ref[ \t]*([ \t]*\([^,]*\)[ \t]*,\(.*\),[ \t]*\([^,]*\)/\1_cast<\2<\3> \&> (\4/g; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ref[ \t]*([ \t]*\([^,]*\)[ \t]*,[ \t]*$/{N;s/\n//;baa;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ref[ \t]*([ \t]*$/{N;s/\n//;baa;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ref[ \t]*$/{N;s/\n//;baa;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ref[ \t]*(/baa' \ + -e :aaa -e 's/ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ptr[ \t]*([ \t]*\([^,]*\)[ \t]*,\(.*\),[ \t]*\([^,]*\)/\1_cast<\2<\3> \*> (\4/g; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ptr[ \t]*([ \t]*\([^,]*\)[ \t]*,[ \t]*$/{N;s/\n//;baaa;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ptr[ \t]*([ \t]*$/{N;s/\n//;baaa;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ptr[ \t]*$/{N;s/\n//;baaa;}; /ACE_\(const\|static\|reinterpret\|dynamic\)_cast_[1-5]_ptr[ \t]*(/baaa' $arg > ${arg}.new + mv ${arg}.new $arg + fi +done |