pkgsharpdir = $(pkglibdir)/sharp
SHARP_data = gv.cs gvPINVOKE.cs SWIGTYPE_p_Agraph_t.cs SWIGTYPE_p_Agnode_t.cs SWIGTYPE_p_Agedge_t.cs SWIGTYPE_p_Agsym_t.cs SWIGTYPE_p_FILE.cs
nodist_libgv_sharp_la_SOURCES = gv_sharp.cpp $(SHARP_data)
-libgv_sharp_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_sharp_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_sharp_la_LIBADD = $(BASELIBS) $(SHARP_LIBS)
libgv_sharp_la_LDFLAGS = -module -avoid-version
libgv_sharp_la_CPPFLAGS = $(AM_CPPFLAGS) $(SHARP_INCLUDES)
pkgguiledir = $(pkglibdir)/guile
GUILE_data =
nodist_libgv_guile_la_SOURCES = gv_guile.cpp $(GUILE_data)
-libgv_guile_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_guile_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_guile_la_LIBADD = $(BASELIBS) $(GUILE_LIBS)
libgv_guile_la_LDFLAGS = -module -avoid-version
libgv_guile_la_CPPFLAGS = $(AM_CPPFLAGS) $(GUILE_INCLUDES)
$(GUILE_data): gv_guile.cpp
gv_guile.cpp: gv.i
$(SWIG) -c++ -guile -o gv_guile.cpp $(srcdir)/gv.i
- $(SED) -e 's/SWIG_GUILE_INIT_STATIC void/void/' <gv_guile.cpp >t
- mv -f t gv_guile.cpp
+ $(SED) -e 's/SWIG_GUILE_INIT_STATIC void/void/' <gv_guile.cpp >t$$
+ mv -f t$$ gv_guile.cpp
pkgiodir = $(pkglibdir)/io
IO_data =
nodist_libgv_io_la_SOURCES = gv_io.cpp $(IO_data)
-libgv_io_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_io_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_io_la_LIBADD = $(BASELIBS) $(IO_LIBS)
libgv_io_la_LDFLAGS = -module -avoid-version
libgv_io_la_CPPFLAGS = $(AM_CPPFLAGS) $(IO_INCLUDES)
pkgjavadir = $(pkglibdir)/java
JAVA_data = gv.java gvJNI.java SWIGTYPE_p_Agraph_t.java SWIGTYPE_p_Agnode_t.java SWIGTYPE_p_Agedge_t.java SWIGTYPE_p_Agsym_t.java SWIGTYPE_p_FILE.java
nodist_libgv_java_la_SOURCES = gv_java.cpp
-libgv_java_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_java_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_java_la_LIBADD = $(BASELIBS) $(JAVA_LIBS)
libgv_java_la_LDFLAGS = -module -avoid-version
libgv_java_la_CPPFLAGS = $(AM_CPPFLAGS) $(JAVA_INCLUDES)
pkgluadir = $(pkglibdir)/lua
LUA_data =
nodist_libgv_lua_la_SOURCES = gv_lua.cpp $(LUA_data)
-libgv_lua_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_lua_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_lua_la_LIBADD = $(BASELIBS) $(LUA_LIBS)
libgv_lua_la_LDFLAGS = -module -avoid-version
libgv_lua_la_CPPFLAGS = $(AM_CPPFLAGS) $(LUA_INCLUDES)
OCAML_data += gv.a gv.cmx gv.cmxa
endif
nodist_libgv_ocaml_la_SOURCES = gv_ocaml.cpp $(OCAML_data)
-libgv_ocaml_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_ocaml_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_ocaml_la_LIBADD = $(BASELIBS) @OCAML_LIBS@
libgv_ocaml_la_LDFLAGS = -module -avoid-version
libgv_ocaml_la_CPPFLAGS = $(AM_CPPFLAGS) $(OCAML_INCLUDES)
pkgperldir = $(pkglibdir)/perl
PERL_data = gv.pm
nodist_libgv_perl_la_SOURCES = gv_perl.cpp $(PERL_data)
-libgv_perl_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_perl_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_perl_la_LIBADD = $(BASELIBS) $(PERL_LIBS)
libgv_perl_la_LDFLAGS = -module -avoid-version
libgv_perl_la_CPPFLAGS = $(AM_CPPFLAGS) $(PERL_INCLUDES)
pkgphpdir = $(pkglibdir)/php
PHP_data = gv.php
nodist_libgv_php_la_SOURCES = gv_php.cpp php_gv.h
-libgv_php_la_SOURCES = $(BASESOURCES) gv_php_init.cpp
+libgv_php_la_SOURCES = $(BASESOURCES) gv_php_init.c
libgv_php_la_LIBADD = $(BASELIBS) $(PHP_LIBS)
libgv_php_la_LDFLAGS = -module -avoid-version
libgv_php_la_CPPFLAGS = $(AM_CPPFLAGS) $(PHP_INCLUDES)
pkgpythondir = $(pkglibdir)/python
PYTHON_data = gv.py
nodist_libgv_python_la_SOURCES = gv_python.cpp $(PYTHON_data)
-libgv_python_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_python_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_python_la_LIBADD = $(BASELIBS) $(PYTHON_LIBS)
libgv_python_la_LDFLAGS = -module -avoid-version
libgv_python_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
pkgpython23dir = $(pkglibdir)/python23
nodist_libgv_python23_la_SOURCES = $(nodist_libgv_python_la_SOURCES)
-libgv_python23_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_python23_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_python23_la_LIBADD = $(BASELIBS) $(PYTHON23_LIBS)
libgv_python23_la_LDFLAGS = -module -avoid-version
libgv_python23_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON23_INCLUDES)
pkgpython24dir = $(pkglibdir)/python24
nodist_libgv_python24_la_SOURCES = $(nodist_libgv_python_la_SOURCES)
-libgv_python24_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_python24_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_python24_la_LIBADD = $(BASELIBS) $(PYTHON24_LIBS)
libgv_python24_la_LDFLAGS = -module -avoid-version
libgv_python24_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON24_INCLUDES)
pkgpython25dir = $(pkglibdir)/python25
nodist_libgv_python25_la_SOURCES = $(nodist_libgv_python_la_SOURCES)
-libgv_python25_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_python25_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_python25_la_LIBADD = $(BASELIBS) $(PYTHON25_LIBS)
libgv_python25_la_LDFLAGS = -module -avoid-version
libgv_python25_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON25_INCLUDES)
pkgRdir = $(pkglibdir)/R
R_data =
nodist_libgv_R_la_SOURCES = gv_R.cpp $(R_data)
-libgv_R_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_R_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_R_la_LIBADD = $(BASELIBS) $(R_LIBS)
libgv_R_la_LDFLAGS = -module -avoid-version
libgv_R_la_CPPFLAGS = $(AM_CPPFLAGS) $(R_CFLAGS)
pkgrubydir = $(pkglibdir)/ruby
RUBY_data =
nodist_libgv_ruby_la_SOURCES = gv_ruby.cpp $(RUBY_data)
-libgv_ruby_la_SOURCES = $(BASESOURCES) gv_dummy_init.cpp
+libgv_ruby_la_SOURCES = $(BASESOURCES) gv_dummy_init.c
libgv_ruby_la_LIBADD = $(BASELIBS) $(RUBY_LIBS)
libgv_ruby_la_LDFLAGS = -module -avoid-version
libgv_ruby_la_CPPFLAGS = $(AM_CPPFLAGS) $(RUBY_INCLUDES)
pkgtcldir = $(pkglibdir)/tcl
TCL_data =
nodist_libgv_tcl_la_SOURCES = gv_tcl.cpp $(TCL_data)
-libgv_tcl_la_SOURCES = $(BASESOURCES) gv_tcl_init.cpp
+libgv_tcl_la_SOURCES = $(BASESOURCES) gv_tcl_init.c
libgv_tcl_la_LIBADD = $(top_builddir)/tclpkg/tclstubs/libtclstubs_C.la $(BASELIBS) $(TCL_LIBS)
libgv_tcl_la_LDFLAGS = -module -avoid-version
libgv_tcl_la_CPPFLAGS = $(AM_CPPFLAGS) $(TCL_INCLUDES)
#include <string.h>
#include "gvc.h"
+extern "C" {
extern void gv_string_writer_init(GVC_t *gvc);
extern void gv_channel_writer_init(GVC_t *gvc);
+}
static char emptystring[] = {'\0'};
if (!g)
return false;
- gv_channel_writer_init(gvc);
err = gvRender(gvc, g, format, stdout);
return (! err);
}
-// render to a FILE
+// render to an open FILE
bool render(Agraph_t *g, char *format, FILE *f)
{
int err;
if (!g)
return false;
- gv_channel_writer_init(gvc);
err = gvRender(gvc, g, format, f);
return (! err);
}
-// render to string result, using binding-dependent gv_string_writer()
-void renderresult(Agraph_t *g, char *format)
+// render to an open channel
+bool renderchannel(Agraph_t *g, char *format, char *channelname)
{
int err;
if (!g)
- return;
- gv_string_writer_init(gvc);
- err = gvRender(gvc, g, format, stdout); /* FIXME - stdout used as flag only */
+ return false;
+ gv_channel_writer_init(gvc);
+ err = gvRender(gvc, g, format, (FILE*)channelname);
+ return (! err);
}
-// render to a filename --deprecated (not very portable)
+// render to a filename
bool render(Agraph_t *g, char *format, char *filename)
{
int err;
return (! err);
}
+// render to string result, using binding-dependent gv_string_writer()
+void renderresult(Agraph_t *g, char *format, char *outdata)
+{
+ int err;
+
+ if (!g)
+ return;
+ gv_string_writer_init(gvc);
+ err = gvRender(gvc, g, format, (FILE*)outdata);
+}
-// render to a malloc'ed data string, to be free'd by caller. --deprecated (too easy to leak memory)
+// render to a malloc'ed data string, to be free'd by caller.
char* renderdata(Agraph_t *g, char *format)
{
int err;
**********************************************************/
%module gv
-%{
+#ifdef SWIGTCL
+// A typemap telling SWIG to ignore an argument for input
+// However, we still need to pass a pointer to the C function
+%typemap(in,numinputs=0) char *outdata (Tcl_Obj *o) {
+ o = Tcl_NewStringObj(NULL, -1);
+ $1 = (char*)o;
+}
+// A typemap defining how to return an argument by appending it to the result
+%typemap(argout) char *outdata {
+ Tcl_ListObjAppendElement(interp,$result,(Tcl_Obj*)$1);
+}
+
+// A typemap telling SWIG to map char *channelname to Tcl_Channel *chan
+%typemap(in) char *channelname (int mode) {
+ $1 = (char*)Tcl_GetChannel(interp, Tcl_GetString($input), &mode);
+// FIXME - need to error if chan is NULL or mode not TCL_WRITABLE
+}
+#endif
+
+%{
/* some language headers (e.g. php.h, ruby.h) leave these defined */
#undef PACKAGE_BUGREPORT
#undef PACKAGE_STRING
/*** New graph from a dot-syntax string or file */
extern Agraph_t *readstring(char *string);
extern Agraph_t *read(char *filename);
-extern Agraph_t *read(FILE *f);
+extern Agraph_t *read(FILE *f);
/*** Add new subgraph to existing graph */
extern Agraph_t *graph(Agraph_t *g, char *name);
extern bool render(Agraph_t *g);
/*** Render a layout to stdout */
extern bool render(Agraph_t *g, char *format);
-/*** Render to an open file or channel */
-extern bool render(Agraph_t *g, char *format, FILE *f);
-/*** Render to a string result */
-extern void renderresult(Agraph_t *g, char *format);
+/*** Render to an open file */
+extern bool render(Agraph_t *g, char *format, FILE *fout);
/*** Render a layout to an unopened file by name */
extern bool render(Agraph_t *g, char *format, char *filename);
-
+/*** Render to an open channel */
+extern bool renderchannel(Agraph_t *g, char *format, char *channelname);
+/*** Render to a string result */
+extern void renderresult(Agraph_t *g, char *format, char *outdata);
+#if 0
/*** Render a layout to a malloc'ed string, to be free'd by the caller */
/*** (deprecated - too easy to leak memory) */
extern char* renderdata(Agraph_t *g, char *format);
+#endif
/*** Writing graph back to file */
/*** New graph from a dot-syntax string or file */
extern Agraph_t *readstring(char *string);
extern Agraph_t *read(char *filename);
-extern Agraph_t *read(FILE *f);
+extern Agraph_t *read(FILE *f);
/*** Add new subgraph to existing graph */
extern Agraph_t *graph(Agraph_t *g, char *name);
extern bool render(Agraph_t *g);
/*** Render a layout to stdout */
extern bool render(Agraph_t *g, char *format);
-/*** Render to an open file or channel */
-extern bool render(Agraph_t *g, char *format, FILE *f);
-/*** Render to a string result */
-extern void renderresult(Agraph_t *g, char *format);
+/*** Render to an open file */
+extern bool render(Agraph_t *g, char *format, FILE *fout);
/*** Render a layout to an unopened file by name */
extern bool render(Agraph_t *g, char *format, char *filename);
-
+/*** Render to an open channel */
+extern bool renderchannel(Agraph_t *g, char *format, char *channelname);
+/*** Render to a string result */
+extern void renderresult(Agraph_t *g, char *format, char *outdata);
+#if 0
/*** Render a layout to a malloc'ed string, to be free'd by the caller */
/*** (deprecated - too easy to leak memory) */
extern char* renderdata(Agraph_t *g, char *format);
+#endif
/*** Writing graph back to file */
extern bool write(Agraph_t *g, char *filename);
extern bool write(Agraph_t *g, FILE *f);
-
-#ifdef SWIGTCL
-// A typemap telling SWIG to ignore an argument for input
-// However, we still need to pass a pointer to the C function
-%typemap(in,numinputs=0) char *outdata (char *temp) {
- $1 = &temp;
-}
-// A typemap defining how to return an argument by appending it to the result
-%typemap(argout) char *outdata {
- Tcl_Obj *o = Tcl_NewStringObj($1);
- Tcl_ListObjAppendElement(interp,$result,o);
-}
-#endif
-
%}
+++ /dev/null
-#include <gvc.h>
-
-void gv_string_writer_init (GVC_t *gvc) {}
-void gv_channel_writer_init (GVC_t *gvc) {}
+++ /dev/null
-/* $Id$ $Revision$ */
-/* vim:set shiftwidth=4 ts=8: */
-
-/**********************************************************
-* This software is part of the graphviz package *
-* http://www.graphviz.org/ *
-* *
-* Copyright (c) 1994-2008 AT&T Corp. *
-* and is licensed under the *
-* Common Public License, Version 1.0 *
-* by AT&T Corp. *
-* *
-* Information and Software Systems Research *
-* AT&T Research, Florham Park NJ *
-**********************************************************/
-
-#include <php.h>
-#include "gvc.h"
-#include "gvplugin.h"
-#include "gvcjob.h"
-#include "gvcint.h"
-
-static size_t gv_string_writer (GVJ_t *job, const char *s, int len)
-{
- return PHPWRITE(s, len);
-}
-
-static size_t gv_channel_writer (GVJ_t *job, const char *s, int len)
-{
- return PHPWRITE(s, len);
-}
-
-void gv_string_writer_init(GVC_t *gvc)
-{
- gvc->write_fn = gv_string_writer;
-}
-
-void gv_channel_writer_init(GVC_t *gvc)
-{
- gvc->write_fn = gv_channel_writer;
-}
-
+++ /dev/null
-/* $Id$ $Revision$ */
-/* vim:set shiftwidth=4 ts=8: */
-
-/**********************************************************
-* This software is part of the graphviz package *
-* http://www.graphviz.org/ *
-* *
-* Copyright (c) 1994-2008 AT&T Corp. *
-* and is licensed under the *
-* Common Public License, Version 1.0 *
-* by AT&T Corp. *
-* *
-* Information and Software Systems Research *
-* AT&T Research, Florham Park NJ *
-**********************************************************/
-
-#include <tcl.h>
-#include "gvc.h"
-#include "gvplugin.h"
-#include "gvcjob.h"
-#include "gvcint.h"
-
-static size_t gv_string_writer(GVJ_t *job, const char *s, int len)
-{
- Tcl_AppendResult((Tcl_Interp*)(job->context), s, (char *) NULL);
- return len;
-}
-
-static size_t gv_channel_writer(GVJ_t *job, const char *s, int len)
-{
- return Tcl_Write((Tcl_Channel)(job->output_file), s, len);
-}
-
-void gv_string_writer_init(GVC_t *gvc)
-{
- gvc->write_fn = gv_string_writer;
-}
-
-void gv_channel_writer_init(GVC_t *gvc)
-{
- gvc->write_fn = gv_channel_writer;
-}