;;; API
;;; ---------------------------------------------------------------------------
-(defgeneric make-graph (graph-type &key)
+(defgeneric make-graph (graph-type &key &allow-other-keys)
(:documentation "Create a new graph of type `graph-type'. Graph type can be
a symbol naming a sub-class of basic-graph or a list. If it is a list of symbols naming
different classes. If graph-type is a list, then a class which has all of the listed
(defgeneric add-edge-between-vertexes (graph value-or-vertex-1 value-or-vertex-2
&rest args &key if-duplicate-do
- edge-type)
+ edge-type &allow-other-keys)
(:documentation "Adds an edge between two vertexes and returns it.
If force-new? is true,
the edge is added even if one already exists.
;;; ---------------------------------------------------------------------------
-(defgeneric add-vertex (graph value-or-vertex &key if-duplicate-do)
+(defgeneric add-vertex (graph value-or-vertex &key if-duplicate-do &allow-other-keys)
(:documentation "Adds a vertex to a graph. If called with a vertex, then this vertex is added. If called with a value, then a new vertex is created to hold the value. If-duplicate-do can be one of :ignore, :force, :replace, :replace-value or a function. The default is :ignore."))
;;; ---------------------------------------------------------------------------
;;; ---------------------------------------------------------------------------
-(defgeneric make-filtered-graph (old-graph test-fn &optional graph-completion-method depth)
+(defgeneric make-filtered-graph (old-graph test-fn &key
+ graph-completion-method depth
+ new-graph)
(:documentation "Takes a GRAPH and a TEST-FN (a single argument function
returning NIL or non-NIL), and filters the graph nodes according to
the test-fn (those that return non-NIL are accepted), returning
vertex-key
vertex-labeler
vertex-formatter
- edge-key
edge-labeler
edge-formatter)
(:documentation
;;; ---------------------------------------------------------------------------
(defgeneric source-edges (vertex &optional filter)
- (:documentation "Returns a list of the source edges of `vertex`. [?? Could be a defun]."))
+ (:documentation "Returns a list of the source edges of `vertex`. I.e.,
+the edges that begin at `vertex`."))
;;; ---------------------------------------------------------------------------
(defgeneric target-edges (vertex &optional filter)
- (:documentation "Returns a list of the target edges of `vertex`. [?? Could be a defun]."))
+ (:documentation "Returns a list of the target edges of `vertex`.
+I.e., the edges that end at `vertex`."))
;;; ---------------------------------------------------------------------------
(defgeneric child-vertexes (vertex &optional filter)
- (:documentation "Returns a list of the vertexes to which `vertex` is connected by an edge and for which `vertex` is the source vertex. If the connecting edge is undirected, then the vertex is always counted as a source. [?? Could be a defun]."))
+ (:documentation "Returns a list of the vertexes to which `vertex`
+is connected by an edge and for which `vertex` is the source vertex.
+If the connecting edge is undirected, then the vertex is always
+counted as a source. [?? Could be a defun]."))
;;; ---------------------------------------------------------------------------
(defgeneric complete-links (new-graph old-graph)
(:documentation "Add edges between vertexes in the new-graph for which the matching vertexes in the old-graph have edges. The vertex matching is done using `find-vertex`."))
-(defgeneric subgraph-containing (graph vertex &optional depth)
+(defgeneric subgraph-containing (graph vertex &key)
(:documentation "Returns a new graph that is a subset of `graph` that contains `vertex` and all of the other vertexes that can be reached from vertex by paths of less than or equal of length `depth`. If depth is not specified, then the entire sub-graph reachable from vertex will be returned. [?? Edge weights are always assumed to be one.]"))
;;; ---------------------------------------------------------------------------