I declare these scripts finished. Probably.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5734 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2002-11-27 17:15:23 +00:00
parent d0ba17263c
commit 6ec64848a8
3 changed files with 66 additions and 19 deletions

View File

@ -1,3 +1,11 @@
2002-11-27 Angus Leeming <leeming@lyx.org>
* forms/fdfix.sh:
* forms/c_str.sed: replace that nasty global c_str declaration with
nice function-specific ones. Use a two-pass algorithm to do so.
It's possible to do it in one-pass, but the resulting sed script
must use the hold space in a convoluted manner.
2002-11-27 Lars Gullik Bjønnes <larsbj@gullik.net> 2002-11-27 Lars Gullik Bjønnes <larsbj@gullik.net>
* XMiniBuffer.C (peek_event): add l10n on a string missing it. * XMiniBuffer.C (peek_event): add l10n on a string missing it.

View File

@ -0,0 +1,41 @@
# file c_str.sed
# This file is part of LyX, the document processor.
# Licence details can be found in the file COPYING.
#
# author Angus Leeming
#
# Full author contact details are available in file CREDITS
# This sed script is run on the .C file after the main fdfixc.sed has done
# its stuff. It ensures that any c_str variables inserted by fdfixc.sed
# are declared at the top of the appropriate function.
#
# We use a two-pass algorithm like this because a single pass results in
# convoluted sed.
# Initialise the hold space at the start of the function.
/ \* build_/ {
h; d
}
# For all lines within the function...
/^{$/,/^}$/ {
# If it isn't the last line, append it to the hold space.
/^}$/!{
H; d
}
# If it is the last line, paste the contents of the hold space above it,
# seach for the string "c_str" and, if found, add its declaration to the top
# of the function.
/^}$/ {
x; G
/c_str/s/\( FL_OBJECT \*\)/ char const * c_str;\
\1/
}
}

View File

@ -117,31 +117,29 @@ CPATCH=${DIRNAME}/${BASENAME}.C.patch
COUT=${BASENAME}.cpp COUT=${BASENAME}.cpp
FINAL_COUT=${BASENAME}.C FINAL_COUT=${BASENAME}.C
# We use a two pass algorithm to generate elegant C++ code whilst
# keeping the sed clean also.
# Pass 1. The bulk of the clean-up
FDFIXC=${DIRNAME}/fdfixc.sed FDFIXC=${DIRNAME}/fdfixc.sed
TMP=tmp
OUTPUT_FILE=${TMP}; INTRO_MESSAGE
OUTPUT_FILE=${COUT}; INTRO_MESSAGE echo "#include <config.h>" >> ${TMP}
echo "#include \"forms_gettext.h\"" >> ${TMP}
# This "c_str" is potentially used many times in many functions echo "#include \"gettext.h\"" >> ${TMP}
# so add it to the top of the generated file.
grep -E 'fl_add.*".*[|].*"' ${CIN} > /dev/null &&
cat - >> ${COUT} <<EOF
namespace {
char const * c_str;
} // namespace anon
EOF
echo "#include <config.h>" >> ${COUT}
echo "#include \"forms_gettext.h\"" >> ${COUT}
echo "#include \"gettext.h\"" >> ${COUT}
grep bmtable ${CIN} > /dev/null && grep bmtable ${CIN} > /dev/null &&
echo "#include \"bmtable.h\"" >> ${COUT} echo "#include \"bmtable.h\"" >> ${TMP}
sed -f ${FDFIXC} < ${CIN} >> ${COUT} sed -f ${FDFIXC} < ${CIN} >> ${TMP}
# Pass 2. Ensure that any c_str variables inserted by fdfixc.sed
# are declared at the top of the appropriate function.
FDFIXC=${DIRNAME}/c_str.sed
sed -f ${FDFIXC} < ${TMP} > ${COUT}
rm -f ${TMP}
# Patch the .C file if a patch exists
if [ -f "${CPATCH}" ] ; then if [ -f "${CPATCH}" ] ; then
echo "Patching ${COUT} with ${CPATCH}" echo "Patching ${COUT} with ${CPATCH}"
patch -s ${COUT} < ${CPATCH} patch -s ${COUT} < ${CPATCH}