X-Git-Url: http://christophe.rhodes.io/gitweb/?p=paper-els-specializers.git;a=blobdiff_plain;f=figures%2Fdispatch-relationships.tikz;fp=figures%2Fdispatch-relationships.tikz;h=db30ab9d91e6e71c8e5371d0433859ec703d42ed;hp=0000000000000000000000000000000000000000;hb=6ad202340d1a176d8038b20a0f785b8d5491e643;hpb=226aa3ea8b2ef6dff6b883db68014c757e615c05 diff --git a/figures/dispatch-relationships.tikz b/figures/dispatch-relationships.tikz new file mode 100644 index 0000000..db30ab9 --- /dev/null +++ b/figures/dispatch-relationships.tikz @@ -0,0 +1,33 @@ +\documentclass{standalone} + +\usepackage{tikz} +\usetikzlibrary{shapes.geometric} +\usetikzlibrary{arrows} + +\begin{document} + +\begin{tikzpicture} + \begin{scope}[minimum width=8em,minimum height=3ex] + \node[draw,rectangle] (eql) at (0,0) {\texttt{eql-specializer}}; + \node[draw,rectangle] (class) at (1,2) {\texttt{class}}; + \node[draw,rectangle] (specializer) at (0.5,6) {\texttt{specializer}}; + \node[draw,ellipse] (argument) at (7,2) {\textit{argument}}; + + \node[draw,red,ellipse] (generalizer) at (7,4) {\textit{\color{red}generalizer}}; + \node[draw,red,rectangle] (genspec) at (2,4) {\texttt{\color{red}gen.-spec.}}; + \end{scope} + + \draw[->,>=open triangle 60] (eql.168) |- (specializer); + \draw[->,>=open triangle 60] (class.160) -- (class.160 |- specializer.south); + \draw[->,>=open triangle 60,red] (genspec.150) -- (genspec.150 |- specializer.south); + + \draw[dashed] (argument.south) |- node[right,near start] {\texttt{eql}} node[below,near end] {\texttt{eql-specializer-object}} (eql.east); + \draw[dashed] (argument.west) -- node[below] {\texttt{subtypep}} node[above] {\texttt{class-of}} (class.east); + \draw[red] (argument.north) -- node[right] {\texttt{\color{red}generalizer-of}} (generalizer.south); + \draw[red] (generalizer.west) -- node[above] (sagp) {\texttt{\color{red}s-a-g-p}} (genspec.east); + \node (specaccgenp) at (6,5.5) {\texttt{\footnotesize{\color{red}specializer-accepts-generalizer-p}}}; + \draw[red,dotted] (sagp) -- (specaccgenp); + +\end{tikzpicture} + +\end{document} \ No newline at end of file