summaryrefslogtreecommitdiff
path: root/Examples/scilab/variables
diff options
context:
space:
mode:
authorBaozeng Ding <sploving1@163.com>2009-07-30 09:41:11 +0000
committerBaozeng Ding <sploving1@163.com>2009-07-30 09:41:11 +0000
commita19aea6b4b8ad622701088426193b0ea594524bf (patch)
tree86cf5bc2b034fee24af15a6a4be67b77d6af7e64 /Examples/scilab/variables
parent8217f59d551c2a3e1a1cccbed38c551e894d95e9 (diff)
downloadswig-a19aea6b4b8ad622701088426193b0ea594524bf.tar.gz
add array example
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-sploving@11478 626c5289-ae23-0410-ae9c-e8d60b6d4f22
Diffstat (limited to 'Examples/scilab/variables')
-rw-r--r--Examples/scilab/variables/example.c58
-rw-r--r--Examples/scilab/variables/example.i29
-rw-r--r--Examples/scilab/variables/runme.sci22
3 files changed, 80 insertions, 29 deletions
diff --git a/Examples/scilab/variables/example.c b/Examples/scilab/variables/example.c
index c665c3e3b..1b3eeaff0 100644
--- a/Examples/scilab/variables/example.c
+++ b/Examples/scilab/variables/example.c
@@ -9,7 +9,7 @@
#include <stdio.h>
#include <stdlib.h>
-#include "sciprint.h"
+#include "example.h"
int ivar = 0;
short svar = 0;
@@ -22,15 +22,20 @@ unsigned char ucvar = 0;
char cvar = 0;
float fvar = 0;
double dvar = 0;
-char *strvar=0;
+char *strvar = 0;
+const char cstrvar[] = "Goodbye";
+int *iptrvar = 0;
char name[5] = "Dave";
-double *Foo1;
-double *Foo2;
-int *pivar;
-short *psvar;
-char **foo;
+char path[256] = "/home/beazley";
+/* Global variables involving a structure */
+Point *ptptr = 0;
+Point pt = { 10, 20 };
+
+/* A variable that we will make read-only in the interface */
+int status = 1;
+
/* A debugging function to print out their values */
void print_vars() {
@@ -45,9 +50,46 @@ void print_vars() {
printf("fvar = %g\n", fvar);
printf("dvar = %g\n", dvar);
printf("cvar = %c\n", cvar);
- printf("strvar = %s\n",strvar);
+ printf("strvar = %s\n", strvar ? strvar : "(null)");
+ printf("cstrvar = %s\n", cstrvar ? cstrvar : "(null)");
+ printf("iptrvar = %p\n", iptrvar);
printf("name = %c%c%c%c%c\n", name[0],name[1],name[2],name[3],name[4]);
+ //printf("ptptr = %p %s\n", ptptr, Point_print( ptptr ) );
+ printf("pt = (%d, %d)\n", pt.x, pt.y);
+ printf("status = %d\n", status);
+}
+
+/* A function to create an integer (to test iptrvar) */
+
+int *new_int(int value) {
+ int *ip = (int *) malloc(sizeof(int));
+ *ip = value;
+ return ip;
}
+int value_int(int *value) {
+ return *value;
+}
+/* A function to create a point */
+Point *new_Point(int x, int y) {
+ Point *p = (Point *) malloc(sizeof(Point));
+ p->x = x;
+ p->y = y;
+ return p;
+}
+
+char * Point_print(Point *p) {
+ static char buffer[256];
+ if (p) {
+ sprintf(buffer,"(%d,%d)", p->x,p->y);
+ } else {
+ sprintf(buffer,"null");
+ }
+ return buffer;
+}
+
+void pt_print() {
+ printf("(%d, %d)\n", pt.x, pt.y);
+}
diff --git a/Examples/scilab/variables/example.i b/Examples/scilab/variables/example.i
index 399c3fa2f..c5e39f6ab 100644
--- a/Examples/scilab/variables/example.i
+++ b/Examples/scilab/variables/example.i
@@ -1,5 +1,8 @@
/* File : example.i */
%module example
+%{
+#include "example.h"
+%}
#pragma SWIG nowarn=SWIGWARN_TYPEMAP_SWIGTYPELEAK
@@ -17,17 +20,33 @@
extern float fvar;
extern double dvar;
extern char *strvar;
+ // extern const char cstrvar[];
+ extern int *iptrvar;
extern char name[256];
- extern double *Foo1;
- extern double *Foo2;
- extern int *pivar;
- extern short *psvar;
- extern char **foo;
+
+ extern Point *ptptr;
+ extern Point pt;
+
+%}
+
+
+/* Some read-only variables */
+
+%immutable;
+
+%inline %{
+extern int status;
+extern char path[256];
%}
+%mutable;
/* Some helper functions to make it easier to test */
%inline %{
extern void print_vars();
+extern int *new_int(int value);
+extern Point *new_Point(int x, int y);
+extern char *Point_print(Point *p);
+extern void pt_print();
%}
diff --git a/Examples/scilab/variables/runme.sci b/Examples/scilab/variables/runme.sci
index 6e9ede1bb..d7db519de 100644
--- a/Examples/scilab/variables/runme.sci
+++ b/Examples/scilab/variables/runme.sci
@@ -18,17 +18,10 @@ cvar_set ("S");
fvar_set (3.14159);
dvar_set (2.1828);
strvar_set("Hello World");
-name_set ("Bill");
-Foo1_set([1,2,3;4,5,6]);
-Foo2_set([1+2*%i,2+3*%i;3+4*%i,7+8*%i]);
-pivar_set(int32([ 1 2 3 4 5;
- 6 7 8 9 10;
- 11 12 13 14 15]));
-psvar_set(int16([ 1 2 3 4 5;
- 6 7 8 9 10;
- 11 12 13 14 15]));
-foo_set(["sample", "strings", "manipulation"; "with","gateway","API"]);
+iptrvar= new_int(37);
+ptptr = new_Point(37,42);
+name_set ("Bill");
// Now print out the values of the variables
printf("Variables (values printed from Scilab)\n");
@@ -45,13 +38,10 @@ printf("fvar = %f\n", fvar_get());
printf("dvar = %f\n", dvar_get());
printf("cvar = %s\n", cvar_get());
printf("strvar = %s\n", strvar_get());
-printf("name = %s\n", name_get());
-Foo1_get()
-Foo2_get()
-pivar_get()
-psvar_get()
-foo_get()
+iptrvar
+printf("name = %s\n", name_get());
+printf("ptptr = %s\n", Point_print(ptptr));
printf("\nVariables (values printed from C)\n");
print_vars()