COIN-OR::LEMON - Graph Library

Ignore:
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • lemon/bfs.h

    r341 r301  
    5252    ///Instantiates a PredMap.
    5353
    54     ///This function instantiates a PredMap. 
     54    ///This function instantiates a PredMap.
    5555    ///\param g is the digraph, to which we would like to define the
    5656    ///PredMap.
     
    8181    ///The type of the map that indicates which nodes are reached.
    8282
    83     ///The type of the map that indicates which nodes are reached.///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
     83    ///The type of the map that indicates which nodes are reached.
     84    ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
    8485    typedef typename Digraph::template NodeMap<bool> ReachedMap;
    8586    ///Instantiates a ReachedMap.
  • lemon/list_graph.h

    r341 r313  
    841841
    842842    public:
    843       operator Edge() const {
    844         return id != -1 ? edgeFromId(id / 2) : INVALID;
     843      operator Edge() const { 
     844        return id != -1 ? edgeFromId(id / 2) : INVALID; 
    845845      }
    846846
  • lemon/smart_graph.h

    r341 r313  
    465465
    466466    public:
    467       operator Edge() const {
    468         return _id != -1 ? edgeFromId(_id / 2) : INVALID;
     467      operator Edge() const { 
     468        return _id != -1 ? edgeFromId(_id / 2) : INVALID; 
    469469      }
    470470
  • scripts/unify-sources.sh

    r343 r208  
    44HGROOT=`hg root`
    55
    6 # file enumaration modes
    7 
    8 function all_files() {
    9     hg status -a -m -c |
    10     cut -d ' ' -f 2 | grep -E '(\.(cc|h|dox)$|Makefile\.am$)' |
    11     while read file; do echo $HGROOT/$file; done
    12 }
    13 
    14 function modified_files() {
    15     hg status -a -m |
    16     cut -d ' ' -f 2 | grep -E  '(\.(cc|h|dox)$|Makefile\.am$)' |
    17     while read file; do echo $HGROOT/$file; done
    18 }
    19 
    20 function changed_files() {
    21     {
    22         if [ -n "$HG_PARENT1" ]
    23         then
    24             hg status --rev $HG_PARENT1:$HG_NODE -a -m
    25         fi
    26         if [ -n "$HG_PARENT2" ]
    27         then
    28             hg status --rev $HG_PARENT2:$HG_NODE -a -m
    29         fi
    30     } | cut -d ' ' -f 2 | grep -E '(\.(cc|h|dox)$|Makefile\.am$)' |
    31     sort | uniq |
    32     while read file; do echo $HGROOT/$file; done
    33 }
    34 
    35 function given_files() {
    36     for file in $GIVEN_FILES
    37     do
    38         echo $file
    39     done
    40 }
    41 
    42 # actions
    43 
    44 function update_action() {
    45     if ! diff -q $1 $2 >/dev/null
    46     then
    47         echo -n " [$3 updated]"
    48         rm $2
    49         mv $1 $2
    50         CHANGED=YES
    51     fi
    52 }
    53 
    54 function update_warning() {
    55     echo -n " [$2 warning]"
    56     WARNED=YES
    57 }
    58 
    59 function update_init() {
    60     echo Update source files...
    61     TOTAL_FILES=0
    62     CHANGED_FILES=0
    63     WARNED_FILES=0
    64 }
    65 
    66 function update_done() {
    67     echo $CHANGED_FILES out of $TOTAL_FILES files has been changed.
    68     echo $WARNED_FILES out of $TOTAL_FILES files triggered warnings.
    69 }
    70 
    71 function update_begin() {
    72     ((TOTAL_FILES++))
    73     CHANGED=NO
    74     WARNED=NO
    75 }
    76 
    77 function update_end() {
    78     if [ $CHANGED == YES ]
    79     then
    80         ((++CHANGED_FILES))
    81     fi
    82     if [ $WARNED == YES ]
    83     then
    84         ((++WARNED_FILES))
    85     fi
    86 }
    87 
    88 function check_action() {
    89     if ! diff -q $1 $2 >/dev/null
    90     then
    91         echo
    92         echo -n "      $3 failed at line(s): "
    93         echo -n $(diff $1 $2 | grep '^[0-9]' | sed "s/^\(.*\)c.*$/ \1/g" |
    94                   sed "s/,/-/g" | paste -s -d',')
    95         FAILED=YES
    96     fi
    97 }
    98 
    99 function check_warning() {
    100     echo
    101     if [ "$2" == 'long lines' ]
    102     then
    103         echo -n "      $2 warning at line(s): "
    104         echo -n $(grep -n -E '.{81,}' $1 | sed "s/^\([0-9]*\)/ \1\t/g" |
    105                   cut -f 1 | paste -s -d',')
    106     else
    107         echo -n "      $2 warning"
    108     fi
    109     WARNED=YES
    110 }
    111 
    112 function check_init() {
    113     echo Check source files...
    114     FAILED_FILES=0
    115     WARNED_FILES=0
    116     TOTAL_FILES=0
    117 }
    118 
    119 function check_done() {
    120     echo $FAILED_FILES out of $TOTAL_FILES files has been failed.
    121     echo $WARNED_FILES out of $TOTAL_FILES files triggered warnings.
    122 
    123     if [ $FAILED_FILES -gt 0 ]
    124     then
    125         return 1
    126     elif [ $WARNED_FILES -gt 0 ]
    127     then
    128         if [ "$WARNING" == 'INTERACTIVE' ]
    129         then
    130             echo -n "Are the files with warnings acceptable? (yes/no) "
    131             while read answer
    132             do
    133                 if [ "$answer" == 'yes' ]
    134                 then
    135                     return 0
    136                 elif [ "$answer" == 'no' ]
    137                 then
    138                     return 1
    139                 fi
    140                 echo -n "Are the files with warnings acceptable? (yes/no) "
    141             done
    142         elif [ "$WARNING" == 'WERROR' ]
    143         then
    144             return 1
    145         fi
    146     fi
    147 }
    148 
    149 function check_begin() {
    150     ((TOTAL_FILES++))
    151     FAILED=NO
    152     WARNED=NO
    153 }
    154 
    155 function check_end() {
    156     if [ $FAILED == YES ]
    157     then
    158         ((++FAILED_FILES))
    159     fi
    160     if [ $WARNED == YES ]
    161     then
    162         ((++WARNED_FILES))
    163     fi
    164 }
    165 
    166 
    167 
    168 # checks
    169 
    170 function header_check() {
    171     if echo $1 | grep -q -E 'Makefile\.am$'
    172     then
    173         return
    174     fi
    175 
     6function update_header() {
    1767    TMP_FILE=`mktemp`
     8    FILE_NAME=$1
    1779
    17810    (echo "/* -*- mode: C++; indent-tabs-mode: nil; -*-
     
    19426 */
    19527"
    196     awk 'BEGIN { pm=0; }
     28        awk 'BEGIN { pm=0; }
    19729     pm==3 { print }
    19830     /\/\* / && pm==0 { pm=1;}
     
    20032     /\*\// && pm==1 { pm=2;}
    20133    ' $1
    202     ) >$TMP_FILE
     34        ) >$TMP_FILE
    20335
    204     "$ACTION"_action "$TMP_FILE" "$1" header
     36    HEADER_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES`
     37
     38    rm $FILE_NAME
     39    mv $TMP_FILE $FILE_NAME
    20540}
    20641
    207 function tabs_check() {
    208     if echo $1 | grep -q -v -E 'Makefile\.am$'
    209     then
    210         OLD_PATTERN=$(echo -e '\t')
    211         NEW_PATTERN='        '
    212     else
    213         OLD_PATTERN='        '
    214         NEW_PATTERN=$(echo -e '\t')
    215     fi
     42function update_tabs() {
    21643    TMP_FILE=`mktemp`
    217     cat $1 | sed -e "s/$OLD_PATTERN/$NEW_PATTERN/g" >$TMP_FILE
     44    FILE_NAME=$1
    21845
    219     "$ACTION"_action "$TMP_FILE" "$1" 'tabs'
     46    cat $1 |
     47    sed -e 's/\t/        /g' >$TMP_FILE
     48
     49    TABS_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES`
     50
     51    rm $FILE_NAME
     52    mv $TMP_FILE $FILE_NAME
    22053}
    22154
    222 function spaces_check() {
     55function remove_trailing_space() {
    22356    TMP_FILE=`mktemp`
    224     cat $1 | sed -e 's/ \+$//g' >$TMP_FILE
     57    FILE_NAME=$1
    22558
    226     "$ACTION"_action "$TMP_FILE" "$1" 'trailing spaces'
     59    cat $1 |
     60    sed -e 's/ \+$//g' >$TMP_FILE
     61
     62    SPACES_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES`
     63
     64    rm $FILE_NAME
     65    mv $TMP_FILE $FILE_NAME
    22766}
    22867
    229 function long_lines_check() {
    230     if cat $1 | grep -q -E '.{81,}'
     68function long_line_test() {
     69    cat $1 |grep -q -E '.{81,}'
     70}
     71
     72function update_file() {
     73    echo -n '    update' $i ...
     74
     75    update_header $1
     76    update_tabs $1
     77    remove_trailing_space $1
     78
     79    CHANGED=NO;
     80    if [[ $HEADER_CH = YES ]];
    23181    then
    232         "$ACTION"_warning $1 'long lines'
     82        echo -n '  [header updated]'
     83        CHANGED=YES;
     84    fi
     85    if [[ $TABS_CH = YES ]];
     86    then
     87        echo -n ' [tabs removed]'
     88        CHANGED=YES;
     89    fi
     90    if [[ $SPACES_CH = YES ]];
     91    then
     92        echo -n ' [trailing spaces removed]'
     93        CHANGED=YES;
     94    fi
     95    if long_line_test $1 ;
     96    then
     97        echo -n ' [LONG LINES]'
     98        ((LONG_LINE_FILES++))
     99    fi
     100    echo
     101    if [[ $CHANGED = YES ]];
     102    then
     103        ((CHANGED_FILES++))
    233104    fi
    234105}
    235106
    236 # process the file
    237 
    238 function process_file() {
    239     echo -n "    $ACTION $1..."
    240 
    241     CHECKING="header tabs spaces long_lines"
    242 
    243     "$ACTION"_begin $1
    244     for check in $CHECKING
     107CHANGED_FILES=0
     108TOTAL_FILES=0
     109LONG_LINE_FILES=0
     110if [ $# == 0 ]; then
     111    echo Update all source files...
     112    for i in `hg manifest|grep -E  '\.(cc|h|dox)$'`
    245113    do
    246         "$check"_check $1
     114        update_file $HGROOT/$i
     115        ((TOTAL_FILES++))
    247116    done
    248     "$ACTION"_end $1
     117    echo '  done.'
     118else
     119    for i in $*
     120    do
     121        update_file $i
     122        ((TOTAL_FILES++))
     123    done
     124fi
     125echo $CHANGED_FILES out of $TOTAL_FILES files has been changed.
     126if [[ $LONG_LINE_FILES -gt 1 ]]; then
    249127    echo
    250 }
    251 
    252 function process_all {
    253     "$ACTION"_init
    254     while read file
    255     do
    256         process_file $file
    257     done < <($FILES)
    258     "$ACTION"_done
    259 }
    260 
    261 while [ $# -gt 0 ]
    262 do
    263    
    264     if [ "$1" == '--help' ] || [ "$1" == '-h' ]
    265     then
    266         echo -n \
    267 "Usage:
    268   $0 [OPTIONS] [files]
    269 Options:
    270   --dry-run|-n
    271      Check the files, but do not modify them.
    272   --interactive|-i
    273      If --dry-run is specified and the checker emits warnings,
    274      then the user is asked if the warnings should be considered
    275      errors.
    276   --werror|-w
    277      Make all warnings into errors.
    278   --all|-a
    279      Check all source files in the repository.
    280   --modified|-m
    281      Check only the modified (and new) source files. This option is
    282      useful to check the modification before making a commit.
    283   --changed|-c
    284      Check only the changed source files compared to the parent(s) of
    285      the current hg node.  This option is useful as hg hook script.
    286      To automatically check all your changes before making a commit,
    287      add the following section to the appropriate .hg/hgrc file.
    288 
    289        [hooks]
    290        pretxncommit.checksources = scripts/unify-sources.sh -c -n -i
    291 
    292   --help|-h
    293      Print this help message.
    294   files
    295      The files to check/unify. If no file names are given, the modified
    296      source files will be checked/unified (just like using the
    297      --modified|-m option).
    298 "
    299         exit 0
    300     elif [ "$1" == '--dry-run' ] || [ "$1" == '-n' ]
    301     then
    302         [ -n "$ACTION" ] && echo "Conflicting action options" >&2 && exit 1
    303         ACTION=check
    304     elif [ "$1" == "--all" ] || [ "$1" == '-a' ]
    305     then
    306         [ -n "$FILES" ] && echo "Conflicting target options" >&2 && exit 1
    307         FILES=all_files
    308     elif [ "$1" == "--changed" ] || [ "$1" == '-c' ]
    309     then
    310         [ -n "$FILES" ] && echo "Conflicting target options" >&2 && exit 1
    311         FILES=changed_files
    312     elif [ "$1" == "--modified" ] || [ "$1" == '-m' ]
    313     then
    314         [ -n "$FILES" ] && echo "Conflicting target options" >&2 && exit 1
    315         FILES=modified_files
    316     elif [ "$1" == "--interactive" ] || [ "$1" == "-i" ]
    317     then
    318         [ -n "$WARNING" ] && echo "Conflicting warning options" >&2 && exit 1
    319         WARNING='INTERACTIVE'
    320     elif [ "$1" == "--werror" ] || [ "$1" == "-w" ]
    321     then
    322         [ -n "$WARNING" ] && echo "Conflicting warning options" >&2 && exit 1
    323         WARNING='WERROR'
    324     elif [ $(echo x$1 | cut -c 2) == '-' ]
    325     then
    326         echo "Invalid option $1" >&2 && exit 1
    327     else
    328         [ -n "$FILES" ] && echo "Invalid option $1" >&2 && exit 1
    329         GIVEN_FILES=$@
    330         FILES=given_files
    331         break
    332     fi
    333    
    334     shift
    335 done
    336 
    337 if [ -z $FILES ]
    338 then
    339     FILES=modified_files
     128    echo WARNING: $LONG_LINE_FILES files contains long lines!   
     129    echo
     130elif [[ $LONG_LINE_FILES -gt 0 ]]; then
     131    echo
     132    echo WARNING: a file contains long lines!
     133    echo
    340134fi
    341 
    342 if [ -z $ACTION ]
    343 then
    344     ACTION=update
    345 fi
    346 
    347 process_all
Note: See TracChangeset for help on using the changeset viewer.