diff options
author | Armin Rigo <arigo@tunes.org> | 2012-07-17 22:42:54 +0200 |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2012-07-17 22:42:54 +0200 |
commit | d7ff021d2a04f97a2cb15be6177e1e9c68c8d0bb (patch) | |
tree | faaa3c88e72d7f743fa2cbbe920f3134273b0a59 /demo | |
parent | d65d9533d1caf4a192a9f73f88aa14ed6c9397c3 (diff) | |
download | cffi-d7ff021d2a04f97a2cb15be6177e1e9c68c8d0bb.tar.gz |
A demo of GMP.
Diffstat (limited to 'demo')
-rw-r--r-- | demo/gmp.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/demo/gmp.py b/demo/gmp.py new file mode 100644 index 0000000..692ac37 --- /dev/null +++ b/demo/gmp.py @@ -0,0 +1,30 @@ +import sys +import cffi + +ffi = cffi.FFI() + +ffi.cdef(""" + + typedef struct { ...; } MP_INT; + typedef MP_INT mpz_t[1]; + + int mpz_init_set_str (MP_INT *dest_integer, char *src_cstring, int base); + void mpz_add (MP_INT *sum, MP_INT *addend1, MP_INT *addend2); + char * mpz_get_str (char *string, int base, MP_INT *integer); + +""") + +lib = ffi.verify("#include <gmp.h>", + libraries=['gmp', 'm']) + +# ____________________________________________________________ + +a = ffi.new("mpz_t") +b = ffi.new("mpz_t") + +lib.mpz_init_set_str(a, sys.argv[1], 10) # Assume decimal integers +lib.mpz_init_set_str(b, sys.argv[2], 10) # Assume decimal integers +lib.mpz_add(a, a, b) # a=a+b + +s = lib.mpz_get_str(ffi.NULL, 10, a) +print str(s) |