Hello, again,

I found one inconsistency in uffi's documentation. Uffi's doc says that
dereferencing types :char and :unsigned-char return characters where
actually it returns integers (at least here). Cffi's uffi-compat follows the
doc and that also breaks elephant. Sending a new patch that "fix" that and
also has a change necessary to def-function accept directions.

Please let me know whether my patches will get into cffi or if there is
something I should change in them.

Now off to find more errors...

Gustavo.

Em 6 de agosto de 2010 11:19, Gustavo <gugamil...@gmail.com> escreveu:

> Hello,
>
> Sorry, my definition of "tomorrow" and "day duration" is a little distorted
> :3
>
> My previous patch was kind of messy, so I decided to restart everything
> from the concept. Instead of the argument directions to be handled by the
> macro expansion and (complicated) auxiliary functions, it is now handled
> (mainly) by translate-objects and expand-to-foreign-dyn.
>
> Also, tests for varargs functions are a bit hackish because I don't know
> how to create a C function with variadic argument. I don't know if it will
> work on all systems. Anyway, the tests are there, just test them and see if
> they work ;)
>
> Gustavo.
>
> Em 14 de julho de 2010 23:01, Gustavo <gugamil...@gmail.com> escreveu:
>
>> Hello, again,
>>
>> I've added support for :in, :out, :in-out and :copy direction arguments
>> except for defcfun with &rest args. The patch is attached, it includes some
>> tests. Anyone may feel free to add more tests if it is convenient.
>>
>>
>> For defcfun with &rest arguments, I still need to test so I didn't include
>> it in my patch. I'll do that tomorrow.
>>
>> Changing subject, I noted that, *without* my changes, there are 4
>> unexpected failures with cffi in my system (and 2 expected).
>>
>> The tests FUNCALL.VARARGS.DOUBLE, DEFCFUN.VARARGS.FLOAT,
>> DEFCFUN.VARARGS.DOUBLE fail because of localization issues. Here in Brazil,
>> we write "3,14" instead of "3.14" and sprintf takes that into account. Not a
>> big problem, though, just notifying.
>>
>> The test DEFCFUN.BFF.2 fails, I suspect it is because of the precision of
>> doubles. The function returns the first, the second is expected.
>>
>> 7758614624042983568
>> 7758614658402721936
>>
>> The expected failures are STRING.ENCODING.UTF-16.BASIC and
>> STRING.ENCODINGS.ALL.BASIC.
>>
>> SBCL 1.0.40, 32-bit Ubuntu.
>>
>> Now, except for those tests that were already failing, my changes didn't
>> fail even a single one of them :)
>>
>> Gustavo.
>>
>
>
Tue Aug 10 13:36:16 BRT 2010  Gustavo Henrique Milare <gugamil...@gmail.com>
  * Fix uffi's def-function and convertion from characters

New patches:

