SS.delete (values, value)
else
values
+
+ val classes = if SS.isEmpty values then
+ (#1 (SM.remove (classes, class)))
+ handle NotFound => classes
+ else
+ SM.insert (classes, class, values)
in
- acl := SM.insert (!acl, user,
- SM.insert (classes, class,
- values))
+ if SM.numItems classes = 0 then
+ (acl := #1 (SM.remove (!acl, user)))
+ handle NotFound => ()
+ else
+ acl := SM.insert (!acl, user, classes)
end
fun revokeFromAll {class, value} =