package com.laytonsmith.core.functions.bash; import com.laytonsmith.PureUtilities.ClassLoading.ClassDiscovery; import com.laytonsmith.annotations.core; import com.laytonsmith.core.Documentation; import com.laytonsmith.core.functions.CompiledFunction; import com.laytonsmith.core.functions.FunctionBase; import com.laytonsmith.core.snapins.PackagePermission; import java.net.URL; /** * This is a marker interface to make Bash functions separate. * */ public abstract class BashFunction implements FunctionBase, CompiledFunction, Documentation { @Override public boolean appearInDocumentation() { return true; } @Override public PackagePermission getPermission() { return PackagePermission.NO_PERMISSIONS_NEEDED; } @Override public URL getSourceJar() { return ClassDiscovery.GetClassContainer(this.getClass()); } private static final Class[] EMPTY_CLASS = new Class[0]; @Override public Class<? extends Documentation>[] seeAlso() { return EMPTY_CLASS; } @Override public final boolean isCore() { Class c = this.getClass(); do{ if(c.getAnnotation(core.class) != null){ return true; } c = c.getDeclaringClass(); } while(c != null); return false; } }