]> granicus.if.org Git - graphviz/commitdiff
replace mkdefs-generated gdefs.h with X macros
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 20 Jul 2021 03:25:16 +0000 (20:25 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Tue, 27 Jul 2021 00:08:02 +0000 (17:08 -0700)
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

12 files changed:
.gitignore
CHANGELOG.md
lib/gvpr/CMakeLists.txt
lib/gvpr/Makefile.am
lib/gvpr/gdefs.h [new file with mode: 0644]
lib/gvpr/gprdata [deleted file]
lib/gvpr/gprdata.inc [new file with mode: 0644]
lib/gvpr/gvprlib.vcxproj
lib/gvpr/gvprlib.vcxproj.filters
lib/gvpr/mkdefs.c [deleted file]
windows/cmd/gvpr/gdefs.h [deleted file]
windows/include/gvpr/gdefs.h [deleted file]

index 4748b8b3ac5dc049c444768efc168a5d1200f688..2829dab1d7c4d83edaa17afda5e18f52c7636128 100644 (file)
@@ -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
index 6d226dad84e611d0012646483dc278a68c764e43..a420d2658776a00dec1ef129086f7e92d38a293d 100644 (file)
@@ -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
 
index 0796c86efc6ca25241c4273b0039a2f3909625c9..b99ed35c7a161028f126acda41c575b9a0febb23 100644 (file)
@@ -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
index 9fe87650fcf817e94ad1801e2ef9a4c92bc967f7..087c270b9cfc1da8cb4c42118be70e3d77ca6923 100644 (file)
@@ -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 (file)
index 0000000..f0b5e39
--- /dev/null
@@ -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 <gvpr/gprdata.inc>
+#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 <gvpr/gprdata.inc>
+#undef X
+};
+
+enum { LAST_M = 0
+#define X(prefix, name, str, type, subtype, ...) \
+  + ((prefix == V_ || prefix == M_) ? 1 : 0)
+#include <gvpr/gprdata.inc>
+#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 <gvpr/gprdata.inc>
+#undef X
+};
+
+static Exid_t symbols[] = {
+#define X(prefix, name, str, type, subtype, ...) \
+  EX_ID(str, type, prefix##name, subtype, 0),
+#include <gvpr/gprdata.inc>
+#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 <gvpr/gprdata.inc>
+#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 <gvpr/gprdata.inc>
+#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 <gvpr/gprdata.inc>
+#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 (file)
index f446567..0000000
+++ /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 (file)
index 0000000..9908e03
--- /dev/null
@@ -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)
index d0aedeb5044eb99d6340845ab0cb83099f7db15f..8f73d9e3e0baf1a424253884facf38787ad1efda 100644 (file)
   <ItemGroup>
     <ClInclude Include="actions.h" />
     <ClInclude Include="compile.h" />
+    <ClInclude Include="gdefs.h" />
+    <ClInclude Include="gprdata.inc" />
     <ClInclude Include="gprstate.h" />
     <ClInclude Include="gvpr.h" />
     <ClInclude Include="parse.h" />
     <ClCompile Include="compile.c" />
     <ClCompile Include="gprstate.c" />
     <ClCompile Include="gvpr.c" />
-    <ClCompile Include="mkdefs.c" />
     <ClCompile Include="parse.c" />
     <ClCompile Include="queue.c" />
   </ItemGroup>
index 5a76deed10c58e29f130d7a7e9a1cb53cc6d4e66..ecb38b30cec6363e327cdd47afc3a6af15d206c1 100644 (file)
     <ClInclude Include="compile.h">
       <Filter>Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="gdefs.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="gprdata.inc">
+      <Filter>Header Files</Filter>
+    </ClInclude>
     <ClInclude Include="gprstate.h">
       <Filter>Header Files</Filter>
     </ClInclude>
@@ -47,9 +53,6 @@
     <ClCompile Include="gvpr.c">
       <Filter>Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="mkdefs.c">
-      <Filter>Source Files</Filter>
-    </ClCompile>
     <ClCompile Include="parse.c">
       <Filter>Source Files</Filter>
     </ClCompile>
diff --git a/lib/gvpr/mkdefs.c b/lib/gvpr/mkdefs.c
deleted file mode 100644 (file)
index 8cbedc5..0000000
+++ /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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-/******** 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 (file)
index 9363f4c..0000000
+++ /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 (file)
index 88f724e..0000000
+++ /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