001    package railo.runtime.interpreter.ref;
002    
003    import railo.runtime.PageContext;
004    import railo.runtime.exp.PageException;
005    
006    /**
007     * Define a Reference to a Object
008     */
009    public interface Ref {
010            
011        /**
012         * return the value for that the reference is for
013         * @return value to reference
014         * @throws PageException
015         */
016        public Object touchValue(PageContext pc) throws PageException;
017    
018        /**
019         * return the value for that the reference is for
020         * @return value to reference
021         * @throws PageException
022         */
023        public Object getValue(PageContext pc) throws PageException;
024    
025        /**
026         * return the value for that the reference is for
027         * @return value to reference
028         * @throws PageException
029         */
030        public Object getCollection(PageContext pc) throws PageException;
031        
032            /**
033             * return the name name of a reference
034             * @return type as string
035             */
036            public String getTypeName();
037            
038    
039            public boolean eeq(PageContext pc,Ref other) throws PageException;
040    }