<?php

namespace Stripe\StripeTaxForWooCommerce\SDK\lib\Util;

use ArrayIterator;
use IteratorAggregate;

class Set implements IteratorAggregate {

	private $_elts;

	public function __construct( $members = array() ) {
		$this->_elts = array();
		foreach ( $members as $item ) {
			$this->_elts[ $item ] = true;
		}
	}

	public function includes( $elt ) {
		return isset( $this->_elts[ $elt ] );
	}

	public function add( $elt ) {
		$this->_elts[ $elt ] = true;
	}

	public function discard( $elt ) {
		unset( $this->_elts[ $elt ] );
	}

	public function toArray() {
		return \array_keys( $this->_elts );
	}

	/**
	 * @return ArrayIterator
	 */
	#[\ReturnTypeWillChange]
	public function getIterator() {
		return new ArrayIterator( $this->toArray() );
	}
}
