001    package org.bridj.ann;
002    
003    import java.lang.annotation.ElementType;
004    import java.lang.annotation.Inherited;
005    import java.lang.annotation.Retention;
006    import java.lang.annotation.RetentionPolicy;
007    import java.lang.annotation.Target;
008    
009    /**
010     * Specify the name of the native library that should be bound to the class or method this annotation is put on.<br>
011     * This name can then be changed at runtime to match the platform-specific name of the library with @see org.bridj.BridJ#setNativeLibraryActualName(String, String).<br>
012     * Alternative aliases can also be added at runtime with @see org.bridj.BridJ#addNativeLibraryAlias(String, String).
013     * @author Olivier Chafik
014     */
015    @Retention(RetentionPolicy.RUNTIME)
016    @Inherited
017    @Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR})
018    public @interface Library {
019            /**
020             * Name of this library.
021             */
022        String value();
023        /**
024         * Names of libraries that need to be loaded before this library is loaded
025         */
026        String[] dependencies() default {};
027        String versionPattern() default "";
028    }