diff options
| author | Chris Dyer <cdyer@cs.cmu.edu> | 2012-10-11 14:06:32 -0400 | 
|---|---|---|
| committer | Chris Dyer <cdyer@cs.cmu.edu> | 2012-10-11 14:06:32 -0400 | 
| commit | 07ea7b64b6f85e5798a8068453ed9fd2b97396db (patch) | |
| tree | 644496a1690d84d82a396bbc1e39160788beb2cd /jam-files/boost-build/util/numbers.jam | |
| parent | 37b9e45e5cb29d708f7249dbe0b0fb27685282a0 (diff) | |
| parent | a36fcc5d55c1de84ae68c1091ebff2b1c32dc3b7 (diff) | |
Merge branch 'master' of https://github.com/redpony/cdec
Diffstat (limited to 'jam-files/boost-build/util/numbers.jam')
| -rw-r--r-- | jam-files/boost-build/util/numbers.jam | 218 | 
1 files changed, 0 insertions, 218 deletions
| diff --git a/jam-files/boost-build/util/numbers.jam b/jam-files/boost-build/util/numbers.jam deleted file mode 100644 index 665347d3..00000000 --- a/jam-files/boost-build/util/numbers.jam +++ /dev/null @@ -1,218 +0,0 @@ -# Copyright 2001, 2002 Dave Abrahams -# Copyright 2002, 2003 Vladimir Prus -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) - -import errors ; - - -rule trim-leading-zeroes ( value ) -{ -    return [ CALC $(value) + 0 ] ; -} - - -rule check ( numbers * ) -{ -    for local n in $(numbers) -    { -        switch $(n) -        { -            case *[^0-9]* : -                errors.error $(n) "in" $(numbers) : is not a number ; -        } -    } -} - - -rule increment ( number ) -{ -    return [ CALC $(number) + 1 ] ; -} - - -rule decrement ( number ) -{ -    return [ CALC $(number) - 1 ] ; -} - - -rule range ( start finish ? : step ? ) -{ -    if ! $(finish) -    { -        finish = $(start) ; -        start = 1 ; -    } -    step ?= 1 ; - -    check $(start) $(finish) $(step) ; - -    if $(finish) != 0 -    { -        local result ; -        while [ less $(start) $(finish) ] || $(start) = $(finish) -        { -            result += $(start) ; -            start = [ CALC $(start) + $(step) ] ; -        } -        return $(result) ; -    } -} - - -rule less ( n1 n2 ) -{ -    switch [ CALC $(n2) - $(n1) ] -    { -        case [1-9]* : return true ; -    } -} - - -rule log10 ( number ) -{ -    switch $(number) -    { -        case *[^0-9]* : errors.error $(number) is not a number ; -        case 0 : errors.error can't take log of zero ; -        case [1-9] : return 0 ; -        case [1-9]? : return 1 ; -        case [1-9]?? : return 2 ; -        case [1-9]??? : return 3 ; -        case [1-9]???? : return 4 ; -        case [1-9]????? : return 5 ; -        case [1-9]?????? : return 6 ; -        case [1-9]??????? : return 7 ; -        case [1-9]???????? : return 8 ; -        case [1-9]????????? : return 9 ; -        case * : -        { -            import sequence ; -            import string ; -            local chars = [ string.chars $(number) ] ; -            while $(chars[1]) = 0 -            { -                chars = $(chars[2-]) ; -            } -            if ! $(chars) -            { -                errors.error can't take log of zero ; -            } -            else -            { -                return [ decrement [ sequence.length $(chars) ] ] ; -            } -        } -    } -} - - -rule __test__ ( ) -{ -    import assert ; - -    assert.result 1 : increment 0 ; -    assert.result 2 : increment 1 ; -    assert.result 1 : decrement 2 ; -    assert.result 0 : decrement 1 ; -    assert.result 50 : increment 49 ; -    assert.result 49 : decrement 50 ; -    assert.result 99 : increment 98 ; -    assert.result 99 : decrement 100 ; -    assert.result 100 : increment 99 ; -    assert.result 999 : decrement 1000 ; -    assert.result 1000 : increment 999 ; - -    assert.result 1 2 3 : range 3 ; -    assert.result 1 2 3 4 5 6 7 8 9 10 11 12 : range 12 ; -    assert.result 3 4 5 6 7 8 9 10 11 : range 3 11 ; -    assert.result : range 0 ; -    assert.result 1 4 7 10 : range 10 : 3 ; -    assert.result 2 4 6 8 10 : range 2 10 : 2 ; -    assert.result 25 50 75 100 : range 25 100 : 25 ; - -    assert.result 0           : trim-leading-zeroes 0           ; -    assert.result 1234        : trim-leading-zeroes 1234        ; -    assert.result 123456      : trim-leading-zeroes 0000123456  ; -    assert.result 1000123456  : trim-leading-zeroes 1000123456  ; -    assert.result 10000       : trim-leading-zeroes 10000       ; -    assert.result 10000       : trim-leading-zeroes 00010000    ; - -    assert.true  less 1 2 ; -    assert.true  less 1 12 ; -    assert.true  less 1 21 ; -    assert.true  less 005 217 ; -    assert.false less 0 0 ; -    assert.false less 03 3 ; -    assert.false less 3 03 ; -    assert.true  less 005 217 ; -    assert.true  less 0005 217 ; -    assert.true  less 5 00217 ; - -    # TEMPORARY disabled, because nested "try"/"catch" do not work and I do no -    # have the time to fix that right now. -    if $(0) -    { -    try ; -    { -        decrement 0 ; -    } -    catch can't decrement zero! ; - -    try ; -    { -        check foo ; -    } -    catch : not a number ; - -    try ; -    { -        increment foo ; -    } -    catch : not a number ; - -    try ; -    { -        log10 0 ; -    } -    catch can't take log of zero ; - -    try ; -    { -        log10 000 ; -    } -    catch can't take log of zero ; - -    } - -    assert.result 0 : log10 1 ; -    assert.result 0 : log10 9 ; -    assert.result 1 : log10 10 ; -    assert.result 1 : log10 99 ; -    assert.result 2 : log10 100 ; -    assert.result 2 : log10 101 ; -    assert.result 2 : log10 125 ; -    assert.result 2 : log10 999 ; -    assert.result 3 : log10 1000 ; -    assert.result 10 : log10 12345678901 ; - -    for local x in [ range 75 110 : 5 ] -    { -        for local y in [ range $(x) 111 : 3 ] -        { -            if $(x) != $(y) -            { -                assert.true less $(x) $(y) ; -            } -        } -    } - -    for local x in [ range 90 110 : 2 ] -    { -        for local y in [ range 80 $(x) : 4 ] -        { -            assert.false less $(x) $(y) ; -        } -    } -} | 
