public boolean matches(Method method) { if (!symbol.contains(getMethodName(method))) { return false; } // if (!Modifier.isStatic(method.getModifiers()) && // !symbol.contains(method.getDeclaringClass().getSimpleName())) // return false; parse(); try { if (ref != null) { boolean res = ref.matches(method); if (!res && BridJ.debug) { BridJ.debug( "Symbol " + symbol + " was a good candidate but expected demangled signature " + ref + " did not match the method " + method); } return res; } } catch (Exception ex) { ex.printStackTrace(); } return false; }
public boolean matchesDestructor(Class<?> type) { if (!symbol.contains(type.getSimpleName())) { return false; } parse(); try { if (ref != null) { return ref.matchesDestructor(type); } } catch (Exception ex) { ex.printStackTrace(); } return false; }
public boolean matchesConstructor(Type type, java.lang.reflect.Constructor<?> constr) { if (!symbol.contains(Utils.getClass(type).getSimpleName())) { return false; } parse(); try { if (ref != null) { return ref.matchesConstructor(type, constr); } } catch (Exception ex) { ex.printStackTrace(); } return false; }
public static void main(String[] args) { // try { //// String s = "?f@@YA?AW4E@@W41@@Z"; // String s = "?f@@YAPADPADPAF1@Z"; // "byte* f(byte*, short*, short*)" // //String s = "?m@C@@SAPAV1@XZ"; // MemberRef mr = new VC9Demangler(null, s).parseSymbol(); // System.out.println(mr); // } catch (DemanglingException ex) { // Logger.getLogger(Demangler.class.getName()).error(null, ex); // } for (String arg : args) { try { System.out.println("VC9: " + new VC9Demangler(null, arg).parseSymbol()); } catch (Exception ex) { ex.printStackTrace(); } try { System.out.println("GCC4: " + new GCC4Demangler(null, arg).parseSymbol()); } catch (Exception ex) { ex.printStackTrace(); } } }