Module: environment-protocols Synopsis: Environment protocols Author: Andy Armstrong 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 /// Name objects define class () end class ; define class () end class ; define class () end class ; define open generic name-value (server :: , name :: ) => (value :: false-or()); define open generic name-type (server :: , name :: ) => (type :: ); define open generic name-exported? (server :: , name :: ) => (exported? :: ); define open generic name-imported? (server :: , name :: ) => (imported? :: ); /// Project dispatching methods define method name-value (project :: , name :: ) => (value :: false-or()) let server = choose-server(project, name); if (server) name-value(server, name) else closed-server-error(name) end end method name-value; define method name-type (project :: , name :: ) => (type :: ) let server = choose-server(project, name); if (server) name-type(server, name) else closed-server-error(name) end end method name-type; define method name-exported? (project :: , name :: ) => (exported? :: ) let server = choose-server(project, name); if (server) name-exported?(server, name) else closed-server-error(name) end end method name-exported?; define method name-imported? (project :: , name :: ) => (imported? :: ) let server = choose-server(project, name); if (server) name-imported?(server, name) else closed-server-error(name) end end method name-imported?; /// Implementation define method environment-object-type-name (object :: ) => (label :: ) "Name" end method environment-object-type-name;