tagged release 0.7.1
[parrot.git] / languages / tcl / runtime / builtin / incr.pir
blob73f337282d37d11c7ee5a53d7904493cd336c327
1 .HLL 'Tcl', ''
2 .namespace []
4 .sub '&incr'
5   .param pmc argv :slurpy
7   .local int argc
8   argc = elements argv
9   if argc < 1 goto bad_args
10   if argc > 2 goto bad_args
11   # get necessary conversion subs
12   .local pmc toInteger
13   toInteger = get_root_global ['_tcl'], 'toInteger'
14   .local pmc makeVar
15   makeVar = get_root_global ['_tcl'], 'makeVar'
16   .local pmc a_varName
17   a_varName = argv[0]
18   $P0 = makeVar(a_varName)
19   $S0 = typeof $P0
20   if $S0 != 'Undef' goto got_var
21   .local pmc setVar
22   setVar = get_root_global ['_tcl'], 'setVar'
23   $P0 = setVar(a_varName,0)
24 got_var:
25   a_varName = toInteger($P0)
26   .local pmc a_increment
27   if argc < 2 goto default_increment
28   a_increment = argv[1]
29   a_increment = toInteger(a_increment)
30   goto done_increment
31 default_increment:
32   a_increment = new 'TclInt'
33   a_increment = 1
34 done_increment:
35   .local pmc R
36   .local pmc temp
38 a_varName += a_increment
39 R = clone a_varName
40   .return(R)
41 bad_args:
42   die 'wrong # args: should be "incr varName ?increment?"'
43 .end
45 # Local Variables:
46 #   mode: pir
47 #   fill-column: 100
48 # End:
49 # vim: expandtab shiftwidth=4 ft=pir: