Commit 1751176d authored by Gary King's avatar Gary King
Browse files

Moved many mixins from associative.lisp to containers.lisp to help with load...

Moved many mixins from associative.lisp to containers.lisp to help with load order issues. Thanks to Christoph Oppawsky for the detective work.

darcs-hash:20061209174248-3cc5d-76750a35d7ebd625c85af4e080530cd7b30dd8df.gz
parent 3b1487f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ instructions."))
;;; ---------------------------------------------------------------------------

(defsystem cl-containers
  :version "0.9.1"
  :version "0.9.2"
  :author "Brendan Burns, Andrew Hannon, Brent Heeringa, Gary King, Joshua Moody, Charles Sutton, Louis Theran, David Westbrook, and other former students and staff of EKSL."
  :maintainer "Gary Warren King <gwking@metabang.com>"
  :licence "MIT Style License"
+0 −76
Original line number Diff line number Diff line
@@ -5,12 +5,6 @@
;;; Associative-Containers, various flavors
;;; ---------------------------------------------------------------------------

(defclass* associative-container-mixin (initial-contents-key-value-mixin
                                          indexed-container-mixin)
   ())

;;; ---------------------------------------------------------------------------

(defmethod some-key-value-p ((container associative-container-mixin) 
                             (predicate t))
  (iterate-key-value container
@@ -155,23 +149,6 @@
;;; framework.
;;; ---------------------------------------------------------------------------

(defclass* array-container-abstract (associative-container-mixin
                                       bounded-container-mixin
                                       uses-contents-mixin)
  ())

;;; ---------------------------------------------------------------------------

(defclass* array-container (array-container-abstract
                              typed-container-mixin
                              initial-element-mixin
                              iteratable-container-mixin
                              concrete-container)
  ((contents :initform nil
             :accessor contents)))

;;; ---------------------------------------------------------------------------

(defmethod print-container-summary ((container array-container) stream)
  (format stream "~{~Dx~}" (array-dimensions (contents container))))

@@ -249,19 +226,6 @@
;;; the "cells" of the array that you set.
;;; ---------------------------------------------------------------------------

(defclass* sparse-array-container (associative-container-mixin
                                     contents-as-hashtable-mixin
                                     test-container-mixin
                                     initial-element-mixin
                                     bounded-container-mixin
                                     concrete-container)
  ((dimensions nil ir)
   (use-fixnums? nil r))
  (:default-initargs
    :test #'equal))

;;; ---------------------------------------------------------------------------

(defmethod initialize-instance :around ((object sparse-array-container) &key
                                        dimensions)
  (setf (slot-value object 'dimensions) (ensure-list dimensions))
@@ -344,16 +308,6 @@
;;; like a regular hash-table
;;; ---------------------------------------------------------------------------

(defclass* simple-associative-container (associative-container-mixin
                                           initial-element-mixin
                                           contents-as-hashtable-mixin
                                           test-container-mixin
                                           concrete-container
                                           )
  ())

;;; ---------------------------------------------------------------------------

(defmethod item-at-1 ((container simple-associative-container) index)
  (multiple-value-bind (value found?)
                       (gethash index (contents container))
@@ -403,15 +357,6 @@
;;; Nested hash tables
;;; ---------------------------------------------------------------------------

(defclass* associative-container (initial-element-mixin
                                    contents-as-hashtable-mixin
                                    test-container-mixin
                                    associative-container-mixin
                                    concrete-container)
  ())

;;; ---------------------------------------------------------------------------

(defmethod initialize-instance :after ((object associative-container) 
                                       &key (test 'eq))
  (assert (member (typecase test
@@ -547,31 +492,10 @@
  (values container))


;;; ---------------------------------------------------------------------------
;;; biassociative-container-mixin
;;;
;;;   A biassociative container is one in which FIND-ITEM and REVERSE-FIND
;;;   are just as fast.  (Positive example: alist, negative example: hashtable).
;;;
;;; ---------------------------------------------------------------------------

(defclass* biassociative-container-mixin (associative-container-mixin)
   ())


;;; ---------------------------------------------------------------------------
;;; Associative-list based container
;;; ---------------------------------------------------------------------------

(defclass* alist-container (biassociative-container-mixin
                              initial-element-mixin
                              key-value-iteratable-container-mixin
                              uses-contents-mixin
                              concrete-container)
  ((test #'equal i)))

;;; ---------------------------------------------------------------------------

(defmethod initialize-container ((container alist-container))
   (setf (slot-value container 'contents) nil))

dev/cl-containers.system

deleted100644 → 0
+0 −116
Original line number Diff line number Diff line
;;; -*- Mode: Lisp; package: CL-USER; Syntax: Common-lisp; Base: 10 -*-

#|

$Id: cl-containers.system,v 1.23 2005/07/29 20:34:02 gwking Exp $

Author: Gary King, et. al.  
most recent working over by Andrew Hannon, David Westbrook, Gary King, 
Brent Heeringa, Louis Theran)

|#

(in-package :COMMON-LISP-USER)

(glu-define-logical-pathname-translations (cl-containers)
  (source)
  (utils (:back :back "utils" "dev"))
  (moptilities (:back :back "moptilities" "dev"))
  (metatilities (:back :back "metatilities" "dev"))
  (cl-variates (:back :back "cl-variates" "dev"))
  (lift  (:back :back "lift" "dev")))

;;; ---------------------------------------------------------------------------

(setf (glu-system-source-file 'lift)
      "cl-containers:lift;lift.system"
      (glu-system-source-file :cl-variates)
      "cl-containers:cl-variates;cl-variates.system"
      (glu-system-source-file :moptilities)
      "cl-containers:moptilities;moptilities.system"
      (glu-system-source-file :metatilities-base)
      "cl-containers:metatilities;metatilities.system")


;;; ---------------------------------------------------------------------------
;;; system definition 
;;; ---------------------------------------------------------------------------

(define-glu-system :cl-containers 
  ((("package"
     "container-api"))
   
   (("containers"
     "basic-operations"
     "queues"
     "stacks"
     "trees"
     "lists"
     "bags-and-sets"
     "ring-buffers"
     "miscellaneous"
     "associative"
     "compatibility"
     "vectors"
     "quad-tree"
     "heaps"
     "containers-readtable"
     "container-mixins"
     "union-find-container"
     "package-container"))
      
   (("notes.text"
     "flagged-issues.text") 
    :associates? t))
  :base-dir "cl-containers:source;"
  :bin-identifiers (:platform :vendor)
  :include-in-menu nil
  :top-level t
  :depends-on (moptilities metatilities-base)
  :test-system :test-containers)

;;; ---------------------------------------------------------------------------

(defsystem-connection containers-and-utilities
  ((("iterators"
     "file-iterators"))
   
   (("utilities-integration"
     #+Ignore "glu-priority-queue")))
  :bin-identifiers (:platform :vendor)
  :depends-on (metabang.dynamic-classes)
  :requires (cl-containers :metatilities-base))

;;; ---------------------------------------------------------------------------

(defsystem-connection containers-and-copying
  ("container-copying")

  :bin-identifiers (:platform :vendor)
  :requires (cl-containers cl-copy))

;;; ---------------------------------------------------------------------------

(defsystem-connection containers-and-variates
  ("container-sampling"
   "weighted-sampling")

  :bin-identifiers (:platform :vendor)
  :requires (cl-containers cl-variates))

;;; ---------------------------------------------------------------------------

(define-glu-system :test-containers
  ((("test-*"
     
     ) :load-only? t))
  
  :bin-identifiers (:platform :vendor)
  :depends-on (lift cl-containers)
  :nice-name "Containers Test Suite")



;;; ***************************************************************************
;;; *                              End of File                                *
;;; ***************************************************************************
+3 −33
Original line number Diff line number Diff line
@@ -49,14 +49,6 @@ for specializations."))

;;; ---------------------------------------------------------------------------

(defgeneric make-node-for-container (container item &key))

;;; ---------------------------------------------------------------------------

(defgeneric node-empty-p (node))

;;; ---------------------------------------------------------------------------

(defgeneric size (abstract-container)
  (:documentation "Returns the number of items currently in the container."))

@@ -97,10 +89,6 @@ super-container."))

;;; ---------------------------------------------------------------------------

(defgeneric total-size (bounded-container-mixin))

;;; ---------------------------------------------------------------------------

(defgeneric item-at (indexed-container-mixin &rest indexes)
  (:documentation "Returns the item specified by the indexes."))

@@ -196,24 +184,13 @@ the transform function."))

;;; ---------------------------------------------------------------------------

(defgeneric iterate-key-value (container function))

(defgeneric iterate-value-key (container function))

;;?? should be settable
(defgeneric first-element (ordered-container-mixin))

(defgeneric (setf first-element) (x y)
  (:documentation ""))

(defun first-item (x) (first-element x))

;;?? should be settable
(defgeneric last-element (ordered-container-mixin))

(defgeneric (setf last-element) (x y)
  (:documentation ""))

(defun last-item (x) (last-element x))

(defgeneric delete-first (ordered-container-mixin)
@@ -256,13 +233,6 @@ upspecified order."))
  (:documentation "Finds the key in the associative-container whose 
value is VALUE."))

(defgeneric enqueue (abstract-queue item))
(defgeneric dequeue (abstract-queue))

(defgeneric pop-item (abstract-stack))

(defgeneric children (many-child-node))

;;; ---------------------------------------------------------------------------

(defgeneric ensure-sorted (container)
@@ -287,8 +257,6 @@ container is returned."))
(defgeneric element-position (ordered-container-mixin element &key test key)
  (:documentation "Returns the position of element in container using test and
key to match. Key defaults to identity and test defaults to eq."))
(defgeneric delete-item (ordered-container-mixin item))
(defgeneric delete-item-if (ordered-container-mixin test))

;;; ---------------------------------------------------------------------------

@@ -506,6 +474,9 @@ key to match. Key defaults to identity and test defaults to eq."))
(defgeneric last-element (x)
  (:documentation ""))

(defgeneric (setf last-element) (x y)
  (:documentation ""))

(defgeneric left-and-right-nodes-for-item (list item)
  (:documentation ""))

@@ -518,7 +489,6 @@ key to match. Key defaults to identity and test defaults to eq."))
(defgeneric make-initial-element (container)
  (:documentation ""))


(defgeneric make-node-for-container (container item &key)
  (:documentation ""))

dev/containers.asdf

deleted100644 → 0
+0 −1
Original line number Diff line number Diff line
;;; -*- Mode: Lisp; package: CL-USER; Syntax: Common-lisp; Base: 10 -*-#|$Id: containers.asdf,v 1.1 2004/07/22 01:04:32 gwking Exp $Author: Gary King, et. al.  most recent working over by Andrew Hannon, David Westbrook, Gary King, Brent Heeringa, Louis Theran)|#(defpackage :containers-system (:use #:cl #:asdf))(in-package :containers-system);;; ---------------------------------------------------------------------------;;; system definitions;;; ---------------------------------------------------------------------------(defsystem "CONTAINERS-SYSTEM"  :version "0.5"  :author "Gary King <gwking@cs.umass.edu>"  :description "Generic containers for Common Lisp"  :components ((:file "package")               (:file "container-api" :depends-on ("package"))               (:file "containers" :depends-on ("package"))               (:file "containers-readtable" :depends-on ("containers")))  :depends-on ("EKSL-UTILITIES-SYSTEM-LEVEL-0" "DEFCLASS-STAR"))#| WIP;;; ---------------------------------------------------------------------------(define-eksl-module :container-sampling   ("container-sampling")  :system containers  :depends-on (variates));;; ---------------------------------------------------------------------------(define-eksl-module :container-copying   ("container-copying")  :system containers  :depends-on (copying));;; ---------------------------------------------------------------------------(define-eksl-module :container-utilities   ((("utilities-integration"     "eksl-priority-queue")))  :system containers  :depends-on (containers container-copying container-sampling));;; ---------------------------------------------------------------------------(define-eksl-module :container-tables   ((("table-container")))  :system containers  :depends-on (containers :mop-layer));;; ---------------------------------------------------------------------------(define-eksl-module :container-thread-safe   ((("container-thread-safe")))  :system containers  :depends-on (containers))|#;;; ***************************************************************************;;; *                              End of File                                *;;; ***************************************************************************
 No newline at end of file
Loading