146 |
fun group (g, p, e, m, error, gp) = let |
fun group (g, p, e, m, error, gp) = let |
147 |
val mc = applyTo MemberCollection.empty m |
val mc = applyTo MemberCollection.empty m |
148 |
val filter = Option.map (applyTo mc) e |
val filter = Option.map (applyTo mc) e |
149 |
val exports = MemberCollection.build (mc, filter, error, gp) |
val (exports, rp) = MemberCollection.build (mc, filter, error, gp) |
150 |
val subgroups = MemberCollection.subgroups mc |
val subgroups = MemberCollection.subgroups mc |
151 |
|
val { required = rp', granted } = p |
152 |
|
val p' = { required = StringSet.union (rp, rp'), granted = granted } |
153 |
in |
in |
154 |
GG.GROUP { exports = exports, islib = false, |
GG.GROUP { exports = exports, islib = false, |
155 |
privileges = p, grouppath = g, |
privileges = p', grouppath = g, |
156 |
subgroups = subgroups } |
subgroups = subgroups } |
157 |
end |
end |
158 |
|
|
159 |
fun library (g, p, e, m, error, gp) = let |
fun library (g, p, e, m, error, gp) = let |
160 |
val mc = applyTo MemberCollection.empty m |
val mc = applyTo MemberCollection.empty m |
161 |
val filter = applyTo mc e |
val filter = applyTo mc e |
162 |
val exports = MemberCollection.build (mc, SOME filter, error, gp) |
val (exports, rp) = MemberCollection.build (mc, SOME filter, error, gp) |
163 |
val subgroups = MemberCollection.subgroups mc |
val subgroups = MemberCollection.subgroups mc |
164 |
|
val { required = rp', granted } = p |
165 |
|
val p' = { required = StringSet.union (rp, rp'), granted = granted } |
166 |
in |
in |
167 |
GG.GROUP { exports = exports, islib = true, |
GG.GROUP { exports = exports, islib = true, |
168 |
privileges = p, grouppath = g, |
privileges = p', grouppath = g, |
169 |
subgroups = subgroups } |
subgroups = subgroups } |
170 |
end |
end |
171 |
|
|