X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=dev%2Fgraph.lisp;h=c41e46389ebb88262c39892c2004819c5e8938ce;hb=11bf1557a30b580f189d6adaaee08965f0ed55e3;hp=8a17dc1387c6a032bfe24442273dcfd52a6a6501;hpb=53ce4bea57e2710f2296878d79fe00ca31fec9fb;p=cl-graph.git diff --git a/dev/graph.lisp b/dev/graph.lisp index 8a17dc1..c41e463 100644 --- a/dev/graph.lisp +++ b/dev/graph.lisp @@ -14,7 +14,7 @@ something is putting something on the vertexes plist's |# -(in-package metabang.graph) +(in-package #:metabang.graph) ;;; --------------------------------------------------------------------------- ;;; classes @@ -87,11 +87,6 @@ something is putting something on the vertexes plist's ;;; --------------------------------------------------------------------------- -#+COPYING -(defcopy-methods basic-vertex :copy-all t) - -;;; --------------------------------------------------------------------------- - (defmethod initialize-instance :after ((object basic-vertex) &key graph vertex-id) (when (and graph (not vertex-id)) (setf (slot-value object 'vertex-id) @@ -116,7 +111,6 @@ something is putting something on the vertexes plist's (color nil ia "The `color` is used by some algorithms for bookkeeping. [?? Should probably be in a mixin]")) (:export-p t) (:export-slots edge-id element tag color) - #+COPYING :copy-slots (:make-load-form-p t) (:documentation "This is the root class for all edges in CL-Graph.")) @@ -136,15 +130,14 @@ something is putting something on the vertexes plist's ;;; --------------------------------------------------------------------------- -(defclass* directed-edge-mixin (#+COPYING copyable-mixin) () +(defclass* directed-edge-mixin () () (:export-p t) (:documentation "This mixin class is used to indicate that an edge is directed.")) ;;; --------------------------------------------------------------------------- -(defclass* weighted-edge-mixin (#+COPYING copyable-mixin) +(defclass* weighted-edge-mixin () ((weight 1d0 ia "The value of the weight of this edge. Defaults to 1.0d0")) - #+COPYING :copy-slots :export-slots (:export-p t) (:documentation "This mixin class adds a `weight` slot to an edge.")) @@ -155,7 +148,7 @@ something is putting something on the vertexes plist's ;;; --------------------------------------------------------------------------- -(defclass* basic-graph (#+COPYING copyable-mixin) +(defclass* basic-graph () ((graph-vertexes :unbound ir) (graph-edges :unbound ir) (largest-vertex-id 0 r) @@ -198,7 +191,7 @@ something is putting something on the vertexes plist's (defmethod print-object ((graph basic-graph) stream) (print-unreadable-object (graph stream :type t :identity t) - (format stream "~A" (size graph)))) + (format stream "[~A,~A]" (size graph) (edge-count graph)))) ;;; --------------------------------------------------------------------------- @@ -229,18 +222,6 @@ something is putting something on the vertexes plist's &allow-other-keys) (remf args :edge-class) (remf args :edge-type) - - #| I removed 'em, gwk - - ;;; I added these - jjm - (remf args :vertex-test) - (remf args :vertex-key) - (remf args :edge-key) - (remf args :edge-test) - (remf args :force-new?) - -|# - (assert (or (null edge-type) (eq edge-type :directed) (eq edge-type :undirected)) nil @@ -263,7 +244,6 @@ something is putting something on the vertexes plist's :graph graph :vertex-1 vertex-1 :vertex-2 vertex-2 args)) - ;;; --------------------------------------------------------------------------- (defmethod make-graph ((graph-type symbol) &rest args &key &allow-other-keys) @@ -672,7 +652,7 @@ something is putting something on the vertexes plist's (error "~A not found in ~A" vertex graph)))) ;;; --------------------------------------------------------------------------- - +;; TODO !!! dispatch is the same as the second method above (defmethod search-for-vertex ((graph basic-graph) (vertex t) &key (key (vertex-key graph)) (test 'equal) (error-if-not-found? t)) @@ -811,16 +791,6 @@ something is putting something on the vertexes plist's ;;; --------------------------------------------------------------------------- -#+COPYING -(defmethod generate-directed-free-tree ((graph basic-graph) (root basic-vertex)) - (let ((new-graph (copy-top-level graph))) - (empty! new-graph) - (nilf (contains-undirected-edge-p new-graph)) - (neighbors-to-children new-graph root) - (values new-graph))) - -;;; --------------------------------------------------------------------------- - (defmethod generate-directed-free-tree ((graph basic-graph) root) (generate-directed-free-tree graph (find-vertex graph root))) @@ -1072,7 +1042,7 @@ nil gathers the entire closure(s)." ;;; --------------------------------------------------------------------------- (defmethod edge-count ((graph basic-graph)) - (length (edges graph))) + (count-using #'iterate-edges nil graph)) ;;; ---------------------------------------------------------------------------