6 data U_finfot = U_nofinfo | U_finfo U_stringId U_stringId
8 rdU_finfot :: _Addr -> UgnM U_finfot
10 = ioToUgnM (_ccall_ tfinfot t) `thenUgn` \ tag@(I# _) ->
11 if tag == ``nofinfo'' then
12 returnUgn (U_nofinfo )
13 else if tag == ``finfo'' then
14 ioToUgnM (_ccall_ fi1 t) `thenUgn` \ x_fi1 ->
15 rdU_stringId x_fi1 `thenUgn` \ y_fi1 ->
16 ioToUgnM (_ccall_ fi2 t) `thenUgn` \ x_fi2 ->
17 rdU_stringId x_fi2 `thenUgn` \ y_fi2 ->
18 returnUgn (U_finfo y_fi1 y_fi2)
20 error ("rdU_finfot: bad tag selection:"++show tag++"\n")