tagged release 0.6.4
[parrot.git] / languages / tcl / runtime / builtin / lassign.pir
blobf22b22fabce7e3cb822dd34443cfff198d885ce5
1 .HLL 'Tcl', 'tcl_group'
2 .namespace []
4 .sub '&lassign'
5   .param pmc argv :slurpy
7   .local int argc
8   argc = argv
9   if argc < 2 goto bad_args
11   .local pmc retval
12   .local pmc list
13   list = shift argv
15   .local pmc __list
16   __list = get_root_global ['_tcl'], '__list'
17   list   = __list(list)
19   .local string varname
20   .local pmc set, value
21   set = get_root_global ['_tcl'], '__set'
23 var_loop:
24   varname = shift argv
25   value = shift list
26   set(varname, value)
28   unless list goto list_empty
29   if argv goto var_loop
31 list_empty:
32   value = new 'String'
33   value = ''
34 null_loop:
35   unless argv goto var_end
36   varname = shift argv
37   set(varname, value)
38   branch null_loop
40 var_end:
41   .return(list)
43 bad_args:
44   tcl_error 'wrong # args: should be "lassign list varName ?varName ...?"'
45 .end
47 # Local Variables:
48 #   mode: pir
49 #   fill-column: 100
50 # End:
51 # vim: expandtab shiftwidth=4 ft=pir: