1 package net.mograsim.machine;
3 import java.util.Arrays;
4 import java.util.Collections;
5 import java.util.HashSet;
8 import org.eclipse.core.runtime.CoreException;
9 import org.eclipse.core.runtime.IConfigurationElement;
10 import org.eclipse.core.runtime.IExtensionRegistry;
11 import org.eclipse.core.runtime.ISafeRunnable;
12 import org.eclipse.core.runtime.SafeRunner;
13 import org.eclipse.e4.core.di.annotations.Execute;
15 public class MachineRegistry
17 private static final String MACHINE_EXT_ID = "net.mograsim.machine.machinedefinition";
19 private static Set<MachineDefinition> installedMachines = new HashSet<>();
22 public void execute(IExtensionRegistry registry)
24 System.out.println(Arrays.toString(registry.getExtensionPoints("net.mograsim.machine")));
25 IConfigurationElement[] config = registry.getConfigurationElementsFor(MACHINE_EXT_ID);
28 for (IConfigurationElement e : config)
30 final Object o = e.createExecutableExtension("class");
31 if (o instanceof MachineDefinition)
36 System.err.println("Invalid machine definition: " + o);
40 catch (CoreException ex)
42 System.out.println(ex.getMessage());
46 private void executeExtension(final Object o)
48 ISafeRunnable runnable = new ISafeRunnable()
51 public void handleException(Throwable e)
53 System.out.println("Exception in client");
57 public void run() throws Exception
59 System.out.println(((MachineDefinition) o).getAddressBits());
62 SafeRunner.run(runnable);
65 public static Set<MachineDefinition> getinstalledMachines()
67 return Collections.unmodifiableSet(installedMachines);