<?php

/*
 * This file is part of Twig.
 *
 * (c) Fabien Potencier
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

class Twig_SupTwgDtgs_Extension_Profiler extends Twig_SupTwgDtgs_Extension
{
  private $actives = [];

  public function __construct(Twig_SupTwgDtgs_Profiler_Profile $profile)
  {
    $this->actives[] = $profile;
  }

  public function enter(Twig_SupTwgDtgs_Profiler_Profile $profile)
  {
    $this->actives[0]->addProfile($profile);
    array_unshift($this->actives, $profile);
  }

  public function leave(Twig_SupTwgDtgs_Profiler_Profile $profile)
  {
    $profile->leave();
    array_shift($this->actives);

    if (1 === count($this->actives)) {
      $this->actives[0]->leave();
    }
  }

  public function getNodeVisitors()
  {
    return [new Twig_SupTwgDtgs_Profiler_NodeVisitor_Profiler(get_class($this))];
  }

  public function getName()
  {
    return 'profiler';
  }
}
