1#
2# atol for long return check
3#
4package provide Atol 0.1
5package require Ffidl
6package require Ffidlrt
7
8#
9# the plain interfaces
10#
11ffidl-proc atol {pointer-utf8} long [ffidl-symbol [ffidl-find-lib c] atol]
12ffidl-proc _strtol {pointer-utf8 pointer-var int} long [ffidl-symbol [ffidl-find-lib c] strtol]
13ffidl-proc _strtoul {pointer-utf8 pointer-var int} {unsigned long} [ffidl-symbol [ffidl-find-lib c] strtoul]
14#
15# some cooked interfaces
16#
17proc strtol {str radix} {
18    set endptr [binary format [ffidl-info format pointer] 0]
19    set l [_strtol $str endptr $radix]
20    binary scan $endptr [ffidl-info format pointer] endptr
21    list $l $endptr
22}
23proc strtoul {str radix} {
24    set endptr [binary format [ffidl-info format pointer] 0]
25    set l [_strtoul $str endptr $radix]
26    binary scan $endptr [ffidl-info format pointer] endptr
27    list $l $endptr
28}
29
30