Module: dfmc-conversion Synopsis: Domain model operations. Author: Keith Playford Copyright: Original Code is Copyright (c) 1995-2004 Functional Objects, Inc. All rights reserved. License: Functional Objects Library Public License Version 1.0 Dual-license: GNU Lesser General Public License Warranty: Distributed WITHOUT WARRANTY OF ANY KIND define program-warning <domain-visible-to-sibling-libraries> slot condition-variable-name, init-keyword: variable-name:; format-string "This domain on %= is visible to sibling libraries because the " "domain types are all based on imported classes."; format-arguments variable-name; end program-warning; define method check-model (d :: <&domain>) => () let gf = ^domain-generic-function(d); // Leakage check. if (gf & ~single-method-generic-function?(gf) & ~(^generic-function-sideways?(gf) | ^domain-sideways?(d)) & model-library(gf) ~== model-library(d) & all-types-known-imported? (model-library(d), ^domain-types(d))) note(<domain-visible-to-sibling-libraries>, source-location: model-source-location(d), variable-name: model-variable-name(d)); end; end method; define function ^domain-sideways? (d :: <&domain>) => (well? :: <boolean>) form-sideways?(model-definition(d)) end function; define function ^domain-generic-function (object :: <&domain>) let binding = model-variable-binding(object); let model = binding & binding-model-object(binding, default: #f); model end function; // eof