hashcode* for structs

Joe Groff 2009-08-31 10:51:45 -05:00
parent 82e3ec2fe8
commit 57ed942dfa
2 changed files with 13 additions and 2 deletions

View File

@ -184,6 +184,14 @@ STRUCT: struct-test-equality-2
] with-destructors ] with-destructors
] unit-test ] unit-test
[ t ] [
[
struct-test-equality-1 <struct> 5 >>x
struct-test-equality-1 malloc-struct &free 5 >>x
[ hashcode ] bi@ =
] with-destructors
] unit-test
STRUCT: struct-test-ffi-foo STRUCT: struct-test-ffi-foo
{ x int } { x int }
{ y int } ; { y int } ;

View File

@ -6,7 +6,7 @@ combinators combinators.short-circuit combinators.smart
functors.backend fry generalizations generic.parser kernel functors.backend fry generalizations generic.parser kernel
kernel.private lexer libc locals macros make math math.order parser kernel.private lexer libc locals macros make math math.order parser
quotations sequences slots slots.private struct-arrays vectors quotations sequences slots slots.private struct-arrays vectors
words compiler.tree.propagation.transforms ; words compiler.tree.propagation.transforms specialized-arrays.direct.uchar ;
FROM: slots => reader-word writer-word ; FROM: slots => reader-word writer-word ;
IN: classes.struct IN: classes.struct
@ -35,7 +35,10 @@ M: struct equal?
{ {
[ [ class ] bi@ = ] [ [ class ] bi@ = ]
[ [ >c-ptr ] [ [ >c-ptr ] [ byte-length ] bi ] bi* memory= ] [ [ >c-ptr ] [ [ >c-ptr ] [ byte-length ] bi ] bi* memory= ]
} 2&& ; } 2&& ; inline
M: struct hashcode*
[ >c-ptr ] [ byte-length ] bi <direct-uchar-array> hashcode* ; inline
: struct-prototype ( class -- prototype ) "prototype" word-prop ; foldable : struct-prototype ( class -- prototype ) "prototype" word-prop ; foldable