From: Matthew Fernandez Date: Tue, 20 Jul 2021 03:25:16 +0000 (-0700) Subject: replace mkdefs-generated gdefs.h with X macros X-Git-Tag: 2.49.0~45^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=288075e2ffd94f1670e03ccb7a8c68e373f31d0c;p=graphviz replace mkdefs-generated gdefs.h with X macros Prior to this commit, the gdefs.h header was generated by a C program, mkdefs.c. There were a number of issues with this approach: 1. The CMake build system was assuming the compiler to build mkdefs.c and the compiler to build Graphviz itself were the same. This is not necessarily true when cross-compiling. 2. Generation under MSBuild seems to have been impractical, so the generated header was checked in to the repository under windows/include/gvpr/gdefs.h, somewhat defeating the purpose of making it generated. 3. The CMake build system seems to not have been setup to correctly compile mkdefs.c under all circumstances (see #2101). This change removes any reliance on a host C compiler and instead uses a series of X macros¹ to achieve the same effect. The values of all generated constants and the content of generated structures is intended to be unchanged, though some #defines have been altered to enums. In these cases, there was no advantage to using a macro and multiple advantages to not using a macro. This change is affecting a shipped header (gdefs.h) and also removes it from the list of shipped headers. Installing it appears to have been a mistake as there is no easy way for end users to use it. The header, fully expanded, still relies on further expansion of macros that are only defined in expr.h, a header that is not shipped. Closes #2101. ¹ https://en.wikipedia.org/wiki/X_Macro --- diff --git a/.gitignore b/.gitignore index 4748b8b3a..2829dab1d 100644 --- a/.gitignore +++ b/.gitignore @@ -165,8 +165,6 @@ lib/common/htmlparse.output lib/common/svgcolor_lib lib/expr/exparse.c lib/expr/exparse.h -lib/gvpr/gdefs.h -lib/gvpr/mkdefs lib/vpsc/pairingheap/.dirstamp plugin/core/ps.h plugin/lasi/ps.h diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d226dad8..a420d2658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The attached dot file causes a segfault when processed #2095 - fix typos and update URLs in `edgepaint` usage text and man page - Fix clang's undefined behavior warning in dotLayout +- gvpr doesn't build on macOS but MKDEFS_EXECUTABLE points to wrong + directory #2101 +- the generated gdefs.h header is no longer installed ## [2.48.0] - 2021-07-17 diff --git a/lib/gvpr/CMakeLists.txt b/lib/gvpr/CMakeLists.txt index 0796c86ef..b99ed35c7 100644 --- a/lib/gvpr/CMakeLists.txt +++ b/lib/gvpr/CMakeLists.txt @@ -1,26 +1,9 @@ -add_executable(mkdefs - # Source files - mkdefs.c -) - -# Generate gdefs.h from sources -if (WIN32) - set (MKDEFS_EXECUTABLE "${CMAKE_CFG_INTDIR}/mkdefs") -else() - set (MKDEFS_EXECUTABLE "./mkdefs") -endif() -add_custom_command( - OUTPUT gdefs.h - MAIN_DEPENDENCY gprdata - DEPENDS mkdefs - COMMAND ${MKDEFS_EXECUTABLE} gdefs.h < ${TOP_SOURCE_DIR}/lib/gvpr/gprdata -) - add_library(gvpr STATIC # Header files actions.h compile.h gdefs.h + gprdata.inc gprstate.h gvpr.h parse.h diff --git a/lib/gvpr/Makefile.am b/lib/gvpr/Makefile.am index 9fe87650f..087c270b9 100644 --- a/lib/gvpr/Makefile.am +++ b/lib/gvpr/Makefile.am @@ -14,7 +14,8 @@ AM_CPPFLAGS = \ -DDFLT_GVPRPATH="\".$(PATH_SEPARATOR)$(pkgdatadir)/gvpr\"" pkginclude_HEADERS = gvpr.h -noinst_HEADERS = actions.h compile.h gprstate.h parse.h queue.h trieFA.h trie.c +noinst_HEADERS = actions.h compile.h gdefs.h gprdata.inc gprstate.h parse.h \ + queue.h trieFA.h trie.c noinst_LTLIBRARIES = libgvpr_C.la lib_LTLIBRARIES = libgvpr.la pkgconfig_DATA = libgvpr.pc @@ -34,7 +35,6 @@ pdf = endif libgvpr_C_la_SOURCES = actions.c compile.c gvpr.c gprstate.c parse.c queue.c -$(libgvpr_C_la_OBJECTS): gdefs.h libgvpr_C_la_DEPENDENCIES = \ $(top_builddir)/lib/expr/libexpr_C.la \ $(top_builddir)/lib/common/libcommon_C.la \ @@ -64,12 +64,6 @@ if WITH_WIN32 libgvpr_la_LDFLAGS += -export-symbols-regex gvpr endif -mkdefs$(EXEEXT): - $(HOSTCC) $(srcdir)/mkdefs.c -o mkdefs$(EXEEXT) +EXTRA_DIST = $(man_MANS) $(pdf) trie.c gvprlib.vcxproj* -gdefs.h: $(top_srcdir)/lib/gvpr/gprdata mkdefs$(EXEEXT) - ./mkdefs$(EXEEXT) gdefs.h < $(top_srcdir)/lib/gvpr/gprdata - -EXTRA_DIST = $(man_MANS) $(pdf) gprdata mkdefs.c gdefs.h trie.c gvprlib.vcxproj* - -DISTCLEANFILES = $(pdf) gdefs.h mkdefs$(EXEEXT) gvpr.3.ps +DISTCLEANFILES = $(pdf) gvpr.3.ps diff --git a/lib/gvpr/gdefs.h b/lib/gvpr/gdefs.h new file mode 100644 index 000000000..f0b5e39a5 --- /dev/null +++ b/lib/gvpr/gdefs.h @@ -0,0 +1,102 @@ +#pragma once + +#define Y(i) (1<<(i)) + +#define V 0x4 /* NODE */ +#define E 0x5 /* EDGE */ +#define G 0x6 /* GRAPH */ +#define O 0x7 /* OBJECT */ +#define TV 0x8 /* TV_ */ +#define YALL (Y(V)|Y(E)|Y(G)) + +enum { + RESERVED, +#define X(prefix, name, str, type, subtype, ...) prefix##name, +#include +#undef X +}; + +enum { LAST_V = 0 +#define X(prefix, name, str, type, subtype, ...) + (prefix == V_ ? 1 : 0) +#define V_ 1 +#define M_ 2 +#define T_ 3 +#define A_ 4 +#define F_ 5 +#define C_ 6 +#include +#undef X +}; + +enum { LAST_M = 0 +#define X(prefix, name, str, type, subtype, ...) \ + + ((prefix == V_ || prefix == M_) ? 1 : 0) +#include +#undef C_ +#undef F_ +#undef A_ +#undef T_ +#undef M_ +#undef V_ +#undef X +}; + +enum { MINNAME = 1 }; + +enum { MAXNAME = 0 +#define X(prefix, name, str, type, subtype, ...) + 1 +#include +#undef X +}; + +static Exid_t symbols[] = { +#define X(prefix, name, str, type, subtype, ...) \ + EX_ID(str, type, prefix##name, subtype, 0), +#include +#undef X + EX_ID({0}, 0, 0, 0, 0), +}; + +static char* typenames[] = { +#define X(prefix, name, str, type, subtype, ...) type ## _(str) +#define ID_(str) // nothing +#define DECLARE_(str) str, +#define ARRAY_(str) // nothing +#define FUNCTION_(str) // nothing +#define CONSTANT_(str) // nothing +#include +#undef CONSTANT_ +#undef FUNCTION_ +#undef ARRAY_ +#undef DECLARE_ +#undef ID_ +#undef X +}; + +#ifdef DEBUG +static char* gprnames[] = { + "", +#define X(prefix, name, str, type, subtype, ...) str, +#include +#undef X +}; +#endif + +typedef unsigned short tctype; + +static tctype tchk[][2] = { + {0, 0}, +#define X(prefix, name, str, type, subtype, ...) type ## _(__VA_ARGS__) +#define ID_(...) { __VA_ARGS__ }, +#define DECLARE_() // nothing +#define ARRAY_() // nothing +#define FUNCTION_() // nothing +#define CONSTANT_() // nothing +#include +#undef CONSTANT_ +#undef FUNCTION_ +#undef ARRAY_ +#undef DECLARE_ +#undef ID_ +#undef X +}; diff --git a/lib/gvpr/gprdata b/lib/gvpr/gprdata deleted file mode 100644 index f4465675e..000000000 --- a/lib/gvpr/gprdata +++ /dev/null @@ -1,138 +0,0 @@ -V_this "$" ID T_obj 0 YALL -V_thisg "$G" ID T_graph 0 Y(G) -V_nextg "$NG" ID T_graph 0 Y(G) -V_targt "$T" ID T_graph 0 Y(G) -V_outgraph "$O" ID T_graph 0 Y(G) -V_tgtname "$tgtname" ID STRING 0 Y(S) -V_infname "$F" ID STRING 0 Y(S) -V_travroot "$tvroot" ID T_node 0 Y(V) -V_travnext "$tvnext" ID T_node 0 Y(V) -V_travedge "$tvedge" ID T_edge 0 Y(E) -V_travtype "$tvtype" ID T_tvtyp 0 Y(TV) -V_ARGC "ARGC" ID INTEGER 0 Y(I) -M_degree "degree" ID INTEGER Y(V) Y(I) -M_X "X" ID FLOATING Y(V) Y(F) -M_Y "Y" ID FLOATING Y(V) Y(F) -M_head "head" ID T_node Y(E) Y(V) -M_tail "tail" ID T_node Y(E) Y(V) -M_name "name" ID STRING YALL Y(S) -M_indegree "indegree" ID INTEGER Y(V) Y(I) -M_outdegree "outdegree" ID INTEGER Y(V) Y(I) -M_root "root" ID T_graph YALL Y(G) -M_parent "parent" ID T_graph Y(G) Y(G) -M_n_edges "n_edges" ID INTEGER Y(G) Y(I) -M_n_nodes "n_nodes" ID INTEGER Y(G) Y(I) -M_directed "directed" ID INTEGER Y(G) Y(I) -M_strict "strict" ID INTEGER Y(G) Y(I) -T_node "node_t" DECLARE T_node -T_edge "edge_t" DECLARE T_edge -T_graph "graph_t" DECLARE T_graph -T_obj "obj_t" DECLARE T_obj -T_tvtyp "tvtype_t" DECLARE T_tvtyp -A_ARGV "ARGV" ARRAY S|A(1,I) -F_graph "graph" FUNCTION G|A(1,S)|A(2,S) -F_subg "subg" FUNCTION G|A(1,G)|A(2,S) -F_issubg "isSubg" FUNCTION G|A(1,G)|A(2,S) -F_fstsubg "fstsubg" FUNCTION G|A(1,G) -F_nxtsubg "nxtsubg" FUNCTION G|A(1,G) -F_node "node" FUNCTION V|A(1,G)|A(2,S) -F_addnode "subnode" FUNCTION V|A(1,G)|A(2,V) -F_fstnode "fstnode" FUNCTION V|A(1,G) -F_nxtnode "nxtnode" FUNCTION V|A(1,V) -F_nxtnodesg "nxtnode_sg" FUNCTION V|A(1,G)|A(2,V) -F_isnode "isNode" FUNCTION V|A(1,G)|A(2,S) -F_issubnode "isSubnode" FUNCTION I|A(1,G)|A(2,V) -F_indegree "indegreeOf" FUNCTION I|A(1,G)|A(2,V) -F_outdegree "outdegreeOf" FUNCTION I|A(1,G)|A(2,V) -F_degree "degreeOf" FUNCTION I|A(1,G)|A(2,V) -F_isin "isIn" FUNCTION I|A(1,G)|A(2,O) -F_edge "edge" FUNCTION E|A(1,V)|A(2,V)|A(3,S) -F_edgesg "edge_sg" FUNCTION E|A(1,G)|A(2,V)|A(3,V)|A(4,S) -F_addedge "subedge" FUNCTION E|A(1,G)|A(2,E) -F_opp "opp" FUNCTION V|A(1,E)|A(2,V) -F_fstout "fstout" FUNCTION E|A(1,V) -F_nxtout "nxtout" FUNCTION E|A(1,E) -F_fstin "fstin" FUNCTION E|A(1,V) -F_nxtin "nxtin" FUNCTION E|A(1,E) -F_fstedge "fstedge" FUNCTION E|A(1,V) -F_nxtedge "nxtedge" FUNCTION E|A(1,E)|A(2,V) -F_fstoutsg "fstout_sg" FUNCTION E|A(1,G)|A(2,V) -F_nxtoutsg "nxtout_sg" FUNCTION E|A(1,G)|A(2,E) -F_fstinsg "fstin_sg" FUNCTION E|A(1,G)|A(2,V) -F_nxtinsg "nxtin_sg" FUNCTION E|A(1,G)|A(2,E) -F_fstedgesg "fstedge_sg" FUNCTION E|A(1,G)|A(2,V) -F_nxtedgesg "nxtedge_sg" FUNCTION E|A(1,G)|A(2,E)|A(3,V) -F_compof "compOf" FUNCTION G|A(1,G)|A(2,V) -F_kindof "kindOf" FUNCTION S|A(1,O) -F_index "index" FUNCTION I|A(1,S)|A(2,S) -F_rindex "rindex" FUNCTION I|A(1,S)|A(2,S) -F_isedge "isEdge" FUNCTION E|A(1,V)|A(2,V)|A(3,S) -F_isedgesg "isEdge_sg" FUNCTION E|A(1,G)|A(2,V)|A(3,V)|A(4,S) -F_issubedge "isSubedge" FUNCTION I|A(1,G)|A(2,E) -F_length "length" FUNCTION I|A(1,S) -F_match "match" FUNCTION I|A(1,S)|A(2,S) -F_write "write" FUNCTION I|A(1,G) -F_writeg "writeG" FUNCTION I|A(1,G)|A(2,S) -F_readg "readG" FUNCTION G|A(1,S) -F_fwriteg "fwriteG" FUNCTION I|A(1,G)|A(2,I) -F_freadg "freadG" FUNCTION G|A(1,I) -F_openf "openF" FUNCTION I|A(1,S)|A(2,S) -F_closef "closeF" FUNCTION I|A(1,I) -F_readl "readL" FUNCTION S|A(1,I) -F_induce "induce" FUNCTION I|A(1,G) -F_isdirect "isDirect" FUNCTION I|A(1,G) -F_isstrict "isStrict" FUNCTION I|A(1,G) -F_delete "delete" FUNCTION I|A(1,G)|A(2,O) -F_clone "clone" FUNCTION O|A(1,G)|A(2,O) -F_cloneG "cloneG" FUNCTION G|A(1,G)|A(2,S) -F_copy "copy" FUNCTION O|A(1,G)|A(2,O) -F_copya "copyA" FUNCTION I|A(1,O)|A(2,O) -F_lock "lock" FUNCTION I|A(1,G)|A(2,I) -F_nnodes "nNodes" FUNCTION I|A(1,G) -F_nedges "nEdges" FUNCTION I|A(1,G) -F_sqrt "sqrt" FUNCTION F|A(1,F) -F_cos "cos" FUNCTION F|A(1,F) -F_sin "sin" FUNCTION F|A(1,F) -F_atan2 "atan2" FUNCTION F|A(1,F)|A(2,F) -F_exp "exp" FUNCTION F|A(1,F) -F_pow "pow" FUNCTION F|A(1,F)|A(2,F) -F_log "log" FUNCTION F|A(1,F) -F_min "MIN" FUNCTION F|A(1,F)|A(2,F) -F_max "MAX" FUNCTION F|A(1,F)|A(2,F) -F_sys "system" FUNCTION I|A(1,S) -F_xof "xOf" FUNCTION S|A(1,S) -F_yof "yOf" FUNCTION S|A(1,S) -F_llof "llOf" FUNCTION S|A(1,S) -F_urof "urOf" FUNCTION S|A(1,S) -F_html "html" FUNCTION S|A(1,G)|A(2,S) -F_ishtml "ishtml" FUNCTION I|A(1,S) -F_canon "canon" FUNCTION S|A(1,S) -F_get "aget" FUNCTION S|A(1,O)|A(2,S) -F_set "aset" FUNCTION I|A(1,O)|A(2,S)|A(3,S) -F_dget "getDflt" FUNCTION S|A(1,G)|A(2,S)|A(3,S) -F_dset "setDflt" FUNCTION I|A(1,G)|A(2,S)|A(3,S)|A(4,S) -F_hasattr "hasAttr" FUNCTION I|A(1,O)|A(2,S) -F_isattr "isAttr" FUNCTION I|A(1,G)|A(2,S)|A(3,S) -F_fstattr "fstAttr" FUNCTION S|A(1,G)|A(2,S) -F_nxtattr "nxtAttr" FUNCTION S|A(1,G)|A(2,S)|A(3,S) -F_tolower "tolower" FUNCTION S|A(1,S) -F_toupper "toupper" FUNCTION S|A(1,S) -F_strcmp "strcmp" FUNCTION I|A(1,S)|A(2,S) -F_atoi "atoi" FUNCTION I|A(1,S) -F_atof "atof" FUNCTION F|A(1,S) -F_colorx "colorx" FUNCTION S|A(1,S)|A(2,S) -F_call "call" FUNCTION I|A(1,S)|A(2,S) -C_flat "TV_flat" CONSTANT T_tvtyp -C_ne "TV_ne" CONSTANT T_tvtyp -C_en "TV_en" CONSTANT T_tvtyp -C_bfs "TV_bfs" CONSTANT T_tvtyp -C_dfs "TV_dfs" CONSTANT T_tvtyp -C_fwd "TV_fwd" CONSTANT T_tvtyp -C_rev "TV_rev" CONSTANT T_tvtyp -C_postdfs "TV_postdfs" CONSTANT T_tvtyp -C_postfwd "TV_postfwd" CONSTANT T_tvtyp -C_postrev "TV_postrev" CONSTANT T_tvtyp -C_prepostdfs "TV_prepostdfs" CONSTANT T_tvtyp -C_prepostfwd "TV_prepostfwd" CONSTANT T_tvtyp -C_prepostrev "TV_prepostrev" CONSTANT T_tvtyp -C_null "NULL" CONSTANT T_obj diff --git a/lib/gvpr/gprdata.inc b/lib/gvpr/gprdata.inc new file mode 100644 index 000000000..9908e0348 --- /dev/null +++ b/lib/gvpr/gprdata.inc @@ -0,0 +1,138 @@ +X(V_, this, "$", ID, T_obj, 0, YALL) +X(V_, thisg, "$G", ID, T_graph, 0, Y(G)) +X(V_, nextg, "$NG", ID, T_graph, 0, Y(G)) +X(V_, targt, "$T", ID, T_graph, 0, Y(G)) +X(V_, outgraph, "$O", ID, T_graph, 0, Y(G)) +X(V_, tgtname, "$tgtname", ID, STRING, 0, Y(S)) +X(V_, infname, "$F", ID, STRING, 0, Y(S)) +X(V_, travroot, "$tvroot", ID, T_node, 0, Y(V)) +X(V_, travnext, "$tvnext", ID, T_node, 0, Y(V)) +X(V_, travedge, "$tvedge", ID, T_edge, 0, Y(E)) +X(V_, travtype, "$tvtype", ID, T_tvtyp, 0, Y(TV)) +X(V_, ARGC, "ARGC", ID, INTEGER, 0, Y(I)) +X(M_, degree, "degree", ID, INTEGER, Y(V), Y(I)) +X(M_, X, "X", ID, FLOATING, Y(V), Y(F)) +X(M_, Y, "Y", ID, FLOATING, Y(V), Y(F)) +X(M_, head, "head", ID, T_node, Y(E), Y(V)) +X(M_, tail, "tail", ID, T_node, Y(E), Y(V)) +X(M_, name, "name", ID, STRING, YALL, Y(S)) +X(M_, indegree, "indegree", ID, INTEGER, Y(V), Y(I)) +X(M_, outdegree, "outdegree", ID, INTEGER, Y(V), Y(I)) +X(M_, root, "root", ID, T_graph, YALL, Y(G)) +X(M_, parent, "parent", ID, T_graph, Y(G), Y(G)) +X(M_, n_edges, "n_edges", ID, INTEGER, Y(G), Y(I)) +X(M_, n_nodes, "n_nodes", ID, INTEGER, Y(G), Y(I)) +X(M_, directed, "directed", ID, INTEGER, Y(G), Y(I)) +X(M_, strict, "strict", ID, INTEGER, Y(G), Y(I)) +X(T_, node, "node_t", DECLARE, T_node) +X(T_, edge, "edge_t", DECLARE, T_edge) +X(T_, graph, "graph_t", DECLARE, T_graph) +X(T_, obj, "obj_t", DECLARE, T_obj) +X(T_, tvtyp, "tvtype_t", DECLARE, T_tvtyp) +X(A_, ARGV, "ARGV", ARRAY, S|A(1,I)) +X(F_, graph, "graph", FUNCTION, G|A(1,S)|A(2,S)) +X(F_, subg, "subg", FUNCTION, G|A(1,G)|A(2,S)) +X(F_, issubg, "isSubg", FUNCTION, G|A(1,G)|A(2,S)) +X(F_, fstsubg, "fstsubg", FUNCTION, G|A(1,G)) +X(F_, nxtsubg, "nxtsubg", FUNCTION, G|A(1,G)) +X(F_, node, "node", FUNCTION, V|A(1,G)|A(2,S)) +X(F_, addnode, "subnode", FUNCTION, V|A(1,G)|A(2,V)) +X(F_, fstnode, "fstnode", FUNCTION, V|A(1,G)) +X(F_, nxtnode, "nxtnode", FUNCTION, V|A(1,V)) +X(F_, nxtnodesg, "nxtnode_sg", FUNCTION, V|A(1,G)|A(2,V)) +X(F_, isnode, "isNode", FUNCTION, V|A(1,G)|A(2,S)) +X(F_, issubnode, "isSubnode", FUNCTION, I|A(1,G)|A(2,V)) +X(F_, indegree, "indegreeOf", FUNCTION, I|A(1,G)|A(2,V)) +X(F_, outdegree, "outdegreeOf", FUNCTION, I|A(1,G)|A(2,V)) +X(F_, degree, "degreeOf", FUNCTION, I|A(1,G)|A(2,V)) +X(F_, isin, "isIn", FUNCTION, I|A(1,G)|A(2,O)) +X(F_, edge, "edge", FUNCTION, E|A(1,V)|A(2,V)|A(3,S)) +X(F_, edgesg, "edge_sg", FUNCTION, E|A(1,G)|A(2,V)|A(3,V)|A(4,S)) +X(F_, addedge, "subedge", FUNCTION, E|A(1,G)|A(2,E)) +X(F_, opp, "opp", FUNCTION, V|A(1,E)|A(2,V)) +X(F_, fstout, "fstout", FUNCTION, E|A(1,V)) +X(F_, nxtout, "nxtout", FUNCTION, E|A(1,E)) +X(F_, fstin, "fstin", FUNCTION, E|A(1,V)) +X(F_, nxtin, "nxtin", FUNCTION, E|A(1,E)) +X(F_, fstedge, "fstedge", FUNCTION, E|A(1,V)) +X(F_, nxtedge, "nxtedge", FUNCTION, E|A(1,E)|A(2,V)) +X(F_, fstoutsg, "fstout_sg", FUNCTION, E|A(1,G)|A(2,V)) +X(F_, nxtoutsg, "nxtout_sg", FUNCTION, E|A(1,G)|A(2,E)) +X(F_, fstinsg, "fstin_sg", FUNCTION, E|A(1,G)|A(2,V)) +X(F_, nxtinsg, "nxtin_sg", FUNCTION, E|A(1,G)|A(2,E)) +X(F_, fstedgesg, "fstedge_sg", FUNCTION, E|A(1,G)|A(2,V)) +X(F_, nxtedgesg, "nxtedge_sg", FUNCTION, E|A(1,G)|A(2,E)|A(3,V)) +X(F_, compof, "compOf", FUNCTION, G|A(1,G)|A(2,V)) +X(F_, kindof, "kindOf", FUNCTION, S|A(1,O)) +X(F_, index, "index", FUNCTION, I|A(1,S)|A(2,S)) +X(F_, rindex, "rindex", FUNCTION, I|A(1,S)|A(2,S)) +X(F_, isedge, "isEdge", FUNCTION, E|A(1,V)|A(2,V)|A(3,S)) +X(F_, isedgesg, "isEdge_sg", FUNCTION, E|A(1,G)|A(2,V)|A(3,V)|A(4,S)) +X(F_, issubedge, "isSubedge", FUNCTION, I|A(1,G)|A(2,E)) +X(F_, length, "length", FUNCTION, I|A(1,S)) +X(F_, match, "match", FUNCTION, I|A(1,S)|A(2,S)) +X(F_, write, "write", FUNCTION, I|A(1,G)) +X(F_, writeg, "writeG", FUNCTION, I|A(1,G)|A(2,S)) +X(F_, readg, "readG", FUNCTION, G|A(1,S)) +X(F_, fwriteg, "fwriteG", FUNCTION, I|A(1,G)|A(2,I)) +X(F_, freadg, "freadG", FUNCTION, G|A(1,I)) +X(F_, openf, "openF", FUNCTION, I|A(1,S)|A(2,S)) +X(F_, closef, "closeF", FUNCTION, I|A(1,I)) +X(F_, readl, "readL", FUNCTION, S|A(1,I)) +X(F_, induce, "induce", FUNCTION, I|A(1,G)) +X(F_, isdirect, "isDirect", FUNCTION, I|A(1,G)) +X(F_, isstrict, "isStrict", FUNCTION, I|A(1,G)) +X(F_, delete, "delete", FUNCTION, I|A(1,G)|A(2,O)) +X(F_, clone, "clone", FUNCTION, O|A(1,G)|A(2,O)) +X(F_, cloneG, "cloneG", FUNCTION, G|A(1,G)|A(2,S)) +X(F_, copy, "copy", FUNCTION, O|A(1,G)|A(2,O)) +X(F_, copya, "copyA", FUNCTION, I|A(1,O)|A(2,O)) +X(F_, lock, "lock", FUNCTION, I|A(1,G)|A(2,I)) +X(F_, nnodes, "nNodes", FUNCTION, I|A(1,G)) +X(F_, nedges, "nEdges", FUNCTION, I|A(1,G)) +X(F_, sqrt, "sqrt", FUNCTION, F|A(1,F)) +X(F_, cos, "cos", FUNCTION, F|A(1,F)) +X(F_, sin, "sin", FUNCTION, F|A(1,F)) +X(F_, atan2, "atan2", FUNCTION, F|A(1,F)|A(2,F)) +X(F_, exp, "exp", FUNCTION, F|A(1,F)) +X(F_, pow, "pow", FUNCTION, F|A(1,F)|A(2,F)) +X(F_, log, "log", FUNCTION, F|A(1,F)) +X(F_, min, "MIN", FUNCTION, F|A(1,F)|A(2,F)) +X(F_, max, "MAX", FUNCTION, F|A(1,F)|A(2,F)) +X(F_, sys, "system", FUNCTION, I|A(1,S)) +X(F_, xof, "xOf", FUNCTION, S|A(1,S)) +X(F_, yof, "yOf", FUNCTION, S|A(1,S)) +X(F_, llof, "llOf", FUNCTION, S|A(1,S)) +X(F_, urof, "urOf", FUNCTION, S|A(1,S)) +X(F_, html, "html", FUNCTION, S|A(1,G)|A(2,S)) +X(F_, ishtml, "ishtml", FUNCTION, I|A(1,S)) +X(F_, canon, "canon", FUNCTION, S|A(1,S)) +X(F_, get, "aget", FUNCTION, S|A(1,O)|A(2,S)) +X(F_, set, "aset", FUNCTION, I|A(1,O)|A(2,S)|A(3,S)) +X(F_, dget, "getDflt", FUNCTION, S|A(1,G)|A(2,S)|A(3,S)) +X(F_, dset, "setDflt", FUNCTION, I|A(1,G)|A(2,S)|A(3,S)|A(4,S)) +X(F_, hasattr, "hasAttr", FUNCTION, I|A(1,O)|A(2,S)) +X(F_, isattr, "isAttr", FUNCTION, I|A(1,G)|A(2,S)|A(3,S)) +X(F_, fstattr, "fstAttr", FUNCTION, S|A(1,G)|A(2,S)) +X(F_, nxtattr, "nxtAttr", FUNCTION, S|A(1,G)|A(2,S)|A(3,S)) +X(F_, tolower, "tolower", FUNCTION, S|A(1,S)) +X(F_, toupper, "toupper", FUNCTION, S|A(1,S)) +X(F_, strcmp, "strcmp", FUNCTION, I|A(1,S)|A(2,S)) +X(F_, atoi, "atoi", FUNCTION, I|A(1,S)) +X(F_, atof, "atof", FUNCTION, F|A(1,S)) +X(F_, colorx, "colorx", FUNCTION, S|A(1,S)|A(2,S)) +X(F_, call, "call", FUNCTION, I|A(1,S)|A(2,S)) +X(C_, flat, "TV_flat", CONSTANT, T_tvtyp) +X(C_, ne, "TV_ne", CONSTANT, T_tvtyp) +X(C_, en, "TV_en", CONSTANT, T_tvtyp) +X(C_, bfs, "TV_bfs", CONSTANT, T_tvtyp) +X(C_, dfs, "TV_dfs", CONSTANT, T_tvtyp) +X(C_, fwd, "TV_fwd", CONSTANT, T_tvtyp) +X(C_, rev, "TV_rev", CONSTANT, T_tvtyp) +X(C_, postdfs, "TV_postdfs", CONSTANT, T_tvtyp) +X(C_, postfwd, "TV_postfwd", CONSTANT, T_tvtyp) +X(C_, postrev, "TV_postrev", CONSTANT, T_tvtyp) +X(C_, prepostdfs, "TV_prepostdfs", CONSTANT, T_tvtyp) +X(C_, prepostfwd, "TV_prepostfwd", CONSTANT, T_tvtyp) +X(C_, prepostrev, "TV_prepostrev", CONSTANT, T_tvtyp) +X(C_, null, "NULL", CONSTANT, T_obj) diff --git a/lib/gvpr/gvprlib.vcxproj b/lib/gvpr/gvprlib.vcxproj index d0aedeb50..8f73d9e3e 100644 --- a/lib/gvpr/gvprlib.vcxproj +++ b/lib/gvpr/gvprlib.vcxproj @@ -101,6 +101,8 @@ + + @@ -111,7 +113,6 @@ - diff --git a/lib/gvpr/gvprlib.vcxproj.filters b/lib/gvpr/gvprlib.vcxproj.filters index 5a76deed1..ecb38b30c 100644 --- a/lib/gvpr/gvprlib.vcxproj.filters +++ b/lib/gvpr/gvprlib.vcxproj.filters @@ -21,6 +21,12 @@ Header Files + + Header Files + + + Header Files + Header Files @@ -47,9 +53,6 @@ Source Files - - Source Files - Source Files diff --git a/lib/gvpr/mkdefs.c b/lib/gvpr/mkdefs.c deleted file mode 100644 index 8cbedc5be..000000000 --- a/lib/gvpr/mkdefs.c +++ /dev/null @@ -1,212 +0,0 @@ -/************************************************************************* - * Copyright (c) 2011 AT&T Intellectual Property - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: Details at https://graphviz.org - *************************************************************************/ - - -/* - * Generator of gpr include file from table data - * - */ - -#include -#include -#include -#include - -/******** Parameters **********/ - -#define MINNAME 1 - -/*************************/ - -static char *header = "#ifndef %s\n\ -#define %s\n\n\ -/* generated by mkdefs; do not edit */\n\n"; - -static char *prefix = "#define Y(i) (1<<(i))\n\ -\n\ -#define V 0x4 /* NODE */\n\ -#define E 0x5 /* EDGE */\n\ -#define G 0x6 /* GRAPH */\n\ -#define O 0x7 /* OBJECT */\n\ -#define TV 0x8 /* TV_ */\n\ -#define YALL (Y(V)|Y(E)|Y(G))\n\ -\n"; - -/*************************/ - -#define BSIZE 512 - -#define K_val 1 -#define K_member 2 - -typedef struct rec record; - -struct rec { - record *next; - char *symbol; - char *name; - char *lex; - char *type; - char *domain; - char *range; - char *data; - int kind; -}; - -static int lineno; -static int tokno; - -static record *newRec(record * curr) -{ - record *newr; - - newr = malloc(sizeof(record)); - if (!newr) { - fprintf(stderr, "mkdefs: out of memory, line %d\n", lineno); - exit(1); - } - curr->next = newr; - newr->next = 0; - return newr; -} - -static void genGuard(char *filename, char *guard) -{ - char c; - - while ((c = *filename++)) { - if (c == '.') - *guard++ = '_'; - else - *guard++ = toupper(c); - } - *guard = '\0'; -} - -static char *strTok(char *str) -{ - char *tk; - - tokno++; - tk = strtok(str, " \t\n"); - return tk; -} - -int main(int argc, char *argv[]) -{ - char *filename; - char *buf; - char *tk; - record vals; - record *recp = &vals; - FILE *fp; - char guard[100]; - int idx = MINNAME; - int lastval = 0; - int lastmem = 0; - - if (argc != 2) { - fprintf(stderr, "mkdefs: 1 argument necessary\n"); - exit(1); - } - filename = argv[1]; - - vals.next = 0; - buf = malloc(BSIZE); - while (fgets(buf, BSIZE, stdin)) { - lineno++; - tokno = 0; - tk = strTok(buf); - if ((!tk) || (*tk == '#')) - continue; /* comment */ - recp = newRec(recp); - if (*tk == 'V') - recp->kind = K_val; - else if (*tk == 'M') - recp->kind = K_member; - else - recp->kind = 0; - recp->data = buf; - recp->symbol = tk; - recp->name = strTok(0); - recp->lex = strTok(0); - recp->type = strTok(0); - if (recp->kind) { - recp->domain = strTok(0); - recp->range = strTok(0); - } - buf = malloc(BSIZE); - } - - fp = fopen(filename, "w"); - if (!fp) { - fprintf(stderr, "mkdefs: Could not open %s for writing\n", - filename); - exit(1); - } - - genGuard(filename, guard); - fprintf(fp, header, guard, guard); - fputs(prefix, fp); - - for (recp = vals.next; recp; recp = recp->next) { - if (recp->kind == K_val) - lastval = idx; - else if (recp->kind == K_member) - lastmem = idx; - fprintf(fp, "#define\t%s\t% 5d\n", recp->symbol, idx++); - } - idx--; - fprintf(fp, "\n#define LAST_V %d\n", lastval); - fprintf(fp, "#define LAST_M %d\n", lastmem); - fprintf(fp, "#define MINNAME %d\n#define MAXNAME %d\n\n", MINNAME, - idx); - - fprintf(fp, "static Exid_t symbols[] = {\n"); - for (recp = vals.next; recp; recp = recp->next) { - fprintf(fp, "\tEX_ID ( %s, %s, %s, %s, 0),\n", - recp->name, recp->lex, recp->symbol, recp->type); - } - fprintf(fp, "\tEX_ID ( {0}, 0, 0, 0, 0)\n};\n"); - - fprintf(fp, "\nstatic char* typenames[] = {\n"); - for (recp = vals.next; recp; recp = recp->next) { - if (*(recp->symbol) == 'T') - fprintf(fp, "\t%s,\n", recp->name); - } - fprintf(fp, "};\n"); - - fprintf(fp, "\n#ifdef DEBUG\nstatic char* gprnames[] = {\n\t\"\",\n"); - for (recp = vals.next; recp; recp = recp->next) { - fprintf(fp, "\t\"%s\",\n", recp->symbol); - } - fprintf(fp, "};\n#endif\n"); - - fprintf(fp, "\ntypedef unsigned short tctype;\n"); - fprintf(fp, "\nstatic tctype tchk[][2] = {\n\t{ 0, 0 },\n"); - for (recp = vals.next; recp; recp = recp->next) { - if (recp->kind) - fprintf(fp, "\t{ %s, %s },\n", recp->domain, recp->range); - } - fprintf(fp, "};\n"); - - fprintf(fp, "\n#endif\n"); - fclose(fp); - - /* clean up */ - for (recp = vals.next; recp; recp = vals.next) { - free(recp->data); - vals.next = recp->next; - free(recp); - } - free(buf); - - exit(0); -} diff --git a/windows/cmd/gvpr/gdefs.h b/windows/cmd/gvpr/gdefs.h deleted file mode 100644 index 9363f4c6b..000000000 --- a/windows/cmd/gvpr/gdefs.h +++ /dev/null @@ -1,296 +0,0 @@ -#ifndef GDEFS_H -#define GDEFS_H - -/* generated by mkdefs; do not edit */ - -#define Y(i) (1<<(i)) - -#define V 0x4 /* NODE */ -#define E 0x5 /* EDGE */ -#define G 0x6 /* GRAPH */ -#define O 0x7 /* OBJECT */ -#define TV 0x8 /* TV_ */ -#define YALL (Y(V)|Y(E)|Y(G)) - -#define V_this 1 -#define V_thisg 2 -#define V_targt 3 -#define V_outgraph 4 -#define V_tgtname 5 -#define V_infname 6 -#define V_travroot 7 -#define V_travtype 8 -#define V_ARGC 9 -#define M_degree 10 -#define M_head 11 -#define M_tail 12 -#define M_name 13 -#define M_indegree 14 -#define M_outdegree 15 -#define M_root 16 -#define M_parent 17 -#define M_n_edges 18 -#define M_n_nodes 19 -#define M_directed 20 -#define M_strict 21 -#define T_node 22 -#define T_edge 23 -#define T_graph 24 -#define T_obj 25 -#define T_tvtyp 26 -#define A_ARGV 27 -#define F_graph 28 -#define F_subg 29 -#define F_issubg 30 -#define F_fstsubg 31 -#define F_nxtsubg 32 -#define F_node 33 -#define F_addnode 34 -#define F_fstnode 35 -#define F_nxtnode 36 -#define F_nxtnodesg 37 -#define F_isnode 38 -#define F_issubnode 39 -#define F_indegree 40 -#define F_outdegree 41 -#define F_degree 42 -#define F_isin 43 -#define F_edge 44 -#define F_edgesg 45 -#define F_addedge 46 -#define F_fstout 47 -#define F_nxtout 48 -#define F_fstin 49 -#define F_nxtin 50 -#define F_fstedge 51 -#define F_nxtedge 52 -#define F_fstoutsg 53 -#define F_nxtoutsg 54 -#define F_fstinsg 55 -#define F_nxtinsg 56 -#define F_fstedgesg 57 -#define F_nxtedgesg 58 -#define F_compof 59 -#define F_kindof 60 -#define F_index 61 -#define F_isedge 62 -#define F_isedgesg 63 -#define F_issubedge 64 -#define F_length 65 -#define F_match 66 -#define F_write 67 -#define F_writeg 68 -#define F_readg 69 -#define F_fwriteg 70 -#define F_freadg 71 -#define F_openf 72 -#define F_closef 73 -#define F_readl 74 -#define F_induce 75 -#define F_isdirect 76 -#define F_isstrict 77 -#define F_delete 78 -#define F_clone 79 -#define F_copy 80 -#define F_copya 81 -#define F_lock 82 -#define F_nnodes 83 -#define F_nedges 84 -#define F_sqrt 85 -#define F_cos 86 -#define F_sin 87 -#define F_atan2 88 -#define F_exp 89 -#define F_pow 90 -#define F_log 91 -#define F_xof 92 -#define F_yof 93 -#define F_llof 94 -#define F_urof 95 -#define F_canon 96 -#define F_get 97 -#define F_set 98 -#define F_dget 99 -#define F_dset 100 -#define F_hasattr 101 -#define F_isattr 102 -#define F_fstattr 103 -#define F_nxtattr 104 -#define C_flat 105 -#define C_ne 106 -#define C_en 107 -#define C_bfs 108 -#define C_dfs 109 -#define C_fwd 110 -#define C_rev 111 -#define C_postdfs 112 -#define C_postfwd 113 -#define C_postrev 114 -#define C_prepostdfs 115 -#define C_prepostfwd 116 -#define C_prepostrev 117 -#define C_null 118 - -#define LAST_V 9 -#define LAST_M 21 -#define MINNAME 1 -#define MAXNAME 118 - -static Exid_t symbols[] = { - EX_ID ( "$", ID, V_this, T_obj, 0), - EX_ID ( "$G", ID, V_thisg, T_graph, 0), - EX_ID ( "$T", ID, V_targt, T_graph, 0), - EX_ID ( "$O", ID, V_outgraph, T_graph, 0), - EX_ID ( "$tgtname", ID, V_tgtname, STRING, 0), - EX_ID ( "$F", ID, V_infname, STRING, 0), - EX_ID ( "$tvroot", ID, V_travroot, T_node, 0), - EX_ID ( "$tvtype", ID, V_travtype, T_tvtyp, 0), - EX_ID ( "ARGC", ID, V_ARGC, INTEGER, 0), - EX_ID ( "degree", ID, M_degree, INTEGER, 0), - EX_ID ( "head", ID, M_head, T_node, 0), - EX_ID ( "tail", ID, M_tail, T_node, 0), - EX_ID ( "name", ID, M_name, STRING, 0), - EX_ID ( "indegree", ID, M_indegree, INTEGER, 0), - EX_ID ( "outdegree", ID, M_outdegree, INTEGER, 0), - EX_ID ( "root", ID, M_root, T_graph, 0), - EX_ID ( "parent", ID, M_parent, T_graph, 0), - EX_ID ( "n_edges", ID, M_n_edges, INTEGER, 0), - EX_ID ( "n_nodes", ID, M_n_nodes, INTEGER, 0), - EX_ID ( "directed", ID, M_directed, INTEGER, 0), - EX_ID ( "strict", ID, M_strict, INTEGER, 0), - EX_ID ( "node_t", DECLARE, T_node, T_node, 0), - EX_ID ( "edge_t", DECLARE, T_edge, T_edge, 0), - EX_ID ( "graph_t", DECLARE, T_graph, T_graph, 0), - EX_ID ( "obj_t", DECLARE, T_obj, T_obj, 0), - EX_ID ( "tvtype_t", DECLARE, T_tvtyp, T_tvtyp, 0), - EX_ID ( "ARGV", ARRAY, A_ARGV, S|A(1,I), 0), - EX_ID ( "graph", FUNCTION, F_graph, G|A(1,S)|A(2,S), 0), - EX_ID ( "subg", FUNCTION, F_subg, G|A(1,G)|A(2,S), 0), - EX_ID ( "isSubg", FUNCTION, F_issubg, G|A(1,G)|A(2,S), 0), - EX_ID ( "fstsubg", FUNCTION, F_fstsubg, G|A(1,G), 0), - EX_ID ( "nxtsubg", FUNCTION, F_nxtsubg, G|A(1,G), 0), - EX_ID ( "node", FUNCTION, F_node, V|A(1,G)|A(2,S), 0), - EX_ID ( "subnode", FUNCTION, F_addnode, V|A(1,G)|A(2,V), 0), - EX_ID ( "fstnode", FUNCTION, F_fstnode, V|A(1,G), 0), - EX_ID ( "nxtnode", FUNCTION, F_nxtnode, V|A(1,V), 0), - EX_ID ( "nxtnode_sg", FUNCTION, F_nxtnodesg, V|A(1,G)|A(2,V), 0), - EX_ID ( "isNode", FUNCTION, F_isnode, V|A(1,G)|A(2,S), 0), - EX_ID ( "isSubnode", FUNCTION, F_issubnode, I|A(1,G)|A(2,V), 0), - EX_ID ( "indegreeOf", FUNCTION, F_indegree, I|A(1,G)|A(2,V), 0), - EX_ID ( "outdegreeOf", FUNCTION, F_outdegree, I|A(1,G)|A(2,V), 0), - EX_ID ( "degreeOf", FUNCTION, F_degree, I|A(1,G)|A(2,V), 0), - EX_ID ( "isIn", FUNCTION, F_isin, I|A(1,G)|A(2,O), 0), - EX_ID ( "edge", FUNCTION, F_edge, E|A(1,V)|A(2,V)|A(3,S), 0), - EX_ID ( "edge_sg", FUNCTION, F_edgesg, E|A(1,G)|A(2,V)|A(3,V)|A(4,S), 0), - EX_ID ( "subedge", FUNCTION, F_addedge, E|A(1,G)|A(2,E), 0), - EX_ID ( "fstout", FUNCTION, F_fstout, E|A(1,V), 0), - EX_ID ( "nxtout", FUNCTION, F_nxtout, E|A(1,E), 0), - EX_ID ( "fstin", FUNCTION, F_fstin, E|A(1,V), 0), - EX_ID ( "nxtin", FUNCTION, F_nxtin, E|A(1,E), 0), - EX_ID ( "fstedge", FUNCTION, F_fstedge, E|A(1,V), 0), - EX_ID ( "nxtedge", FUNCTION, F_nxtedge, E|A(1,E)|A(2,V), 0), - EX_ID ( "fstout_sg", FUNCTION, F_fstoutsg, E|A(1,G)|A(2,V), 0), - EX_ID ( "nxtout_sg", FUNCTION, F_nxtoutsg, E|A(1,G)|A(2,E), 0), - EX_ID ( "fstin_sg", FUNCTION, F_fstinsg, E|A(1,G)|A(2,V), 0), - EX_ID ( "nxtin_sg", FUNCTION, F_nxtinsg, E|A(1,G)|A(2,E), 0), - EX_ID ( "fstedge_sg", FUNCTION, F_fstedgesg, E|A(1,G)|A(2,V), 0), - EX_ID ( "nxtedge_sg", FUNCTION, F_nxtedgesg, E|A(1,G)|A(2,E)|A(3,V), 0), - EX_ID ( "compOf", FUNCTION, F_compof, G|A(1,G)|A(2,V), 0), - EX_ID ( "kindOf", FUNCTION, F_kindof, S|A(1,O), 0), - EX_ID ( "index", FUNCTION, F_index, I|A(1,S)|A(2,S), 0), - EX_ID ( "isEdge", FUNCTION, F_isedge, E|A(1,V)|A(2,V)|A(3,S), 0), - EX_ID ( "isEdge_sg", FUNCTION, F_isedgesg, E|A(1,G)|A(2,V)|A(3,V)|A(4,S), 0), - EX_ID ( "isSubedge", FUNCTION, F_issubedge, I|A(1,G)|A(2,E), 0), - EX_ID ( "length", FUNCTION, F_length, I|A(1,S), 0), - EX_ID ( "match", FUNCTION, F_match, I|A(1,S)|A(2,S), 0), - EX_ID ( "write", FUNCTION, F_write, I|A(1,G), 0), - EX_ID ( "writeG", FUNCTION, F_writeg, I|A(1,G)|A(2,S), 0), - EX_ID ( "readG", FUNCTION, F_readg, G|A(1,S), 0), - EX_ID ( "fwriteG", FUNCTION, F_fwriteg, I|A(1,G)|A(2,I), 0), - EX_ID ( "freadG", FUNCTION, F_freadg, G|A(1,I), 0), - EX_ID ( "openF", FUNCTION, F_openf, I|A(1,S)|A(2,S), 0), - EX_ID ( "closeF", FUNCTION, F_closef, I|A(1,I), 0), - EX_ID ( "readL", FUNCTION, F_readl, S|A(1,I), 0), - EX_ID ( "induce", FUNCTION, F_induce, I|A(1,G), 0), - EX_ID ( "isDirect", FUNCTION, F_isdirect, I|A(1,G), 0), - EX_ID ( "isStrict", FUNCTION, F_isstrict, I|A(1,G), 0), - EX_ID ( "delete", FUNCTION, F_delete, I|A(1,G)|A(2,O), 0), - EX_ID ( "clone", FUNCTION, F_clone, O|A(1,G)|A(2,O), 0), - EX_ID ( "copy", FUNCTION, F_copy, O|A(1,G)|A(2,O), 0), - EX_ID ( "copyA", FUNCTION, F_copya, I|A(1,O)|A(2,O), 0), - EX_ID ( "lock", FUNCTION, F_lock, I|A(1,G)|A(2,I), 0), - EX_ID ( "nNodes", FUNCTION, F_nnodes, I|A(1,G), 0), - EX_ID ( "nEdges", FUNCTION, F_nedges, I|A(1,G), 0), - EX_ID ( "sqrt", FUNCTION, F_sqrt, F|A(1,F), 0), - EX_ID ( "cos", FUNCTION, F_cos, F|A(1,F), 0), - EX_ID ( "sin", FUNCTION, F_sin, F|A(1,F), 0), - EX_ID ( "atan2", FUNCTION, F_atan2, F|A(1,F)|A(2,F), 0), - EX_ID ( "exp", FUNCTION, F_exp, F|A(1,F), 0), - EX_ID ( "pow", FUNCTION, F_pow, F|A(1,F)|A(2,F), 0), - EX_ID ( "log", FUNCTION, F_log, F|A(1,F), 0), - EX_ID ( "xOf", FUNCTION, F_xof, S|A(1,S), 0), - EX_ID ( "yOf", FUNCTION, F_yof, S|A(1,S), 0), - EX_ID ( "llOf", FUNCTION, F_llof, S|A(1,S), 0), - EX_ID ( "urOf", FUNCTION, F_urof, S|A(1,S), 0), - EX_ID ( "canon", FUNCTION, F_canon, S|A(1,S), 0), - EX_ID ( "aget", FUNCTION, F_get, S|A(1,O)|A(2,S), 0), - EX_ID ( "aset", FUNCTION, F_set, I|A(1,O)|A(2,S)|A(3,S), 0), - EX_ID ( "getDflt", FUNCTION, F_dget, S|A(1,G)|A(2,S)|A(3,S), 0), - EX_ID ( "setDflt", FUNCTION, F_dset, I|A(1,G)|A(2,S)|A(3,S)|A(4,S), 0), - EX_ID ( "hasAttr", FUNCTION, F_hasattr, I|A(1,O)|A(2,S), 0), - EX_ID ( "isAttr", FUNCTION, F_isattr, I|A(1,G)|A(2,S)|A(3,S), 0), - EX_ID ( "fstAttr", FUNCTION, F_fstattr, S|A(1,G)|A(2,S), 0), - EX_ID ( "nxtAttr", FUNCTION, F_nxtattr, S|A(1,G)|A(2,S)|A(3,S), 0), - EX_ID ( "TV_flat", CONSTANT, C_flat, T_tvtyp, 0), - EX_ID ( "TV_ne", CONSTANT, C_ne, T_tvtyp, 0), - EX_ID ( "TV_en", CONSTANT, C_en, T_tvtyp, 0), - EX_ID ( "TV_bfs", CONSTANT, C_bfs, T_tvtyp, 0), - EX_ID ( "TV_dfs", CONSTANT, C_dfs, T_tvtyp, 0), - EX_ID ( "TV_fwd", CONSTANT, C_fwd, T_tvtyp, 0), - EX_ID ( "TV_rev", CONSTANT, C_rev, T_tvtyp, 0), - EX_ID ( "TV_postdfs", CONSTANT, C_postdfs, T_tvtyp, 0), - EX_ID ( "TV_postfwd", CONSTANT, C_postfwd, T_tvtyp, 0), - EX_ID ( "TV_postrev", CONSTANT, C_postrev, T_tvtyp, 0), - EX_ID ( "TV_prepostdfs", CONSTANT, C_prepostdfs, T_tvtyp, 0), - EX_ID ( "TV_prepostfwd", CONSTANT, C_prepostfwd, T_tvtyp, 0), - EX_ID ( "TV_prepostrev", CONSTANT, C_prepostrev, T_tvtyp, 0), - EX_ID ( "NULL", CONSTANT, C_null, T_obj, 0), - EX_ID ( {0}, 0, 0, 0, 0) -}; - -static char* typenames[] = { - "node_t", - "edge_t", - "graph_t", - "obj_t", - "tvtype_t", -}; - -typedef unsigned short tctype; - -static tctype tchk[][2] = { - { 0, 0 }, - { 0, YALL }, - { 0, Y(G) }, - { 0, Y(G) }, - { 0, Y(G) }, - { 0, Y(S) }, - { 0, Y(S) }, - { 0, Y(V) }, - { 0, Y(TV) }, - { 0, Y(I) }, - { Y(V), Y(I) }, - { Y(E), Y(V) }, - { Y(E), Y(V) }, - { YALL, Y(S) }, - { Y(V), Y(I) }, - { Y(V), Y(I) }, - { YALL, Y(G) }, - { Y(G), Y(G) }, - { Y(G), Y(I) }, - { Y(G), Y(I) }, - { Y(G), Y(I) }, - { Y(G), Y(I) }, -}; - -#endif diff --git a/windows/include/gvpr/gdefs.h b/windows/include/gvpr/gdefs.h deleted file mode 100644 index 88f724e1c..000000000 --- a/windows/include/gvpr/gdefs.h +++ /dev/null @@ -1,485 +0,0 @@ -#ifndef GDEFS_H -#define GDEFS_H - -/* generated by mkdefs; do not edit */ - -#define Y(i) (1<<(i)) - -#define V 0x4 /* NODE */ -#define E 0x5 /* EDGE */ -#define G 0x6 /* GRAPH */ -#define O 0x7 /* OBJECT */ -#define TV 0x8 /* TV_ */ -#define YALL (Y(V)|Y(E)|Y(G)) - -#define V_this 1 -#define V_thisg 2 -#define V_nextg 3 -#define V_targt 4 -#define V_outgraph 5 -#define V_tgtname 6 -#define V_infname 7 -#define V_travroot 8 -#define V_travnext 9 -#define V_travedge 10 -#define V_travtype 11 -#define V_ARGC 12 -#define M_degree 13 -#define M_X 14 -#define M_Y 15 -#define M_head 16 -#define M_tail 17 -#define M_name 18 -#define M_indegree 19 -#define M_outdegree 20 -#define M_root 21 -#define M_parent 22 -#define M_n_edges 23 -#define M_n_nodes 24 -#define M_directed 25 -#define M_strict 26 -#define T_node 27 -#define T_edge 28 -#define T_graph 29 -#define T_obj 30 -#define T_tvtyp 31 -#define A_ARGV 32 -#define F_graph 33 -#define F_subg 34 -#define F_issubg 35 -#define F_fstsubg 36 -#define F_nxtsubg 37 -#define F_node 38 -#define F_addnode 39 -#define F_fstnode 40 -#define F_nxtnode 41 -#define F_nxtnodesg 42 -#define F_isnode 43 -#define F_issubnode 44 -#define F_indegree 45 -#define F_outdegree 46 -#define F_degree 47 -#define F_isin 48 -#define F_edge 49 -#define F_edgesg 50 -#define F_addedge 51 -#define F_opp 52 -#define F_fstout 53 -#define F_nxtout 54 -#define F_fstin 55 -#define F_nxtin 56 -#define F_fstedge 57 -#define F_nxtedge 58 -#define F_fstoutsg 59 -#define F_nxtoutsg 60 -#define F_fstinsg 61 -#define F_nxtinsg 62 -#define F_fstedgesg 63 -#define F_nxtedgesg 64 -#define F_compof 65 -#define F_kindof 66 -#define F_index 67 -#define F_rindex 68 -#define F_isedge 69 -#define F_isedgesg 70 -#define F_issubedge 71 -#define F_length 72 -#define F_match 73 -#define F_write 74 -#define F_writeg 75 -#define F_readg 76 -#define F_fwriteg 77 -#define F_freadg 78 -#define F_openf 79 -#define F_closef 80 -#define F_readl 81 -#define F_induce 82 -#define F_isdirect 83 -#define F_isstrict 84 -#define F_delete 85 -#define F_clone 86 -#define F_cloneG 87 -#define F_copy 88 -#define F_copya 89 -#define F_lock 90 -#define F_nnodes 91 -#define F_nedges 92 -#define F_sqrt 93 -#define F_cos 94 -#define F_sin 95 -#define F_atan2 96 -#define F_exp 97 -#define F_pow 98 -#define F_log 99 -#define F_min 100 -#define F_max 101 -#define F_sys 102 -#define F_xof 103 -#define F_yof 104 -#define F_llof 105 -#define F_urof 106 -#define F_html 107 -#define F_ishtml 108 -#define F_canon 109 -#define F_get 110 -#define F_set 111 -#define F_dget 112 -#define F_dset 113 -#define F_hasattr 114 -#define F_isattr 115 -#define F_fstattr 116 -#define F_nxtattr 117 -#define F_tolower 118 -#define F_toupper 119 -#define F_strcmp 120 -#define F_atoi 121 -#define F_atof 122 -#define F_colorx 123 -#define F_call 124 -#define C_flat 125 -#define C_ne 126 -#define C_en 127 -#define C_bfs 128 -#define C_dfs 129 -#define C_fwd 130 -#define C_rev 131 -#define C_postdfs 132 -#define C_postfwd 133 -#define C_postrev 134 -#define C_prepostdfs 135 -#define C_prepostfwd 136 -#define C_prepostrev 137 -#define C_null 138 - -#define LAST_V 12 -#define LAST_M 26 -#define MINNAME 1 -#define MAXNAME 138 - -static Exid_t symbols[] = { - EX_ID ( "$", ID, V_this, T_obj, 0), - EX_ID ( "$G", ID, V_thisg, T_graph, 0), - EX_ID ( "$NG", ID, V_nextg, T_graph, 0), - EX_ID ( "$T", ID, V_targt, T_graph, 0), - EX_ID ( "$O", ID, V_outgraph, T_graph, 0), - EX_ID ( "$tgtname", ID, V_tgtname, STRING, 0), - EX_ID ( "$F", ID, V_infname, STRING, 0), - EX_ID ( "$tvroot", ID, V_travroot, T_node, 0), - EX_ID ( "$tvnext", ID, V_travnext, T_node, 0), - EX_ID ( "$tvedge", ID, V_travedge, T_edge, 0), - EX_ID ( "$tvtype", ID, V_travtype, T_tvtyp, 0), - EX_ID ( "ARGC", ID, V_ARGC, INTEGER, 0), - EX_ID ( "degree", ID, M_degree, INTEGER, 0), - EX_ID ( "X", ID, M_X, FLOATING, 0), - EX_ID ( "Y", ID, M_Y, FLOATING, 0), - EX_ID ( "head", ID, M_head, T_node, 0), - EX_ID ( "tail", ID, M_tail, T_node, 0), - EX_ID ( "name", ID, M_name, STRING, 0), - EX_ID ( "indegree", ID, M_indegree, INTEGER, 0), - EX_ID ( "outdegree", ID, M_outdegree, INTEGER, 0), - EX_ID ( "root", ID, M_root, T_graph, 0), - EX_ID ( "parent", ID, M_parent, T_graph, 0), - EX_ID ( "n_edges", ID, M_n_edges, INTEGER, 0), - EX_ID ( "n_nodes", ID, M_n_nodes, INTEGER, 0), - EX_ID ( "directed", ID, M_directed, INTEGER, 0), - EX_ID ( "strict", ID, M_strict, INTEGER, 0), - EX_ID ( "node_t", DECLARE, T_node, T_node, 0), - EX_ID ( "edge_t", DECLARE, T_edge, T_edge, 0), - EX_ID ( "graph_t", DECLARE, T_graph, T_graph, 0), - EX_ID ( "obj_t", DECLARE, T_obj, T_obj, 0), - EX_ID ( "tvtype_t", DECLARE, T_tvtyp, T_tvtyp, 0), - EX_ID ( "ARGV", ARRAY, A_ARGV, S|A(1,I), 0), - EX_ID ( "graph", FUNCTION, F_graph, G|A(1,S)|A(2,S), 0), - EX_ID ( "subg", FUNCTION, F_subg, G|A(1,G)|A(2,S), 0), - EX_ID ( "isSubg", FUNCTION, F_issubg, G|A(1,G)|A(2,S), 0), - EX_ID ( "fstsubg", FUNCTION, F_fstsubg, G|A(1,G), 0), - EX_ID ( "nxtsubg", FUNCTION, F_nxtsubg, G|A(1,G), 0), - EX_ID ( "node", FUNCTION, F_node, V|A(1,G)|A(2,S), 0), - EX_ID ( "subnode", FUNCTION, F_addnode, V|A(1,G)|A(2,V), 0), - EX_ID ( "fstnode", FUNCTION, F_fstnode, V|A(1,G), 0), - EX_ID ( "nxtnode", FUNCTION, F_nxtnode, V|A(1,V), 0), - EX_ID ( "nxtnode_sg", FUNCTION, F_nxtnodesg, V|A(1,G)|A(2,V), 0), - EX_ID ( "isNode", FUNCTION, F_isnode, V|A(1,G)|A(2,S), 0), - EX_ID ( "isSubnode", FUNCTION, F_issubnode, I|A(1,G)|A(2,V), 0), - EX_ID ( "indegreeOf", FUNCTION, F_indegree, I|A(1,G)|A(2,V), 0), - EX_ID ( "outdegreeOf", FUNCTION, F_outdegree, I|A(1,G)|A(2,V), 0), - EX_ID ( "degreeOf", FUNCTION, F_degree, I|A(1,G)|A(2,V), 0), - EX_ID ( "isIn", FUNCTION, F_isin, I|A(1,G)|A(2,O), 0), - EX_ID ( "edge", FUNCTION, F_edge, E|A(1,V)|A(2,V)|A(3,S), 0), - EX_ID ( "edge_sg", FUNCTION, F_edgesg, E|A(1,G)|A(2,V)|A(3,V)|A(4,S), 0), - EX_ID ( "subedge", FUNCTION, F_addedge, E|A(1,G)|A(2,E), 0), - EX_ID ( "opp", FUNCTION, F_opp, V|A(1,E)|A(2,V), 0), - EX_ID ( "fstout", FUNCTION, F_fstout, E|A(1,V), 0), - EX_ID ( "nxtout", FUNCTION, F_nxtout, E|A(1,E), 0), - EX_ID ( "fstin", FUNCTION, F_fstin, E|A(1,V), 0), - EX_ID ( "nxtin", FUNCTION, F_nxtin, E|A(1,E), 0), - EX_ID ( "fstedge", FUNCTION, F_fstedge, E|A(1,V), 0), - EX_ID ( "nxtedge", FUNCTION, F_nxtedge, E|A(1,E)|A(2,V), 0), - EX_ID ( "fstout_sg", FUNCTION, F_fstoutsg, E|A(1,G)|A(2,V), 0), - EX_ID ( "nxtout_sg", FUNCTION, F_nxtoutsg, E|A(1,G)|A(2,E), 0), - EX_ID ( "fstin_sg", FUNCTION, F_fstinsg, E|A(1,G)|A(2,V), 0), - EX_ID ( "nxtin_sg", FUNCTION, F_nxtinsg, E|A(1,G)|A(2,E), 0), - EX_ID ( "fstedge_sg", FUNCTION, F_fstedgesg, E|A(1,G)|A(2,V), 0), - EX_ID ( "nxtedge_sg", FUNCTION, F_nxtedgesg, E|A(1,G)|A(2,E)|A(3,V), 0), - EX_ID ( "compOf", FUNCTION, F_compof, G|A(1,G)|A(2,V), 0), - EX_ID ( "kindOf", FUNCTION, F_kindof, S|A(1,O), 0), - EX_ID ( "index", FUNCTION, F_index, I|A(1,S)|A(2,S), 0), - EX_ID ( "rindex", FUNCTION, F_rindex, I|A(1,S)|A(2,S), 0), - EX_ID ( "isEdge", FUNCTION, F_isedge, E|A(1,V)|A(2,V)|A(3,S), 0), - EX_ID ( "isEdge_sg", FUNCTION, F_isedgesg, E|A(1,G)|A(2,V)|A(3,V)|A(4,S), 0), - EX_ID ( "isSubedge", FUNCTION, F_issubedge, I|A(1,G)|A(2,E), 0), - EX_ID ( "length", FUNCTION, F_length, I|A(1,S), 0), - EX_ID ( "match", FUNCTION, F_match, I|A(1,S)|A(2,S), 0), - EX_ID ( "write", FUNCTION, F_write, I|A(1,G), 0), - EX_ID ( "writeG", FUNCTION, F_writeg, I|A(1,G)|A(2,S), 0), - EX_ID ( "readG", FUNCTION, F_readg, G|A(1,S), 0), - EX_ID ( "fwriteG", FUNCTION, F_fwriteg, I|A(1,G)|A(2,I), 0), - EX_ID ( "freadG", FUNCTION, F_freadg, G|A(1,I), 0), - EX_ID ( "openF", FUNCTION, F_openf, I|A(1,S)|A(2,S), 0), - EX_ID ( "closeF", FUNCTION, F_closef, I|A(1,I), 0), - EX_ID ( "readL", FUNCTION, F_readl, S|A(1,I), 0), - EX_ID ( "induce", FUNCTION, F_induce, I|A(1,G), 0), - EX_ID ( "isDirect", FUNCTION, F_isdirect, I|A(1,G), 0), - EX_ID ( "isStrict", FUNCTION, F_isstrict, I|A(1,G), 0), - EX_ID ( "delete", FUNCTION, F_delete, I|A(1,G)|A(2,O), 0), - EX_ID ( "clone", FUNCTION, F_clone, O|A(1,G)|A(2,O), 0), - EX_ID ( "cloneG", FUNCTION, F_cloneG, G|A(1,G)|A(2,S), 0), - EX_ID ( "copy", FUNCTION, F_copy, O|A(1,G)|A(2,O), 0), - EX_ID ( "copyA", FUNCTION, F_copya, I|A(1,O)|A(2,O), 0), - EX_ID ( "lock", FUNCTION, F_lock, I|A(1,G)|A(2,I), 0), - EX_ID ( "nNodes", FUNCTION, F_nnodes, I|A(1,G), 0), - EX_ID ( "nEdges", FUNCTION, F_nedges, I|A(1,G), 0), - EX_ID ( "sqrt", FUNCTION, F_sqrt, F|A(1,F), 0), - EX_ID ( "cos", FUNCTION, F_cos, F|A(1,F), 0), - EX_ID ( "sin", FUNCTION, F_sin, F|A(1,F), 0), - EX_ID ( "atan2", FUNCTION, F_atan2, F|A(1,F)|A(2,F), 0), - EX_ID ( "exp", FUNCTION, F_exp, F|A(1,F), 0), - EX_ID ( "pow", FUNCTION, F_pow, F|A(1,F)|A(2,F), 0), - EX_ID ( "log", FUNCTION, F_log, F|A(1,F), 0), - EX_ID ( "MIN", FUNCTION, F_min, F|A(1,F)|A(2,F), 0), - EX_ID ( "MAX", FUNCTION, F_max, F|A(1,F)|A(2,F), 0), - EX_ID ( "system", FUNCTION, F_sys, I|A(1,S), 0), - EX_ID ( "xOf", FUNCTION, F_xof, S|A(1,S), 0), - EX_ID ( "yOf", FUNCTION, F_yof, S|A(1,S), 0), - EX_ID ( "llOf", FUNCTION, F_llof, S|A(1,S), 0), - EX_ID ( "urOf", FUNCTION, F_urof, S|A(1,S), 0), - EX_ID ( "html", FUNCTION, F_html, S|A(1,G)|A(2,S), 0), - EX_ID ( "ishtml", FUNCTION, F_ishtml, I|A(1,S), 0), - EX_ID ( "canon", FUNCTION, F_canon, S|A(1,S), 0), - EX_ID ( "aget", FUNCTION, F_get, S|A(1,O)|A(2,S), 0), - EX_ID ( "aset", FUNCTION, F_set, I|A(1,O)|A(2,S)|A(3,S), 0), - EX_ID ( "getDflt", FUNCTION, F_dget, S|A(1,G)|A(2,S)|A(3,S), 0), - EX_ID ( "setDflt", FUNCTION, F_dset, I|A(1,G)|A(2,S)|A(3,S)|A(4,S), 0), - EX_ID ( "hasAttr", FUNCTION, F_hasattr, I|A(1,O)|A(2,S), 0), - EX_ID ( "isAttr", FUNCTION, F_isattr, I|A(1,G)|A(2,S)|A(3,S), 0), - EX_ID ( "fstAttr", FUNCTION, F_fstattr, S|A(1,G)|A(2,S), 0), - EX_ID ( "nxtAttr", FUNCTION, F_nxtattr, S|A(1,G)|A(2,S)|A(3,S), 0), - EX_ID ( "tolower", FUNCTION, F_tolower, S|A(1,S), 0), - EX_ID ( "toupper", FUNCTION, F_toupper, S|A(1,S), 0), - EX_ID ( "strcmp", FUNCTION, F_strcmp, I|A(1,S)|A(2,S), 0), - EX_ID ( "atoi", FUNCTION, F_atoi, I|A(1,S), 0), - EX_ID ( "atof", FUNCTION, F_atof, F|A(1,S), 0), - EX_ID ( "colorx", FUNCTION, F_colorx, S|A(1,S)|A(2,S), 0), - EX_ID ( "call", FUNCTION, F_call, I|A(1,S)|A(2,S), 0), - EX_ID ( "TV_flat", CONSTANT, C_flat, T_tvtyp, 0), - EX_ID ( "TV_ne", CONSTANT, C_ne, T_tvtyp, 0), - EX_ID ( "TV_en", CONSTANT, C_en, T_tvtyp, 0), - EX_ID ( "TV_bfs", CONSTANT, C_bfs, T_tvtyp, 0), - EX_ID ( "TV_dfs", CONSTANT, C_dfs, T_tvtyp, 0), - EX_ID ( "TV_fwd", CONSTANT, C_fwd, T_tvtyp, 0), - EX_ID ( "TV_rev", CONSTANT, C_rev, T_tvtyp, 0), - EX_ID ( "TV_postdfs", CONSTANT, C_postdfs, T_tvtyp, 0), - EX_ID ( "TV_postfwd", CONSTANT, C_postfwd, T_tvtyp, 0), - EX_ID ( "TV_postrev", CONSTANT, C_postrev, T_tvtyp, 0), - EX_ID ( "TV_prepostdfs", CONSTANT, C_prepostdfs, T_tvtyp, 0), - EX_ID ( "TV_prepostfwd", CONSTANT, C_prepostfwd, T_tvtyp, 0), - EX_ID ( "TV_prepostrev", CONSTANT, C_prepostrev, T_tvtyp, 0), - EX_ID ( "NULL", CONSTANT, C_null, T_obj, 0), - EX_ID ( {0}, 0, 0, 0, 0) -}; - -static char* typenames[] = { - "node_t", - "edge_t", - "graph_t", - "obj_t", - "tvtype_t", -}; - -#ifdef DEBUG -static char* gprnames[] = { - "", - "V_this", - "V_thisg", - "V_nextg", - "V_targt", - "V_outgraph", - "V_tgtname", - "V_infname", - "V_travroot", - "V_travnext", - "V_travedge", - "V_travtype", - "V_ARGC", - "M_degree", - "M_X", - "M_Y", - "M_head", - "M_tail", - "M_name", - "M_indegree", - "M_outdegree", - "M_root", - "M_parent", - "M_n_edges", - "M_n_nodes", - "M_directed", - "M_strict", - "T_node", - "T_edge", - "T_graph", - "T_obj", - "T_tvtyp", - "A_ARGV", - "F_graph", - "F_subg", - "F_issubg", - "F_fstsubg", - "F_nxtsubg", - "F_node", - "F_addnode", - "F_fstnode", - "F_nxtnode", - "F_nxtnodesg", - "F_isnode", - "F_issubnode", - "F_indegree", - "F_outdegree", - "F_degree", - "F_isin", - "F_edge", - "F_edgesg", - "F_addedge", - "F_opp", - "F_fstout", - "F_nxtout", - "F_fstin", - "F_nxtin", - "F_fstedge", - "F_nxtedge", - "F_fstoutsg", - "F_nxtoutsg", - "F_fstinsg", - "F_nxtinsg", - "F_fstedgesg", - "F_nxtedgesg", - "F_compof", - "F_kindof", - "F_index", - "F_rindex", - "F_isedge", - "F_isedgesg", - "F_issubedge", - "F_length", - "F_match", - "F_write", - "F_writeg", - "F_readg", - "F_fwriteg", - "F_freadg", - "F_openf", - "F_closef", - "F_readl", - "F_induce", - "F_isdirect", - "F_isstrict", - "F_delete", - "F_clone", - "F_cloneG", - "F_copy", - "F_copya", - "F_lock", - "F_nnodes", - "F_nedges", - "F_sqrt", - "F_cos", - "F_sin", - "F_atan2", - "F_exp", - "F_pow", - "F_log", - "F_min", - "F_max", - "F_sys", - "F_xof", - "F_yof", - "F_llof", - "F_urof", - "F_html", - "F_ishtml", - "F_canon", - "F_get", - "F_set", - "F_dget", - "F_dset", - "F_hasattr", - "F_isattr", - "F_fstattr", - "F_nxtattr", - "F_tolower", - "F_toupper", - "F_strcmp", - "F_atoi", - "F_atof", - "F_colorx", - "F_call", - "C_flat", - "C_ne", - "C_en", - "C_bfs", - "C_dfs", - "C_fwd", - "C_rev", - "C_postdfs", - "C_postfwd", - "C_postrev", - "C_prepostdfs", - "C_prepostfwd", - "C_prepostrev", - "C_null", -}; -#endif - -typedef unsigned short tctype; - -static tctype tchk[][2] = { - { 0, 0 }, - { 0, YALL }, - { 0, Y(G) }, - { 0, Y(G) }, - { 0, Y(G) }, - { 0, Y(G) }, - { 0, Y(S) }, - { 0, Y(S) }, - { 0, Y(V) }, - { 0, Y(V) }, - { 0, Y(E) }, - { 0, Y(TV) }, - { 0, Y(I) }, - { Y(V), Y(I) }, - { Y(V), Y(F) }, - { Y(V), Y(F) }, - { Y(E), Y(V) }, - { Y(E), Y(V) }, - { YALL, Y(S) }, - { Y(V), Y(I) }, - { Y(V), Y(I) }, - { YALL, Y(G) }, - { Y(G), Y(G) }, - { Y(G), Y(I) }, - { Y(G), Y(I) }, - { Y(G), Y(I) }, - { Y(G), Y(I) }, -}; - -#endif