[Fix uffi's def-function and convertion from characters
Gustavo Henrique Milare <gugamil...@gmail.com>**20100810163616
 Ignore-this: 198bf641d54007f0d1c215e19a7ebb5a
] {
hunk ./uffi-compat/uffi-compat.lisp 114
     (:cstring :pointer)
     (:pointer-void :pointer)
     (:pointer-self :pointer)
-    (:char '(uffi-char :char))
-    (:unsigned-char '(uffi-char :unsigned-char))
+    ;; Uffi's documentation says dereferencing :char and :unsigned-char
+    ;; returns characters while it actually returns integers
+    (:char :char)
+    (:unsigned-char :unsigned-char)
     (:byte :char)
     (:unsigned-byte :unsigned-char)
     (t
hunk ./uffi-compat/uffi-compat.lisp 408
   "Define a foreign function."
   (declare (ignore module))
   `(cffi:defcfun ,name ,(convert-uffi-type returning)
-     ,@(loop for (name type) in args
-             collect `(,name ,(convert-uffi-type type)))))
+     ,@(loop for (name type . rest) in args
+             collect `(,name ,(convert-uffi-type type) ,@rest))))
 
 ;;; Taken from UFFI's src/libraries.lisp
 
}

Context:

[cffi-ecl: always push no-long-long
Luis Oliveira <lolive...@common-lisp.net>**20100428225604
 Ignore-this: 784c1c4b1567455e551ceeee0381cee8
 
 LONG-LONG is not supported by ECL's interpreter yet.
] 
[cffi-tests: don't use FOREIGN-FREE for malloc()ed memory
Luis Oliveira <lolive...@common-lisp.net>**20100428225337
 Ignore-this: 5c02fbd1880a2f69a7bb59f8bb22f66b
 
 Patch courtesy of Juan Jose Garcia-Ripoll.
] 
[New pointer-related tests
Luis Oliveira <lolive...@common-lisp.net>**20100428224243
 Ignore-this: 6a2f040e2212317b46441a48851d48ac
 
 Testing error situations for some pointer operations.
] 
[cffi-ecl: simplify shareable vector implementation
Luis Oliveira <lolive...@common-lisp.net>**20100425231232
 Ignore-this: 75b0d4bba44f7313d3a629184ee93d42
 
 Patch courtesy of Juan Jose Garcia-Ripoll.
] 
[cffi-ecl: inline %mem-set and %mem-ref
Luis Oliveira <lolive...@common-lisp.net>**20100425230219
 Ignore-this: 121b7b707e867051fc5ef8b45a306234
 
 Patch courtesy of Juan Jose Garcia-Ripoll.
] 
[cffi-ecl: use C-INLINE when producing compiled code
Luis Oliveira <lolive...@common-lisp.net>**20100425225004
 Ignore-this: 30c083fea4568be7c20f4f819d5a8ffa
 
 Using the ECL extension EXT:WITH-BACKEND, CFFI can produce code that
 works differently when using the interpreter than when using the
 lisp2C compiler. This leads to more efficient code. This change is
 backwards compatible.
 
 Patch courtesy of Juan Jose Garcia-Ripoll.
] 
[cffi-ecl: reexport NULL-POINTER-P from SI
Luis Oliveira <lolive...@common-lisp.net>**20100425223914
 Ignore-this: 7dd39ad27e6827545c1b16fc071fa4b5
 
 Patch courtesy of Juan Jose Garcia-Ripoll.
] 
[cffi-ecl: use ECL's :long-long feature
Luis Oliveira <lolive...@common-lisp.net>**20100425223748
 Ignore-this: a58e16e0ef93b05576d05852f47fda6f
 
 Patch courtesy of Juan Jose Garcia-Ripoll.
] 
[Allegro: fix WITH-FOREIGN-POINTER
Luis Oliveira <lolive...@common-lisp.net>**20100425122443
 Ignore-this: 275a83ec9e6b161c046644ef2e4b79a5
 
 - Fixes previous patch.
 - New test: WITH-FOREIGN-POINTER.CONSTANT-SIZE.
] 
[Allow the use of constants in WITH-FOREIGN-OBJECT for Allegro.
Jianshi Huang <hu...@msi.co.jp>**20100421091956
 Ignore-this: 612e375c10cae6e070b94baddf231e0d
] 
[Remove unused C macro SIGNED_ from common.h
Stelian Ionescu <sione...@cddr.org>**20100219173353
 Ignore-this: 127d3fac79151d22b23ce435cab3558
] 
[cffi-manual: navigation improvements.
Luis Oliveira <lolive...@common-lisp.net>**20100106232110
 Ignore-this: 5944e0d6072d1357b41a42d2658708d4
 
 - Add WITH-FOREIGN-OBJECTS and WITH-FOREIGN-STRINGS to the
   dictionary menus. (This unfortunately seems to require
   specifying the @node declarations in full.)
 - Make the table of contents more manageable by turning
   @unnumberedsecs into @headings.
 - Fix docstring in DEFSTRUCT example.
] 
[cffi-lispworks: add IGNORE declaration to CREATE-FOREIGN-FUNCALLABLE
Luis Oliveira <lolive...@common-lisp.net>**20100101174635
 Ignore-this: a6fbc492c01a1b45339b0fde226f6cb7
] 
[cffi-lispworks: make null-pointer-p check its argument's type
Luis Oliveira <lolive...@common-lisp.net>**20100101174529
 Ignore-this: 5aa0ba3afae82dd729f849c03582ac6c
] 
[Documentation: add note about RT, update description of no-long-long.
Luis Oliveira <lolive...@common-lisp.net>**20100101173443
 Ignore-this: 97430803980a0492290dafbd29cb062f
] 
[Preliminary support for ABCL.
Luis Oliveira <lolive...@common-lisp.net>**20100101172600
 Ignore-this: 1b9e5eb2ba0718bff2756f1897ad08b3
] 
[Update email address.
Stelian Ionescu <sione...@cddr.org>**20091211164938
 Ignore-this: c8aab03fe8a070fc83fb39ab3fa3ad42
] 
[Remove spurious PRINT call.
Stelian Ionescu <sione...@cddr.org>**20091211164909
 Ignore-this: ea138b4aff965ed7547956a93c98bfac
] 
[cffi-manual: the :STRING type does not support ub8 arrays anymore
Luis Oliveira <lolive...@common-lisp.net>**20091124232002
 Ignore-this: 509d08ce9acceacbe694a678552746bc
] 
[libtest: support 64-bit on OSX Leopard
Luis Oliveira <lolive...@common-lisp.net>**20091124231741
 Ignore-this: d7997fa0aca44a1f0351bdde32ea91f8
] 
[cffi-tests: show Lispworks the full path to libm.dylib
Luis Oliveira <lolive...@common-lisp.net>**20091124231442
 Ignore-this: ccf9bfdc692e726f7760b1dd0ecfb985
] 
[cffi-lispworks: turns out Lispworks does support llong on 32-bit platforms
Luis Oliveira <lolive...@common-lisp.net>**20091124231321
 Ignore-this: 8e131fb8e20f9d1448dd740d336ec1b4
] 
[Deprecate groveler clause FLAG in favour of CC-FLAGS.
Stelian Ionescu <sione...@cddr.org>**20090823121108
 Ignore-this: e1537717a9e7356b208d5cd14b34ba50
] 
[cffi-allegro: define long long types on 64-bit platforms
Luis Oliveira <lolive...@common-lisp.net>**20090821210052
 
 Patch courtesy of John Fremlin.
] 
[cffi-tests: fix pointer-to-integer casts in libtest.c
Luis Oliveira <lolive...@common-lisp.net>**20090821205447] 
[cffi-tests: don't use stdcall #ifndef WIN32
Luis Oliveira <lolive...@common-lisp.net>**20090821205144] 
[Also canonicalize search paths in library specs.
Stelian Ionescu <sione...@cddr.org>**20090809005356
 Ignore-this: 86a039c7ebbc757c9934fe99368ae0bb
] 
[Update manual.
Stelian Ionescu <sione...@cddr.org>**20090808222834
 Ignore-this: 15e832e5220a6ca70722730d81edf283
 
 DEFCFUN & co. now take only :CONVENTION.
] 
[Whitespace.
Stelian Ionescu <sione...@cddr.org>**20090808221547
 Ignore-this: 18d99969b97b190176e88d9eb24a94ce
] 
[Declare DEFCALLBACK, DEFCFUN and DEFINE-FOREIGN-LIBRARY's keyword args :CCONV and :CALLING-CONVENTION obsolete, use :CONVENTION instead.
Stelian Ionescu <sione...@cddr.org>**20090808221055
 Ignore-this: 9e90dfde20f4a4dfd764c5250d8b2ea6
 
] 
[Fix docstring of LIST-FOREIGN-LIBRARIES.
Stelian Ionescu <sione...@cddr.org>**20090807164116
 Ignore-this: 5c65a2d7608718e9bc0560e780855bf1
] 
[Fix reloading a library in LOAD-FOREIGN-LIBRARY.
Stelian Ionescu <sione...@cddr.org>**20090807162733
 Ignore-this: 267edf226a87d24d0441bf85515cc437
] 
[Use type :wrapper for wrapper libraries generated by the groveler.
Stelian Ionescu <sione...@common-lisp.net>**20090804204132
 Ignore-this: d61f9a69cfb323905d8abbb40bf84be9
] 
[Use type :test for the test libraries.
Stelian Ionescu <sione...@common-lisp.net>**20090720154312
 Ignore-this: 6dad3c93d47cd22e27c73c6ba7f2e8d1
] 
[Add the ability to specify a foreign library's type and search path.
Stelian Ionescu <sione...@common-lisp.net>**20090720154028
 Ignore-this: 7de87b54da57c74f9a7c994d6255df84
 
 Also export:
 - FOREIGN-LIBRARY
 - FOREIGN-LIBRARY-PATHNAME
 - FOREIGN-LIBRARY-TYPE
 - FOREIGN-LIBRARY-LOADED-P
 - LIST-FOREIGN-LIBRARIES
] 
[Cosmetic changes (cconv -> calling-convention).
Stelian Ionescu <sione...@cddr.org>**20090720153925
 Ignore-this: 38bc21d362c69fbf2dc10d268615b4fb
] 
[Groveler fixes for ECL.
Stelian Ionescu <sione...@cddr.org>**20090804193738
 Ignore-this: b834b25942f10bf4a42fdc3e9d0a2a0e
] 
[ECL: support more vector types in CFFI-SYS:WITH-POINTER-TO-VECTOR-DATA
Luis Oliveira <lolive...@common-lisp.net>**20090725231330
 
 Patch courtesy of Andy Hefner.
] 
[cffi-openmcl: prepend _ to external names on #+darwin, not just #+darwinppc
Luis Oliveira <lolive...@common-lisp.net>**20090710180832] 
[grovel: don't use cffi-features.
Luis Oliveira <lolive...@common-lisp.net>**20090702201557] 
[clisp: small fix to %FOREIGN-ALLOC
Luis Oliveira <lolive...@common-lisp.net>**20090701185918
 
 - Deal with (%foreign-alloc 0) gracefully by turning it into a one byte
   allocation. This is similar to what glibc's malloc() does, IIUC.
 - Regression test: FOREIGN-ALLOC.6.
 
 Reported by Tobias Rautenkranz.
] 
[Don't trim #\VT.
Stelian Ionescu <sione...@common-lisp.net>**20090625164315
 Ignore-this: d8d498764120b505ef429533a31e7ad4
] 
[Groveler: trim-whitespace not strip-whitespace.
Stelian Ionescu <sione...@common-lisp.net>**20090622215252
 Ignore-this: 4cf64b68c733985620a54547172f0acc
] 
[Groveler: fix typo.
Stelian Ionescu <sione...@common-lisp.net>**20090622213353
 Ignore-this: 6611cf5e23cf79f39487005c3cd54cea
] 
[Groveler: small refactoring, create *EXE-EXTENSION*
Stelian Ionescu <sione...@common-lisp.net>**20090622212626
 Ignore-this: e05a49eac29b50b75d739d7a8a4d5376
] 
[Groveler: move boilerplate C code to common.h
Stelian Ionescu <sione...@common-lisp.net>**20090622211857
 Ignore-this: eb1d4dfe79eda50736030b8a58245fa
] 
[Groveller: fix usage of *CC-FLAGS*.
Stelian Ionescu <sione...@common-lisp.net>**20090622205142
 Ignore-this: 8ec1dee6e977bb621978a140d00d4df6
] 
[Include <string.h> with the groveler boilerplate code.
Stelian Ionescu <sione...@common-lisp.net>**20090622201324
 Ignore-this: a61b2c378174118bda30f34881fd0d16
] 
[Move the DEFPACKAGE and INVOKE out of grovel.lisp
Stelian Ionescu <sione...@common-lisp.net>**20090622200317
 Ignore-this: 684f7b807e38f1562c83987999f5f2f6
] 
[Style change.
Stelian Ionescu <sione...@common-lisp.net>**20090622194557
 Ignore-this: d5fec823114054a26e5d3f868a51e61d
] 
[Groveler: use WITH-STANDARD-IO-SYNTAX when processing grovel files.
Stelian Ionescu <sione...@common-lisp.net>**20090622190429
 Ignore-this: b2de6817830cfa76780382f6f58b04ee
] 
[Groveler: implement %INVOKE for ABCL.
Stelian Ionescu <sione...@common-lisp.net>**20090622190326
 Ignore-this: 1131c355c7fbef55c972c5444bed2bf7
] 
[TAG 0.10.5
Luis Oliveira <lolive...@common-lisp.net>**20090616162007
 Ignore-this: f21c050e8ca02edcf2e2bac58555deb9
] 
Patch bundle hash:
747b10d4ee2f91b832a91f1c2dbb8e5c5ea88552
_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to