<?php

namespace Aws\DynamoDb;

use ArrayIterator;
use Countable;
use IteratorAggregate;
use JsonSerializable;

/**
 * Special object to represent a DynamoDB set (SS/NS/BS) value.
 */
class SetValue implements JsonSerializable, Countable, IteratorAggregate {
	/** @var array Values in the set as provided. */
	private $values;

	/**
	 * @param array $values Values in the set.
	 */
	public function __construct( array $values ) {
		$this->values = $values;
	}

	public function count() {
		return count( $this->values );
	}

	public function getIterator() {
		return new ArrayIterator( $this->values );
	}

	public function jsonSerialize() {
		return $this->toArray();
	}

	/**
	 * Get the values formatted for PHP and JSON.
	 *
	 * @return array
	 */
	public function toArray() {
		return $this->values;
	}
}
