;;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: CL-USER -*- (defpackage #:geco-system (:use :cl :mk)) (in-package :geco-system) #| Genetic Evolution through Combination of Objects (GECO) Copyright (C) 1992,1993 George P. W. Williams, Jr. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |# #+:ccl-2 (setq ccl:*fasl-save-definitions* t) ;;; Configure conditional compilation options: ;; If your Lisp compiler does not support tail-recursion optimization, ;; you should enable the following feature: (pushnew :NO-TAIL-RECURSION-OPTIMIZATION *features*) ;; Comment out one of the two following lines to select which random ;; number generator to use (see random.lisp). ;; (pushnew :GECO-PARK-MILLER-RANDOM *features*) (pushnew :GECO-STANDARD-CL-RANDOM *features*) ;; The following two forms assure that only one random number generator is compiled: #+:geco-standard-cl-random (setq *features* (remove :geco-park-miller-random *features*)) #+:geco-park-miller-random (setq *features* (remove :geco-standard-cl-random *features*)) (setf (logical-pathname-translations "GECO") ;; >>>>> modify the next line to localize for your site <<<<< '(("**;*.*.*" "GPWLIB:SRC;GECO;**;"))) (mk:defsystem :GECO ; :host "GECO:" :source-pathname "" :source-extension "lisp" :binary-pathname "FASLs;" ; put the binaries in a subdirectory :binary-extension nil :components ((:module definitions :source-pathname "" :components ((:file "defpackage") (:file "generics" :depends-on ("defpackage")) (:file "classes" :depends-on ("defpackage")))) (:module utilities :source-pathname "" :depends-on (definitions) :components ( ;; (:file "bwm-resources") (:file "dbg") (:file "random"))) (:module methods :source-pathname "" :depends-on (definitions utilities) :components ( ;; (:file "resource-mgt") (:file "chromosome-methods") (:file "organism-methods") (:file "selection-methods") (:file "pop-stats-methods") (:file "population-methods") (:file "genetic-plan-methods") (:file "ecosystem-methods"))))) #+:ccl-2 (defun GECO::EDIT-GECO () (mk:operate-on-system :geco :edit :verbose nil)) #+:ccl-2 (eval-enqueue '(in-package :geco)) #|| #+:ccl-2 (eval-enqueue '(geco:edit-geco)) (geco::compile-geco) (mk:operate-on-system :geco :delete-binaries) ;;; code to construct the :export clause of the GECO defpackage form ;; Display the info (progn (format t "~%Package ~10TSymbol ~60TAccess'ty FuncInfo VarInfo Class") (with-package-iterator (generator 'geco :internal :external) (do ((mv-list (multiple-value-list (generator)) (multiple-value-list (generator)))) ((not (first mv-list))) (format t "~%~A ~10T~A, ~60T~S ~S ~S ~S" (package-name (fourth mv-list)) (second mv-list) (third mv-list) (function-information (second mv-list)) (variable-information (second mv-list)) (find-class (second mv-list) nil)))) (values)) ;; Return the info (with-package-iterator (generator 'geco :internal :external) (do ((mv-list (multiple-value-list (generator)) (multiple-value-list (generator))) symbols) ((not (first mv-list)) (cons :export (sort (mapcar #'string symbols) #'string-lessp))) (when (or (function-information (second mv-list)) (find-class (second mv-list) nil)) (push (second mv-list) symbols)))) ||#