| 
<?phpnamespace eMacros\Runtime\Argument;
 
 use eMacros\Applicable;
 use eMacros\Scope;
 use eMacros\GenericList;
 
 class ArgumentGet implements Applicable {
 /**
 * Argument index to obtain
 * @var int
 */
 public $index;
 
 public function __construct($index = null) {
 $this->index = $index;
 }
 
 /**
 * Obtains argument at given index
 * Usage: (%0) (% _num)
 * Returns: mixed
 * (non-PHPdoc)
 * @see \eMacros\Applicable::apply()
 */
 public function apply(Scope $scope, GenericList $arguments) {
 if (is_null($this->index)) {
 if (count($arguments) == 0) {
 throw new \BadFunctionCallException("ArgumentGet: No index specified.");
 }
 
 $index = intval($arguments[0]->evaluate($scope));
 }
 else {
 $index = $this->index;
 }
 
 if (!array_key_exists($index, $scope->arguments)) {
 throw new \UnexpectedValueException(sprintf("ArgumentGet: No parameter found at index %d.", $index));
 }
 
 return $scope->arguments[$index];
 }
 }
 ?>
 |