001    package railo.runtime.type;
002    
003    import java.io.Serializable;
004    
005    /**
006     * a function argument definition
007     */
008    public interface FunctionArgument extends Serializable {
009    
010        public static final int DEFAULT_TYPE_NULL = 0;
011        public static final int DEFAULT_TYPE_LITERAL = 1;
012        public static final int DEFAULT_TYPE_RUNTIME_EXPRESSION = 2;
013            
014        /**
015         * @return Returns the name of the argument.
016         */
017        public abstract Collection.Key getName();
018    
019        /**
020         * @return Returns if argument is required or not.
021         */
022        public abstract boolean isRequired();
023    
024        /**
025         * @return Returns the type of the argument.
026         */
027        public abstract short getType();
028    
029        /**
030         * @return Returns the type of the argument.
031         */
032        public abstract String getTypeAsString();
033    
034        /**
035         * @return Returns the Hint of the argument.
036         */
037        public abstract String getHint();
038     
039            /**
040         * @return Returns the Display name of the argument.
041         */
042        public abstract String getDisplayName();
043        
044        /**
045         * @return the default type of the argument
046         */
047        public int getDefaultType();
048        
049    
050            /**
051             * @return the meta data defined 
052             */
053            public Struct getMetaData();
054    
055            public boolean isPassByReference();
056    }