text: <?php
  
  /*
   * This file is part of SwiftMailer.
   * (c) 2004-2009 Chris Corbyn
   *
   * For the full copyright and license information, please view the LICENSE
   * file that was distributed with this source code.
   */
  
  /**
   * General utility class in Swift Mailer, not to be instantiated.
   *
   *
   * @author Chris Corbyn
   */
  abstract class Swift
  {
      /** Swift Mailer Version number generated during dist release process */
      const VERSION = '@SWIFT_VERSION_NUMBER@';
  
      public static $initialized = false;
      public static $inits = array();
  
      /**
       * Registers an initializer callable that will be called the first time
       * a SwiftMailer class is autoloaded.
       *
       * This enables you to tweak the default configuration in a lazy way.
       *
       * @param mixed $callable A valid PHP callable that will be called when autoloading the first Swift class
       */
      public static function init($callable)
      {
          self::$inits[] = $callable;
      }
  
      /**
       * Internal autoloader for spl_autoload_register().
       *
       * @param string $class
       */
      public static function autoload($class)
      {
          // Don't interfere with other autoloaders
          if (0 !== strpos($class, 'Swift_')) {
              return;
          }
  
          $path = __DIR__.'/'.str_replace('_', '/', $class).'.php';
  
          if (!file_exists($path)) {
              return;
          }
  
          require $path;
  
          if (self::$inits && !self::$initialized) {
              self::$initialized = true;
              foreach (self::$inits as $init) {
                  call_user_func($init);
              }
          }
      }
  
      /**
       * Configure autoloading using Swift Mailer.
       *
       * This is designed to play nicely with other autoloaders.
       *
       * @param mixed $callable A valid PHP callable that will be called when autoloading the first Swift class
       */
      public static function registerAutoload($callable = null)
      {
          if (null !== $callable) {
              self::$inits[] = $callable;
          }
          spl_autoload_register(array('Swift', 'autoload'));
      }
  }
  