graphviz.ffi: refactor it to not make FFI calls at parse time

db4
Slava Pestov 2011-08-27 14:08:54 -07:00
parent 38c5652093
commit 39b00a1b39
2 changed files with 11 additions and 27 deletions

View File

@ -3,12 +3,9 @@
USING: accessors alien alien.c-types alien.destructors USING: accessors alien alien.c-types alien.destructors
alien.libraries alien.syntax combinators debugger destructors alien.libraries alien.syntax combinators debugger destructors
fry io kernel literals math prettyprint sequences splitting fry io kernel literals math prettyprint sequences splitting
system words.constant system memoize graphviz ;
graphviz
;
IN: graphviz.ffi IN: graphviz.ffi
<<
"libgraph" { "libgraph" {
{ [ os macosx? ] [ "libgraph.dylib" ] } { [ os macosx? ] [ "libgraph.dylib" ] }
{ [ os unix? ] [ "libgraph.so" ] } { [ os unix? ] [ "libgraph.so" ] }
@ -21,7 +18,6 @@ IN: graphviz.ffi
{ [ os unix? ] [ "libgvc.so" ] } { [ os unix? ] [ "libgvc.so" ] }
{ [ os winnt? ] [ "gvc.dll" ] } { [ os winnt? ] [ "gvc.dll" ] }
} cond cdecl add-library } cond cdecl add-library
>>
LIBRARY: libgraph LIBRARY: libgraph
@ -85,11 +81,7 @@ FUNCTION: int agsafeset ( void* obj,
LIBRARY: libgvc LIBRARY: libgvc
! Graphviz contexts ! Graphviz contexts
! This must be wrapped in << >> so that GVC_t*, gvContext, and
! &gvFreeContext can be used to compute the supported-engines
! and supported-formats constants below.
<<
C-TYPE: GVC_t C-TYPE: GVC_t
FUNCTION: GVC_t* gvContext ( ) ; FUNCTION: GVC_t* gvContext ( ) ;
@ -112,7 +104,6 @@ M: ffi-errors error.
int-gvFreeContext dup zero? [ drop ] [ ffi-errors ] if ; int-gvFreeContext dup zero? [ drop ] [ ffi-errors ] if ;
DESTRUCTOR: gvFreeContext DESTRUCTOR: gvFreeContext
>>
! Layout ! Layout
@ -130,8 +121,6 @@ FUNCTION: int gvRenderFilename ( GVC_t* gvc,
! Supported layout engines (dot, neato, etc.) and output ! Supported layout engines (dot, neato, etc.) and output
! formats (png, jpg, etc.) ! formats (png, jpg, etc.)
<<
<PRIVATE <PRIVATE
ENUM: api_t ENUM: api_t
@ -152,7 +141,6 @@ FUNCTION: c-string
] with-destructors ; ] with-destructors ;
PRIVATE> PRIVATE>
>>
CONSTANT: supported-engines $[ API_layout plugin-list ] MEMO: supported-engines ( -- seq ) API_layout plugin-list ;
CONSTANT: supported-formats $[ API_device plugin-list ] MEMO: supported-formats ( -- seq ) API_device plugin-list ;

View File

@ -1,11 +1,9 @@
! Copyright (C) 2011 Alex Vondrak. ! Copyright (C) 2011 Alex Vondrak.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors combinators continuations destructors USING: accessors combinators compiler.units continuations
images.viewer io.backend io.files.unique kernel locals destructors images.viewer io.backend io.files.unique kernel
namespaces parser sequences summary unicode.case words locals namespaces parser sequences summary unicode.case words
graphviz.ffi graphviz.ffi graphviz.builder ;
graphviz.builder
;
IN: graphviz.render IN: graphviz.render
SYMBOL: default-layout SYMBOL: default-layout
@ -109,8 +107,6 @@ PRIVATE>
: preview-window ( graph -- ) : preview-window ( graph -- )
(preview) image-window ; inline (preview) image-window ; inline
<<
<PRIVATE <PRIVATE
: define-graphviz-by-engine ( -K -- ) : define-graphviz-by-engine ( -K -- )
@ -130,7 +126,7 @@ PRIVATE>
PRIVATE> PRIVATE>
supported-engines [ define-graphviz-by-engine ] each [
supported-formats [ define-graphviz-by-format ] each supported-engines [ define-graphviz-by-engine ] each
supported-formats [ define-graphviz-by-format ] each
>> ] with-compilation-unit