]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/alien/cxx/demangle/libstdcxx/libstdcxx.factor
factor: trim using lists
[factor.git] / extra / alien / cxx / demangle / libstdcxx / libstdcxx.factor
index 403015bad5da397dc487b02855459acbdab2c85e..135ea2189e53cf774aaf0fcb3ba6b8a67902ccd8 100644 (file)
@@ -1,10 +1,11 @@
-! (c)2010 Joe Groff bsd license
-USING: alien alien.c-types alien.libraries alien.strings
+! Copyright (C) 2010 Joe Groff.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.data alien.destructors alien.strings
 alien.syntax combinators destructors io.encodings.ascii kernel
-libc locals sequences system ;
+libc sequences ;
 IN: alien.cxx.demangle.libstdcxx
 
-FUNCTION: char* __cxa_demangle ( char* mangled_name, char* output_buffer, size_t* length, int* status ) ;
+FUNCTION: char* __cxa_demangle ( char* mangled_name, char* output_buffer, size_t* length, int* status )
 
 ERROR: demangle-memory-allocation-failure ;
 ERROR: invalid-mangled-name name ;
@@ -21,10 +22,12 @@ ERROR: invalid-demangle-args name ;
 : mangled-name? ( name -- ? )
     "_Z" head? ;
 
+DESTRUCTOR: (free)
+
 :: demangle ( mangled-name -- c++-name )
-    0 <ulong> :> length
-    0 <int> :> status [
+    0 ulong <ref> :> length
+    0 int <ref> :> status [
         mangled-name ascii string>alien f length status __cxa_demangle &(free) :> demangled-buf
-        mangled-name status *int demangle-error
+        mangled-name status int deref demangle-error
         demangled-buf ascii alien>string
     ] with-destructors ;