tagged release 0.6.4
[parrot.git] / languages / tcl / runtime / builtin / clock.pir
blob5692a65d11a0a89c338d60529fc146c3baa2a310
1 .HLL 'Tcl', 'tcl_group'
2 .namespace []
4 .sub '&clock'
5   .param pmc argv :slurpy
7   .local int argc
8   argc = argv
10   if argc == 0 goto few_args
12   .local string subcommand_name
13   subcommand_name = shift argv
15   .local pmc options
16   options = new 'ResizablePMCArray'
17   push options, 'add'
18   push options, 'clicks'
19   push options, 'format'
20   push options, 'microseconds'
21   push options, 'milliseconds'
22   push options, 'scan'
23   push options, 'seconds'
24   .local pmc select_option
25   select_option  = get_root_global ['_tcl'], 'select_option'
26   .local string canonical_subcommand
27   canonical_subcommand = select_option(options, subcommand_name)
29   .local pmc subcommand_proc
31   subcommand_proc = get_root_global ['_tcl';'helpers';'clock'], canonical_subcommand
32   if_null subcommand_proc, bad_args
34   .return subcommand_proc(argv)
36 bad_args:
37   .return ('') # once all commands are implemented, remove this...
39 few_args:
40   tcl_error 'wrong # args: should be "clock subcommand ?argument ...?"'
41 .end
43 .HLL '_Tcl', ''
44 .namespace [ 'helpers'; 'clock' ]
46 # XXX Need bignum support
47 .sub 'microseconds'
48   .param pmc argv
49   $I0 = elements argv
50   if $I0 goto bad_args
51   $N0 = time
52   $N0 *= 1000000
53   $I0 = $N0
54   .return ($I0)
55 bad_args:
56   tcl_error 'wrong # args: should be "clock microseconds"'
57 .end
59 # XXX Need bignum support
60 .sub 'milliseconds'
61   .param pmc argv
62   $I0 = elements argv
63   if $I0 goto bad_args
64   $N0 = time
65   $N0 *= 1000
66   $I0 = $N0
67   .return ($I0)
68 bad_args:
69   tcl_error 'wrong # args: should be "clock milliseconds"'
70 .end
73 .sub 'seconds'
74   .param pmc argv
75   $I0 = elements argv
76   if $I0 goto bad_args
77   $I0 = time
78   .return ($I0)
79 bad_args:
80   tcl_error 'wrong # args: should be "clock seconds"'
81 .end
83 # Local Variables:
84 #   mode: pir
85 #   fill-column: 100
86 # End:
87 # vim: expandtab shiftwidth=4 ft=pir: