- /// TargetRegistrationListener - This class allows code to listen for targets
- /// that are dynamically registered, and be notified of it when they are.
- class TargetRegistrationListener {
- TargetRegistrationListener **Prev, *Next;
- public:
- TargetRegistrationListener();
- virtual ~TargetRegistrationListener();
-
- TargetRegistrationListener *getNext() const { return Next; }
-
- virtual void targetRegistered(const TargetMachineRegistry::Entry *E) = 0;
- };
-
-
- //===--------------------------------------------------------------------===//
- /// TargetNameParser - This option can be used to provide a command line
- /// option to choose among the various registered targets (commonly -march).
- class TargetNameParser : public TargetRegistrationListener,
- public cl::parser<const TargetMachineRegistry::Entry*> {
- public:
- void initialize(cl::Option &O) {
- for (const TargetMachineRegistry::Entry *E =
- TargetMachineRegistry::getList(); E; E = E->getNext())
- Values.push_back(std::make_pair(E->Name,
- std::make_pair(E, E->ShortDesc)));
- cl::parser<const TargetMachineRegistry::Entry*>::initialize(O);
- }
-
- virtual void targetRegistered(const TargetMachineRegistry::Entry *E) {
- Values.push_back(std::make_pair(E->Name,
- std::make_pair(E, E->ShortDesc)));
- }
- };