Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/graph.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoumith <soumith@gmail.com>2015-11-12 04:16:02 +0300
committersoumith <soumith@gmail.com>2015-11-12 04:16:02 +0300
commit599e4adb48b890dd4a4657e76396469d72c8045b (patch)
treef2e1e19b6596d244417d31a6a38f7ed7d42bb57a
parent89bbb5a5aa32e6ba012f1d03812cfde1d9024410 (diff)
fixing graphviz dot for lua51/lua52 + luaffifb
-rw-r--r--graphviz.lua14
1 files changed, 11 insertions, 3 deletions
diff --git a/graphviz.lua b/graphviz.lua
index bff189e..14115cb 100644
--- a/graphviz.lua
+++ b/graphviz.lua
@@ -32,6 +32,9 @@ if ffiOk then
extern int gvRender(GVC_t *context, graph_t *g, const char *format, FILE *out);
extern int gvFreeLayout(GVC_t *context, graph_t *g);
extern int gvFreeContext(GVC_t *context);
+
+ FILE * fopen ( const char * filename, const char * mode );
+ int fclose ( FILE * stream );
]]
graphvizOk, graphviz = pcall(function() return ffi.load('libgvc') end)
if not graphvizOk then
@@ -151,10 +154,15 @@ function graph.graphvizFile(g, algorithm, fname)
local context = graphviz.gvContext()
local graphvizGraph = cgraph.agmemread(g:todot())
+
assert(0 == graphviz.gvLayout(context, graphvizGraph, algorithm),
- "graphviz layout failed")
- assert(0 == graphviz.gvRender(context, graphvizGraph, rendertype, io.open(fname, 'w')),
- "graphviz render failed")
+ "graphviz layout failed")
+
+ local fhandle = ffi.C.fopen(fname, 'w')
+ local ret = graphviz.gvRender(context, graphvizGraph, rendertype, fhandle)
+ ffi.C.fclose(fhandle)
+ assert(0 == ret, "graphviz render failed")
+
graphviz.gvFreeLayout(context, graphvizGraph)
cgraph.agclose(graphvizGraph)
graphviz.gvFreeContext(context)