예제 #1
0
  protected static AssemblerArgs createProcessArgs(String toolName) {

    ServiceLoader<DeBruijnArgs> dbgArgs = ServiceLoader.load(DeBruijnArgs.class);
    ServiceLoader<DeBruijnOptimiserArgs> dbgOptArgs =
        ServiceLoader.load(DeBruijnOptimiserArgs.class);
    ServiceLoader<DeBruijnAutoArgs> dbgAutoArgs = ServiceLoader.load(DeBruijnAutoArgs.class);

    List<AssemblerArgs> argClasses = new ArrayList<>();
    for (DeBruijnArgs args : dbgArgs) {
      argClasses.add(args);
    }

    for (DeBruijnOptimiserArgs args : dbgOptArgs) {
      argClasses.add(args);
    }

    for (DeBruijnAutoArgs args : dbgAutoArgs) {
      argClasses.add(args);
    }

    for (AssemblerArgs args : argClasses) {
      if (args.getProcessName().equalsIgnoreCase(toolName)) {
        return args;
      }
    }

    return null;
  }
예제 #2
0
  public static Assembler createGenericAssembler(String toolName, ConanExecutorService ces) {

    AssemblerArgs args = createProcessArgs(toolName);

    if (args == null) return null;

    ServiceLoader<Assembler> procLoader = ServiceLoader.load(Assembler.class);

    for (Assembler assembler : procLoader) {
      if (assembler.getName().equalsIgnoreCase(toolName.trim())) {
        assembler.initialise(args.toConanArgs(), ces);
        return assembler;
      }
    }

    return null;
  }