X-Git-Url: https://bilbo.iut-bm.univ-fcomte.fr/and/gitweb/loba.git/blobdiff_plain/e4580f054afd2023741e3f1620a465ab9f8810e5..c08e3f74ebabb9acc4064ce8820e2e6db8ecf561:/new_loba.sh?ds=sidebyside diff --git a/new_loba.sh b/new_loba.sh index f564a5c..ba076fb 100755 --- a/new_loba.sh +++ b/new_loba.sh @@ -1,5 +1,11 @@ #!/bin/bash +# Local variables: +# mode: sh +# End: + +set -e + if [ "$1" = "-n" ]; then echo "# Dry run mode!" >&2 create_files=0 @@ -9,13 +15,17 @@ else fi if [ $# -ne 1 ]; then - echo "Usage: $0 name" >&2 - echo " Create files loba_name.h and loba_name.cpp." + cat >&2 <&2 exit 1 @@ -68,7 +78,7 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(loba); void loba_${name}::load_balance() { // write code here... - xbt_die("Load-balancing algorithm ${name} not implemented!"); + xbt_die("Load-balancing algorithm \\"${name}\\" not implemented!"); } // Local variables: @@ -77,16 +87,71 @@ void loba_${name}::load_balance() EOF fi +echo "# Updating options.cpp..." +tmp="options.cpp.new.$$" +trap "rm -f $tmp" EXIT + +awk -vname="${name}" ' +/^#include "loba_/ { + if (!include_line) { + h_file = "\"loba_" name ".h\""; + include_line = "#include " h_file; + } + if (!included && $2 >= h_file) { + if ($2 != h_file) + print "#include " h_file; + included = 1; + } + print; + next; +} + +!included && include_line { + print include_line; + included = 1; +} + +/loba_algorithms_type::loba_algorithms_type\(\)/ { + nol_compare = "NOL_INSERT(\"" name "\"," + nol_string = " " nol_compare " \"describe your algorithm here...\",\n"; + nol_string = nol_string " loba_" name ");" + nol_insert = 1; +} + +nol_insert && $1 ~ /\}/ { + if (!nol_inserted) + print nol_string; + nol_insert = 0; +} + +nol_insert && !nol_inserted && /NOL_INSERT/ { + if ($1 >= nol_compare) { + if ($1 > nol_compare) + print nol_string; + nol_inserted = 1; + } +} + +{ print } +' options.cpp > $tmp + +if [ "$create_files" = "1" ]; then + mv options.cpp options.cpp~ + mv $tmp options.cpp +else + if type colordiff &> /dev/null; then + diff -u options.cpp $tmp | colordiff + else + diff -u options.cpp $tmp + fi +fi + cat >&2 <