]> gitweb.factorcode.org Git - factor.git/commitdiff
alien.marshall: tidy unmarshallers
authorJeremy Hughes <jedahu@gmail.com>
Wed, 22 Jul 2009 07:20:01 +0000 (19:20 +1200)
committerJeremy Hughes <jedahu@gmail.com>
Wed, 22 Jul 2009 07:20:01 +0000 (19:20 +1200)
extra/alien/marshall/marshall.factor

index eec0cadcbb65d84280bd1df1aed694da4897bfe4..547e37f78a199622a880f492a475f2cddcc9eba9 100644 (file)
@@ -275,21 +275,21 @@ ALIAS: marshall-void* marshall-pointer
 : ?malloc-byte-array ( c-type -- alien )
     dup alien? [ malloc-byte-array ] unless ;
 
-:: x-unmarshaller ( type type-quot wrapper-test def clean -- quot/f )
+:: x-unmarshaller ( type type-quot superclass def clean -- quot/f )
     type type-quot call current-vocab lookup [
-        dup superclasses wrapper-test any?
+        dup superclasses superclass swap member?
         [ def call ] [ drop clean call f ] if
     ] [ clean call f ] if* ; inline
 
 : struct-unmarshaller ( type -- quot/f )
-    [ ] [ \ struct-wrapper = ]
+    [ ] \ struct-wrapper
     [ '[ ?malloc-byte-array _ new swap >>underlying ] ]
     [ ]
     x-unmarshaller ;
 
 : class-unmarshaller ( type -- quot/f )
-    [ type-sans-pointer ] [ \ alien-wrapper = ]
-    [ '[ ?malloc-byte-array _ new swap >>underlying ] ]
+    [ type-sans-pointer "#" append ] \ class-wrapper
+    [ '[ _ new swap >>underlying ] ]
     [ ]
     x-unmarshaller ;