[project @ 1996-01-08 20:28:12 by partain]
[ghc-hetmet.git] / ghc / compiler / yaccParser / U_finfot.hs
1
2
3 module U_finfot where
4 import UgenUtil
5 import Util
6 data U_finfot = U_nofinfo | U_finfo U_stringId U_stringId 
7
8 rdU_finfot :: _Addr -> UgnM U_finfot
9 rdU_finfot t
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)
19     else
20         error ("rdU_finfot: bad tag selection:"++show tag++"\n")