Module: dfmc-environment-projects Author: Roman Budzianowski, 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 define sealed method do-project-used-libraries (function :: , server :: , project-object :: ) => () assert(server == project-object, "Querying libraries for %= through different project %=", project-object, server); let project = project-object.ensure-project-proxy; if (project-object.project-compiler-database) for (subproject :: in project.all-used-projects) let library = %maybe-make-library(project-object, subproject); library & function(library) end end end method do-project-used-libraries; // Return the library of a project define sealed method project-library (project-object :: ) => (library :: false-or()) let project = project-object.ensure-project-proxy; if (project-object.project-compiler-database) %maybe-make-library(project-object, project) end end method project-library; define function %maybe-make-library (project-object :: , project :: ) => (library :: false-or()) let context = project.project-browsing-context; if (context & context.project-library-definition) make-environment-object(, project: project-object, compiler-object-proxy: project) end end function %maybe-make-library;