diff --git a/extra/alien/cxx/cxx.factor b/extra/alien/cxx/cxx.factor new file mode 100644 index 0000000000..7194c5d960 --- /dev/null +++ b/extra/alien/cxx/cxx.factor @@ -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 index 0000000000..08cf8343af --- /dev/null +++ b/extra/alien/cxx/demangle/demangle.factor @@ -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 ;