X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=dev%2Fgraph.lisp;h=20197f5218df2c89b43a1ab371f42b7eeadcbd40;hb=a3062aaed0bb42f1bbbc7cf6d1a2cf14c277a712;hp=3af3c47e52e703c9c21c1f2be2a9fea4759a06c9;hpb=da28401a80e227702094801992f6177894f5698f;p=cl-graph.git diff --git a/dev/graph.lisp b/dev/graph.lisp index 3af3c47..20197f5 100644 --- a/dev/graph.lisp +++ b/dev/graph.lisp @@ -456,14 +456,14 @@ something is putting something on the vertexes plist's ;;; --------------------------------------------------------------------------- -(defmethod find-edge-between-vertexes ((graph basic-graph) (value-1 t) (value-2 t) - &key (error-if-not-found? t)) - (let ((v1 (find-vertex graph value-1 error-if-not-found?)) - (v2 (find-vertex graph value-2 error-if-not-found?))) - (aif (and v1 v2 (find-edge-between-vertexes graph v1 v2)) - it - (when error-if-not-found? - (error 'graph-edge-not-found-error :vertex-1 v1 :vertex-2 v2))))) +(defmethod find-edge-between-vertexes + ((graph basic-graph) (value-1 t) (value-2 t) + &key (error-if-not-found? t)) + (let* ((v1 (find-vertex graph value-1 error-if-not-found?)) + (v2 (find-vertex graph value-2 error-if-not-found?))) + (or (and v1 v2 (find-edge-between-vertexes graph v1 v2))) + (when error-if-not-found? + (error 'graph-edge-not-found-error :vertex-1 v1 :vertex-2 v2)))) ;;; --------------------------------------------------------------------------- @@ -617,10 +617,9 @@ something is putting something on the vertexes plist's (defmethod find-vertex ((graph basic-graph) (value t) &optional (error-if-not-found? t)) - (aif (find-item (graph-vertexes graph) (funcall (vertex-key graph) value)) - it - (when error-if-not-found? - (error 'graph-vertex-not-found-error :vertex value :graph graph)))) + (or (find-item (graph-vertexes graph) (funcall (vertex-key graph) value)) + (when error-if-not-found? + (error 'graph-vertex-not-found-error :vertex value :graph graph)))) (defmethod find-vertex ((graph basic-graph) (vertex basic-vertex) &optional (error-if-not-found? t)) @@ -646,18 +645,16 @@ something is putting something on the vertexes plist's (defmethod search-for-vertex ((graph basic-graph) (vertex basic-vertex) &key (key (vertex-key graph)) (test 'equal) (error-if-not-found? t)) - (aif (search-for-node (graph-vertexes graph) vertex :test test :key key) - it - (when error-if-not-found? - (error "~A not found in ~A" vertex graph)))) + (or (search-for-node (graph-vertexes graph) vertex :test test :key key) + (when error-if-not-found? + (error "~A not found in ~A" vertex graph)))) (defmethod search-for-vertex ((graph basic-graph) (vertex t) &key (key (vertex-key graph)) (test 'equal) (error-if-not-found? t)) - (aif (search-for-element (graph-vertexes graph) vertex :test test :key key) - it - (when error-if-not-found? - (error "~A not found in ~A" vertex graph)))) + (or (search-for-element (graph-vertexes graph) vertex :test test :key key) + (when error-if-not-found? + (error "~A not found in ~A" vertex graph)))) (defmethod iterate-elements ((graph basic-graph) fn) (iterate-elements (graph-vertexes graph)