The flow Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The flow Reference Manual

This is the flow Reference Manual, version 1.0.0, generated automatically by Declt version 2.3 "Robert April" on Tue Feb 20 08:39:13 2018 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

About Flow

Flow is a flowchart graph library. Unlike other graphing libraries, this one focuses on nodes in a graph having distinct "ports" through which connections to other nodes are formed. This helps in many concrete scenarios where it is important to distinguish not only which nodes are connected, but also how they are connected to each other.

Particularly, a lot of data flow and exchange problems can be reduced to such a "flowchart". For example, an audio processing library may present its pipeline as a flowchart of segments that communicate with each other through audio sample buffers. Flow gives a convenient view onto this kind of problem, and even allows the generic visualisation of graphs in this format.

How To

In a Flow graph there's three kinds of units: nodes, ports, and connections. A node is analogous to a vertex in a graph, a port is analogous to a place where a connection can be made on a node, and a connection is analogous to an edge in a graph.

Of the nodes, there's two kinds:

Of the ports, there's several mixin classes that can be used to define the kind of port you want. Naturally, if you want to add extra information you can define your own port classes to use instead.

Of the connections, only two are predefined, though it is easy to imagine situations where other kinds of connections might also come in handy.

You can then manage connections between ports using connect, disconnect, and sever. You can also inspect nodes and ports with ports, and connections.

A Flow Chart Example

If you wanted to build a classic flow chart library, you could use something like this as your basic building blocks:

(defclass in (in-port n-port)
  ())

(defclass out (out-port 1-port)
  ())

(define-node start ()
  ((out :port-type out)))

(define-node end ()
  ((in :port-type in)))

(define-node process ()
  ((in :port-type in)
   (out :port-type out)))

(define-node decision ()
  ((in :port-type in)
   (true :port-type out)
   (false :port-type out)))

Using these basic classes we can then create a flow chart like this:

