278 |
"b" :: w_int n (w_symbol sy k) m |
"b" :: w_int n (w_symbol sy k) m |
279 |
end |
end |
280 |
|
|
281 |
fun w_sn_raw (DG.SNODE n) k = |
fun w_bool true k m = "t" :: k m |
282 |
w_si (#smlinfo n) |
| w_bool false k m = "f" :: k m |
283 |
(w_list w_sn (#localimports n) |
|
284 |
(w_list w_fsbn (#globalimports n) k)) |
fun w_sn_raw (DG.SNODE n) k = let |
285 |
|
val i = #smlinfo n |
286 |
|
val li = #localimports n |
287 |
|
val gi = #globalimports n |
288 |
|
in |
289 |
|
Say.say ["+++ w_sn_raw: ", SmlInfo.descr i, "\n"]; |
290 |
|
app (fn (DG.SNODE n, ref r) => |
291 |
|
(Say.say [" ", if r then "+" else "-", |
292 |
|
SmlInfo.descr (#smlinfo n), "\n"])) li; |
293 |
|
app (fn ((_, sbn), ref r) => |
294 |
|
(Say.say [" ", if r then "+" else "-", |
295 |
|
DG.describeSBN sbn, "\n"])) gi; |
296 |
|
w_si i (w_list w_sloci li (w_list w_sglobi gi k)) |
297 |
|
end |
298 |
|
|
299 |
|
and w_sloci (n, ref r) k m = w_sn n (w_bool r k) m |
300 |
|
and w_sglobi (n, ref r) k m = w_fsbn n (w_bool r k) m |
301 |
|
|
302 |
and w_sn n = w_share w_sn_raw PSN n |
and w_sn n = w_share w_sn_raw PSN n |
303 |
|
|
310 |
|
|
311 |
fun w_exports e = w_list w_impexp (SymbolMap.listItemsi e) |
fun w_exports e = w_list w_impexp (SymbolMap.listItemsi e) |
312 |
|
|
|
fun w_bool true k m = "t" :: k m |
|
|
| w_bool false k m = "f" :: k m |
|
|
|
|
313 |
fun w_privileges p = w_list w_string (StringSet.listItems p) |
fun w_privileges p = w_list w_string (StringSet.listItems p) |
314 |
|
|
315 |
fun pickle_group () = let |
fun pickle_group () = let |
334 |
case SmlInfoMap.find (!m, smlinfo) of |
case SmlInfoMap.find (!m, smlinfo) of |
335 |
SOME n => n |
SOME n => n |
336 |
| NONE => let |
| NONE => let |
337 |
val li = map sn (#localimports n) |
val li = map sloci (#localimports n) |
338 |
val gi = map fsbn (#globalimports n) |
val gi = map sglobi (#globalimports n) |
339 |
val sourcepath = SmlInfo.sourcepath smlinfo |
val sourcepath = SmlInfo.sourcepath smlinfo |
340 |
(* FIXME: see the comment near the other |
(* FIXME: see the comment near the other |
341 |
* occurence of SrcPath.spec... *) |
* occurence of SrcPath.spec... *) |
360 |
n |
n |
361 |
end |
end |
362 |
|
|
363 |
|
and sloci (n, ref r) = (sn n, r) |
364 |
|
and sglobi (n, ref r) = (fsbn n, r) |
365 |
|
|
366 |
and sbn (DG.SB_SNODE n) = sn n |
and sbn (DG.SB_SNODE n) = sn n |
367 |
| sbn (DG.SB_BNODE n) = n |
| sbn (DG.SB_BNODE n) = n |
368 |
|
|
658 |
|
|
659 |
(* this is the place where what used to be an |
(* this is the place where what used to be an |
660 |
* SNODE changes to a BNODE! *) |
* SNODE changes to a BNODE! *) |
661 |
fun r_sn_raw () = let |
fun r_sn_raw () = |
662 |
val i = r_si () |
DG.BNODE { bininfo = r_si (), |
663 |
in |
localimports = r_list r_sloci (), |
664 |
DG.BNODE { bininfo = i, |
globalimports = r_list r_sglobi () } |
665 |
localimports = r_list r_sn (), |
|
666 |
globalimports = r_list r_fsbn () } |
and r_sloci () = (r_sn (), r_bool ()) |
667 |
end |
and r_sglobi () = (r_fsbn (), r_bool ()) |
668 |
|
|
669 |
and r_sn () = |
and r_sn () = |
670 |
r_share r_sn_raw UBN (fn (UBN n) => n | _ => raise Format) () |
r_share r_sn_raw UBN (fn (UBN n) => n | _ => raise Format) () |