29 import java.net.URL; 30 import java.net.URLClassLoader; 31 import java.nio.file.FileVisitResult; 32 import java.nio.file.Files; 33 import java.nio.file.Path; 34 import java.nio.file.Paths; 35 import java.nio.file.SimpleFileVisitor; 36 import java.nio.file.attribute.BasicFileAttributes; 37 import java.util.Objects; 38 import java.util.spi.ToolProvider; 39 40 import static org.testng.Assert.assertEquals; 41 import static org.testng.Assert.assertNotEquals; 42 import static org.testng.Assert.assertNotNull; 43 import static org.testng.Assert.assertTrue; 44 import static org.testng.Assert.fail; 45 46 public class JextractToolRunner { 47 // utilities to avoid hard-coding generated class, interface names everywhere 48 public static String headerInterfaceName(String filename) { 49 int ext = filename.lastIndexOf('.'); 50 return ext != -1 ? filename.substring(0, ext) : filename; 51 } 52 53 public static String staticForwarderName(String filename) { 54 return headerInterfaceName(filename) + "_h"; 55 } 56 57 // struct, enum and callback interfaces are nested types of header interface 58 public static String structInterfaceName(String headerFileName, String structName) { 59 return headerInterfaceName(headerFileName) + "$" + structName; 60 } 61 62 public static String enumInterfaceName(String headerFileName, String enumName) { 63 return headerInterfaceName(headerFileName) + "$" + enumName; 64 } 65 66 public static String callbackInterfaceName(String headerFileName, String fiName) { 67 return headerInterfaceName(headerFileName) + "$" + fiName; 68 } 69 70 public static String enumForwarderInterfaceName(String headerFileName, String enumName) { 71 return staticForwarderName(headerFileName) + "$" + enumName; 72 } 73 74 private static final ToolProvider JEXTRACT_TOOL = ToolProvider.findFirst("jextract") | 29 import java.net.URL; 30 import java.net.URLClassLoader; 31 import java.nio.file.FileVisitResult; 32 import java.nio.file.Files; 33 import java.nio.file.Path; 34 import java.nio.file.Paths; 35 import java.nio.file.SimpleFileVisitor; 36 import java.nio.file.attribute.BasicFileAttributes; 37 import java.util.Objects; 38 import java.util.spi.ToolProvider; 39 40 import static org.testng.Assert.assertEquals; 41 import static org.testng.Assert.assertNotEquals; 42 import static org.testng.Assert.assertNotNull; 43 import static org.testng.Assert.assertTrue; 44 import static org.testng.Assert.fail; 45 46 public class JextractToolRunner { 47 // utilities to avoid hard-coding generated class, interface names everywhere 48 public static String headerInterfaceName(String filename) { 49 return staticForwarderName(filename) + "_"; 50 } 51 52 public static String staticForwarderName(String filename) { 53 int ext = filename.lastIndexOf('.'); 54 String name = ext != -1 ? filename.substring(0, ext) : filename; 55 return name + "_h"; 56 } 57 58 // struct, enum and callback interfaces are nested types of header interface 59 public static String structInterfaceName(String headerFileName, String structName) { 60 return headerInterfaceName(headerFileName) + "$" + structName; 61 } 62 63 public static String enumInterfaceName(String headerFileName, String enumName) { 64 return headerInterfaceName(headerFileName) + "$" + enumName; 65 } 66 67 public static String callbackInterfaceName(String headerFileName, String fiName) { 68 return headerInterfaceName(headerFileName) + "$" + fiName; 69 } 70 71 public static String enumForwarderInterfaceName(String headerFileName, String enumName) { 72 return staticForwarderName(headerFileName) + "$" + enumName; 73 } 74 75 private static final ToolProvider JEXTRACT_TOOL = ToolProvider.findFirst("jextract") |