update swig on windows

This commit is contained in:
Bassem Girgis
2019-08-04 21:38:19 -05:00
parent 8414b7136b
commit 76ad52be58
5943 changed files with 91790 additions and 71892 deletions

View File

@@ -0,0 +1,20 @@
TOP = ../..
SWIGEXE = $(TOP)/../swig
SWIG_LIB_DIR = $(TOP)/../$(TOP_BUILDDIR_TO_TOP_SRCDIR)Lib
SRCS = example.c
TARGET = example
INTERFACE = example.i
LIBS =
SWIGOPT =
check: build
$(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' php_run
build:
$(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' SRCS='$(SRCS)' \
SWIG_LIB_DIR='$(SWIG_LIB_DIR)' SWIGEXE='$(SWIGEXE)' \
SWIGOPT='$(SWIGOPT)' TARGET='$(TARGET)' INTERFACE='$(INTERFACE)' \
php
clean:
$(MAKE) -f $(TOP)/Makefile SRCDIR='$(SRCDIR)' php_clean

View File

@@ -0,0 +1,13 @@
/* File : example.c */
#include "example.h"
double dot_product(Vector a, Vector b) {
return (a.x*b.x + a.y*b.y + a.z*b.z);
}
void vector_add(Vector a, Vector b, Vector* result) {
result->x = a.x + b.x;
result->y = a.y + b.y;
result->z = a.z + b.z;
}

View File

@@ -0,0 +1,8 @@
/* File : example.h */
typedef struct {
double x, y, z;
} Vector;
double dot_product(Vector a, Vector b);
void vector_add(Vector a, Vector b, Vector* result);

View File

@@ -0,0 +1,17 @@
// Tests SWIG's handling of pass-by-value for complex datatypes
%module example
%{
#include "example.h"
%}
%include "example.h"
/* Some helper functions for our interface */
%inline %{
void vector_print(Vector *v) {
printf("Vector %p = (%g, %g, %g)\n", (void *)v, v->x, v->y, v->z);
}
%}

View File

@@ -0,0 +1,43 @@
<?php
require "example.php";
$v = new Vector();
$v->x = 1.0;
$v->y = 2.0;
$v->z = 3.0;
$w = new Vector();
$w->x = 10.0;
$w->y = 11.0;
$w->z = 12.0;
echo "I just created the following vector\n";
vector_print($v);
vector_print($w);
echo "\nNow I'm going to compute the dot product\n";
$d = dot_product($v, $w);
echo "dot product = $d (should be 68)\n";
echo "\nNow I'm going to add the vectors together\n";
$r = new Vector();
vector_add($v, $w, $r);
vector_print($r);
echo "The value should be (11,13,15)\n";
echo "\nNow I'm going to clean up the return result\n";
# free($r);
echo "Good\n";
?>