(let ((start (make-instance 'start))
      (pick-library (make-instance 'process))
      (evaluate-library (make-instance 'process))
      (decide-if-good (make-instance 'decision))
      (end (make-instance 'end)))
  (connect (port start 'out) (port pick-library 'in))
  (connect (port pick-library 'out) (port evaluate-library 'in))
  (connect (port evaluate-library 'out) (port decide-if-good 'in))
  (connect (port decide-if-good 'true) (port end 'in))
  (connect (port decide-if-good 'false) (port pick-library 'in))
  start)

Operating on Flow Graphs

Flow also includes a couple of operations to help your process the graphs you created using the library. It can do a topological-sort, extract-graph for you, color-nodes, and allocate-ports. There's also a generic visit to allow you to quickly traverse the graph. See the docstrings of the functions for an in-depth explanation of what they do.

Visualising a Flow Graph

There is an additional system included called flow-visualizer. This system includes a primitive graph visualizer that lets you view and edit a graph directly in a GUI. It isn't very advanced at this point, but will probably be extended in the future to a usable flowchart editor.


Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 flow

Maintainer

Nicolas Hafner <shinmera@tymoon.eu>

Author

Nicolas Hafner <shinmera@tymoon.eu>

Home Page

https://github.com/Shinmera/flow

License

Artistic

Description

A flowchart and generalised graph library.

Version

1.0.0

Dependencies
Source

flow.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 flow.asd

Location

flow.asd

Systems

flow (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 flow/package.lisp

Parent

flow (system)

Location

package.lisp

Packages

flow


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 flow/toolkit.lisp

Dependency

package.lisp (file)

Parent

flow (system)

Location

toolkit.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 flow/nodes.lisp

Dependency

toolkit.lisp (file)

Parent

flow (system)

Location

nodes.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 flow/static-node.lisp

Dependency

nodes.lisp (file)

Parent

flow (system)

Location

static-node.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 flow/graph.lisp

Dependency

static-node.lisp (file)

Parent

flow (system)

Location

graph.lisp

Exported Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.7 flow/documentation.lisp

Dependency

graph.lisp (file)

Parent

flow (system)

Location

documentation.lisp


Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Previous: , Up: Packages   [Contents][Index]

4.1 flow

Source

package.lisp (file)

Nickname

org.shirakumo.flow

Use List

common-lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Special variables

Special Variable: *resolve-port*

Whether a slot-value/slot-makunbound/slot-boundp call should resolve the port.

If this is T (the default), then the port’s
slot within the object’s slot is resolved,
rather than directly resolving the slot that the
port is itself contained in.

Package

flow

Source

static-node.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Macros

Macro: define-node NAME DIRECT-SUPERCLASSES DIRECT-SLOTS &rest OPTIONS

Shorthand macro to define a static node class.

All this does is add the necessary :METACLASS option and inject STATIC-NODE as a direct-superclass.

See STATIC-NODE

Package

flow

Source

static-node.lisp (file)

Macro: define-port-value-slot PORT-CLASS SLOT &optional ACCESSOR

Easily define a slot to be used for the port value of a port class.

If ACCESSOR is given it should be a symbol denoting
the name of an accessor responsible for getting and
setting the appropriate value on the port. If it is
not given, SLOT-VALUE is used instead.

This automatically generates appropriate methods for
the port value functions.

See PORT-VALUE
See PORT-VALUE-BOUNDP
See PORT-VALUE-MAKUNBOUND

Package

flow

Source

static-node.lisp (file)

Macro: with-attributes ATTRIBUTES UNIT &body BODY

Shorthand macro to access the given attributes through a variable.

This is similar to WITH-SLOTS.

See UNIT
See ATTRIBUTE
See CL:WITH-SLOTS

Package

flow

Source

nodes.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Functions

Function: allocate-ports NODES &key ATTRIBUTE CLEAR IN-PLACE-ATTRIBUTE TEST SORT

Perform a colour "allocation" on the ports of the graph.

Each port reachable in the graph from the given starting nodes out that is not of type in-port is assigned a "colour" to the specified attribute.
If clear is non-NIL, the colour attribute is first cleared off of each port, ensuring a clean colouring.

The colouring rules are as follows:
A port may not have the same colour as any of the other ports on the same node. Unless the node’s in-place-attribute is non-NIL, the colour must
also be distinct from the colour of any of the node’s predecessor ports. A predecessor port being any port that is connected to an in-port of the node.

In effect this produces a colouring that is useful to calculate the allocation of buffers and other resources necessary to perform a calculation for
a node. These rules ensure that the calculation
can be performed without accidentally overwriting buffer data necessary at a later point in the execution of the graph, while at the same time
also minimising the number of necessary buffers.

The given graph may not contain any cycles.

Before the nodes are processed, they are sorted by SORT, defaulting to a TOPOLOGICAL-SORT. The sorted nodes must be in such an order that the nodes
appear in a topological order.

If TEST is given, only ports for which the TEST function returns non-NIL are considered for the colouring. This allows you to distribute multiple colour "kinds" across a single graph by running
the colouring once for each kind of colour and excluding the ports that should not be coloured for that kind.

See TOPOLOGICAL-SORT

Package

flow

Source

graph.lisp (file)

Function: color-nodes NODE &key ATTRIBUTE CLEAR

Perform a graph colouring.

Each node in the graph from the given starting node out is assigned a "colour" to the specified attribute. This colour is in practise an integer in the range [0,n] where n is the number of nodes in the graph. The colours are distributed in such a way that no neighbouring nodes have the same colour.

The employed algorithm is greedy and cannot guarantee an optimal colouring. Optimal colouring is an NP- complete problem, and the results produced by a greedy algorithm are usually shown to be good enough.

The full list of coloured nodes is returned.

Package

flow

Source

graph.lisp (file)

Function: extract-graph NODE

Extract the graph starting from the given node.

This returns two lists, the first being the list of vertices (nodes), and the second being the list of edges, with each edge being a list of left and right vertex that are connected. The edges are intended to be directed. Undirected edges are represented by two edges, one from left to right and one from right to left.

The order of the vertices and edges in the returned lists is unspecified.

See VISIT

Package

flow

Source

graph.lisp (file)

Function: topological-sort NODES

Produces a topological sorting of the given nodes.

This uses Tarjan’s algorithm to compute the topological sorting. Note that if the given list of nodes does not include all reachable nodes, the result may be erroneous.

Package

flow

Source

graph.lisp (file)

Function: visit NODE FUNCTION

Visit each node in the graph, starting from the given node.

The visiting proceeds by calling the function on a node, then recursing through each connection of the node. The recursion does not respect directed connections. It is guaranteed that each node is
only visited once, regardless of cycles.

Package

flow

Source

graph.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Generic functions

Generic Function: attribute UNIT NAME &optional DEFAULT

Accessor to the named attribute on the unit.

The attribute’s name must be comparable by EQL. If the attribute does not exist on the unit, the default value is returned instead.

See ATTRIBUTES
See REMOVE-ATTRIBUTE
See UNIT

Package

flow

Writer

(setf attribute) (generic function)

Methods
Method: attribute (UNIT unit) NAME &optional DEFAULT
Source

nodes.lisp (file)

Generic Function: (setf attribute) VALUE UNIT NAME
Package

flow

Reader

attribute (generic function)

Methods
Method: (setf attribute) VALUE (UNIT unit) NAME
Source

nodes.lisp (file)

Generic Function: attributes OBJECT

Accessor to the unit’s hash table of attributes.

See UNIT
See ATTRIBUTE
See REMOVE-ATTRIBUTE

Package

flow

Writer

(setf attributes) (generic function)

Methods
Method: attributes (UNIT unit)

automatically generated reader method

Source

nodes.lisp (file)

Generic Function: (setf attributes) NEW-VALUE OBJECT
Package

flow

Reader

attributes (generic function)

Methods
Method: (setf attributes) NEW-VALUE (UNIT unit)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: check-connection-accepted CONNECTION PORT

Check whether the given connection is accepted on the given unit.

If it is not accepted, an error is signalled. This
generic function uses a PROGN method combination,
which forces tests of all superclasses to be performed
as well.

Package

flow

Source

nodes.lisp (file)

Method Combination

progn (short method combination)

Options: :most-specific-first

Methods
Method: check-connection-accepted (CONNECTION directed-connection) (PORT out-port) progn
Method: check-connection-accepted (CONNECTION directed-connection) (PORT in-port) progn
Method: check-connection-accepted CONNECTION (PORT 1-port) progn
Method: check-connection-accepted NEW-CONNECTION (PORT port) progn
Generic Function: connect LEFT RIGHT &optional CONNECTION-TYPE &rest INITARGS

Forge a connection between the two units.

The connection is only made if it is accepted on both left and right hand sides by CHECK-CONNECTION-ACCEPTED. If both accept the connection, it is pushed onto their respective connections lists.

See PORT
See CHECK-CONNECTION-ACCEPTED
See CONNECTIONS

Package

flow

Methods
Method: connect (LEFT port) (RIGHT port) &optional CONNECTION-TYPE &rest INITARGS
Source

nodes.lisp (file)

Generic Function: connection= A B

Tests whether two connections are considered equal.

Connections are the same under this comparison, if they are connected to the same ports "in the same way". This simply means that whether ports are connected the same may depend on the specific connection being tested. For example, directed connections are only the same if the left and right ports match up, whereas undirected connections are the same regardless of the order between them.

See CONNECTION

Package

flow

Methods
Method: connection= (A directed-connection) (B directed-connection)
Source

nodes.lisp (file)

Method: connection= A B
Source

nodes.lisp (file)

Generic Function: connections OBJECT

Accessor to the list of connections on this unit.

The list is not guaranteed to be fresh and thus may not be modified without potentially messing things up.

See PORT
See NODE

Package

flow

Writer

(setf connections) (generic function)

Methods
Method: connections (NODE node)
Source

nodes.lisp (file)

Method: connections (PORT port)

automatically generated reader method

Source

nodes.lisp (file)

Generic Function: (setf connections) NEW-VALUE OBJECT
Package

flow

Reader

connections (generic function)

Methods
Method: (setf connections) NEW-VALUE (PORT port)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: disconnect LEFT RIGHT

Remove any matching connection from left to right.

This constructs a directed-connection between the two and then removes all connections from each of them that matches the constructed connection by CONNECTION=.

See PORT
See DIRECTED-CONNECTION
See REMOVE-CONNECTION
See CONNECTION=

Package

flow

Methods
Method: disconnect (A node) (B node)
Source

nodes.lisp (file)

Method: disconnect (PORT port) (NODE node)
Source

nodes.lisp (file)

Method: disconnect (NODE node) (PORT port)
Source

nodes.lisp (file)

Method: disconnect (LEFT port) (RIGHT port)
Source

nodes.lisp (file)

Generic Function: left OBJECT

Accessor to the "left" port of a connection.

See CONNECTION

Package

flow

Writer

(setf left) (generic function)

Methods
Method: left (CONNECTION connection)

automatically generated reader method

Source

nodes.lisp (file)

Generic Function: (setf left) NEW-VALUE OBJECT
Package

flow

Reader

left (generic function)

Methods
Method: (setf left) NEW-VALUE (CONNECTION connection)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: name OBJECT
Generic Function: (setf name) NEW-VALUE OBJECT
Package

flow

Methods
Method: name (PORT port)

automatically generated reader method

Source

nodes.lisp (file)

Method: (setf name) NEW-VALUE (PORT port)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: node OBJECT

Accessor to the node this port is home to.

See PORT

Package

flow

Writer

(setf node) (generic function)

Methods
Method: node (PORT port)

automatically generated reader method

Source

nodes.lisp (file)

Generic Function: (setf node) NEW-VALUE OBJECT
Package

flow

Reader

node (generic function)

Methods
Method: (setf node) NEW-VALUE (PORT port)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: port NODE NAME

Return the port object contained in the node with the specified name.

See NODE

Package

flow

Methods
Method: port (NODE static-node) (NAME symbol)
Source

static-node.lisp (file)

Method: port (NODE dynamic-node) (NAME symbol)
Source

nodes.lisp (file)

Generic Function: port-type OBJECT

Accessor to the port type contained in this slot.

See PORT-DEFINITION

Package

flow

Writer

(setf port-type) (generic function)

Methods
Method: port-type (SLOT slot-definition)
Source

static-node.lisp (file)

Method: port-type (PORT-DEFINITION port-definition)

automatically generated reader method

Source

static-node.lisp (file)

Generic Function: (setf port-type) NEW-VALUE OBJECT
Package

flow

Reader

port-type (generic function)

Methods
Method: (setf port-type) NEW-VALUE (PORT-DEFINITION port-definition)

automatically generated writer method

Source

static-node.lisp (file)

Generic Function: port-value PORT

Accessor to the primary "value" contained in this static port.

For standard ports this is the CONNECTIONS slot.

See STATIC-NODE
See PORT-VALUE-BOUNDP
See PORT-VALUE-MAKUNBOUND
See DEFINE-PORT-VALUE-SLOT

Package

flow

Writer

(setf port-value) (generic function)

Methods
Method: port-value (PORT port)
Source

static-node.lisp (file)

Generic Function: (setf port-value) VALUE PORT
Package

flow

Reader

port-value (generic function)

Methods
Method: (setf port-value) VALUE (PORT port)
Source

static-node.lisp (file)

Generic Function: port-value-boundp PORT

Returns non-NIL if the value slot in this static port is bound.

See STATIC-NODE
See PORT-VALUE
See PORT-VALUE-MAKUNBOUND
See DEFINE-PORT-VALUE-SLOT

Package

flow

Methods
Method: port-value-boundp (PORT port)
Source

static-node.lisp (file)

Generic Function: port-value-makunbound PORT

Makes the value slot in this static port unbound.

See STATIC-NODE
See PORT-VALUE
See PORT-VALUE-BOUNDP
See DEFINE-PORT-VALUE-SLOT

Package

flow

Methods
Method: port-value-makunbound (PORT port)
Source

static-node.lisp (file)

Generic Function: ports OBJECT

Returns a list of port objects that the node contains.

This list may not be fresh and thus must not be modified.

See NODE

Package

flow

Writer

(setf ports) (generic function)

Methods
Method: ports (NODE static-node)
Source

static-node.lisp (file)

Method: ports (DYNAMIC-NODE dynamic-node)

automatically generated reader method

Source

nodes.lisp (file)

Generic Function: (setf ports) NEW-VALUE OBJECT
Package

flow

Reader

ports (generic function)

Methods
Method: (setf ports) NEW-VALUE (DYNAMIC-NODE dynamic-node)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: remove-attribute UNIT NAME

Remove the named attribute from the unit.

See ATTRIBUTES
See ATTRIBUTE
See UNIT

Package

flow

Methods
Method: remove-attribute (UNIT unit) NAME
Source

nodes.lisp (file)

Generic Function: remove-connection CONNECTION PORT &key TEST

Remove the given connection from the unit.

See PORT
See NODE
See CONNECTIONS

Package

flow

Methods
Method: remove-connection CONNECTION (NODE node) &key TEST
Source

nodes.lisp (file)

Method: remove-connection CONNECTION (PORT port) &key TEST
Source

nodes.lisp (file)

Generic Function: right OBJECT

Accessor to the "right" port of a connection.

See CONNECTION

Package

flow

Writer

(setf right) (generic function)

Methods
Method: right (CONNECTION connection)

automatically generated reader method

Source

nodes.lisp (file)

Generic Function: (setf right) NEW-VALUE OBJECT
Package

flow

Reader

right (generic function)

Methods
Method: (setf right) NEW-VALUE (CONNECTION connection)

automatically generated writer method

Source

nodes.lisp (file)

Generic Function: sever CONNECTION

Sever the connections of this unit.

For a connection, severing it means simply removing that connection. For a port severing means severing all connections of the port. For a node severing severing all connections of all of its ports.

See CONNECTION
See PORT
See NODE

Package

flow

Methods
Method: sever (NODE node)
Source

nodes.lisp (file)

Method: sever (PORT port)
Source

nodes.lisp (file)

Method: sever (CONNECTION connection)
Source

nodes.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.5 Classes

Class: 1-port ()

A port that only accepts a single connection.

See PORT

Package

flow

Source

nodes.lisp (file)

Direct superclasses

port (class)

Direct methods

check-connection-accepted (method)

Class: connection ()

Representation of a connection between two ports.

This connection is undirected, meaning that it is intended to represent information flowing in both directions.

See LEFT
See RIGHT
See UNIT
See CONNECTION=
See SEVER

Package

flow

Source

nodes.lisp (file)

Direct superclasses

unit (class)

Direct subclasses

directed-connection (class)

Direct methods
  • sever (method)
  • print-object (method)
  • right (method)
  • right (method)
  • left (method)
  • left (method)
Direct slots
Slot: left
Initargs

:left

Readers

left (generic function)

Writers

(setf left) (generic function)

Slot: right
Initargs

:right

Readers

right (generic function)

Writers

(setf right) (generic function)

Class: directed-connection ()

A connection for which information only flows from left to right.

See CONNECTION

Package

flow

Source

nodes.lisp (file)

Direct superclasses

connection (class)

Direct methods
Class: dynamic-node ()

Superclass for all dynamic nodes.

A dynamic node’s ports are allocated on a per-instance basis, rather than on a per-class basis like for the static-node.

See NODE

Package

flow

Source

nodes.lisp (file)

Direct superclasses

node (class)

Direct methods
  • port (method)
  • ports (method)
  • ports (method)
Direct slots
Slot: ports
Initargs

:ports

Readers

ports (generic function)

Writers

(setf ports) (generic function)

Class: in-port ()

A port that only accepts incoming connections.

See PORT

Package

flow

Source

nodes.lisp (file)

Direct superclasses

port (class)

Direct methods

check-connection-accepted (method)

Class: n-port ()

A port that accepts an arbitrary number of connections.

See PORT

Package

flow

Source

nodes.lisp (file)

Direct superclasses

port (class)

Class: node ()

Superclass for all nodes in a Flow graph.

A node has a set of PORT instances that are used to form connections to other nodes over.

See UNIT
See PORT
See PORTS
See SEVER
See CONNECTIONS
See REMOVE-CONNECTION
See DISCONNECT

Package

flow

Source

nodes.lisp (file)

Direct superclasses

unit (class)

Direct subclasses
Direct methods
Class: out-port ()

A port that only accepts outgoing connections.

See PORT

Package

flow

Source

nodes.lisp (file)

Direct superclasses

port (class)

Direct methods

check-connection-accepted (method)

Class: port ()

Representation of a connection port on a node.

Ports are named places on a node through which connections between nodes can be made.

See UNIT
See CONNECTIONS
See NODE
See SLOT
See CONNECT
See DISCONNECT
See REMOVE-CONNECTION
See CHECK-CONNECTION-ACCEPTED
See SEVER

Package

flow

Source

nodes.lisp (file)

Direct superclasses

unit (class)

Direct subclasses
Direct methods
Direct slots
Slot: connections
Initargs

:connections

Readers

connections (generic function)

Writers

(setf connections) (generic function)

Slot: node
Initargs

:node

Readers

node (generic function)

Writers

(setf node) (generic function)

Slot: name
Initargs

:name

Readers

name (generic function)

Writers

(setf name) (generic function)

Class: port-definition ()

Superclass for port definition slot classes.

See PORT-TYPE

Package

flow

Source

static-node.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
  • initialize-instance (method)
  • port-initargs (method)
  • port-initargs (method)
  • port-type (method)
  • port-type (method)
Direct slots
Slot: port-type
Initargs

:port-type

Readers

port-type (generic function)

Writers

(setf port-type) (generic function)

Slot: port-initargs
Readers

port-initargs (generic function)

Writers

(setf port-initargs) (generic function)

Direct Default Initargs
InitargValue
:port-typenil
Class: static-node ()

Superclass for all static nodes.

The set of ports of a static node is defined per-class and is thus the same for each instance of the class.

In addition to the standard slot keywords, a node supports the :PORT-TYPE keyword. This takes a symbol as argument, designating the name of the class to use for the port of this slot.

If a slot is a port on the class, connections to other ports may be established through that port.

See NODE
See STATIC-NODE-CLASS
See DEFINE-NODE
See PORTS
See PORT
See SEVER
See CONNECTIONS
See REMOVE-CONNECTION
See DISCONNECT

Package

flow

Source

static-node.lisp (file)

Direct superclasses

node (class)

Direct methods
  • port (method)
  • ports (method)
  • shared-initialize (method)
Class: static-node-class ()

Metaclass for all static nodes.

This class allows the usage of the :PORT-TYPE initarg on slots. If non-null, the slot is treated as a port of the node, allowing to be used for connections between nodes. When such a slot is accessed normally, it immediately resolves to the PORT-VALUE of the port contained in the slot.

Every port of a port-typed slot is also automatically instantiated upon instantiation of the class itself, ensuring that it is consistent with the definition.

If an access to the actual port object contained in the slot is necessary, the PORT-SLOT-VALUE and PORT-SLOT-BOUNDP functions can be used instead.

See PORT-VALUE
See DIRECT-PORT-DEFINITION
See EFFECTIVE-PORT-DEFINITION
See DEFINE-NODE
See PORT-SLOT-VALUE
See PORT-SLOT-BOUNDP

Package

flow

Source

static-node.lisp (file)

Direct superclasses

standard-class (class)

Direct methods
  • slot-makunbound-using-class (method)
  • slot-boundp-using-class (method)
  • slot-value-using-class (method)
  • slot-value-using-class (method)
  • effective-slot-definition-class (method)
  • direct-slot-definition-class (method)
  • compute-effective-slot-definition (method)
  • validate-superclass (method)
  • validate-superclass (method)
  • validate-superclass (method)
  • validate-superclass (method)
Class: unit ()

Superclass for all any entity in a Flow graph.

See ATTRIBUTES
See ATTRIBUTE
See REMOVE-ATTRIBUTE
See WITH-ATTRIBUTES

Package

flow

Source

nodes.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
Direct slots
Slot: attributes
Initform

(make-hash-table :test (quote eql))

Readers

attributes (generic function)

Writers

(setf attributes) (generic function)


Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Functions

Function: find-slot-by-name NAME SLOTS

Returns the slot whose name matches the given one.

Package

flow

Source

toolkit.lisp (file)

Function: find-slots-by-initarg KEY SLOTS

Returns the list of slots that have key as an initarg.

Package

flow

Source

toolkit.lisp (file)

Function: port-slot-boundp NODE NAME

Test to see whether the actual port object contained in the node’s slot is bound.

For any successfully initialised node, this should
always return T.

See STATIC-NODE
See *RESOLVE-PORT*

Package

flow

Source

static-node.lisp (file)

Function: port-slot-value NODE NAME

Accessor to the actual port object contained in the node’s slot.

See STATIC-NODE
See *RESOLVE-PORT*

Package

flow

Source

static-node.lisp (file)

Writer

(setf port-slot-value) (function)

Function: (setf port-slot-value) VALUE NODE NAME
Package

flow

Source

static-node.lisp (file)

Reader

port-slot-value (function)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Generic functions

Generic Function: port-initargs OBJECT
Generic Function: (setf port-initargs) NEW-VALUE OBJECT
Package

flow

Methods
Method: port-initargs (PORT-DEFINITION port-definition)

automatically generated reader method

Source

static-node.lisp (file)

Method: (setf port-initargs) NEW-VALUE (PORT-DEFINITION port-definition)

automatically generated writer method

Source

static-node.lisp (file)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Classes

Class: direct-port-definition ()

Class for direct port slot definitions

See PORT-DEFINITION
See C2MOP:STANDARD-DIRECT-SLOT-DEFINITION

Package

flow

Source

static-node.lisp (file)

Direct superclasses
Class: effective-port-definition ()

Class for effective port slot definitions

See PORT-DEFINITION
See C2MOP:STANDARD-EFFECTIVE-SLOT-DEFINITION

Package

flow

Source

static-node.lisp (file)

Direct superclasses
Direct methods
  • slot-makunbound-using-class (method)
  • slot-boundp-using-class (method)
  • slot-value-using-class (method)
  • slot-value-using-class (method)

Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L  
Index Entry  Section

F
File, Lisp, flow.asd: The flow<dot>asd file
File, Lisp, flow/documentation.lisp: The flow/documentation<dot>lisp file
File, Lisp, flow/graph.lisp: The flow/graph<dot>lisp file
File, Lisp, flow/nodes.lisp: The flow/nodes<dot>lisp file
File, Lisp, flow/package.lisp: The flow/package<dot>lisp file
File, Lisp, flow/static-node.lisp: The flow/static-node<dot>lisp file
File, Lisp, flow/toolkit.lisp: The flow/toolkit<dot>lisp file
flow.asd: The flow<dot>asd file
flow/documentation.lisp: The flow/documentation<dot>lisp file
flow/graph.lisp: The flow/graph<dot>lisp file
flow/nodes.lisp: The flow/nodes<dot>lisp file
flow/package.lisp: The flow/package<dot>lisp file
flow/static-node.lisp: The flow/static-node<dot>lisp file
flow/toolkit.lisp: The flow/toolkit<dot>lisp file

L
Lisp File, flow.asd: The flow<dot>asd file
Lisp File, flow/documentation.lisp: The flow/documentation<dot>lisp file
Lisp File, flow/graph.lisp: The flow/graph<dot>lisp file
Lisp File, flow/nodes.lisp: The flow/nodes<dot>lisp file
Lisp File, flow/package.lisp: The flow/package<dot>lisp file
Lisp File, flow/static-node.lisp: The flow/static-node<dot>lisp file
Lisp File, flow/toolkit.lisp: The flow/toolkit<dot>lisp file

Jump to:   F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   C   D   E   F   G   L   M   N   P   R   S   T   V   W  
Index Entry  Section

(
(setf attribute): Exported generic functions
(setf attribute): Exported generic functions
(setf attributes): Exported generic functions
(setf attributes): Exported generic functions
(setf connections): Exported generic functions
(setf connections): Exported generic functions
(setf left): Exported generic functions
(setf left): Exported generic functions
(setf name): Exported generic functions
(setf name): Exported generic functions
(setf node): Exported generic functions
(setf node): Exported generic functions
(setf port-initargs): Internal generic functions
(setf port-initargs): Internal generic functions
(setf port-slot-value): Internal functions
(setf port-type): Exported generic functions
(setf port-type): Exported generic functions
(setf port-value): Exported generic functions
(setf port-value): Exported generic functions
(setf ports): Exported generic functions
(setf ports): Exported generic functions
(setf right): Exported generic functions
(setf right): Exported generic functions

A
allocate-ports: Exported functions
attribute: Exported generic functions
attribute: Exported generic functions
attributes: Exported generic functions
attributes: Exported generic functions

C
check-connection-accepted: Exported generic functions
check-connection-accepted: Exported generic functions
check-connection-accepted: Exported generic functions
check-connection-accepted: Exported generic functions
check-connection-accepted: Exported generic functions
color-nodes: Exported functions
connect: Exported generic functions
connect: Exported generic functions
connection=: Exported generic functions
connection=: Exported generic functions
connection=: Exported generic functions
connections: Exported generic functions
connections: Exported generic functions
connections: Exported generic functions

D
define-node: Exported macros
define-port-value-slot: Exported macros
disconnect: Exported generic functions
disconnect: Exported generic functions
disconnect: Exported generic functions
disconnect: Exported generic functions
disconnect: Exported generic functions

E
extract-graph: Exported functions

F
find-slot-by-name: Internal functions
find-slots-by-initarg: Internal functions
Function, (setf port-slot-value): Internal functions
Function, allocate-ports: Exported functions
Function, color-nodes: Exported functions
Function, extract-graph: Exported functions
Function, find-slot-by-name: Internal functions
Function, find-slots-by-initarg: Internal functions
Function, port-slot-boundp: Internal functions
Function, port-slot-value: Internal functions
Function, topological-sort: Exported functions
Function, visit: Exported functions

G
Generic Function, (setf attribute): Exported generic functions
Generic Function, (setf attributes): Exported generic functions
Generic Function, (setf connections): Exported generic functions
Generic Function, (setf left): Exported generic functions
Generic Function, (setf name): Exported generic functions
Generic Function, (setf node): Exported generic functions
Generic Function, (setf port-initargs): Internal generic functions
Generic Function, (setf port-type): Exported generic functions
Generic Function, (setf port-value): Exported generic functions
Generic Function, (setf ports): Exported generic functions
Generic Function, (setf right): Exported generic functions
Generic Function, attribute: Exported generic functions
Generic Function, attributes: Exported generic functions
Generic Function, check-connection-accepted: Exported generic functions
Generic Function, connect: Exported generic functions
Generic Function, connection=: Exported generic functions
Generic Function, connections: Exported generic functions
Generic Function, disconnect: Exported generic functions
Generic Function, left: Exported generic functions
Generic Function, name: Exported generic functions
Generic Function, node: Exported generic functions
Generic Function, port: Exported generic functions
Generic Function, port-initargs: Internal generic functions
Generic Function, port-type: Exported generic functions
Generic Function, port-value: Exported generic functions
Generic Function, port-value-boundp: Exported generic functions
Generic Function, port-value-makunbound: Exported generic functions
Generic Function, ports: Exported generic functions
Generic Function, remove-attribute: Exported generic functions
Generic Function, remove-connection: Exported generic functions
Generic Function, right: Exported generic functions
Generic Function, sever: Exported generic functions

L
left: Exported generic functions
left: Exported generic functions

M
Macro, define-node: Exported macros
Macro, define-port-value-slot: Exported macros
Macro, with-attributes: Exported macros
Method, (setf attribute): Exported generic functions
Method, (setf attributes): Exported generic functions
Method, (setf connections): Exported generic functions
Method, (setf left): Exported generic functions
Method, (setf name): Exported generic functions
Method, (setf node): Exported generic functions
Method, (setf port-initargs): Internal generic functions
Method, (setf port-type): Exported generic functions
Method, (setf port-value): Exported generic functions
Method, (setf ports): Exported generic functions
Method, (setf right): Exported generic functions
Method, attribute: Exported generic functions
Method, attributes: Exported generic functions
Method, check-connection-accepted: Exported generic functions
Method, check-connection-accepted: Exported generic functions
Method, check-connection-accepted: Exported generic functions
Method, check-connection-accepted: Exported generic functions
Method, connect: Exported generic functions
Method, connection=: Exported generic functions
Method, connection=: Exported generic functions
Method, connections: Exported generic functions
Method, connections: Exported generic functions
Method, disconnect: Exported generic functions
Method, disconnect: Exported generic functions
Method, disconnect: Exported generic functions
Method, disconnect: Exported generic functions
Method, left: Exported generic functions
Method, name: Exported generic functions
Method, node: Exported generic functions
Method, port: Exported generic functions
Method, port: Exported generic functions
Method, port-initargs: Internal generic functions
Method, port-type: Exported generic functions
Method, port-type: Exported generic functions
Method, port-value: Exported generic functions
Method, port-value-boundp: Exported generic functions
Method, port-value-makunbound: Exported generic functions
Method, ports: Exported generic functions
Method, ports: Exported generic functions
Method, remove-attribute: Exported generic functions
Method, remove-connection: Exported generic functions
Method, remove-connection: Exported generic functions
Method, right: Exported generic functions
Method, sever: Exported generic functions
Method, sever: Exported generic functions
Method, sever: Exported generic functions

N
name: Exported generic functions
name: Exported generic functions
node: Exported generic functions
node: Exported generic functions

P
port: Exported generic functions
port: Exported generic functions
port: Exported generic functions
port-initargs: Internal generic functions
port-initargs: Internal generic functions
port-slot-boundp: Internal functions
port-slot-value: Internal functions
port-type: Exported generic functions
port-type: Exported generic functions
port-type: Exported generic functions
port-value: Exported generic functions
port-value: Exported generic functions
port-value-boundp: Exported generic functions
port-value-boundp: Exported generic functions
port-value-makunbound: Exported generic functions
port-value-makunbound: Exported generic functions
ports: Exported generic functions
ports: Exported generic functions
ports: Exported generic functions

R
remove-attribute: Exported generic functions
remove-attribute: Exported generic functions
remove-connection: Exported generic functions
remove-connection: Exported generic functions
remove-connection: Exported generic functions
right: Exported generic functions
right: Exported generic functions

S
sever: Exported generic functions
sever: Exported generic functions
sever: Exported generic functions
sever: Exported generic functions

T
topological-sort: Exported functions

V
visit: Exported functions

W
with-attributes: Exported macros

Jump to:   (  
A   C   D   E   F   G   L   M   N   P   R   S   T   V   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *  
A   C   L   N   P   R   S  
Index Entry  Section

*
*resolve-port*: Exported special variables

A
attributes: Exported classes

C
connections: Exported classes

L
left: Exported classes

N
name: Exported classes
node: Exported classes

P
port-initargs: Exported classes
port-type: Exported classes
ports: Exported classes

R
right: Exported classes

S
Slot, attributes: Exported classes
Slot, connections: Exported classes
Slot, left: Exported classes
Slot, name: Exported classes
Slot, node: Exported classes
Slot, port-initargs: Exported classes
Slot, port-type: Exported classes
Slot, ports: Exported classes
Slot, right: Exported classes
Special Variable, *resolve-port*: Exported special variables

Jump to:   *  
A   C   L   N   P   R   S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   1  
C   D   E   F   I   N   O   P   S   U  
Index Entry  Section

1
1-port: Exported classes

C
Class, 1-port: Exported classes
Class, connection: Exported classes
Class, direct-port-definition: Internal classes
Class, directed-connection: Exported classes
Class, dynamic-node: Exported classes
Class, effective-port-definition: Internal classes
Class, in-port: Exported classes
Class, n-port: Exported classes
Class, node: Exported classes
Class, out-port: Exported classes
Class, port: Exported classes
Class, port-definition: Exported classes
Class, static-node: Exported classes
Class, static-node-class: Exported classes
Class, unit: Exported classes
connection: Exported classes

D
direct-port-definition: Internal classes
directed-connection: Exported classes
dynamic-node: Exported classes

E
effective-port-definition: Internal classes

F
flow: The flow system
flow: The flow package

I
in-port: Exported classes

N
n-port: Exported classes
node: Exported classes

O
out-port: Exported classes

P
Package, flow: The flow package
port: Exported classes
port-definition: Exported classes

S
static-node: Exported classes
static-node-class: Exported classes
System, flow: The flow system

U
unit: Exported classes

Jump to:   1  
C   D   E   F   I   N   O   P   S   U