Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,38 @@ SWIG_PYTHON=src/react_render_wrap.c
main: src/main.c src/react_render.c src/react_render.h
gcc -std=c99 src/react_render.c src/main.c $(DUKTAPE_HOME)/duktape.c -I $(DUKTAPE_HOME) -lm -o main

python: $(SOURCES)
swig-python: $(SOURCES)
swig -python -outdir python/ src/react_render.i

swig-golang: $(SOURCES)
swig -go -intgosize 32 -outdir golang/ -package main src/react_render.i

$(SWIG_PYTHON): python

react_render: $(SOURCES)
gcc -c -fpic src/react_render.c src/react_render_wrap.c duktape-1.0.2/src/duktape.c -I /usr/local/include -I /usr/include/python2.7 -Iduktape-1.0.2/src
gcc -shared duktape.o react_render.o react_render_wrap.o -o python/_react_render.so
gcc -shared duktape.o react_render.o react_render_wrap.o -o _react_render.so

bundle: app.js
./node_modules/.bin/webpack

test-python: bundle python react_render
python: react_render swig-python
cp _react_render.so python/

golang: react_render swig-golang
cp _react_render.so golang/
rm -f golang/react_render.a
cd golang; \
go tool 6g react_render.go; \
go tool 6c -I /usr/local/go/pkg/linux_amd64 react_render_gc.c ; \
go tool pack c react_render.a react_render.6 react_render_gc.6 _react_render.so

test-python: bundle python
cd python; python test.py

test-golang: bundle golang
cd golang; go tool 6g test.go react_render.go; go tool 6l test.6

test-python-server: test-python
cd python; \
virtualenv env ; \
Expand Down
Binary file added golang/6.out
Binary file not shown.
Binary file added golang/react_render.6
Binary file not shown.
Binary file added golang/react_render.a
Binary file not shown.
67 changes: 67 additions & 0 deletions golang/react_render.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 3.0.3
*
* This file is not intended to be easily readable and contains a number of
* coding conventions designed to improve portability and efficiency. Do not make
* changes to this file unless you know what you are doing--modify the SWIG
* interface file instead.
* ----------------------------------------------------------------------------- */

// source: src/react_render.i

package main

import "unsafe"
import _ "runtime/cgo"

var _cgo_runtime_cgocall func(unsafe.Pointer, uintptr)



type _ unsafe.Pointer



var Swig_escape_always_false bool
var Swig_escape_val interface{}


type _swig_fnptr *byte
type _swig_memberptr *byte

var _wrap_initialize unsafe.Pointer

func Initialize(arg1 string) (_swig_ret int) {
_swig_p := uintptr(unsafe.Pointer(&arg1))
_cgo_runtime_cgocall(_wrap_initialize, _swig_p)
return
}
var _wrap_render_element unsafe.Pointer

func Render_element(arg1 string) (_swig_ret string) {
_swig_p := uintptr(unsafe.Pointer(&arg1))
_cgo_runtime_cgocall(_wrap_render_element, _swig_p)
return
}
var _wrap_set_debug unsafe.Pointer

func _swig_wrap_set_debug(base int) {
_swig_p := uintptr(unsafe.Pointer(&base))
_cgo_runtime_cgocall(_wrap_set_debug, _swig_p)
return
}

func Set_debug(arg1 int) {
_swig_wrap_set_debug(arg1)
}


type SwigcptrVoid uintptr
type Void interface {
Swigcptr() uintptr;
}
func (p SwigcptrVoid) Swigcptr() uintptr {
return uintptr(p)
}

11 changes: 11 additions & 0 deletions golang/react_render.swig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
%module react_render
%{
#include "react_render.h"
%}

%rename(initialize) render_init;
%rename(set_debug) render_set_debug;

extern int render_init(char *path);
extern char *render_element(char *element);
extern void render_set_debug(int debug_value);
Binary file added golang/react_render_gc.6
Binary file not shown.
34 changes: 34 additions & 0 deletions golang/react_render_gc.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

#include "runtime.h"
#include "cgocall.h"

#pragma dataflag 16
static void *cgocall = runtime·cgocall;
#pragma dataflag 16
void *·_cgo_runtime_cgocall = &cgocall;


#pragma dynimport _wrap_initialize _wrap_initialize ""
#pragma cgo_import_static _wrap_initialize
extern void _wrap_initialize(void*);
uintptr ·_wrap_initialize = (uintptr)_wrap_initialize;




#pragma dynimport _wrap_render_element _wrap_render_element ""
#pragma cgo_import_static _wrap_render_element
extern void _wrap_render_element(void*);
uintptr ·_wrap_render_element = (uintptr)_wrap_render_element;




#pragma dynimport _wrap_set_debug _wrap_set_debug ""
#pragma cgo_import_static _wrap_set_debug
extern void _wrap_set_debug(void*);
uintptr ·_wrap_set_debug = (uintptr)_wrap_set_debug;




Binary file added golang/test.6
Binary file not shown.
11 changes: 11 additions & 0 deletions golang/test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package main

import (
"fmt"
)

func main() {
Initialize("../bundle.js")
Render_element("Page")
fmt.Println("Hi Go!")
}