diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2009-08-18 20:56:02 +0000 |
|---|---|---|
| committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-25 16:59:08 +0000 |
| commit | 9f8a09ed743cedd9547bf0661d518647966ab114 (patch) | |
| tree | 9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/guile/std_vector/runme.scm | |
| download | swig-tarball-master.tar.gz | |
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/guile/std_vector/runme.scm')
| -rw-r--r-- | Examples/guile/std_vector/runme.scm | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Examples/guile/std_vector/runme.scm b/Examples/guile/std_vector/runme.scm new file mode 100644 index 0000000..77443a1 --- /dev/null +++ b/Examples/guile/std_vector/runme.scm @@ -0,0 +1,54 @@ +;; run with mzscheme -r example.scm + +(use-modules (example)) + +; repeatedly invoke a procedure with v and an index as arguments +(define (with-vector v proc size-proc) + (let ((size (size-proc v))) + (define (with-vector-item v i) + (if (< i size) + (begin + (proc v i) + (with-vector-item v (+ i 1))))) + (with-vector-item v 0))) + +(define (with-IntVector v proc) + (with-vector v proc IntVector-length)) +(define (with-DoubleVector v proc) + (with-vector v proc DoubleVector-length)) + +(define (print-DoubleVector v) + (with-DoubleVector v (lambda (v i) (display (DoubleVector-ref v i)) + (display " "))) + (newline)) + + +; Call average with a Scheme list... + +(display (average '(1 2 3 4))) +(newline) + +; ... or a wrapped std::vector<int> +(define v (new-IntVector 4)) +(with-IntVector v (lambda (v i) (IntVector-set! v i (+ i 1)))) +(display (average v)) +(newline) +(delete-IntVector v) + +; half will return a Scheme vector. +; Call it with a Scheme vector... + +(display (half #(1 1.5 2 2.5 3))) +(newline) + +; ... or a wrapped std::vector<double> +(define v (new-DoubleVector)) +(map (lambda (i) (DoubleVector-push! v i)) '(1 2 3 4)) +(display (half v)) +(newline) + +; now halve a wrapped std::vector<double> in place +(halve-in-place v) +(print-DoubleVector v) +(delete-DoubleVector v) + |
