]> 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 55a25be09d81463ff0007d4a3a30698df5bace03..135ea2189e53cf774aaf0fcb3ba6b8a67902ccd8 100644 (file)
@@ -1,19 +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
 
-<<
-"libstdc++" {
-    { [ os macosx? ] [ "/usr/lib/libstdc++.6.0.9.dylib" ] }
-    { [ os unix? ] [ "/usr/lib/libstdc++.so" ] }
-} cond cdecl add-library
->>
-
-LIBRARY: libstdc++
-
-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 ;
@@ -30,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 ;