<?php
// Autogenerated class file

/**
 * Data class fileentry.
 * Class to be used with eZ Components PersistentObject.
 */
class fileentry
{
    const ROOT = 1;
    const PARTITION = 2;
    const DIR = 3;
    const FILE = 4;

    /**
     * id
     *
     * @var string
     */
    public $id;

    /**
     * name
     *
     * @var string
     */
    public $name;

    /**
     * type
     *
     * @var int
     */
    public $type;

    /**
     * size
     *
     * @var int
     */
    public $size;

    /**
     * extra
     *
     * @var string
     */
    public $extra;

    public function __construct( $name = null, $type = null, $size = null, $extra = null )
    {
        $this->id = null;
        $this->name = $name;
        $this->type = $type;
        $this->size = $size;
        $this->extra = $extra;
    }

    /**
     * Set the PersistentObject state.
     *
     * @param array(string=>mixed) $state The state to set.
     * @return void
     */
     public function setState( array $state )
     {
         foreach ( $state as $attribute => $value )
         {
             $this->$attribute = $value;
         }
     }

    /**
     * Get the PersistentObject state.
     *
     * @return array(string=>mixed) The state of the object.
     */
     public function getState()
     {
         return array(
             'extra' => $this->extra,
             'id' => $this->id,
             'name' => $this->name,
             'size' => $this->size,
             'type' => $this->type,
         );
     }
}
?>
