600 CS{safeIs = safeIs, safeEs = safeEs, hazIs = hazIs, hazEs = hazEs, |
600 CS{safeIs = safeIs, safeEs = safeEs, hazIs = hazIs, hazEs = hazEs, |
601 swrappers = swrappers, uwrappers = f uwrappers, |
601 swrappers = swrappers, uwrappers = f uwrappers, |
602 safe0_netpair = safe0_netpair, safep_netpair = safep_netpair, |
602 safe0_netpair = safe0_netpair, safep_netpair = safep_netpair, |
603 haz_netpair = haz_netpair, dup_netpair = dup_netpair, xtra_netpair = xtra_netpair}; |
603 haz_netpair = haz_netpair, dup_netpair = dup_netpair, xtra_netpair = xtra_netpair}; |
604 |
604 |
|
605 fun overwrite_warn msg (p as (key : string, v)) xs = |
|
606 let |
|
607 fun over ((q as (keyi, _)) :: xs) = |
|
608 if keyi = key then p :: xs else q :: over xs |
|
609 | over [] = [p]; |
|
610 in ( |
|
611 if AList.defined (op =) xs key then () else warning msg; |
|
612 over xs |
|
613 ) end; |
605 |
614 |
606 (*Add/replace a safe wrapper*) |
615 (*Add/replace a safe wrapper*) |
607 fun cs addSWrapper new_swrapper = update_swrappers cs (fn swrappers => |
616 fun cs addSWrapper new_swrapper = update_swrappers cs |
608 overwrite_warn (swrappers, new_swrapper) |
617 (overwrite_warn ("Overwriting safe wrapper " ^ fst new_swrapper) new_swrapper); |
609 ("Overwriting safe wrapper " ^ fst new_swrapper)); |
|
610 |
618 |
611 (*Add/replace an unsafe wrapper*) |
619 (*Add/replace an unsafe wrapper*) |
612 fun cs addWrapper new_uwrapper = update_uwrappers cs (fn uwrappers => |
620 fun cs addWrapper new_uwrapper = update_uwrappers cs |
613 overwrite_warn (uwrappers, new_uwrapper) |
621 (overwrite_warn ("Overwriting unsafe wrapper "^fst new_uwrapper) new_uwrapper); |
614 ("Overwriting unsafe wrapper "^fst new_uwrapper)); |
|
615 |
622 |
616 (*Remove a safe wrapper*) |
623 (*Remove a safe wrapper*) |
617 fun cs delSWrapper name = update_swrappers cs (fn swrappers => |
624 fun cs delSWrapper name = update_swrappers cs (fn swrappers => |
618 let val swrappers' = filter_out (equal name o fst) swrappers in |
625 let val swrappers' = filter_out (equal name o fst) swrappers in |
619 if length swrappers <> length swrappers' then swrappers' |
626 if length swrappers <> length swrappers' then swrappers' |