openfoam/bin/doxyClassPatch
2008-05-01 16:24:10 +01:00

104 lines
2.7 KiB
Bash
Executable File

#!/bin/sh
# -----------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd.
# \\/ M anipulation |
# ------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Script
# doxyClassPatch
#
# Description
# search for header files and fix up 'Class' section for doxygen
#
# change:
# |Class
# | className
# ->
# |Class
# | Foam::className
#
# change:
# |Class
# |
# ->
# |Class
# | Foam::(basename)
#
# leave untouched:
# |Class
# | Foam...
# and
# |Class
# | Namespace::className
#
#
# -----------------------------------------------------------------------------
backup=.unclassified
remove=no
for search
do
for file in $(
find -H $search \
-type f -name "*.H" \
-exec perl -ne \
'if (/^Class\s*$/) { $_ = <>; /(^\s*Foam|::)/ or print "$ARGV\n"; exit 0; }' \
\{\} \;
)
do
perl -i$backup -x $0 $file
if [ -f $file$backup ]
then
[ $file -nt $file$backup ] && touch -r $file$backup $file
[ "$remove" = yes ] && /bin/rm $file$backup 2>/dev/null
fi
done
done
exit 0
# ---------------------------------------------------------------- end-of-file
# embedded Perl program
#!/usr/bin/perl -wp
use strict;
my $namespace = "Foam::";
( my $class = $ARGV ) =~ s{^.*/|\.[A-Za-z]$}{}g;
if (/^Class\s*$/) {
print;
$_ = <>;
# provide a reasonable guess for empty classes
if (/^\s*$/) {
$_ = " $namespace$class\n";
warn "modified $ARGV\n";
}
elsif ( not /(^\s*Foam|::)/ ) {
s{^\s+|\s*$}{}g;
$_ = " $namespace$_\n";
warn "modified $ARGV\n";
}
}
# ---------------------------------------------------------------- end-of-file