From: Joe Groff Date: Mon, 22 Feb 2010 18:32:59 +0000 (-0800) Subject: Merge branch 'master' into new-alien-pointers X-Git-Tag: 0.97~4841^2~11 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=31a0d98e02b179498cdfad688ee72de7ca1fee04 Merge branch 'master' into new-alien-pointers Conflicts: basis/alien/c-types/c-types.factor basis/stack-checker/dependencies/dependencies.factor --- 31a0d98e02b179498cdfad688ee72de7ca1fee04 diff --cc basis/alien/c-types/c-types.factor index 9db6ac7f4a,fff49a4480..a9392b03d7 --- a/basis/alien/c-types/c-types.factor +++ b/basis/alien/c-types/c-types.factor @@@ -48,17 -49,21 +49,14 @@@ ERROR: no-c-type name ! C type protocol GENERIC: c-type ( name -- c-type ) foldable - : void? ( c-type -- ? ) - void = ; inline -GENERIC: resolve-pointer-type ( name -- c-type ) -- -<< \ void \ void* "pointer-c-type" set-word-prop >> +PREDICATE: c-type-word < word + "c-type" word-prop ; -M: word resolve-pointer-type - dup "pointer-c-type" word-prop - [ ] [ drop void* ] ?if ; +TUPLE: pointer { to initial: void read-only } ; +C: pointer -M: array resolve-pointer-type - first resolve-pointer-type ; +UNION: c-type-name + c-type-word pointer ; : resolve-typedef ( name -- c-type ) dup void? [ no-c-type ] when