]> gitweb.factorcode.org Git - factor.git/commitdiff
foundation for abi-generic demangling
authorJoe Groff <arcata@gmail.com>
Wed, 14 Apr 2010 22:51:32 +0000 (15:51 -0700)
committerJoe Groff <arcata@gmail.com>
Wed, 14 Apr 2010 22:51:32 +0000 (15:51 -0700)
extra/alien/cxx/cxx.factor [new file with mode: 0644]
extra/alien/cxx/demangle/demangle.factor [new file with mode: 0644]

diff --git a/extra/alien/cxx/cxx.factor b/extra/alien/cxx/cxx.factor
new file mode 100644 (file)
index 0000000..7194c5d
--- /dev/null
@@ -0,0 +1,12 @@
+! (c)2010 Joe Groff bsd license
+USING: alien kernel ;
+IN: alien.cxx
+
+SINGLETONS: g++ visual-c++ ;
+UNION: c++-abi
+    g++ visual-c++ ;
+
+GENERIC: c++>c-abi ( c++-abi -- c-abi )
+
+M: g++ c++>c-abi drop cdecl ;
+M: visual-c++ c++>c-abi drop thiscall ;
diff --git a/extra/alien/cxx/demangle/demangle.factor b/extra/alien/cxx/demangle/demangle.factor
new file mode 100644 (file)
index 0000000..08cf834
--- /dev/null
@@ -0,0 +1,12 @@
+! (c)2010 Joe Groff bsd license
+USING: alien.cxx kernel ;
+QUALIFIED-WITH: alien.cxx.demangle.libstdcxx libstdcxx
+IN: alien.cxx.demangle
+
+GENERIC: c++-symbol? ( mangled-name abi -- ? )
+GENERIC: demangle ( mangled-name abi -- c++-name )
+
+M: g++ c++-symbol?
+    drop libstdcxx:mangled-name? ;
+M: g++ demangle
+    drop libstdcxx:demangle ;