/*
* This file is part of the Jikes RVM project (http://jikesrvm.org).
*
* This file is licensed to You under the Eclipse Public License (EPL);
* You may not use this file except in compliance with the License. You
* may obtain a copy of the License at
*
* http://www.opensource.org/licenses/eclipse-1.0.php
*
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.
*/
package org.jikesrvm.tools.apt;
import com.sun.mirror.apt.AnnotationProcessor;
import com.sun.mirror.apt.AnnotationProcessorEnvironment;
import com.sun.mirror.apt.AnnotationProcessorFactory;
import com.sun.mirror.apt.AnnotationProcessors;
import com.sun.mirror.declaration.AnnotationTypeDeclaration;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/** Factory class for APT - dispatches annotations to their handling classes. */
public class SysCallProcessorFactory implements AnnotationProcessorFactory {
/** The factory method */
public AnnotationProcessor getProcessorFor(final Set<AnnotationTypeDeclaration> decs,
final AnnotationProcessorEnvironment env) {
if (null == decs || decs.isEmpty()) {
return AnnotationProcessors.NO_OP;
} else {
return new SysCallProcessor(env);
}
}
/** @return the set of annotation names we process. */
public Collection<String> supportedAnnotationTypes() {
final List<String> list =
Arrays.asList(SysCallProcessor.GEN_IMPL_ANNOTATION, SysCallProcessor.SYSCALL_TEMPLATE_ANNOTATION);
return Collections.unmodifiableCollection(list);
}
/** @return the set of options we support. */
@SuppressWarnings({"unchecked"})
public Collection<String> supportedOptions() {
return Collections.EMPTY_SET;
}
}