001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005package edu.wpi.first.epilogue;
006
007import java.lang.annotation.ElementType;
008import java.lang.annotation.Retention;
009import java.lang.annotation.RetentionPolicy;
010import java.lang.annotation.Target;
011
012/**
013 * Placed on a subclass of {@code ClassSpecificLogger}. Epilogue will detect it at compile time and
014 * allow logging of data types compatible with the logger.
015 *
016 * <pre><code>
017 *   {@literal @}CustomLoggerFor(VendorMotorType.class)
018 *    class ExampleMotorLogger extends ClassSpecificLogger&lt;VendorMotorType&gt; { }
019 * </code></pre>
020 */
021@Retention(RetentionPolicy.RUNTIME)
022@Target(ElementType.TYPE)
023public @interface CustomLoggerFor {
024  /**
025   * The class or classes of objects able to be logged with the annotated logger.
026   *
027   * @return the supported data types
028   */
029  Class<?>[] value();
030}