package flare.util
{
    /**
     * Interface for classes that get and set named property values of objects.
     */
    public interface IValueProxy
    {
        /**
         * Gets a named property value for an object. 
         * @param object the object
         * @param name the property name
         * @return the value
         */
        function getValue(object:Object, name:String):*;
        
        /**
         * Sets a named property value for an object.
         * @param object the object
         * @param name the property name
         * @param value the value
         */
        function setValue(object:Object, name:String, value:*):void;
        
        /**
         * Returns a value proxy object for getting and setting values. 
         * @param object the object
         * @return a value proxy object upon which clients can get and set
         *  properties directly
         */
        function $(object:Object):Object;
        
    } // end of interface IValueProxy
}