summaryrefslogtreecommitdiff
path: root/framework/Vendor
diff options
context:
space:
mode:
authorFabio Bas <ctrlaltca@gmail.com>2015-02-05 11:45:26 +0100
committerFabio Bas <ctrlaltca@gmail.com>2015-02-05 11:45:26 +0100
commit6dae236ec5528522de472637f9d70a98158b9a5d (patch)
tree0392bc0afb1f09921810d8b313b1f22b2f360106 /framework/Vendor
parent81efaa0c6acdcd2e36081fed21ad5eac11fad3bc (diff)
Renamed 3rdparty directory to vendor
Php namespaces can’t begin with a number
Diffstat (limited to 'framework/Vendor')
-rw-r--r--framework/Vendor/FirePHPCore/FirePHP.class.php1528
-rw-r--r--framework/Vendor/FirePHPCore/FirePHP.class.php41291
-rw-r--r--framework/Vendor/FirePHPCore/LICENSE29
-rw-r--r--framework/Vendor/FirePHPCore/fb.php261
-rw-r--r--framework/Vendor/FirePHPCore/fb.php4251
-rw-r--r--framework/Vendor/Parsedown/LICENSE.txt20
-rwxr-xr-xframework/Vendor/Parsedown/Parsedown.php1135
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell.php1091
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Commands.php72
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions.php86
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/Autoload.php60
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php84
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/Colour.php120
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/ExecutionTime.php56
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/InlineHelp.php140
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/LoadScript.php32
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/Prototypes.php16235
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Extensions/VerbosePrint.php56
-rw-r--r--framework/Vendor/PhpShell/PHP/Shell/Options.php132
-rw-r--r--framework/Vendor/PhpShell/README86
-rw-r--r--framework/Vendor/PhpShell/php-shell-cmd.php86
-rw-r--r--framework/Vendor/PhpShell/php-shell-init.php87
-rw-r--r--framework/Vendor/ReCaptcha/LICENSE22
-rw-r--r--framework/Vendor/ReCaptcha/recaptchalib.php276
-rw-r--r--framework/Vendor/SafeHtml/HTMLSax3.php693
-rw-r--r--framework/Vendor/SafeHtml/HTMLSax3/Decorators.php361
-rw-r--r--framework/Vendor/SafeHtml/HTMLSax3/States.php286
-rw-r--r--framework/Vendor/SafeHtml/TSafeHtmlParser.php685
-rw-r--r--framework/Vendor/SafeHtml/license.txt26
-rw-r--r--framework/Vendor/SafeHtml/readme.txt81
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter.php396
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/ABAP.php505
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/CPP.php840
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/CSS.php383
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/DIFF.php366
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/DTD.php408
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Generator.php1253
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/HTML.php220
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/JAVA.php784
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/JAVASCRIPT.php613
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/MYSQL.php416
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/PERL.php1334
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/PHP.php1089
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/PRADO.php254
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/PYTHON.php629
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/RUBY.php807
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer.php151
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Array.php198
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/BB.php237
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Console.php207
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Html.php445
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php186
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/JSON.php85
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/XML.php102
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/SQL.php401
-rw-r--r--framework/Vendor/TextHighlighter/Text/Highlighter/XML.php245
-rw-r--r--framework/Vendor/TextHighlighter/Text/README455
-rw-r--r--framework/Vendor/TextHighlighter/Text/TODO12
-rw-r--r--framework/Vendor/TextHighlighter/Text/abap.xml802
-rw-r--r--framework/Vendor/TextHighlighter/Text/cpp.xml201
-rw-r--r--framework/Vendor/TextHighlighter/Text/css.xml361
-rw-r--r--framework/Vendor/TextHighlighter/Text/diff.xml45
-rw-r--r--framework/Vendor/TextHighlighter/Text/dtd.xml66
-rw-r--r--framework/Vendor/TextHighlighter/Text/generate171
-rw-r--r--framework/Vendor/TextHighlighter/Text/generate.bat188
-rw-r--r--framework/Vendor/TextHighlighter/Text/html.xml33
-rw-r--r--framework/Vendor/TextHighlighter/Text/java.xml2824
-rw-r--r--framework/Vendor/TextHighlighter/Text/javascript.xml173
-rw-r--r--framework/Vendor/TextHighlighter/Text/mysql.xml424
-rw-r--r--framework/Vendor/TextHighlighter/Text/package.xml243
-rw-r--r--framework/Vendor/TextHighlighter/Text/perl.xml439
-rw-r--r--framework/Vendor/TextHighlighter/Text/php.xml194
-rw-r--r--framework/Vendor/TextHighlighter/Text/prado.xml40
-rw-r--r--framework/Vendor/TextHighlighter/Text/python.xml229
-rw-r--r--framework/Vendor/TextHighlighter/Text/ruby.xml141
-rw-r--r--framework/Vendor/TextHighlighter/Text/sample.css57
-rw-r--r--framework/Vendor/TextHighlighter/Text/sql.xml496
-rw-r--r--framework/Vendor/TextHighlighter/Text/xml.xml37
-rw-r--r--framework/Vendor/TextHighlighter/highlight.css441
-rw-r--r--framework/Vendor/TinyMCE/license.txt504
-rw-r--r--framework/Vendor/TinyMCE/tiny_mce.md51
-rw-r--r--framework/Vendor/TinyMCE/tiny_mce.tarbin0 -> 6231552 bytes
-rw-r--r--framework/Vendor/WsdlGen/Wsdl.php286
-rw-r--r--framework/Vendor/WsdlGen/WsdlGenerator.php317
-rw-r--r--framework/Vendor/WsdlGen/WsdlMessage.php80
-rw-r--r--framework/Vendor/WsdlGen/WsdlOperation.php135
-rw-r--r--framework/Vendor/readme.html172
87 files changed, 47489 insertions, 0 deletions
diff --git a/framework/Vendor/FirePHPCore/FirePHP.class.php b/framework/Vendor/FirePHPCore/FirePHP.class.php
new file mode 100644
index 00000000..7d3b95f6
--- /dev/null
+++ b/framework/Vendor/FirePHPCore/FirePHP.class.php
@@ -0,0 +1,1528 @@
+<?php
+/**
+ * *** BEGIN LICENSE BLOCK *****
+ *
+ * This file is part of FirePHP (http://www.firephp.org/).
+ *
+ * Software License Agreement (New BSD License)
+ *
+ * Copyright (c) 2006-2009, Christoph Dorn
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Christoph Dorn nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK *****
+ *
+ * @copyright Copyright (C) 2007-2009 Christoph Dorn
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @package FirePHP
+ */
+
+
+/**
+ * Sends the given data to the FirePHP Firefox Extension.
+ * The data can be displayed in the Firebug Console or in the
+ * "Server" request tab.
+ *
+ * For more information see: http://www.firephp.org/
+ *
+ * @copyright Copyright (C) 2007-2009 Christoph Dorn
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @package FirePHP
+ */
+class FirePHP {
+
+ /**
+ * FirePHP version
+ *
+ * @var string
+ */
+ const VERSION = '0.3';
+
+ /**
+ * Firebug LOG level
+ *
+ * Logs a message to firebug console.
+ *
+ * @var string
+ */
+ const LOG = 'LOG';
+
+ /**
+ * Firebug INFO level
+ *
+ * Logs a message to firebug console and displays an info icon before the message.
+ *
+ * @var string
+ */
+ const INFO = 'INFO';
+
+ /**
+ * Firebug WARN level
+ *
+ * Logs a message to firebug console, displays an warning icon before the message and colors the line turquoise.
+ *
+ * @var string
+ */
+ const WARN = 'WARN';
+
+ /**
+ * Firebug ERROR level
+ *
+ * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count.
+ *
+ * @var string
+ */
+ const ERROR = 'ERROR';
+
+ /**
+ * Dumps a variable to firebug's server panel
+ *
+ * @var string
+ */
+ const DUMP = 'DUMP';
+
+ /**
+ * Displays a stack trace in firebug console
+ *
+ * @var string
+ */
+ const TRACE = 'TRACE';
+
+ /**
+ * Displays an exception in firebug console
+ *
+ * Increments the firebug error count.
+ *
+ * @var string
+ */
+ const EXCEPTION = 'EXCEPTION';
+
+ /**
+ * Displays an table in firebug console
+ *
+ * @var string
+ */
+ const TABLE = 'TABLE';
+
+ /**
+ * Starts a group in firebug console
+ *
+ * @var string
+ */
+ const GROUP_START = 'GROUP_START';
+
+ /**
+ * Ends a group in firebug console
+ *
+ * @var string
+ */
+ const GROUP_END = 'GROUP_END';
+
+ /**
+ * Singleton instance of FirePHP
+ *
+ * @var FirePHP
+ */
+ protected static $instance = null;
+
+ /**
+ * Flag whether we are logging from within the exception handler
+ *
+ * @var boolean
+ */
+ protected $inExceptionHandler = false;
+
+ /**
+ * Flag whether to throw PHP errors that have been converted to ErrorExceptions
+ *
+ * @var boolean
+ */
+ protected $throwErrorExceptions = true;
+
+ /**
+ * Flag whether to convert PHP assertion errors to Exceptions
+ *
+ * @var boolean
+ */
+ protected $convertAssertionErrorsToExceptions = true;
+
+ /**
+ * Flag whether to throw PHP assertion errors that have been converted to Exceptions
+ *
+ * @var boolean
+ */
+ protected $throwAssertionExceptions = false;
+
+ /**
+ * Wildfire protocol message index
+ *
+ * @var int
+ */
+ protected $messageIndex = 1;
+
+ /**
+ * Options for the library
+ *
+ * @var array
+ */
+ protected $options = array('maxObjectDepth' => 10,
+ 'maxArrayDepth' => 20,
+ 'useNativeJsonEncode' => true,
+ 'includeLineNumbers' => true);
+
+ /**
+ * Filters used to exclude object members when encoding
+ *
+ * @var array
+ */
+ protected $objectFilters = array();
+
+ /**
+ * A stack of objects used to detect recursion during object encoding
+ *
+ * @var object
+ */
+ protected $objectStack = array();
+
+ /**
+ * Flag to enable/disable logging
+ *
+ * @var boolean
+ */
+ protected $enabled = true;
+
+ /**
+ * The object constructor
+ */
+ function __construct() {
+ }
+
+ /**
+ * When the object gets serialized only include specific object members.
+ *
+ * @return array
+ */
+ public function __sleep() {
+ return array('options','objectFilters','enabled');
+ }
+
+ /**
+ * Gets singleton instance of FirePHP
+ *
+ * @param boolean $AutoCreate
+ * @return FirePHP
+ */
+ public static function getInstance($AutoCreate=false) {
+ if($AutoCreate===true && !self::$instance) {
+ self::init();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Creates FirePHP object and stores it for singleton access
+ *
+ * @return FirePHP
+ */
+ public static function init() {
+ return self::$instance = new self();
+ }
+
+ /**
+ * Enable and disable logging to Firebug
+ *
+ * @param boolean $Enabled TRUE to enable, FALSE to disable
+ * @return void
+ */
+ public function setEnabled($Enabled) {
+ $this->enabled = $Enabled;
+ }
+
+ /**
+ * Check if logging is enabled
+ *
+ * @return boolean TRUE if enabled
+ */
+ public function getEnabled() {
+ return $this->enabled;
+ }
+
+ /**
+ * Specify a filter to be used when encoding an object
+ *
+ * Filters are used to exclude object members.
+ *
+ * @param string $Class The class name of the object
+ * @param array $Filter An array of members to exclude
+ * @return void
+ */
+ public function setObjectFilter($Class, $Filter) {
+ $this->objectFilters[$Class] = $Filter;
+ }
+
+ /**
+ * Set some options for the library
+ *
+ * Options:
+ * - maxObjectDepth: The maximum depth to traverse objects (default: 10)
+ * - maxArrayDepth: The maximum depth to traverse arrays (default: 20)
+ * - useNativeJsonEncode: If true will use json_encode() (default: true)
+ * - includeLineNumbers: If true will include line numbers and filenames (default: true)
+ *
+ * @param array $Options The options to be set
+ * @return void
+ */
+ public function setOptions($Options) {
+ $this->options = array_merge($this->options,$Options);
+ }
+
+ /**
+ * Get options from the library
+ *
+ * @return array The currently set options
+ */
+ public function getOptions() {
+ return $this->options;
+ }
+
+ /**
+ * Register FirePHP as your error handler
+ *
+ * Will throw exceptions for each php error.
+ *
+ * @return mixed Returns a string containing the previously defined error handler (if any)
+ */
+ public function registerErrorHandler($throwErrorExceptions=true)
+ {
+ //NOTE: The following errors will not be caught by this error handler:
+ // E_ERROR, E_PARSE, E_CORE_ERROR,
+ // E_CORE_WARNING, E_COMPILE_ERROR,
+ // E_COMPILE_WARNING, E_STRICT
+
+ $this->throwErrorExceptions = $throwErrorExceptions;
+
+ return set_error_handler(array($this,'errorHandler'));
+ }
+
+ /**
+ * FirePHP's error handler
+ *
+ * Throws exception for each php error that will occur.
+ *
+ * @param int $errno
+ * @param string $errstr
+ * @param string $errfile
+ * @param int $errline
+ * @param array $errcontext
+ */
+ public function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
+ {
+ // Don't throw exception if error reporting is switched off
+ if (error_reporting() == 0) {
+ return;
+ }
+ // Only throw exceptions for errors we are asking for
+ if (error_reporting() & $errno) {
+
+ $exception = new ErrorException($errstr, 0, $errno, $errfile, $errline);
+ if($this->throwErrorExceptions) {
+ throw $exception;
+ } else {
+ $this->fb($exception);
+ }
+ }
+ }
+
+ /**
+ * Register FirePHP as your exception handler
+ *
+ * @return mixed Returns the name of the previously defined exception handler,
+ * or NULL on error.
+ * If no previous handler was defined, NULL is also returned.
+ */
+ public function registerExceptionHandler()
+ {
+ return set_exception_handler(array($this,'exceptionHandler'));
+ }
+
+ /**
+ * FirePHP's exception handler
+ *
+ * Logs all exceptions to your firebug console and then stops the script.
+ *
+ * @param Exception $Exception
+ * @throws Exception
+ */
+ function exceptionHandler($Exception) {
+
+ $this->inExceptionHandler = true;
+
+ header('HTTP/1.1 500 Internal Server Error');
+
+ $this->fb($Exception);
+
+ $this->inExceptionHandler = false;
+ }
+
+ /**
+ * Register FirePHP driver as your assert callback
+ *
+ * @param boolean $convertAssertionErrorsToExceptions
+ * @param boolean $throwAssertionExceptions
+ * @return mixed Returns the original setting or FALSE on errors
+ */
+ public function registerAssertionHandler($convertAssertionErrorsToExceptions=true, $throwAssertionExceptions=false)
+ {
+ $this->convertAssertionErrorsToExceptions = $convertAssertionErrorsToExceptions;
+ $this->throwAssertionExceptions = $throwAssertionExceptions;
+
+ if($throwAssertionExceptions && !$convertAssertionErrorsToExceptions) {
+ throw $this->newException('Cannot throw assertion exceptions as assertion errors are not being converted to exceptions!');
+ }
+
+ return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler'));
+ }
+
+ /**
+ * FirePHP's assertion handler
+ *
+ * Logs all assertions to your firebug console and then stops the script.
+ *
+ * @param string $file File source of assertion
+ * @param int $line Line source of assertion
+ * @param mixed $code Assertion code
+ */
+ public function assertionHandler($file, $line, $code)
+ {
+
+ if($this->convertAssertionErrorsToExceptions) {
+
+ $exception = new ErrorException('Assertion Failed - Code[ '.$code.' ]', 0, null, $file, $line);
+
+ if($this->throwAssertionExceptions) {
+ throw $exception;
+ } else {
+ $this->fb($exception);
+ }
+
+ } else {
+
+ $this->fb($code, 'Assertion Failed', FirePHP::ERROR, array('File'=>$file,'Line'=>$line));
+
+ }
+ }
+
+ /**
+ * Set custom processor url for FirePHP
+ *
+ * @param string $URL
+ */
+ public function setProcessorUrl($URL)
+ {
+ $this->setHeader('X-FirePHP-ProcessorURL', $URL);
+ }
+
+ /**
+ * Set custom renderer url for FirePHP
+ *
+ * @param string $URL
+ */
+ public function setRendererUrl($URL)
+ {
+ $this->setHeader('X-FirePHP-RendererURL', $URL);
+ }
+
+ /**
+ * Start a group for following messages.
+ *
+ * Options:
+ * Collapsed: [true|false]
+ * Color: [#RRGGBB|ColorName]
+ *
+ * @param string $Name
+ * @param array $Options OPTIONAL Instructions on how to log the group
+ * @return true
+ * @throws Exception
+ */
+ public function group($Name, $Options=null) {
+
+ if(!$Name) {
+ throw $this->newException('You must specify a label for the group!');
+ }
+
+ if($Options) {
+ if(!is_array($Options)) {
+ throw $this->newException('Options must be defined as an array!');
+ }
+ if(array_key_exists('Collapsed', $Options)) {
+ $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false';
+ }
+ }
+
+ return $this->fb(null, $Name, FirePHP::GROUP_START, $Options);
+ }
+
+ /**
+ * Ends a group you have started before
+ *
+ * @return true
+ * @throws Exception
+ */
+ public function groupEnd() {
+ return $this->fb(null, null, FirePHP::GROUP_END);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::LOG
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public function log($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP::LOG);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::INFO
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public function info($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP::INFO);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::WARN
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public function warn($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP::WARN);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::ERROR
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public function error($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP::ERROR);
+ }
+
+ /**
+ * Dumps key and variable to firebug server panel
+ *
+ * @see FirePHP::DUMP
+ * @param string $Key
+ * @param mixed $Variable
+ * @return true
+ * @throws Exception
+ */
+ public function dump($Key, $Variable) {
+ return $this->fb($Variable, $Key, FirePHP::DUMP);
+ }
+
+ /**
+ * Log a trace in the firebug console
+ *
+ * @see FirePHP::TRACE
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public function trace($Label) {
+ return $this->fb($Label, FirePHP::TRACE);
+ }
+
+ /**
+ * Log a table in the firebug console
+ *
+ * @see FirePHP::TABLE
+ * @param string $Label
+ * @param string $Table
+ * @return true
+ * @throws Exception
+ */
+ public function table($Label, $Table) {
+ return $this->fb($Table, $Label, FirePHP::TABLE);
+ }
+
+ /**
+ * Check if FirePHP is installed on client
+ *
+ * @return boolean
+ */
+ public function detectClientExtension() {
+ /* Check if FirePHP is installed on client */
+ if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) ||
+ !version_compare($m[1][0],'0.0.6','>=')) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Log varible to Firebug
+ *
+ * @see http://www.firephp.org/Wiki/Reference/Fb
+ * @param mixed $Object The variable to be logged
+ * @return true Return TRUE if message was added to headers, FALSE otherwise
+ * @throws Exception
+ */
+ public function fb($Object) {
+
+ if(!$this->enabled) {
+ return false;
+ }
+
+ if (headers_sent($filename, $linenum)) {
+ // If we are logging from within the exception handler we cannot throw another exception
+ if($this->inExceptionHandler) {
+ // Simply echo the error out to the page
+ echo '<div style="border: 2px solid red; font-family: Arial; font-size: 12px; background-color: lightgray; padding: 5px;"><span style="color: red; font-weight: bold;">FirePHP ERROR:</span> Headers already sent in <b>'.$filename.'</b> on line <b>'.$linenum.'</b>. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.</div>';
+ } else {
+ throw $this->newException('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
+ }
+ }
+
+ $Type = null;
+ $Label = null;
+ $Options = array();
+
+ if(func_num_args()==1) {
+ } else
+ if(func_num_args()==2) {
+ switch(func_get_arg(1)) {
+ case self::LOG:
+ case self::INFO:
+ case self::WARN:
+ case self::ERROR:
+ case self::DUMP:
+ case self::TRACE:
+ case self::EXCEPTION:
+ case self::TABLE:
+ case self::GROUP_START:
+ case self::GROUP_END:
+ $Type = func_get_arg(1);
+ break;
+ default:
+ $Label = func_get_arg(1);
+ break;
+ }
+ } else
+ if(func_num_args()==3) {
+ $Type = func_get_arg(2);
+ $Label = func_get_arg(1);
+ } else
+ if(func_num_args()==4) {
+ $Type = func_get_arg(2);
+ $Label = func_get_arg(1);
+ $Options = func_get_arg(3);
+ } else {
+ throw $this->newException('Wrong number of arguments to fb() function!');
+ }
+
+
+ if(!$this->detectClientExtension()) {
+ return false;
+ }
+
+ $meta = array();
+ $skipFinalObjectEncode = false;
+
+ if($Object instanceof Exception) {
+
+ $meta['file'] = $this->_escapeTraceFile($Object->getFile());
+ $meta['line'] = $Object->getLine();
+
+ $trace = $Object->getTrace();
+ if($Object instanceof ErrorException
+ && isset($trace[0]['function'])
+ && $trace[0]['function']=='errorHandler'
+ && isset($trace[0]['class'])
+ && $trace[0]['class']=='FirePHP') {
+
+ $severity = false;
+ switch($Object->getSeverity()) {
+ case E_WARNING: $severity = 'E_WARNING'; break;
+ case E_NOTICE: $severity = 'E_NOTICE'; break;
+ case E_USER_ERROR: $severity = 'E_USER_ERROR'; break;
+ case E_USER_WARNING: $severity = 'E_USER_WARNING'; break;
+ case E_USER_NOTICE: $severity = 'E_USER_NOTICE'; break;
+ case E_STRICT: $severity = 'E_STRICT'; break;
+ case E_RECOVERABLE_ERROR: $severity = 'E_RECOVERABLE_ERROR'; break;
+ case E_DEPRECATED: $severity = 'E_DEPRECATED'; break;
+ case E_USER_DEPRECATED: $severity = 'E_USER_DEPRECATED'; break;
+ }
+
+ $Object = array('Class'=>get_class($Object),
+ 'Message'=>$severity.': '.$Object->getMessage(),
+ 'File'=>$this->_escapeTraceFile($Object->getFile()),
+ 'Line'=>$Object->getLine(),
+ 'Type'=>'trigger',
+ 'Trace'=>$this->_escapeTrace(array_splice($trace,2)));
+ $skipFinalObjectEncode = true;
+ } else {
+ $Object = array('Class'=>get_class($Object),
+ 'Message'=>$Object->getMessage(),
+ 'File'=>$this->_escapeTraceFile($Object->getFile()),
+ 'Line'=>$Object->getLine(),
+ 'Type'=>'throw',
+ 'Trace'=>$this->_escapeTrace($trace));
+ $skipFinalObjectEncode = true;
+ }
+ $Type = self::EXCEPTION;
+
+ } else
+ if($Type==self::TRACE) {
+
+ $trace = debug_backtrace();
+ if(!$trace) return false;
+ for( $i=0 ; $i<sizeof($trace) ; $i++ ) {
+
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i]['file'])
+ && ($trace[$i]['class']=='FirePHP'
+ || $trace[$i]['class']=='FB')
+ && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
+ || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
+ /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
+ } else
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i+1]['file'])
+ && $trace[$i]['class']=='FirePHP'
+ && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
+ /* Skip fb() */
+ } else
+ if($trace[$i]['function']=='fb'
+ || $trace[$i]['function']=='trace'
+ || $trace[$i]['function']=='send') {
+ $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'',
+ 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'',
+ 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'',
+ 'Message'=>$trace[$i]['args'][0],
+ 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'',
+ 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'',
+ 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'',
+ 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1)));
+
+ $skipFinalObjectEncode = true;
+ $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
+ $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
+ break;
+ }
+ }
+
+ } else
+ if($Type==self::TABLE) {
+
+ if(isset($Object[0]) && is_string($Object[0])) {
+ $Object[1] = $this->encodeTable($Object[1]);
+ } else {
+ $Object = $this->encodeTable($Object);
+ }
+
+ $skipFinalObjectEncode = true;
+
+ } else
+ if($Type==self::GROUP_START) {
+
+ if(!$Label) {
+ throw $this->newException('You must specify a label for the group!');
+ }
+
+ } else {
+ if($Type===null) {
+ $Type = self::LOG;
+ }
+ }
+
+ if($this->options['includeLineNumbers']) {
+ if(!isset($meta['file']) || !isset($meta['line'])) {
+
+ $trace = debug_backtrace();
+ for( $i=0 ; $trace && $i<sizeof($trace) ; $i++ ) {
+
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i]['file'])
+ && ($trace[$i]['class']=='FirePHP'
+ || $trace[$i]['class']=='FB')
+ && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
+ || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
+ /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
+ } else
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i+1]['file'])
+ && $trace[$i]['class']=='FirePHP'
+ && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
+ /* Skip fb() */
+ } else
+ if(isset($trace[$i]['file'])
+ && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') {
+ /* Skip FB::fb() */
+ } else {
+ $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
+ $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
+ break;
+ }
+ }
+
+ }
+ } else {
+ unset($meta['file']);
+ unset($meta['line']);
+ }
+
+ $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
+ $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.self::VERSION);
+
+ $structure_index = 1;
+ if($Type==self::DUMP) {
+ $structure_index = 2;
+ $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
+ } else {
+ $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
+ }
+
+ if($Type==self::DUMP) {
+ $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}';
+ } else {
+ $msg_meta = $Options;
+ $msg_meta['Type'] = $Type;
+ if($Label!==null) {
+ $msg_meta['Label'] = $Label;
+ }
+ if(isset($meta['file']) && !isset($msg_meta['File'])) {
+ $msg_meta['File'] = $meta['file'];
+ }
+ if(isset($meta['line']) && !isset($msg_meta['Line'])) {
+ $msg_meta['Line'] = $meta['line'];
+ }
+ $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']';
+ }
+
+ $parts = explode("\n",chunk_split($msg, 5000, "\n"));
+
+ for( $i=0 ; $i<count($parts) ; $i++) {
+
+ $part = $parts[$i];
+ if ($part) {
+
+ if(count($parts)>2) {
+ // Message needs to be split into multiple parts
+ $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
+ (($i==0)?strlen($msg):'')
+ . '|' . $part . '|'
+ . (($i<count($parts)-2)?'\\':''));
+ } else {
+ $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
+ strlen($part) . '|' . $part . '|');
+ }
+
+ $this->messageIndex++;
+
+ if ($this->messageIndex > 99999) {
+ throw $this->newException('Maximum number (99,999) of messages reached!');
+ }
+ }
+ }
+
+ $this->setHeader('X-Wf-1-Index',$this->messageIndex-1);
+
+ return true;
+ }
+
+ /**
+ * Standardizes path for windows systems.
+ *
+ * @param string $Path
+ * @return string
+ */
+ protected function _standardizePath($Path) {
+ return preg_replace('/\\\\+/','/',$Path);
+ }
+
+ /**
+ * Escape trace path for windows systems
+ *
+ * @param array $Trace
+ * @return array
+ */
+ protected function _escapeTrace($Trace) {
+ if(!$Trace) return $Trace;
+ for( $i=0 ; $i<sizeof($Trace) ; $i++ ) {
+ if(isset($Trace[$i]['file'])) {
+ $Trace[$i]['file'] = $this->_escapeTraceFile($Trace[$i]['file']);
+ }
+ if(isset($Trace[$i]['args'])) {
+ $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']);
+ }
+ }
+ return $Trace;
+ }
+
+ /**
+ * Escape file information of trace for windows systems
+ *
+ * @param string $File
+ * @return string
+ */
+ protected function _escapeTraceFile($File) {
+ /* Check if we have a windows filepath */
+ if(strpos($File,'\\')) {
+ /* First strip down to single \ */
+
+ $file = preg_replace('/\\\\+/','\\',$File);
+
+ return $file;
+ }
+ return $File;
+ }
+
+ /**
+ * Send header
+ *
+ * @param string $Name
+ * @param string_type $Value
+ */
+ protected function setHeader($Name, $Value) {
+ return header($Name.': '.$Value);
+ }
+
+ /**
+ * Get user agent
+ *
+ * @return string|false
+ */
+ protected function getUserAgent() {
+ if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;
+ return $_SERVER['HTTP_USER_AGENT'];
+ }
+
+ /**
+ * Returns a new exception
+ *
+ * @param string $Message
+ * @return Exception
+ */
+ protected function newException($Message) {
+ return new Exception($Message);
+ }
+
+ /**
+ * Encode an object into a JSON string
+ *
+ * Uses PHP's jeson_encode() if available
+ *
+ * @param object $Object The object to be encoded
+ * @return string The JSON string
+ */
+ public function jsonEncode($Object, $skipObjectEncode=false)
+ {
+ if(!$skipObjectEncode) {
+ $Object = $this->encodeObject($Object);
+ }
+
+ if(function_exists('json_encode')
+ && $this->options['useNativeJsonEncode']!=false) {
+
+ return json_encode($Object);
+ } else {
+ return $this->json_encode($Object);
+ }
+ }
+
+ /**
+ * Encodes a table by encoding each row and column with encodeObject()
+ *
+ * @param array $Table The table to be encoded
+ * @return array
+ */
+ protected function encodeTable($Table) {
+
+ if(!$Table) return $Table;
+
+ $new_table = array();
+ foreach($Table as $row) {
+
+ if(is_array($row)) {
+ $new_row = array();
+
+ foreach($row as $item) {
+ $new_row[] = $this->encodeObject($item);
+ }
+
+ $new_table[] = $new_row;
+ }
+ }
+
+ return $new_table;
+ }
+
+ /**
+ * Encodes an object including members with
+ * protected and private visibility
+ *
+ * @param Object $Object The object to be encoded
+ * @param int $Depth The current traversal depth
+ * @return array All members of the object
+ */
+ protected function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1)
+ {
+ $return = array();
+
+ if (is_resource($Object)) {
+
+ return '** '.(string)$Object.' **';
+
+ } else
+ if (is_object($Object)) {
+
+ if ($ObjectDepth > $this->options['maxObjectDepth']) {
+ return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **';
+ }
+
+ foreach ($this->objectStack as $refVal) {
+ if ($refVal === $Object) {
+ return '** Recursion ('.get_class($Object).') **';
+ }
+ }
+ array_push($this->objectStack, $Object);
+
+ $return['__className'] = $class = get_class($Object);
+
+ $reflectionClass = new ReflectionClass($class);
+ $properties = array();
+ foreach( $reflectionClass->getProperties() as $property) {
+ $properties[$property->getName()] = $property;
+ }
+
+ $members = (array)$Object;
+
+ foreach( $properties as $raw_name => $property ) {
+
+ $name = $raw_name;
+ if($property->isStatic()) {
+ $name = 'static:'.$name;
+ }
+ if($property->isPublic()) {
+ $name = 'public:'.$name;
+ } else
+ if($property->isPrivate()) {
+ $name = 'private:'.$name;
+ $raw_name = "\0".$class."\0".$raw_name;
+ } else
+ if($property->isProtected()) {
+ $name = 'protected:'.$name;
+ $raw_name = "\0".'*'."\0".$raw_name;
+ }
+
+ if(!(isset($this->objectFilters[$class])
+ && is_array($this->objectFilters[$class])
+ && in_array($raw_name,$this->objectFilters[$class]))) {
+
+ if(array_key_exists($raw_name,$members)
+ && !$property->isStatic()) {
+
+ $return[$name] = $this->encodeObject($members[$raw_name], $ObjectDepth + 1, 1);
+
+ } else {
+ if(method_exists($property,'setAccessible')) {
+ $property->setAccessible(true);
+ $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1);
+ } else
+ if($property->isPublic()) {
+ $return[$name] = $this->encodeObject($property->getValue($Object), $ObjectDepth + 1, 1);
+ } else {
+ $return[$name] = '** Need PHP 5.3 to get value **';
+ }
+ }
+ } else {
+ $return[$name] = '** Excluded by Filter **';
+ }
+ }
+
+ // Include all members that are not defined in the class
+ // but exist in the object
+ foreach( $members as $raw_name => $value ) {
+
+ $name = $raw_name;
+
+ if ($name{0} == "\0") {
+ $parts = explode("\0", $name);
+ $name = $parts[2];
+ }
+
+ if(!isset($properties[$name])) {
+ $name = 'undeclared:'.$name;
+
+ if(!(isset($this->objectFilters[$class])
+ && is_array($this->objectFilters[$class])
+ && in_array($raw_name,$this->objectFilters[$class]))) {
+
+ $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1);
+ } else {
+ $return[$name] = '** Excluded by Filter **';
+ }
+ }
+ }
+
+ array_pop($this->objectStack);
+
+ } elseif (is_array($Object)) {
+
+ if ($ArrayDepth > $this->options['maxArrayDepth']) {
+ return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **';
+ }
+
+ foreach ($Object as $key => $val) {
+
+ // Encoding the $GLOBALS PHP array causes an infinite loop
+ // if the recursion is not reset here as it contains
+ // a reference to itself. This is the only way I have come up
+ // with to stop infinite recursion in this case.
+ if($key=='GLOBALS'
+ && is_array($val)
+ && array_key_exists('GLOBALS',$val)) {
+ $val['GLOBALS'] = '** Recursion (GLOBALS) **';
+ }
+
+ $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1);
+ }
+ } else {
+ if(self::is_utf8($Object)) {
+ return $Object;
+ } else {
+ return utf8_encode($Object);
+ }
+ }
+ return $return;
+ }
+
+ /**
+ * Returns true if $string is valid UTF-8 and false otherwise.
+ *
+ * @param mixed $str String to be tested
+ * @return boolean
+ */
+ protected static function is_utf8($str) {
+ $c=0; $b=0;
+ $bits=0;
+ $len=strlen($str);
+ for($i=0; $i<$len; $i++){
+ $c=ord($str[$i]);
+ if($c > 128){
+ if(($c >= 254)) return false;
+ elseif($c >= 252) $bits=6;
+ elseif($c >= 248) $bits=5;
+ elseif($c >= 240) $bits=4;
+ elseif($c >= 224) $bits=3;
+ elseif($c >= 192) $bits=2;
+ else return false;
+ if(($i+$bits) > $len) return false;
+ while($bits > 1){
+ $i++;
+ $b=ord($str[$i]);
+ if($b < 128 || $b > 191) return false;
+ $bits--;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package Services_JSON
+ * @author Michal Migurski <mike-json@teczno.com>
+ * @author Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @copyright 2005 Michal Migurski
+ * @version CVS: $Id: FirePHP.class.php 3187 2012-07-12 11:21:01Z ctrlaltca $
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+
+ /**
+ * Keep a list of objects as we descend into the array so we can detect recursion.
+ */
+ private $json_objectStack = array();
+
+
+ /**
+ * convert a string from one UTF-8 char to one UTF-16 char
+ *
+ * Normally should be handled by mb_convert_encoding, but
+ * provides a slower PHP-only method for installations
+ * that lack the multibye string extension.
+ *
+ * @param string $utf8 UTF-8 character
+ * @return string UTF-16 character
+ * @access private
+ */
+ private function json_utf82utf16($utf8)
+ {
+ // oh please oh please oh please oh please oh please
+ if(function_exists('mb_convert_encoding')) {
+ return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+ }
+
+ switch(strlen($utf8)) {
+ case 1:
+ // this case should never be reached, because we are in ASCII range
+ // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ return $utf8;
+
+ case 2:
+ // return a UTF-16 character from a 2-byte UTF-8 char
+ // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ return chr(0x07 & (ord($utf8{0}) >> 2))
+ . chr((0xC0 & (ord($utf8{0}) << 6))
+ | (0x3F & ord($utf8{1})));
+
+ case 3:
+ // return a UTF-16 character from a 3-byte UTF-8 char
+ // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ return chr((0xF0 & (ord($utf8{0}) << 4))
+ | (0x0F & (ord($utf8{1}) >> 2)))
+ . chr((0xC0 & (ord($utf8{1}) << 6))
+ | (0x7F & ord($utf8{2})));
+ }
+
+ // ignoring UTF-32 for now, sorry
+ return '';
+ }
+
+ /**
+ * encodes an arbitrary variable into JSON format
+ *
+ * @param mixed $var any number, boolean, string, array, or object to be encoded.
+ * see argument 1 to Services_JSON() above for array-parsing behavior.
+ * if var is a strng, note that encode() always expects it
+ * to be in ASCII or UTF-8 format!
+ *
+ * @return mixed JSON string representation of input var or an error if a problem occurs
+ * @access public
+ */
+ private function json_encode($var)
+ {
+
+ if(is_object($var)) {
+ if(in_array($var,$this->json_objectStack)) {
+ return '"** Recursion **"';
+ }
+ }
+
+ switch (gettype($var)) {
+ case 'boolean':
+ return $var ? 'true' : 'false';
+
+ case 'NULL':
+ return 'null';
+
+ case 'integer':
+ return (int) $var;
+
+ case 'double':
+ case 'float':
+ return (float) $var;
+
+ case 'string':
+ // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+ $ascii = '';
+ $strlen_var = strlen($var);
+
+ /*
+ * Iterate over every character in the string,
+ * escaping with a slash or encoding to UTF-8 where necessary
+ */
+ for ($c = 0; $c < $strlen_var; ++$c) {
+
+ $ord_var_c = ord($var{$c});
+
+ switch (true) {
+ case $ord_var_c == 0x08:
+ $ascii .= '\b';
+ break;
+ case $ord_var_c == 0x09:
+ $ascii .= '\t';
+ break;
+ case $ord_var_c == 0x0A:
+ $ascii .= '\n';
+ break;
+ case $ord_var_c == 0x0C:
+ $ascii .= '\f';
+ break;
+ case $ord_var_c == 0x0D:
+ $ascii .= '\r';
+ break;
+
+ case $ord_var_c == 0x22:
+ case $ord_var_c == 0x2F:
+ case $ord_var_c == 0x5C:
+ // double quote, slash, slosh
+ $ascii .= '\\'.$var{$c};
+ break;
+
+ case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+ // characters U-00000000 - U-0000007F (same as ASCII)
+ $ascii .= $var{$c};
+ break;
+
+ case (($ord_var_c & 0xE0) == 0xC0):
+ // characters U-00000080 - U-000007FF, mask 110XXXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+ $c += 1;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xF0) == 0xE0):
+ // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}));
+ $c += 2;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xF8) == 0xF0):
+ // characters U-00010000 - U-001FFFFF, mask 11110XXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}),
+ ord($var{$c + 3}));
+ $c += 3;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xFC) == 0xF8):
+ // characters U-00200000 - U-03FFFFFF, mask 111110XX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}),
+ ord($var{$c + 3}),
+ ord($var{$c + 4}));
+ $c += 4;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xFE) == 0xFC):
+ // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}),
+ ord($var{$c + 3}),
+ ord($var{$c + 4}),
+ ord($var{$c + 5}));
+ $c += 5;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+ }
+ }
+
+ return '"'.$ascii.'"';
+
+ case 'array':
+ /*
+ * As per JSON spec if any array key is not an integer
+ * we must treat the the whole array as an object. We
+ * also try to catch a sparsely populated associative
+ * array with numeric keys here because some JS engines
+ * will create an array with empty indexes up to
+ * max_index which can cause memory issues and because
+ * the keys, which may be relevant, will be remapped
+ * otherwise.
+ *
+ * As per the ECMA and JSON specification an object may
+ * have any string as a property. Unfortunately due to
+ * a hole in the ECMA specification if the key is a
+ * ECMA reserved word or starts with a digit the
+ * parameter is only accessible using ECMAScript's
+ * bracket notation.
+ */
+
+ // treat as a JSON object
+ if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+
+ $this->json_objectStack[] = $var;
+
+ $properties = array_map(array($this, 'json_name_value'),
+ array_keys($var),
+ array_values($var));
+
+ array_pop($this->json_objectStack);
+
+ foreach($properties as $property) {
+ if($property instanceof Exception) {
+ return $property;
+ }
+ }
+
+ return '{' . join(',', $properties) . '}';
+ }
+
+ $this->json_objectStack[] = $var;
+
+ // treat it like a regular array
+ $elements = array_map(array($this, 'json_encode'), $var);
+
+ array_pop($this->json_objectStack);
+
+ foreach($elements as $element) {
+ if($element instanceof Exception) {
+ return $element;
+ }
+ }
+
+ return '[' . join(',', $elements) . ']';
+
+ case 'object':
+ $vars = self::encodeObject($var);
+
+ $this->json_objectStack[] = $var;
+
+ $properties = array_map(array($this, 'json_name_value'),
+ array_keys($vars),
+ array_values($vars));
+
+ array_pop($this->json_objectStack);
+
+ foreach($properties as $property) {
+ if($property instanceof Exception) {
+ return $property;
+ }
+ }
+
+ return '{' . join(',', $properties) . '}';
+
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * array-walking function for use in generating JSON-formatted name-value pairs
+ *
+ * @param string $name name of key to use
+ * @param mixed $value reference to an array element to be encoded
+ *
+ * @return string JSON-formatted name-value pair, like '"name":value'
+ * @access private
+ */
+ private function json_name_value($name, $value)
+ {
+ // Encoding the $GLOBALS PHP array causes an infinite loop
+ // if the recursion is not reset here as it contains
+ // a reference to itself. This is the only way I have come up
+ // with to stop infinite recursion in this case.
+ if($name=='GLOBALS'
+ && is_array($value)
+ && array_key_exists('GLOBALS',$value)) {
+ $value['GLOBALS'] = '** Recursion **';
+ }
+
+ $encoded_value = $this->json_encode($value);
+
+ if($encoded_value instanceof Exception) {
+ return $encoded_value;
+ }
+
+ return $this->json_encode(strval($name)) . ':' . $encoded_value;
+ }
+}
diff --git a/framework/Vendor/FirePHPCore/FirePHP.class.php4 b/framework/Vendor/FirePHPCore/FirePHP.class.php4
new file mode 100644
index 00000000..3e20120d
--- /dev/null
+++ b/framework/Vendor/FirePHPCore/FirePHP.class.php4
@@ -0,0 +1,1291 @@
+<?php
+/**
+ * *** BEGIN LICENSE BLOCK *****
+ *
+ * This file is part of FirePHP (http://www.firephp.org/).
+ *
+ * Software License Agreement (New BSD License)
+ *
+ * Copyright (c) 2006-2009, Christoph Dorn
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Christoph Dorn nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK *****
+ *
+ * This verion of FirePHPCore is for use with PHP4. If you do not require PHP4
+ * compatibility, it is suggested you use FirePHPCore.class.php instead.
+ *
+ * @copyright Copyright (C) 2007-2009 Christoph Dorn
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @author Michael Day <manveru.alma@gmail.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @package FirePHP
+ */
+
+/**
+ * FirePHP version
+ *
+ * @var string
+ */
+define('FirePHP_VERSION', '0.3');
+
+/**
+ * Firebug LOG level
+ *
+ * Logs a message to firebug console
+ *
+ * @var string
+ */
+define('FirePHP_LOG', 'LOG');
+
+/**
+ * Firebug INFO level
+ *
+ * Logs a message to firebug console and displays an info icon before the message
+ *
+ * @var string
+ */
+define('FirePHP_INFO', 'INFO');
+
+/**
+ * Firebug WARN level
+ *
+ * Logs a message to firebug console, displays a warning icon before the message and colors the line turquoise
+ *
+ * @var string
+ */
+define('FirePHP_WARN', 'WARN');
+
+/**
+ * Firebug ERROR level
+ *
+ * Logs a message to firebug console, displays an error icon before the message and colors the line yellow. Also increments the firebug error count.
+ *
+ * @var string
+ */
+define('FirePHP_ERROR', 'ERROR');
+
+/**
+ * Dumps a variable to firebug's server panel
+ *
+ * @var string
+ */
+define('FirePHP_DUMP', 'DUMP');
+
+/**
+ * Displays a stack trace in firebug console
+ *
+ * @var string
+ */
+define('FirePHP_TRACE', 'TRACE');
+
+/**
+ * Displays a table in firebug console
+ *
+ * @var string
+ */
+define('FirePHP_TABLE', 'TABLE');
+
+/**
+ * Starts a group in firebug console
+ *
+ * @var string
+ */
+define('FirePHP_GROUP_START', 'GROUP_START');
+
+/**
+ * Ends a group in firebug console
+ *
+ * @var string
+ */
+define('FirePHP_GROUP_END', 'GROUP_END');
+
+/**
+ * Sends the given data to the FirePHP Firefox Extension.
+ * The data can be displayed in the Firebug Console or in the
+ * "Server" request tab.
+ *
+ * For more information see: http://www.firephp.org/
+ *
+ * @copyright Copyright (C) 2007-2009 Christoph Dorn
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @author Michael Day <manveru.alma@gmail.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @package FirePHP
+ */
+class FirePHP {
+ /**
+ * Wildfire protocol message index
+ *
+ * @var int
+ */
+ var $messageIndex = 1;
+
+ /**
+ * Options for the library
+ *
+ * @var array
+ */
+ var $options = array('maxObjectDepth' => 10,
+ 'maxArrayDepth' => 20,
+ 'useNativeJsonEncode' => true,
+ 'includeLineNumbers' => true);
+
+ /**
+ * Filters used to exclude object members when encoding
+ *
+ * @var array
+ */
+ var $objectFilters = array();
+
+ /**
+ * A stack of objects used to detect recursion during object encoding
+ *
+ * @var object
+ */
+ var $objectStack = array();
+
+ /**
+ * Flag to enable/disable logging
+ *
+ * @var boolean
+ */
+ var $enabled = true;
+
+ /**
+ * The object constructor
+ */
+ function FirePHP() {
+ }
+
+
+ /**
+ * When the object gets serialized only include specific object members.
+ *
+ * @return array
+ */
+ function __sleep() {
+ return array('options','objectFilters','enabled');
+ }
+
+ /**
+ * Gets singleton instance of FirePHP
+ *
+ * @param boolean $AutoCreate
+ * @return FirePHP
+ */
+ function &getInstance($AutoCreate=false) {
+ global $FirePHP_Instance;
+
+ if($AutoCreate===true && !$FirePHP_Instance) {
+ $FirePHP_Instance = new FirePHP();
+ }
+
+ return $FirePHP_Instance;
+ }
+
+ /**
+ * Enable and disable logging to Firebug
+ *
+ * @param boolean $Enabled TRUE to enable, FALSE to disable
+ * @return void
+ */
+ function setEnabled($Enabled) {
+ $this->enabled = $Enabled;
+ }
+
+ /**
+ * Check if logging is enabled
+ *
+ * @return boolean TRUE if enabled
+ */
+ function getEnabled() {
+ return $this->enabled;
+ }
+
+ /**
+ * Specify a filter to be used when encoding an object
+ *
+ * Filters are used to exclude object members.
+ *
+ * @param string $Class The class name of the object
+ * @param array $Filter An array of members to exclude
+ * @return void
+ */
+ function setObjectFilter($Class, $Filter) {
+ $this->objectFilters[$Class] = $Filter;
+ }
+
+ /**
+ * Set some options for the library
+ *
+ * Options:
+ * - maxObjectDepth: The maximum depth to traverse objects (default: 10)
+ * - maxArrayDepth: The maximum depth to traverse arrays (default: 20)
+ * - useNativeJsonEncode: If true will use json_encode() (default: true)
+ * - includeLineNumbers: If true will include line numbers and filenames (default: true)
+ *
+ * @param array $Options The options to be set
+ * @return void
+ */
+ function setOptions($Options) {
+ $this->options = array_merge($this->options,$Options);
+ }
+
+ /**
+ * Get options from the library
+ *
+ * @return array The currently set options
+ */
+ function getOptions() {
+ return $this->options;
+ }
+
+ /**
+ * Register FirePHP as your error handler
+ *
+ * Will use FirePHP to log each php error.
+ *
+ * @return mixed Returns a string containing the previously defined error handler (if any)
+ */
+ function registerErrorHandler()
+ {
+ //NOTE: The following errors will not be caught by this error handler:
+ // E_ERROR, E_PARSE, E_CORE_ERROR,
+ // E_CORE_WARNING, E_COMPILE_ERROR,
+ // E_COMPILE_WARNING, E_STRICT
+
+ return set_error_handler(array($this,'errorHandler'));
+ }
+
+ /**
+ * FirePHP's error handler
+ *
+ * Logs each php error that will occur.
+ *
+ * @param int $errno
+ * @param string $errstr
+ * @param string $errfile
+ * @param int $errline
+ * @param array $errcontext
+ */
+ function errorHandler($errno, $errstr, $errfile, $errline, $errcontext)
+ {
+ global $FirePHP_Instance;
+ // Don't log error if error reporting is switched off
+ if (error_reporting() == 0) {
+ return;
+ }
+ // Only log error for errors we are asking for
+ if (error_reporting() & $errno) {
+ $FirePHP_Instance->group($errstr);
+ $FirePHP_Instance->error("{$errfile}, line $errline");
+ $FirePHP_Instance->groupEnd();
+ }
+ }
+
+ /**
+ * Register FirePHP driver as your assert callback
+ *
+ * @return mixed Returns the original setting
+ */
+ function registerAssertionHandler()
+ {
+ return assert_options(ASSERT_CALLBACK, array($this, 'assertionHandler'));
+ }
+
+ /**
+ * FirePHP's assertion handler
+ *
+ * Logs all assertions to your firebug console and then stops the script.
+ *
+ * @param string $file File source of assertion
+ * @param int $line Line source of assertion
+ * @param mixed $code Assertion code
+ */
+ function assertionHandler($file, $line, $code)
+ {
+ $this->fb($code, 'Assertion Failed', FirePHP_ERROR, array('File'=>$file,'Line'=>$line));
+ }
+
+ /**
+ * Set custom processor url for FirePHP
+ *
+ * @param string $URL
+ */
+ function setProcessorUrl($URL)
+ {
+ $this->setHeader('X-FirePHP-ProcessorURL', $URL);
+ }
+
+ /**
+ * Set custom renderer url for FirePHP
+ *
+ * @param string $URL
+ */
+ function setRendererUrl($URL)
+ {
+ $this->setHeader('X-FirePHP-RendererURL', $URL);
+ }
+
+ /**
+ * Start a group for following messages.
+ *
+ * Options:
+ * Collapsed: [true|false]
+ * Color: [#RRGGBB|ColorName]
+ *
+ * @param string $Name
+ * @param array $Options OPTIONAL Instructions on how to log the group
+ * @return true
+ * @throws Exception
+ */
+ function group($Name, $Options=null) {
+
+ if(!$Name) {
+ trigger_error('You must specify a label for the group!');
+ }
+
+ if($Options) {
+ if(!is_array($Options)) {
+ trigger_error('Options must be defined as an array!');
+ }
+ if(array_key_exists('Collapsed', $Options)) {
+ $Options['Collapsed'] = ($Options['Collapsed'])?'true':'false';
+ }
+ }
+
+ return $this->fb(null, $Name, FirePHP_GROUP_START, $Options);
+ }
+
+ /**
+ * Ends a group you have started before
+ *
+ * @return true
+ * @throws Exception
+ */
+ function groupEnd() {
+ return $this->fb(null, null, FirePHP_GROUP_END);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::LOG
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ function log($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP_LOG);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::INFO
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ function info($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP_INFO);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::WARN
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ function warn($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP_WARN);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::ERROR
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ function error($Object, $Label=null) {
+ return $this->fb($Object, $Label, FirePHP_ERROR);
+ }
+
+ /**
+ * Dumps key and variable to firebug server panel
+ *
+ * @see FirePHP::DUMP
+ * @param string $Key
+ * @param mixed $Variable
+ * @return true
+ * @throws Exception
+ */
+ function dump($Key, $Variable) {
+ return $this->fb($Variable, $Key, FirePHP_DUMP);
+ }
+
+ /**
+ * Log a trace in the firebug console
+ *
+ * @see FirePHP::TRACE
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ function trace($Label) {
+ return $this->fb($Label, FirePHP_TRACE);
+ }
+
+ /**
+ * Log a table in the firebug console
+ *
+ * @see FirePHP::TABLE
+ * @param string $Label
+ * @param string $Table
+ * @return true
+ * @throws Exception
+ */
+ function table($Label, $Table) {
+ return $this->fb($Table, $Label, FirePHP_TABLE);
+ }
+
+ /**
+ * Check if FirePHP is installed on client
+ *
+ * @return boolean
+ */
+ function detectClientExtension() {
+ /* Check if FirePHP is installed on client */
+ if(!@preg_match_all('/\sFirePHP\/([\.|\d]*)\s?/si',$this->getUserAgent(),$m) ||
+ !version_compare($m[1][0],'0.0.6','>=')) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Log varible to Firebug
+ *
+ * @see http://www.firephp.org/Wiki/Reference/Fb
+ * @param mixed $Object The variable to be logged
+ * @return true Return TRUE if message was added to headers, FALSE otherwise
+ * @throws Exception
+ */
+ function fb($Object) {
+
+ if(!$this->enabled) {
+ return false;
+ }
+
+ if (headers_sent($filename, $linenum)) {
+ trigger_error('Headers already sent in '.$filename.' on line '.$linenum.'. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob_start() or output_buffering ini directive.');
+ }
+
+ $Type = null;
+ $Label = null;
+ $Options = array();
+
+ if(func_num_args()==1) {
+ } else
+ if(func_num_args()==2) {
+ switch(func_get_arg(1)) {
+ case FirePHP_LOG:
+ case FirePHP_INFO:
+ case FirePHP_WARN:
+ case FirePHP_ERROR:
+ case FirePHP_DUMP:
+ case FirePHP_TRACE:
+ case FirePHP_TABLE:
+ case FirePHP_GROUP_START:
+ case FirePHP_GROUP_END:
+ $Type = func_get_arg(1);
+ break;
+ default:
+ $Label = func_get_arg(1);
+ break;
+ }
+ } else
+ if(func_num_args()==3) {
+ $Type = func_get_arg(2);
+ $Label = func_get_arg(1);
+ } else
+ if(func_num_args()==4) {
+ $Type = func_get_arg(2);
+ $Label = func_get_arg(1);
+ $Options = func_get_arg(3);
+ } else {
+ trigger_error('Wrong number of arguments to fb() function!');
+ }
+
+
+ if(!$this->detectClientExtension()) {
+ return false;
+ }
+
+ $meta = array();
+ $skipFinalObjectEncode = false;
+
+ if($Type==FirePHP_TRACE) {
+
+ $trace = debug_backtrace();
+ if(!$trace) return false;
+ for( $i=0 ; $i<sizeof($trace) ; $i++ ) {
+
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i]['file'])
+ && ($trace[$i]['class']=='FirePHP'
+ || $trace[$i]['class']=='FB')
+ && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
+ || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
+ /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
+ } else
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i+1]['file'])
+ && $trace[$i]['class']=='FirePHP'
+ && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
+ /* Skip fb() */
+ } else
+ if($trace[$i]['function']=='fb'
+ || $trace[$i]['function']=='trace'
+ || $trace[$i]['function']=='send') {
+ $Object = array('Class'=>isset($trace[$i]['class'])?$trace[$i]['class']:'',
+ 'Type'=>isset($trace[$i]['type'])?$trace[$i]['type']:'',
+ 'Function'=>isset($trace[$i]['function'])?$trace[$i]['function']:'',
+ 'Message'=>$trace[$i]['args'][0],
+ 'File'=>isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'',
+ 'Line'=>isset($trace[$i]['line'])?$trace[$i]['line']:'',
+ 'Args'=>isset($trace[$i]['args'])?$this->encodeObject($trace[$i]['args']):'',
+ 'Trace'=>$this->_escapeTrace(array_splice($trace,$i+1)));
+
+ $skipFinalObjectEncode = true;
+ $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
+ $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
+ break;
+ }
+ }
+
+ } else
+ if($Type==FirePHP_TABLE) {
+
+ if(isset($Object[0]) && is_string($Object[0])) {
+ $Object[1] = $this->encodeTable($Object[1]);
+ } else {
+ $Object = $this->encodeTable($Object);
+ }
+
+ $skipFinalObjectEncode = true;
+
+ } else
+ if($Type==FirePHP_GROUP_START) {
+
+ if(!$Label) {
+ trigger_error('You must specify a label for the group!');
+ }
+ } else {
+ if($Type===null) {
+ $Type = FirePHP_LOG;
+ }
+ }
+
+ if($this->options['includeLineNumbers']) {
+ if(!isset($meta['file']) || !isset($meta['line'])) {
+
+ $trace = debug_backtrace();
+ for( $i=0 ; $trace && $i<sizeof($trace) ; $i++ ) {
+
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i]['file'])
+ && ($trace[$i]['class']=='FirePHP'
+ || $trace[$i]['class']=='FB')
+ && (substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php'
+ || substr($this->_standardizePath($trace[$i]['file']),-29,29)=='FirePHPCore/FirePHP.class.php')) {
+ /* Skip - FB::trace(), FB::send(), $firephp->trace(), $firephp->fb() */
+ } else
+ if(isset($trace[$i]['class'])
+ && isset($trace[$i+1]['file'])
+ && $trace[$i]['class']=='FirePHP'
+ && substr($this->_standardizePath($trace[$i+1]['file']),-18,18)=='FirePHPCore/fb.php') {
+ /* Skip fb() */
+ } else
+ if(isset($trace[$i]['file'])
+ && substr($this->_standardizePath($trace[$i]['file']),-18,18)=='FirePHPCore/fb.php') {
+ /* Skip FB::fb() */
+ } else {
+ $meta['file'] = isset($trace[$i]['file'])?$this->_escapeTraceFile($trace[$i]['file']):'';
+ $meta['line'] = isset($trace[$i]['line'])?$trace[$i]['line']:'';
+ break;
+ }
+ }
+
+ }
+ } else {
+ unset($meta['file']);
+ unset($meta['line']);
+ }
+
+ $this->setHeader('X-Wf-Protocol-1','http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
+ $this->setHeader('X-Wf-1-Plugin-1','http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/'.FirePHP_VERSION);
+
+ $structure_index = 1;
+ if($Type==FirePHP_DUMP) {
+ $structure_index = 2;
+ $this->setHeader('X-Wf-1-Structure-2','http://meta.firephp.org/Wildfire/Structure/FirePHP/Dump/0.1');
+ } else {
+ $this->setHeader('X-Wf-1-Structure-1','http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
+ }
+
+ if($Type==FirePHP_DUMP) {
+ $msg = '{"'.$Label.'":'.$this->jsonEncode($Object, $skipFinalObjectEncode).'}';
+ } else {
+ $msg_meta = $Options;
+ $msg_meta['Type'] = $Type;
+ if($Label!==null) {
+ $msg_meta['Label'] = $Label;
+ }
+ if(isset($meta['file']) && !isset($msg_meta['File'])) {
+ $msg_meta['File'] = $meta['file'];
+ }
+ if(isset($meta['line']) && !isset($msg_meta['Line'])) {
+ $msg_meta['Line'] = $meta['line'];
+ }
+ $msg = '['.$this->jsonEncode($msg_meta).','.$this->jsonEncode($Object, $skipFinalObjectEncode).']';
+ }
+
+ $parts = explode("\n",chunk_split($msg, 5000, "\n"));
+
+ for( $i=0 ; $i<count($parts) ; $i++) {
+
+ $part = $parts[$i];
+ if ($part) {
+
+ if(count($parts)>2) {
+ // Message needs to be split into multiple parts
+ $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
+ (($i==0)?strlen($msg):'')
+ . '|' . $part . '|'
+ . (($i<count($parts)-2)?'\\':''));
+ } else {
+ $this->setHeader('X-Wf-1-'.$structure_index.'-'.'1-'.$this->messageIndex,
+ strlen($part) . '|' . $part . '|');
+ }
+
+ $this->messageIndex++;
+
+ if ($this->messageIndex > 99999) {
+ trigger_error('Maximum number (99,999) of messages reached!');
+ }
+ }
+ }
+
+ $this->setHeader('X-Wf-1-Index',$this->messageIndex-1);
+
+ return true;
+ }
+
+
+ /**
+ * Standardizes path for windows systems.
+ *
+ * @param string $Path
+ * @return string
+ */
+ function _standardizePath($Path) {
+ return preg_replace('/\\\\+/','/',$Path);
+ }
+
+ /**
+ * Escape trace path for windows systems
+ *
+ * @param array $Trace
+ * @return array
+ */
+ function _escapeTrace($Trace) {
+ if(!$Trace) return $Trace;
+ for( $i=0 ; $i<sizeof($Trace) ; $i++ ) {
+ if(isset($Trace[$i]['file'])) {
+ $Trace[$i]['file'] = $this->_escapeTraceFile($Trace[$i]['file']);
+ }
+ if(isset($Trace[$i]['args'])) {
+ $Trace[$i]['args'] = $this->encodeObject($Trace[$i]['args']);
+ }
+ }
+ return $Trace;
+ }
+
+ /**
+ * Escape file information of trace for windows systems
+ *
+ * @param string $File
+ * @return string
+ */
+ function _escapeTraceFile($File) {
+ /* Check if we have a windows filepath */
+ if(strpos($File,'\\')) {
+ /* First strip down to single \ */
+
+ $file = preg_replace('/\\\\+/','\\',$File);
+
+ return $file;
+ }
+ return $File;
+ }
+
+ /**
+ * Send header
+ *
+ * @param string $Name
+ * @param string_type $Value
+ */
+ function setHeader($Name, $Value) {
+ return header($Name.': '.$Value);
+ }
+
+ /**
+ * Get user agent
+ *
+ * @return string|false
+ */
+ function getUserAgent() {
+ if(!isset($_SERVER['HTTP_USER_AGENT'])) return false;
+ return $_SERVER['HTTP_USER_AGENT'];
+ }
+
+ /**
+ * Encode an object into a JSON string
+ *
+ * Uses PHP's jeson_encode() if available
+ *
+ * @param object $Object The object to be encoded
+ * @return string The JSON string
+ */
+ function jsonEncode($Object, $skipObjectEncode=false)
+ {
+ if(!$skipObjectEncode) {
+ $Object = $this->encodeObject($Object);
+ }
+
+ if(function_exists('json_encode')
+ && $this->options['useNativeJsonEncode']!=false) {
+
+ return json_encode($Object);
+ } else {
+ return $this->json_encode($Object);
+ }
+ }
+
+ /**
+ * Encodes a table by encoding each row and column with encodeObject()
+ *
+ * @param array $Table The table to be encoded
+ * @return array
+ */
+ function encodeTable($Table) {
+
+ if(!$Table) return $Table;
+
+ $new_table = array();
+ foreach($Table as $row) {
+
+ if(is_array($row)) {
+ $new_row = array();
+
+ foreach($row as $item) {
+ $new_row[] = $this->encodeObject($item);
+ }
+
+ $new_table[] = $new_row;
+ }
+ }
+
+ return $new_table;
+ }
+
+ /**
+ * Encodes an object
+ *
+ * @param Object $Object The object to be encoded
+ * @param int $Depth The current traversal depth
+ * @return array All members of the object
+ */
+ function encodeObject($Object, $ObjectDepth = 1, $ArrayDepth = 1)
+ {
+ $return = array();
+
+ if (is_resource($Object)) {
+
+ return '** '.(string)$Object.' **';
+
+ } else
+ if (is_object($Object)) {
+
+ if ($ObjectDepth > $this->options['maxObjectDepth']) {
+ return '** Max Object Depth ('.$this->options['maxObjectDepth'].') **';
+ }
+
+ foreach ($this->objectStack as $refVal) {
+ if ($refVal === $Object) {
+ return '** Recursion ('.get_class($Object).') **';
+ }
+ }
+ array_push($this->objectStack, $Object);
+
+ $return['__className'] = $class = get_class($Object);
+
+ $members = (array)$Object;
+
+ // Include all members that are not defined in the class
+ // but exist in the object
+ foreach( $members as $raw_name => $value ) {
+
+ $name = $raw_name;
+
+ if ($name{0} == "\0") {
+ $parts = explode("\0", $name);
+ $name = $parts[2];
+ }
+
+ if(!isset($properties[$name])) {
+ $name = 'undeclared:'.$name;
+
+ if(!(isset($this->objectFilters[$class])
+ && is_array($this->objectFilters[$class])
+ && in_array($raw_name,$this->objectFilters[$class]))) {
+
+ $return[$name] = $this->encodeObject($value, $ObjectDepth + 1, 1);
+ } else {
+ $return[$name] = '** Excluded by Filter **';
+ }
+ }
+ }
+
+ array_pop($this->objectStack);
+
+ } elseif (is_array($Object)) {
+
+ if ($ArrayDepth > $this->options['maxArrayDepth']) {
+ return '** Max Array Depth ('.$this->options['maxArrayDepth'].') **';
+ }
+
+ foreach ($Object as $key => $val) {
+
+ // Encoding the $GLOBALS PHP array causes an infinite loop
+ // if the recursion is not reset here as it contains
+ // a reference to itself. This is the only way I have come up
+ // with to stop infinite recursion in this case.
+ if($key=='GLOBALS'
+ && is_array($val)
+ && array_key_exists('GLOBALS',$val)) {
+ $val['GLOBALS'] = '** Recursion (GLOBALS) **';
+ }
+
+ $return[$key] = $this->encodeObject($val, 1, $ArrayDepth + 1);
+ }
+ } else {
+ if($this->is_utf8($Object)) {
+ return $Object;
+ } else {
+ return utf8_encode($Object);
+ }
+ }
+ return $return;
+
+ }
+
+ /**
+ * Returns true if $string is valid UTF-8 and false otherwise.
+ *
+ * @param mixed $str String to be tested
+ * @return boolean
+ */
+ function is_utf8($str) {
+ $c=0; $b=0;
+ $bits=0;
+ $len=strlen($str);
+ for($i=0; $i<$len; $i++){
+ $c=ord($str[$i]);
+ if($c > 128){
+ if(($c >= 254)) return false;
+ elseif($c >= 252) $bits=6;
+ elseif($c >= 248) $bits=5;
+ elseif($c >= 240) $bits=4;
+ elseif($c >= 224) $bits=3;
+ elseif($c >= 192) $bits=2;
+ else return false;
+ if(($i+$bits) > $len) return false;
+ while($bits > 1){
+ $i++;
+ $b=ord($str[$i]);
+ if($b < 128 || $b > 191) return false;
+ $bits--;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Converts to and from JSON format.
+ *
+ * JSON (JavaScript Object Notation) is a lightweight data-interchange
+ * format. It is easy for humans to read and write. It is easy for machines
+ * to parse and generate. It is based on a subset of the JavaScript
+ * Programming Language, Standard ECMA-262 3rd Edition - December 1999.
+ * This feature can also be found in Python. JSON is a text format that is
+ * completely language independent but uses conventions that are familiar
+ * to programmers of the C-family of languages, including C, C++, C#, Java,
+ * JavaScript, Perl, TCL, and many others. These properties make JSON an
+ * ideal data-interchange language.
+ *
+ * This package provides a simple encoder and decoder for JSON notation. It
+ * is intended for use with client-side Javascript applications that make
+ * use of HTTPRequest to perform server communication functions - data can
+ * be encoded into JSON notation for use in a client-side javascript, or
+ * decoded from incoming Javascript requests. JSON format is native to
+ * Javascript, and can be directly eval()'ed with no further parsing
+ * overhead
+ *
+ * All strings should be in ASCII or UTF-8 format!
+ *
+ * LICENSE: Redistribution and use in source and binary forms, with or
+ * without modification, are permitted provided that the following
+ * conditions are met: Redistributions of source code must retain the
+ * above copyright notice, this list of conditions and the following
+ * disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+ * NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
+ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+ * DAMAGE.
+ *
+ * @category
+ * @package Services_JSON
+ * @author Michal Migurski <mike-json@teczno.com>
+ * @author Matt Knapp <mdknapp[at]gmail[dot]com>
+ * @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @copyright 2005 Michal Migurski
+ * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198
+ */
+
+
+ /**
+ * Keep a list of objects as we descend into the array so we can detect recursion.
+ */
+ var $json_objectStack = array();
+
+
+ /**
+ * convert a string from one UTF-8 char to one UTF-16 char
+ *
+ * Normally should be handled by mb_convert_encoding, but
+ * provides a slower PHP-only method for installations
+ * that lack the multibye string extension.
+ *
+ * @param string $utf8 UTF-8 character
+ * @return string UTF-16 character
+ * @access private
+ */
+ function json_utf82utf16($utf8)
+ {
+ // oh please oh please oh please oh please oh please
+ if(function_exists('mb_convert_encoding')) {
+ return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
+ }
+
+ switch(strlen($utf8)) {
+ case 1:
+ // this case should never be reached, because we are in ASCII range
+ // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ return $utf8;
+
+ case 2:
+ // return a UTF-16 character from a 2-byte UTF-8 char
+ // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ return chr(0x07 & (ord($utf8{0}) >> 2))
+ . chr((0xC0 & (ord($utf8{0}) << 6))
+ | (0x3F & ord($utf8{1})));
+
+ case 3:
+ // return a UTF-16 character from a 3-byte UTF-8 char
+ // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ return chr((0xF0 & (ord($utf8{0}) << 4))
+ | (0x0F & (ord($utf8{1}) >> 2)))
+ . chr((0xC0 & (ord($utf8{1}) << 6))
+ | (0x7F & ord($utf8{2})));
+ }
+
+ // ignoring UTF-32 for now, sorry
+ return '';
+ }
+
+ /**
+ * encodes an arbitrary variable into JSON format
+ *
+ * @param mixed $var any number, boolean, string, array, or object to be encoded.
+ * see argument 1 to Services_JSON() above for array-parsing behavior.
+ * if var is a strng, note that encode() always expects it
+ * to be in ASCII or UTF-8 format!
+ *
+ * @return mixed JSON string representation of input var or an error if a problem occurs
+ * @access public
+ */
+ function json_encode($var)
+ {
+
+ if(is_object($var)) {
+ if(in_array($var,$this->json_objectStack)) {
+ return '"** Recursion **"';
+ }
+ }
+
+ switch (gettype($var)) {
+ case 'boolean':
+ return $var ? 'true' : 'false';
+
+ case 'NULL':
+ return 'null';
+
+ case 'integer':
+ return (int) $var;
+
+ case 'double':
+ case 'float':
+ return (float) $var;
+
+ case 'string':
+ // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
+ $ascii = '';
+ $strlen_var = strlen($var);
+
+ /*
+ * Iterate over every character in the string,
+ * escaping with a slash or encoding to UTF-8 where necessary
+ */
+ for ($c = 0; $c < $strlen_var; ++$c) {
+
+ $ord_var_c = ord($var{$c});
+
+ switch (true) {
+ case $ord_var_c == 0x08:
+ $ascii .= '\b';
+ break;
+ case $ord_var_c == 0x09:
+ $ascii .= '\t';
+ break;
+ case $ord_var_c == 0x0A:
+ $ascii .= '\n';
+ break;
+ case $ord_var_c == 0x0C:
+ $ascii .= '\f';
+ break;
+ case $ord_var_c == 0x0D:
+ $ascii .= '\r';
+ break;
+
+ case $ord_var_c == 0x22:
+ case $ord_var_c == 0x2F:
+ case $ord_var_c == 0x5C:
+ // double quote, slash, slosh
+ $ascii .= '\\'.$var{$c};
+ break;
+
+ case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
+ // characters U-00000000 - U-0000007F (same as ASCII)
+ $ascii .= $var{$c};
+ break;
+
+ case (($ord_var_c & 0xE0) == 0xC0):
+ // characters U-00000080 - U-000007FF, mask 110XXXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+ $c += 1;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xF0) == 0xE0):
+ // characters U-00000800 - U-0000FFFF, mask 1110XXXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}));
+ $c += 2;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xF8) == 0xF0):
+ // characters U-00010000 - U-001FFFFF, mask 11110XXX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}),
+ ord($var{$c + 3}));
+ $c += 3;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xFC) == 0xF8):
+ // characters U-00200000 - U-03FFFFFF, mask 111110XX
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}),
+ ord($var{$c + 3}),
+ ord($var{$c + 4}));
+ $c += 4;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+
+ case (($ord_var_c & 0xFE) == 0xFC):
+ // characters U-04000000 - U-7FFFFFFF, mask 1111110X
+ // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
+ $char = pack('C*', $ord_var_c,
+ ord($var{$c + 1}),
+ ord($var{$c + 2}),
+ ord($var{$c + 3}),
+ ord($var{$c + 4}),
+ ord($var{$c + 5}));
+ $c += 5;
+ $utf16 = $this->json_utf82utf16($char);
+ $ascii .= sprintf('\u%04s', bin2hex($utf16));
+ break;
+ }
+ }
+
+ return '"'.$ascii.'"';
+
+ case 'array':
+ /*
+ * As per JSON spec if any array key is not an integer
+ * we must treat the the whole array as an object. We
+ * also try to catch a sparsely populated associative
+ * array with numeric keys here because some JS engines
+ * will create an array with empty indexes up to
+ * max_index which can cause memory issues and because
+ * the keys, which may be relevant, will be remapped
+ * otherwise.
+ *
+ * As per the ECMA and JSON specification an object may
+ * have any string as a property. Unfortunately due to
+ * a hole in the ECMA specification if the key is a
+ * ECMA reserved word or starts with a digit the
+ * parameter is only accessible using ECMAScript's
+ * bracket notation.
+ */
+
+ // treat as a JSON object
+ if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
+
+ $this->json_objectStack[] = $var;
+
+ $properties = array_map(array($this, 'json_name_value'),
+ array_keys($var),
+ array_values($var));
+
+ array_pop($this->json_objectStack);
+
+ return '{' . join(',', $properties) . '}';
+ }
+
+ $this->json_objectStack[] = $var;
+
+ // treat it like a regular array
+ $elements = array_map(array($this, 'json_encode'), $var);
+
+ array_pop($this->json_objectStack);
+
+ return '[' . join(',', $elements) . ']';
+
+ case 'object':
+ $vars = FirePHP::encodeObject($var);
+
+ $this->json_objectStack[] = $var;
+
+ $properties = array_map(array($this, 'json_name_value'),
+ array_keys($vars),
+ array_values($vars));
+
+ array_pop($this->json_objectStack);
+
+ return '{' . join(',', $properties) . '}';
+
+ default:
+ return null;
+ }
+ }
+
+ /**
+ * array-walking function for use in generating JSON-formatted name-value pairs
+ *
+ * @param string $name name of key to use
+ * @param mixed $value reference to an array element to be encoded
+ *
+ * @return string JSON-formatted name-value pair, like '"name":value'
+ * @access private
+ */
+ function json_name_value($name, $value)
+ {
+ // Encoding the $GLOBALS PHP array causes an infinite loop
+ // if the recursion is not reset here as it contains
+ // a reference to itself. This is the only way I have come up
+ // with to stop infinite recursion in this case.
+ if($name=='GLOBALS'
+ && is_array($value)
+ && array_key_exists('GLOBALS',$value)) {
+ $value['GLOBALS'] = '** Recursion **';
+ }
+
+ $encoded_value = $this->json_encode($value);
+
+ return $this->json_encode(strval($name)) . ':' . $encoded_value;
+ }
+}
+
diff --git a/framework/Vendor/FirePHPCore/LICENSE b/framework/Vendor/FirePHPCore/LICENSE
new file mode 100644
index 00000000..3e390f9d
--- /dev/null
+++ b/framework/Vendor/FirePHPCore/LICENSE
@@ -0,0 +1,29 @@
+Software License Agreement (New BSD License)
+
+Copyright (c) 2006-2009, Christoph Dorn
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of Christoph Dorn nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/framework/Vendor/FirePHPCore/fb.php b/framework/Vendor/FirePHPCore/fb.php
new file mode 100644
index 00000000..9d1857cb
--- /dev/null
+++ b/framework/Vendor/FirePHPCore/fb.php
@@ -0,0 +1,261 @@
+<?php
+
+/* ***** BEGIN LICENSE BLOCK *****
+ *
+ * This file is part of FirePHP (http://www.firephp.org/).
+ *
+ * Software License Agreement (New BSD License)
+ *
+ * Copyright (c) 2006-2009, Christoph Dorn
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Christoph Dorn nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK *****
+ *
+ * @copyright Copyright (C) 2007-2009 Christoph Dorn
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @package FirePHP
+ */
+
+require_once dirname(__FILE__).'/FirePHP.class.php';
+
+/**
+ * Sends the given data to the FirePHP Firefox Extension.
+ * The data can be displayed in the Firebug Console or in the
+ * "Server" request tab.
+ *
+ * @see http://www.firephp.org/Wiki/Reference/Fb
+ * @param mixed $Object
+ * @return true
+ * @throws Exception
+ */
+function fb()
+{
+ $instance = FirePHP::getInstance(true);
+
+ $args = func_get_args();
+ return call_user_func_array(array($instance,'fb'),$args);
+}
+
+
+class FB
+{
+ /**
+ * Enable and disable logging to Firebug
+ *
+ * @see FirePHP->setEnabled()
+ * @param boolean $Enabled TRUE to enable, FALSE to disable
+ * @return void
+ */
+ public static function setEnabled($Enabled) {
+ $instance = FirePHP::getInstance(true);
+ $instance->setEnabled($Enabled);
+ }
+
+ /**
+ * Check if logging is enabled
+ *
+ * @see FirePHP->getEnabled()
+ * @return boolean TRUE if enabled
+ */
+ public static function getEnabled() {
+ $instance = FirePHP::getInstance(true);
+ return $instance->getEnabled();
+ }
+
+ /**
+ * Specify a filter to be used when encoding an object
+ *
+ * Filters are used to exclude object members.
+ *
+ * @see FirePHP->setObjectFilter()
+ * @param string $Class The class name of the object
+ * @param array $Filter An array or members to exclude
+ * @return void
+ */
+ public static function setObjectFilter($Class, $Filter) {
+ $instance = FirePHP::getInstance(true);
+ $instance->setObjectFilter($Class, $Filter);
+ }
+
+ /**
+ * Set some options for the library
+ *
+ * @see FirePHP->setOptions()
+ * @param array $Options The options to be set
+ * @return void
+ */
+ public static function setOptions($Options) {
+ $instance = FirePHP::getInstance(true);
+ $instance->setOptions($Options);
+ }
+
+ /**
+ * Get options for the library
+ *
+ * @see FirePHP->getOptions()
+ * @return array The options
+ */
+ public static function getOptions() {
+ $instance = FirePHP::getInstance(true);
+ return $instance->getOptions();
+ }
+
+ /**
+ * Log object to firebug
+ *
+ * @see http://www.firephp.org/Wiki/Reference/Fb
+ * @param mixed $Object
+ * @return true
+ * @throws Exception
+ */
+ public static function send()
+ {
+ $instance = FirePHP::getInstance(true);
+ $args = func_get_args();
+ return call_user_func_array(array($instance,'fb'),$args);
+ }
+
+ /**
+ * Start a group for following messages
+ *
+ * Options:
+ * Collapsed: [true|false]
+ * Color: [#RRGGBB|ColorName]
+ *
+ * @param string $Name
+ * @param array $Options OPTIONAL Instructions on how to log the group
+ * @return true
+ */
+ public static function group($Name, $Options=null) {
+ $instance = FirePHP::getInstance(true);
+ return $instance->group($Name, $Options);
+ }
+
+ /**
+ * Ends a group you have started before
+ *
+ * @return true
+ * @throws Exception
+ */
+ public static function groupEnd() {
+ return self::send(null, null, FirePHP::GROUP_END);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::LOG
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public static function log($Object, $Label=null) {
+ return self::send($Object, $Label, FirePHP::LOG);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::INFO
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public static function info($Object, $Label=null) {
+ return self::send($Object, $Label, FirePHP::INFO);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::WARN
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public static function warn($Object, $Label=null) {
+ return self::send($Object, $Label, FirePHP::WARN);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::ERROR
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public static function error($Object, $Label=null) {
+ return self::send($Object, $Label, FirePHP::ERROR);
+ }
+
+ /**
+ * Dumps key and variable to firebug server panel
+ *
+ * @see FirePHP::DUMP
+ * @param string $Key
+ * @param mixed $Variable
+ * @return true
+ * @throws Exception
+ */
+ public static function dump($Key, $Variable) {
+ return self::send($Variable, $Key, FirePHP::DUMP);
+ }
+
+ /**
+ * Log a trace in the firebug console
+ *
+ * @see FirePHP::TRACE
+ * @param string $Label
+ * @return true
+ * @throws Exception
+ */
+ public static function trace($Label) {
+ return self::send($Label, FirePHP::TRACE);
+ }
+
+ /**
+ * Log a table in the firebug console
+ *
+ * @see FirePHP::TABLE
+ * @param string $Label
+ * @param string $Table
+ * @return true
+ * @throws Exception
+ */
+ public static function table($Label, $Table) {
+ return self::send($Table, $Label, FirePHP::TABLE);
+ }
+
+}
+
diff --git a/framework/Vendor/FirePHPCore/fb.php4 b/framework/Vendor/FirePHPCore/fb.php4
new file mode 100644
index 00000000..5b69e348
--- /dev/null
+++ b/framework/Vendor/FirePHPCore/fb.php4
@@ -0,0 +1,251 @@
+<?php
+
+/* ***** BEGIN LICENSE BLOCK *****
+ *
+ * This file is part of FirePHP (http://www.firephp.org/).
+ *
+ * Software License Agreement (New BSD License)
+ *
+ * Copyright (c) 2006-2009, Christoph Dorn
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Christoph Dorn nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ***** END LICENSE BLOCK *****
+ *
+ * @copyright Copyright (C) 2007-2009 Christoph Dorn
+ * @author Christoph Dorn <christoph@christophdorn.com>
+ * @author Michael Day <manveru.alma@gmail.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php
+ * @package FirePHP
+ */
+
+require_once dirname(__FILE__).'/FirePHP.class.php4';
+
+/**
+ * Sends the given data to the FirePHP Firefox Extension.
+ * The data can be displayed in the Firebug Console or in the
+ * "Server" request tab.
+ *
+ * @see http://www.firephp.org/Wiki/Reference/Fb
+ * @param mixed $Object
+ * @return true
+ * @throws Exception
+ */
+function fb()
+{
+ $instance =& FirePHP::getInstance(true);
+
+ $args = func_get_args();
+ return call_user_func_array(array(&$instance,'fb'),$args);
+}
+
+
+class FB
+{
+ /**
+ * Enable and disable logging to Firebug
+ *
+ * @see FirePHP->setEnabled()
+ * @param boolean $Enabled TRUE to enable, FALSE to disable
+ * @return void
+ */
+ function setEnabled($Enabled) {
+ $instance =& FirePHP::getInstance(true);
+ $instance->setEnabled($Enabled);
+ }
+
+ /**
+ * Check if logging is enabled
+ *
+ * @see FirePHP->getEnabled()
+ * @return boolean TRUE if enabled
+ */
+ function getEnabled() {
+ $instance =& FirePHP::getInstance(true);
+ return $instance->getEnabled();
+ }
+
+ /**
+ * Specify a filter to be used when encoding an object
+ *
+ * Filters are used to exclude object members.
+ *
+ * @see FirePHP->setObjectFilter()
+ * @param string $Class The class name of the object
+ * @param array $Filter An array or members to exclude
+ * @return void
+ */
+ function setObjectFilter($Class, $Filter) {
+ $instance =& FirePHP::getInstance(true);
+ $instance->setObjectFilter($Class, $Filter);
+ }
+
+ /**
+ * Set some options for the library
+ *
+ * @see FirePHP->setOptions()
+ * @param array $Options The options to be set
+ * @return void
+ */
+ function setOptions($Options) {
+ $instance =& FirePHP::getInstance(true);
+ $instance->setOptions($Options);
+ }
+
+ /**
+ * Get options for the library
+ *
+ * @see FirePHP->getOptions()
+ * @return array The options
+ */
+ function getOptions() {
+ $instance =& FirePHP::getInstance(true);
+ return $instance->getOptions();
+ }
+
+ /**
+ * Log object to firebug
+ *
+ * @see http://www.firephp.org/Wiki/Reference/Fb
+ * @param mixed $Object
+ * @return true
+ */
+ function send()
+ {
+ $instance =& FirePHP::getInstance(true);
+ $args = func_get_args();
+ return call_user_func_array(array(&$instance,'fb'),$args);
+ }
+
+ /**
+ * Start a group for following messages
+ *
+ * Options:
+ * Collapsed: [true|false]
+ * Color: [#RRGGBB|ColorName]
+ *
+ * @param string $Name
+ * @param array $Options OPTIONAL Instructions on how to log the group
+ * @return true
+ */
+ function group($Name, $Options=null) {
+ $instance =& FirePHP::getInstance(true);
+ return $instance->group($Name, $Options);
+ }
+
+ /**
+ * Ends a group you have started before
+ *
+ * @return true
+ */
+ function groupEnd() {
+ return FB::send(null, null, FirePHP_GROUP_END);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::LOG
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ */
+ function log($Object, $Label=null) {
+ return FB::send($Object, $Label, FirePHP_LOG);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::INFO
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ */
+ function info($Object, $Label=null) {
+ return FB::send($Object, $Label, FirePHP_INFO);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::WARN
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ */
+ function warn($Object, $Label=null) {
+ return FB::send($Object, $Label, FirePHP_WARN);
+ }
+
+ /**
+ * Log object with label to firebug console
+ *
+ * @see FirePHP::ERROR
+ * @param mixes $Object
+ * @param string $Label
+ * @return true
+ */
+ function error($Object, $Label=null) {
+ return FB::send($Object, $Label, FirePHP_ERROR);
+ }
+
+ /**
+ * Dumps key and variable to firebug server panel
+ *
+ * @see FirePHP::DUMP
+ * @param string $Key
+ * @param mixed $Variable
+ * @return true
+ */
+ function dump($Key, $Variable) {
+ return FB::send($Variable, $Key, FirePHP_DUMP);
+ }
+
+ /**
+ * Log a trace in the firebug console
+ *
+ * @see FirePHP::TRACE
+ * @param string $Label
+ * @return true
+ */
+ function trace($Label) {
+ return FB::send($Label, FirePHP_TRACE);
+ }
+
+ /**
+ * Log a table in the firebug console
+ *
+ * @see FirePHP::TABLE
+ * @param string $Label
+ * @param string $Table
+ * @return true
+ */
+ function table($Label, $Table) {
+ return FB::send($Table, $Label, FirePHP_TABLE);
+ }
+}
diff --git a/framework/Vendor/Parsedown/LICENSE.txt b/framework/Vendor/Parsedown/LICENSE.txt
new file mode 100644
index 00000000..baca86f5
--- /dev/null
+++ b/framework/Vendor/Parsedown/LICENSE.txt
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Emanuil Rusev, erusev.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/framework/Vendor/Parsedown/Parsedown.php b/framework/Vendor/Parsedown/Parsedown.php
new file mode 100755
index 00000000..ebc80974
--- /dev/null
+++ b/framework/Vendor/Parsedown/Parsedown.php
@@ -0,0 +1,1135 @@
+<?php
+
+#
+#
+# Parsedown
+# http://parsedown.org
+#
+# (c) Emanuil Rusev
+# http://erusev.com
+#
+# For the full license information, view the LICENSE file that was distributed
+# with this source code.
+#
+#
+
+class Parsedown
+{
+ # Multiton
+
+ static function instance($name = 'default')
+ {
+ if (isset(self::$instances[$name]))
+ {
+ return self::$instances[$name];
+ }
+
+ $instance = new Parsedown();
+
+ self::$instances[$name] = $instance;
+
+ return $instance;
+ }
+
+ private static $instances = array();
+
+ #
+ # Setters
+ #
+
+ # Enables GFM line breaks.
+
+ function set_breaks_enabled($breaks_enabled)
+ {
+ $this->breaks_enabled = $breaks_enabled;
+
+ return $this;
+ }
+
+ private $breaks_enabled = false;
+
+ #
+ # Synopsis
+ #
+
+ # Markdown is intended to be easy-to-read by humans - those of us who read
+ # line by line, left to right, top to bottom. In order to take advantage of
+ # this, Parsedown tries to read in a similar way. It breaks texts into
+ # lines, it iterates through them and it looks at how they start and relate
+ # to each other.
+
+ #
+ # Methods
+ #
+
+ function parse($text)
+ {
+ # standardize line breaks
+ $text = str_replace("\r\n", "\n", $text);
+ $text = str_replace("\r", "\n", $text);
+
+ # replace tabs with spaces
+ $text = str_replace("\t", ' ', $text);
+
+ # remove surrounding line breaks
+ $text = trim($text, "\n");
+
+ # split text into lines
+ $lines = explode("\n", $text);
+
+ # convert lines into html
+ $text = $this->parse_block_elements($lines);
+
+ # remove trailing line breaks
+ $text = chop($text, "\n");
+
+ return $text;
+ }
+
+ #
+ # Private
+
+ private function parse_block_elements(array $lines, $context = '')
+ {
+ $blocks = array();
+
+ $block = array(
+ 'type' => '',
+ );
+
+ foreach ($lines as $line)
+ {
+ # context
+
+ switch ($block['type'])
+ {
+ case 'fenced':
+
+ if ( ! isset($block['closed']))
+ {
+ if (preg_match('/^[ ]*'.$block['fence'][0].'{3,}[ ]*$/', $line))
+ {
+ $block['closed'] = true;
+ }
+ else
+ {
+ if ($block['text'] !== '')
+ {
+ $block['text'] .= "\n";
+ }
+
+ $block['text'] .= $line;
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case 'markup':
+
+ if ( ! isset($block['closed']))
+ {
+ if (strpos($line, $block['start']) !== false) # opening tag
+ {
+ $block['depth']++;
+ }
+
+ if (strpos($line, $block['end']) !== false) # closing tag
+ {
+ if ($block['depth'] > 0)
+ {
+ $block['depth']--;
+ }
+ else
+ {
+ $block['closed'] = true;
+ }
+ }
+
+ $block['text'] .= "\n".$line;
+
+ continue 2;
+ }
+
+ break;
+ }
+
+ # ~
+
+ $indentation = 0;
+
+ while(isset($line[$indentation]) and $line[$indentation] === ' ')
+ {
+ $indentation++;
+ }
+
+ $outdented_line = $indentation > 0 ? ltrim($line) : $line;
+
+ # blank
+
+ if ($outdented_line === '')
+ {
+ $block['interrupted'] = true;
+
+ continue;
+ }
+
+ # context
+
+ switch ($block['type'])
+ {
+ case 'quote':
+
+ if ( ! isset($block['interrupted']))
+ {
+ $line = preg_replace('/^[ ]*>[ ]?/', '', $line);
+
+ $block['lines'] []= $line;
+
+ continue 2;
+ }
+
+ break;
+
+ case 'li':
+
+ if ($block['indentation'] === $indentation and preg_match('/^'.$block['marker'].'[ ]+(.*)/', $outdented_line, $matches))
+ {
+ unset($block['last']);
+
+ $blocks []= $block;
+
+ $block['last'] = true;
+ $block['lines'] = array($matches[1]);
+
+ unset($block['first']);
+ unset($block['interrupted']);
+
+ continue 2;
+ }
+
+ if ( ! isset($block['interrupted']))
+ {
+ $line = preg_replace('/^[ ]{0,'.$block['baseline'].'}/', '', $line);
+
+ $block['lines'] []= $line;
+
+ continue 2;
+ }
+ elseif ($line[0] === ' ')
+ {
+ $block['lines'] []= '';
+
+ $line = preg_replace('/^[ ]{0,'.$block['baseline'].'}/', '', $line);
+
+ $block['lines'] []= $line;
+
+ unset($block['interrupted']);
+
+ continue 2;
+ }
+
+ break;
+ }
+
+ # indentation sensitive types
+
+ switch ($line[0])
+ {
+ case ' ':
+
+ # code
+
+ if ($indentation >= 4)
+ {
+ $code_line = substr($line, 4);
+
+ if ($block['type'] === 'code')
+ {
+ if (isset($block['interrupted']))
+ {
+ $block['text'] .= "\n";
+
+ unset($block['interrupted']);
+ }
+
+ $block['text'] .= "\n".$code_line;
+ }
+ else
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'code',
+ 'text' => $code_line,
+ );
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case '#':
+
+ # atx heading (#)
+
+ if (isset($line[1]))
+ {
+ $blocks []= $block;
+
+ $level = 1;
+
+ while (isset($line[$level]) and $line[$level] === '#')
+ {
+ $level++;
+ }
+
+ $block = array(
+ 'type' => 'heading',
+ 'text' => trim($line, '# '),
+ 'level' => $level,
+ );
+
+ continue 2;
+ }
+
+ break;
+
+ case '-':
+ case '=':
+
+ # setext heading (===)
+
+ if ($block['type'] === 'paragraph' and isset($block['interrupted']) === false)
+ {
+ $chopped_line = chop($line);
+
+ $i = 1;
+
+ while (isset($chopped_line[$i]))
+ {
+ if ($chopped_line[$i] !== $line[0])
+ {
+ break 2;
+ }
+
+ $i++;
+ }
+
+ $block['type'] = 'heading';
+
+ $block['level'] = $line[0] === '-' ? 2 : 1;
+
+ continue 2;
+ }
+
+ break;
+ }
+
+ # indentation insensitive types
+
+ switch ($outdented_line[0])
+ {
+ case '<':
+
+ $position = strpos($outdented_line, '>');
+
+ if ($position > 1)
+ {
+ $substring = substr($outdented_line, 1, $position - 1);
+
+ $substring = chop($substring);
+
+ if (substr($substring, -1) === '/')
+ {
+ $is_self_closing = true;
+
+ $substring = substr($substring, 0, -1);
+ }
+
+ $position = strpos($substring, ' ');
+
+ if ($position)
+ {
+ $name = substr($substring, 0, $position);
+ }
+ else
+ {
+ $name = $substring;
+ }
+
+ if ( ! ctype_alpha($name))
+ {
+ break;
+ }
+
+ if (in_array($name, self::$text_level_elements))
+ {
+ break;
+ }
+
+ $blocks []= $block;
+
+ if (isset($is_self_closing))
+ {
+ $block = array(
+ 'type' => 'self-closing tag',
+ 'text' => $outdented_line,
+ );
+
+ unset($is_self_closing);
+
+ continue 2;
+ }
+
+ $block = array(
+ 'type' => 'markup',
+ 'text' => $outdented_line,
+ 'start' => '<'.$name.'>',
+ 'end' => '</'.$name.'>',
+ 'depth' => 0,
+ );
+
+ if (strpos($outdented_line, $block['end']))
+ {
+ $block['closed'] = true;
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case '>':
+
+ # quote
+
+ if (preg_match('/^>[ ]?(.*)/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'quote',
+ 'lines' => array(
+ $matches[1],
+ ),
+ );
+
+ continue 2;
+ }
+
+ break;
+
+ case '[':
+
+ # reference
+
+ $position = strpos($outdented_line, ']:');
+
+ if ($position)
+ {
+ $reference = array();
+
+ $label = substr($outdented_line, 1, $position - 1);
+ $label = strtolower($label);
+
+ $substring = substr($outdented_line, $position + 2);
+ $substring = trim($substring);
+
+ if ($substring === '')
+ {
+ break;
+ }
+
+ if ($substring[0] === '<')
+ {
+ $position = strpos($substring, '>');
+
+ if ($position === false)
+ {
+ break;
+ }
+
+ $reference['»'] = substr($substring, 1, $position - 1);
+
+ $substring = substr($substring, $position + 1);
+ }
+ else
+ {
+ $position = strpos($substring, ' ');
+
+ if ($position === false)
+ {
+ $reference['»'] = $substring;
+
+ $substring = false;
+ }
+ else
+ {
+ $reference['»'] = substr($substring, 0, $position);
+
+ $substring = substr($substring, $position + 1);
+ }
+ }
+
+ if ($substring !== false)
+ {
+ if ($substring[0] !== '"' and $substring[0] !== "'" and $substring[0] !== '(')
+ {
+ break;
+ }
+
+ $last_char = substr($substring, -1);
+
+ if ($last_char !== '"' and $last_char !== "'" and $last_char !== ')')
+ {
+ break;
+ }
+
+ $reference['#'] = substr($substring, 1, -1);
+ }
+
+ $this->reference_map[$label] = $reference;
+
+ continue 2;
+ }
+
+ break;
+
+ case '`':
+ case '~':
+
+ # fenced code block
+
+ if (preg_match('/^([`]{3,}|[~]{3,})[ ]*(\S+)?[ ]*$/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'fenced',
+ 'text' => '',
+ 'fence' => $matches[1],
+ );
+
+ if (isset($matches[2]))
+ {
+ $block['language'] = $matches[2];
+ }
+
+ continue 2;
+ }
+
+ break;
+
+ case '*':
+ case '+':
+ case '-':
+ case '_':
+
+ # hr
+
+ if (preg_match('/^([-*_])([ ]{0,2}\1){2,}[ ]*$/', $outdented_line))
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'rule',
+ );
+
+ continue 2;
+ }
+
+ # li
+
+ if (preg_match('/^([*+-][ ]+)(.*)/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $baseline = $indentation + strlen($matches[1]);
+
+ $block = array(
+ 'type' => 'li',
+ 'indentation' => $indentation,
+ 'baseline' => $baseline,
+ 'marker' => '[*+-]',
+ 'first' => true,
+ 'last' => true,
+ 'lines' => array(),
+ );
+
+ $block['lines'] []= preg_replace('/^[ ]{0,4}/', '', $matches[2]);
+
+ continue 2;
+ }
+ }
+
+ # li
+
+ if ($outdented_line[0] <= '9' and preg_match('/^(\d+[.][ ]+)(.*)/', $outdented_line, $matches))
+ {
+ $blocks []= $block;
+
+ $baseline = $indentation + strlen($matches[1]);
+
+ $block = array(
+ 'type' => 'li',
+ 'indentation' => $indentation,
+ 'baseline' => $baseline,
+ 'marker' => '\d+[.]',
+ 'first' => true,
+ 'last' => true,
+ 'ordered' => true,
+ 'lines' => array(),
+ );
+
+ $block['lines'] []= preg_replace('/^[ ]{0,4}/', '', $matches[2]);
+
+ continue;
+ }
+
+ # paragraph
+
+ if ($block['type'] === 'paragraph')
+ {
+ if (isset($block['interrupted']))
+ {
+ $blocks []= $block;
+
+ $block['text'] = $line;
+
+ unset($block['interrupted']);
+ }
+ else
+ {
+ if ($this->breaks_enabled)
+ {
+ $block['text'] .= ' ';
+ }
+
+ $block['text'] .= "\n".$line;
+ }
+ }
+ else
+ {
+ $blocks []= $block;
+
+ $block = array(
+ 'type' => 'paragraph',
+ 'text' => $line,
+ );
+ }
+ }
+
+ $blocks []= $block;
+
+ unset($blocks[0]);
+
+ # $blocks » HTML
+
+ $markup = '';
+
+ foreach ($blocks as $block)
+ {
+ switch ($block['type'])
+ {
+ case 'paragraph':
+
+ $text = $this->parse_span_elements($block['text']);
+
+ if ($context === 'li' and $markup === '')
+ {
+ if (isset($block['interrupted']))
+ {
+ $markup .= "\n".'<p>'.$text.'</p>'."\n";
+ }
+ else
+ {
+ $markup .= $text;
+
+ if (isset($blocks[2]))
+ {
+ $markup .= "\n";
+ }
+ }
+ }
+ else
+ {
+ $markup .= '<p>'.$text.'</p>'."\n";
+ }
+
+ break;
+
+ case 'quote':
+
+ $text = $this->parse_block_elements($block['lines']);
+
+ $markup .= '<blockquote>'."\n".$text.'</blockquote>'."\n";
+
+ break;
+
+ case 'code':
+
+ $text = htmlspecialchars($block['text'], ENT_NOQUOTES, 'UTF-8');
+
+ $markup .= '<pre><code>'.$text.'</code></pre>'."\n";
+
+ break;
+
+ case 'fenced':
+
+ $text = htmlspecialchars($block['text'], ENT_NOQUOTES, 'UTF-8');
+
+ $markup .= '<pre><code';
+
+ if (isset($block['language']))
+ {
+ $markup .= ' class="language-'.$block['language'].'"';
+ }
+
+ $markup .= '>'.$text.'</code></pre>'."\n";
+
+ break;
+
+ case 'heading':
+
+ $text = $this->parse_span_elements($block['text']);
+
+ $markup .= '<h'.$block['level'].'>'.$text.'</h'.$block['level'].'>'."\n";
+
+ break;
+
+ case 'rule':
+
+ $markup .= '<hr />'."\n";
+
+ break;
+
+ case 'li':
+
+ if (isset($block['first']))
+ {
+ $type = isset($block['ordered']) ? 'ol' : 'ul';
+
+ $markup .= '<'.$type.'>'."\n";
+ }
+
+ if (isset($block['interrupted']) and ! isset($block['last']))
+ {
+ $block['lines'] []= '';
+ }
+
+ $text = $this->parse_block_elements($block['lines'], 'li');
+
+ $markup .= '<li>'.$text.'</li>'."\n";
+
+ if (isset($block['last']))
+ {
+ $type = isset($block['ordered']) ? 'ol' : 'ul';
+
+ $markup .= '</'.$type.'>'."\n";
+ }
+
+ break;
+
+ case 'markup':
+
+ $markup .= $block['text']."\n";
+
+ break;
+
+ default:
+
+ $markup .= $block['text']."\n";
+ }
+ }
+
+ return $markup;
+ }
+
+ private function parse_span_elements($text, $markers = array(" \n", '![', '&', '*', '<', '[', '\\', '_', '`', 'http', '~~'))
+ {
+ if (isset($text[1]) === false or $markers === array())
+ {
+ return $text;
+ }
+
+ # ~
+
+ $markup = '';
+
+ while ($markers)
+ {
+ $closest_marker = null;
+ $closest_marker_index = 0;
+ $closest_marker_position = null;
+
+ foreach ($markers as $index => $marker)
+ {
+ $marker_position = strpos($text, $marker);
+
+ if ($marker_position === false)
+ {
+ unset($markers[$index]);
+
+ continue;
+ }
+
+ if ($closest_marker === null or $marker_position < $closest_marker_position)
+ {
+ $closest_marker = $marker;
+ $closest_marker_index = $index;
+ $closest_marker_position = $marker_position;
+ }
+ }
+
+ # ~
+
+ if ($closest_marker === null or isset($text[$closest_marker_position + 1]) === false)
+ {
+ $markup .= $text;
+
+ break;
+ }
+ else
+ {
+ $markup .= substr($text, 0, $closest_marker_position);
+ }
+
+ $text = substr($text, $closest_marker_position);
+
+ # ~
+
+ unset($markers[$closest_marker_index]);
+
+ # ~
+
+ switch ($closest_marker)
+ {
+ case " \n":
+
+ $markup .= '<br />'."\n";
+
+ $offset = 3;
+
+ break;
+
+ case '![':
+ case '[':
+
+ if (strpos($text, ']') and preg_match('/\[((?:[^][]|(?R))*)\]/', $text, $matches))
+ {
+ $element = array(
+ '!' => $text[0] === '!',
+ 'a' => $matches[1],
+ );
+
+ $offset = strlen($matches[0]);
+
+ if ($element['!'])
+ {
+ $offset++;
+ }
+
+ $remaining_text = substr($text, $offset);
+
+ if ($remaining_text[0] === '(' and preg_match('/\([ ]*(.*?)(?:[ ]+[\'"](.+?)[\'"])?[ ]*\)/', $remaining_text, $matches))
+ {
+ $element['»'] = $matches[1];
+
+ if (isset($matches[2]))
+ {
+ $element['#'] = $matches[2];
+ }
+
+ $offset += strlen($matches[0]);
+ }
+ elseif ($this->reference_map)
+ {
+ $reference = $element['a'];
+
+ if (preg_match('/^\s*\[(.*?)\]/', $remaining_text, $matches))
+ {
+ $reference = $matches[1] ? $matches[1] : $element['a'];
+
+ $offset += strlen($matches[0]);
+ }
+
+ $reference = strtolower($reference);
+
+ if (isset($this->reference_map[$reference]))
+ {
+ $element['»'] = $this->reference_map[$reference]['»'];
+
+ if (isset($this->reference_map[$reference]['#']))
+ {
+ $element['#'] = $this->reference_map[$reference]['#'];
+ }
+ }
+ else
+ {
+ unset($element);
+ }
+ }
+ else
+ {
+ unset($element);
+ }
+ }
+
+ if (isset($element))
+ {
+ $element['»'] = str_replace('&', '&amp;', $element['»']);
+ $element['»'] = str_replace('<', '&lt;', $element['»']);
+
+ if ($element['!'])
+ {
+ $markup .= '<img alt="'.$element['a'].'" src="'.$element['»'].'"';
+
+ if (isset($element['#']))
+ {
+ $markup .= ' title="'.$element['#'].'"';
+ }
+
+ $markup .= ' />';
+ }
+ else
+ {
+ $element['a'] = $this->parse_span_elements($element['a'], $markers);
+
+ $markup .= '<a href="'.$element['»'].'"';
+
+ if (isset($element['#']))
+ {
+ $markup .= ' title="'.$element['#'].'"';
+ }
+
+ $markup .= '>'.$element['a'].'</a>';
+ }
+
+ unset($element);
+ }
+ else
+ {
+ $markup .= $closest_marker;
+
+ $offset = $closest_marker === '![' ? 2 : 1;
+ }
+
+ break;
+
+ case '&':
+
+ if (preg_match('/^&#?\w+;/', $text, $matches))
+ {
+ $markup .= $matches[0];
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '&amp;';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '*':
+ case '_':
+
+ if ($text[1] === $closest_marker and preg_match(self::$strong_regex[$closest_marker], $text, $matches))
+ {
+ $markers[] = $closest_marker;
+ $matches[1] = $this->parse_span_elements($matches[1], $markers);
+
+ $markup .= '<strong>'.$matches[1].'</strong>';
+ }
+ elseif (preg_match(self::$em_regex[$closest_marker], $text, $matches))
+ {
+ $markers[] = $closest_marker;
+ $matches[1] = $this->parse_span_elements($matches[1], $markers);
+
+ $markup .= '<em>'.$matches[1].'</em>';
+ }
+
+ if (isset($matches) and $matches)
+ {
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= $closest_marker;
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '<':
+
+ if (strpos($text, '>') !== false)
+ {
+ if ($text[1] === 'h' and preg_match('/^<(https?:[\/]{2}[^\s]+?)>/i', $text, $matches))
+ {
+ $element_url = $matches[1];
+ $element_url = str_replace('&', '&amp;', $element_url);
+ $element_url = str_replace('<', '&lt;', $element_url);
+
+ $markup .= '<a href="'.$element_url.'">'.$element_url.'</a>';
+
+ $offset = strlen($matches[0]);
+ }
+ elseif (strpos($text, '@') > 1 and preg_match('/<(\S+?@\S+?)>/', $text, $matches))
+ {
+ $markup .= '<a href="mailto:'.$matches[1].'">'.$matches[1].'</a>';
+
+ $offset = strlen($matches[0]);
+ }
+ elseif (preg_match('/^<\/?\w.*?>/', $text, $matches))
+ {
+ $markup .= $matches[0];
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '&lt;';
+
+ $offset = 1;
+ }
+ }
+ else
+ {
+ $markup .= '&lt;';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '\\':
+
+ if (in_array($text[1], self::$special_characters))
+ {
+ $markup .= $text[1];
+
+ $offset = 2;
+ }
+ else
+ {
+ $markup .= '\\';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case '`':
+
+ if (preg_match('/^(`+)[ ]*(.+?)[ ]*(?<!`)\1(?!`)/', $text, $matches))
+ {
+ $element_text = $matches[2];
+ $element_text = htmlspecialchars($element_text, ENT_NOQUOTES, 'UTF-8');
+
+ $markup .= '<code>'.$element_text.'</code>';
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '`';
+
+ $offset = 1;
+ }
+
+ break;
+
+ case 'http':
+
+ if (preg_match('/^https?:[\/]{2}[^\s]+\b\/*/ui', $text, $matches))
+ {
+ $element_url = $matches[0];
+ $element_url = str_replace('&', '&amp;', $element_url);
+ $element_url = str_replace('<', '&lt;', $element_url);
+
+ $markup .= '<a href="'.$element_url.'">'.$element_url.'</a>';
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= 'http';
+
+ $offset = 4;
+ }
+
+ break;
+
+ case '~~':
+
+ if (preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $text, $matches))
+ {
+ $matches[1] = $this->parse_span_elements($matches[1], $markers);
+
+ $markup .= '<del>'.$matches[1].'</del>';
+
+ $offset = strlen($matches[0]);
+ }
+ else
+ {
+ $markup .= '~~';
+
+ $offset = 2;
+ }
+
+ break;
+ }
+
+ if (isset($offset))
+ {
+ $text = substr($text, $offset);
+ }
+
+ $markers[$closest_marker_index] = $closest_marker;
+ }
+
+ return $markup;
+ }
+
+ #
+ # Fields
+ #
+
+ private $reference_map = array();
+
+ #
+ # Read-only
+
+ private static $strong_regex = array(
+ '*' => '/^[*]{2}((?:[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',
+ '_' => '/^__((?:[^_]|_[^_]*_)+?)__(?!_)/us',
+ );
+
+ private static $em_regex = array(
+ '*' => '/^[*]((?:[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',
+ '_' => '/^_((?:[^_]|__[^_]*__)+?)_(?!_)\b/us',
+ );
+
+ private static $special_characters = array(
+ '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!',
+ );
+
+ private static $text_level_elements = array(
+ 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',
+ 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',
+ 'i', 'rp', 'sub', 'code', 'strike', 'marquee',
+ 'q', 'rt', 'sup', 'font', 'strong',
+ 's', 'tt', 'var', 'mark',
+ 'u', 'xm', 'wbr', 'nobr',
+ 'ruby',
+ 'span',
+ 'time',
+ );
+}
diff --git a/framework/Vendor/PhpShell/PHP/Shell.php b/framework/Vendor/PhpShell/PHP/Shell.php
new file mode 100644
index 00000000..8012475e
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell.php
@@ -0,0 +1,1091 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/*
+(c) 2006 Jan Kneschke <jan@kneschke.de>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+*/
+
+/**
+* A interactive PHP Shell
+*
+* The more I work with other languages like python and ruby I like their way how they
+* work on problems. While PHP is very forgiving on errors, it is weak on the debugging
+* side. It was missing a simple to use interactive shell for years. Python and Ruby have
+* their ipython and iruby shell which give you a direct way to interact with the objects.
+* No need to write a script and execute it afterwards.
+*
+* Starting the Shell:
+*
+* The package contains a shell wrapper for windows and unix:
+* <pre>
+* sh> php-shell.sh
+* win> php-shell
+* </pre>
+*
+* Both are calling the wrapper script <code>php -q php-shell-cmd.php</code>
+*
+* Inline Help
+*
+* <pre>
+* PHP-Shell - Version 0.2.0, with readline() support
+* (c) 2006, Jan Kneschke <jan@kneschke.de>
+*
+* >> use '?' to open the inline help
+*
+* >> ?
+* "inline help for the PHP-shell
+*
+* >> ?
+* print this help
+* >> ? <topic>
+* get the doccomment for a class, method, property or function
+* >> p <var>
+* execute a verbose print (if implemented)
+* >> quit
+* leave shell
+* "
+* >> ? PHP_Shell
+* </pre>
+* Alternatives
+*
+* - http://david.acz.org/phpa/
+* - http://www.hping.org/phpinteractive/
+* - the embedded interactive php-shell: $ php -a
+*
+* @package PHP
+*/
+
+/**
+* PHP_Shell
+*
+* a interactive PHP Shell with tab-completion and history
+* it can catch FATAL errors before executing the code
+*
+* Extensions are provided through three side-classes:
+*
+* - PHP_Shell_Commands
+* - PHP_Shell_Options
+* - PHP_Shell_Extensions
+*
+* @package PHP
+*/
+
+require_once(dirname(__FILE__)."/Shell/Commands.php");
+require_once(dirname(__FILE__)."/Shell/Options.php"); /* for the tab-complete */
+
+class PHP_Shell {
+ /**
+ * current code-buffer
+ * @var string
+ */
+ protected $code;
+
+ /**
+ * set if readline support is enabled
+ * @var bool
+ */
+ protected $have_readline;
+
+ /**
+ * current version of the class
+ * @var string
+ */
+ protected $version = '0.3.1';
+
+ /**
+ *
+ */
+ protected $stdin;
+
+ protected $code_buffer;
+
+ public $has_semicolon=false;
+
+ /**
+ * init the shell and change if readline support is available
+ */
+ public function __construct() {
+ $this->code = '';
+
+ $this->stdin = null;
+
+ $this->have_readline = function_exists('readline');
+
+ if ($this->have_readline) {
+ readline_completion_function('__shell_readline_complete');
+ }
+
+ $this->use_readline = true;
+
+ $cmd = PHP_Shell_Commands::getInstance();
+
+ $cmd->registerCommand('#^quit$#', $this, 'cmdQuit', 'quit', 'leaves the shell');
+ $cmd->registerCommand('#^\?$#', $this, 'cmdHelp', '?', 'show this help');
+ $cmd->registerCommand('#^\?\s+license$#', $this, 'cmdLicense', '? license', 'show license of the shell');
+ }
+
+
+ /**
+ * parse the PHP code
+ *
+ * we parse before we eval() the code to
+ * - fetch fatal errors before they come up
+ * - know about where we have to wait for closing braces
+ *
+ * @return int 0 if a executable statement is in the code-buffer, non-zero otherwise
+ */
+ public function parse() {
+ ## remove empty lines
+ if (trim($this->code) == '') return 1;
+
+ $t = token_get_all('<?php '.$this->code.' ?>');
+
+ $need_semicolon = 1; /* do we need a semicolon to complete the statement ? */
+ $need_return = 1; /* can we prepend a return to the eval-string ? */
+ $open_comment = 0; /* a open multi-line comment */
+ $eval = ''; /* code to be eval()'ed later */
+ $braces = array(); /* to track if we need more closing braces */
+
+ $methods = array(); /* to track duplicate methods in a class declaration */
+ $ts = array(); /* tokens without whitespaces */
+
+ foreach ($t as $ndx => $token) {
+ if (is_array($token)) {
+ $ignore = 0;
+
+ switch($token[0]) {
+ case T_WHITESPACE:
+ case T_OPEN_TAG:
+ case T_CLOSE_TAG:
+ $ignore = 1;
+ break;
+ case T_FOREACH:
+ case T_DO:
+ case T_WHILE:
+ case T_FOR:
+
+ case T_IF:
+ case T_RETURN:
+
+ case T_CLASS:
+ case T_FUNCTION:
+ case T_INTERFACE:
+
+ case T_PRINT:
+ case T_ECHO:
+
+ case T_COMMENT:
+ case T_UNSET:
+
+ case T_INCLUDE:
+ case T_REQUIRE:
+ case T_INCLUDE_ONCE:
+ case T_REQUIRE_ONCE:
+ case T_TRY:
+ case T_SWITCH:
+ case T_DEFAULT:
+ case T_CASE:
+ case T_BREAK:
+ case T_DOC_COMMENT:
+ $need_return = 0;
+ break;
+ case T_EMPTY:
+ case T_ISSET:
+ case T_EVAL:
+ case T_EXIT:
+
+ case T_VARIABLE:
+ case T_STRING:
+ case T_NEW:
+ case T_EXTENDS:
+ case T_IMPLEMENTS:
+ case T_OBJECT_OPERATOR:
+ case T_DOUBLE_COLON:
+ case T_INSTANCEOF:
+
+ case T_CATCH:
+ case T_THROW:
+
+ case T_ELSE:
+ case T_AS:
+ case T_LNUMBER:
+ case T_DNUMBER:
+ case T_CONSTANT_ENCAPSED_STRING:
+ case T_ENCAPSED_AND_WHITESPACE:
+ case T_CHARACTER:
+ case T_ARRAY:
+ case T_DOUBLE_ARROW:
+
+ case T_CONST:
+ case T_PUBLIC:
+ case T_PROTECTED:
+ case T_PRIVATE:
+ case T_ABSTRACT:
+ case T_STATIC:
+ case T_VAR:
+
+ case T_INC:
+ case T_DEC:
+ case T_SL:
+ case T_SL_EQUAL:
+ case T_SR:
+ case T_SR_EQUAL:
+
+ case T_IS_EQUAL:
+ case T_IS_IDENTICAL:
+ case T_IS_GREATER_OR_EQUAL:
+ case T_IS_SMALLER_OR_EQUAL:
+
+ case T_BOOLEAN_OR:
+ case T_LOGICAL_OR:
+ case T_BOOLEAN_AND:
+ case T_LOGICAL_AND:
+ case T_LOGICAL_XOR:
+ case T_MINUS_EQUAL:
+ case T_PLUS_EQUAL:
+ case T_MUL_EQUAL:
+ case T_DIV_EQUAL:
+ case T_MOD_EQUAL:
+ case T_XOR_EQUAL:
+ case T_AND_EQUAL:
+ case T_OR_EQUAL:
+
+ case T_FUNC_C:
+ case T_CLASS_C:
+ case T_LINE:
+ case T_FILE:
+
+ case T_BOOL_CAST:
+ case T_INT_CAST:
+ case T_STRING_CAST:
+
+ /* just go on */
+ break;
+ default:
+ /* debug unknown tags*/
+ error_log(sprintf("unknown tag: %d (%s): %s".PHP_EOL, $token[0], token_name($token[0]), $token[1]));
+
+ break;
+ }
+ if (!$ignore) {
+ $eval .= $token[1]." ";
+ $ts[] = array("token" => $token[0], "value" => $token[1]);
+ }
+ } else {
+ $ts[] = array("token" => $token, "value" => '');
+
+ $last = count($ts) - 1;
+
+ switch ($token) {
+ case '(':
+ /* walk backwards through the tokens */
+
+ if ($last >= 4 &&
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_OBJECT_OPERATOR &&
+ $ts[$last - 3]['token'] == ')' ) {
+ /* func()->method()
+ *
+ * we can't know what func() is return, so we can't
+ * say if the method() exists or not
+ *
+ */
+ } else if ($last >= 3 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[0]['token'] != T_ABSTRACT && /* if we are not in a class definition */
+ $ts[1]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_OBJECT_OPERATOR &&
+ $ts[$last - 3]['token'] == T_VARIABLE ) {
+
+ /* $object->method( */
+
+ /* catch (Exception $e) does not set $e in $GLOBALS[] */
+ $in_catch = 0;
+
+ foreach ($ts as $v) {
+ if ($v['token'] == T_CATCH) {
+ $in_catch = 1;
+ }
+ }
+
+ if (!$in_catch) {
+ /* $object has to exist and has to be a object */
+ $objname = $ts[$last - 3]['value'];
+
+ if (!isset($GLOBALS[ltrim($objname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $objname));
+ }
+ $object = $GLOBALS[ltrim($objname, '$')];
+
+ if (!is_object($object)) {
+ throw new Exception(sprintf('Variable \'%s\' is not a class', $objname));
+ }
+
+ $method = $ts[$last - 1]['value'];
+
+ /* obj */
+
+ if (!method_exists($object, $method)) {
+ throw new Exception(sprintf("Variable %s (Class '%s') doesn't have a method named '%s'",
+ $objname, get_class($object), $method));
+ }
+ }
+ } else if ($last >= 3 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_VARIABLE &&
+ $ts[$last - 2]['token'] == T_OBJECT_OPERATOR &&
+ $ts[$last - 3]['token'] == T_VARIABLE ) {
+
+ /* $object->$method( */
+
+ /* $object has to exist and has to be a object */
+ $objname = $ts[$last - 3]['value'];
+
+ if (!isset($GLOBALS[ltrim($objname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $objname));
+ }
+ $object = $GLOBALS[ltrim($objname, '$')];
+
+ if (!is_object($object)) {
+ throw new Exception(sprintf('Variable \'%s\' is not a class', $objname));
+ }
+
+ $methodname = $ts[$last - 1]['value'];
+
+ if (!isset($GLOBALS[ltrim($methodname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $methodname));
+ }
+ $method = $GLOBALS[ltrim($methodname, '$')];
+
+ /* obj */
+
+ if (!method_exists($object, $method)) {
+ throw new Exception(sprintf("Variable %s (Class '%s') doesn't have a method named '%s'",
+ $objname, get_class($object), $method));
+ }
+
+ } else if ($last >= 6 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_OBJECT_OPERATOR &&
+ $ts[$last - 3]['token'] == ']' &&
+ /* might be anything as index */
+ $ts[$last - 5]['token'] == '[' &&
+ $ts[$last - 6]['token'] == T_VARIABLE ) {
+
+ /* $object[...]->method( */
+
+ /* $object has to exist and has to be a object */
+ $objname = $ts[$last - 6]['value'];
+
+ if (!isset($GLOBALS[ltrim($objname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $objname));
+ }
+ $array = $GLOBALS[ltrim($objname, '$')];
+
+ if (!is_array($array)) {
+ throw new Exception(sprintf('Variable \'%s\' is not a array', $objname));
+ }
+
+ $andx = $ts[$last - 4]['value'];
+
+ if (!isset($array[$andx])) {
+ throw new Exception(sprintf('%s[\'%s\'] is not set', $objname, $andx));
+ }
+
+ $object = $array[$andx];
+
+ if (!is_object($object)) {
+ throw new Exception(sprintf('Variable \'%s\' is not a class', $objname));
+ }
+
+ $method = $ts[$last - 1]['value'];
+
+ /* obj */
+
+ if (!method_exists($object, $method)) {
+ throw new Exception(sprintf("Variable %s (Class '%s') doesn't have a method named '%s'",
+ $objname, get_class($object), $method));
+ }
+
+ } else if ($last >= 3 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_DOUBLE_COLON &&
+ $ts[$last - 3]['token'] == T_STRING ) {
+
+ /* Class::method() */
+
+ /* $object has to exist and has to be a object */
+ $classname = $ts[$last - 3]['value'];
+
+ if (!class_exists($classname)) {
+ throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname));
+ }
+
+ $method = $ts[$last - 1]['value'];
+
+ if (!in_array($method, get_class_methods($classname))) {
+ throw new Exception(sprintf("Class '%s' doesn't have a method named '%s'",
+ $classname, $method));
+ }
+ } else if ($last >= 3 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_VARIABLE &&
+ $ts[$last - 2]['token'] == T_DOUBLE_COLON &&
+ $ts[$last - 3]['token'] == T_STRING ) {
+
+ /* $var::method() */
+
+ /* $object has to exist and has to be a object */
+ $classname = $ts[$last - 3]['value'];
+
+ if (!class_exists($classname)) {
+ throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname));
+ }
+
+ $methodname = $ts[$last - 1]['value'];
+
+ if (!isset($GLOBALS[ltrim($methodname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $methodname));
+ }
+ $method = $GLOBALS[ltrim($methodname, '$')];
+
+ if (!in_array($method, get_class_methods($classname))) {
+ throw new Exception(sprintf("Class '%s' doesn't have a method named '%s'",
+ $classname, $method));
+ }
+
+ } else if ($last >= 2 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_NEW ) {
+
+ /* new Class() */
+
+ /* don't care about this in a class ... { ... } */
+
+ $classname = $ts[$last - 1]['value'];
+
+ if (!class_exists($classname)) {
+ throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname));
+ }
+
+ $r = new ReflectionClass($classname);
+
+ if ($r->isAbstract()) {
+ throw new Exception(sprintf("Can't instantiate abstract Class '%s'", $classname));
+ }
+
+ if (!$r->isInstantiable()) {
+ throw new Exception(sprintf('Class \'%s\' can\'t be instantiated. Is the class abstract ?', $classname));
+ }
+
+ } else if ($last >= 2 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_FUNCTION ) {
+
+ /* make sure we are not a in class definition */
+
+ /* function a() */
+
+ $func = $ts[$last - 1]['value'];
+
+ if (function_exists($func)) {
+ throw new Exception(sprintf('Function \'%s\' is already defined', $func));
+ }
+ } else if ($last >= 4 &&
+ $ts[0]['token'] == T_CLASS &&
+ $ts[1]['token'] == T_STRING &&
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_FUNCTION ) {
+
+ /* make sure we are not a in class definition */
+
+ /* class a { .. function a() ... } */
+
+ $func = $ts[$last - 1]['value'];
+ $classname = $ts[1]['value'];
+
+ if (isset($methods[$func])) {
+ throw new Exception(sprintf("Can't redeclare method '%s' in Class '%s'", $func, $classname));
+ }
+
+ $methods[$func] = 1;
+
+ } else if ($last >= 1 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[0]['token'] != T_ABSTRACT && /* if we are not in a class definition */
+ $ts[1]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_STRING ) {
+ /* func() */
+ $funcname = $ts[$last - 1]['value'];
+
+ if (!function_exists($funcname)) {
+ throw new Exception(sprintf("Function %s() doesn't exist", $funcname));
+ }
+ } else if ($last >= 1 &&
+ $ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_VARIABLE ) {
+
+ /* $object has to exist and has to be a object */
+ $funcname = $ts[$last - 1]['value'];
+
+ if (!isset($GLOBALS[ltrim($funcname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $funcname));
+ }
+ $func = $GLOBALS[ltrim($funcname, '$')];
+
+ if (!function_exists($func)) {
+ throw new Exception(sprintf("Function %s() doesn't exist", $func));
+ }
+
+ }
+
+ array_push($braces, $token);
+ break;
+ case '{':
+ $need_return = 0;
+
+ if ($last >= 2 &&
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_CLASS ) {
+
+ /* class name { */
+
+ $classname = $ts[$last - 1]['value'];
+
+ if (class_exists($classname, false)) {
+ throw new Exception(sprintf("Class '%s' can't be redeclared", $classname));
+ }
+ } else if ($last >= 4 &&
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_EXTENDS &&
+ $ts[$last - 3]['token'] == T_STRING &&
+ $ts[$last - 4]['token'] == T_CLASS ) {
+
+ /* class classname extends classname { */
+
+ $classname = $ts[$last - 3]['value'];
+ $extendsname = $ts[$last - 1]['value'];
+
+ if (class_exists($classname, false)) {
+ throw new Exception(sprintf("Class '%s' can't be redeclared",
+ $classname));
+ }
+ if (!class_exists($extendsname, true)) {
+ throw new Exception(sprintf("Can't extend '%s' ... from not existing Class '%s'",
+ $classname, $extendsname));
+ }
+ } else if ($last >= 4 &&
+ $ts[$last - 1]['token'] == T_STRING &&
+ $ts[$last - 2]['token'] == T_IMPLEMENTS &&
+ $ts[$last - 3]['token'] == T_STRING &&
+ $ts[$last - 4]['token'] == T_CLASS ) {
+
+ /* class name implements interface { */
+
+ $classname = $ts[$last - 3]['value'];
+ $implements = $ts[$last - 1]['value'];
+
+ if (class_exists($classname, false)) {
+ throw new Exception(sprintf("Class '%s' can't be redeclared",
+ $classname));
+ }
+ if (!interface_exists($implements, false)) {
+ throw new Exception(sprintf("Can't implement not existing Interface '%s' for Class '%s'",
+ $implements, $classname));
+ }
+ }
+
+ array_push($braces, $token);
+ break;
+ case '}':
+ $need_return = 0;
+ case ')':
+ array_pop($braces);
+ break;
+ case '[':
+ if ($ts[0]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[0]['token'] != T_ABSTRACT && /* if we are not in a class definition */
+ $ts[1]['token'] != T_CLASS && /* if we are not in a class definition */
+ $ts[$last - 1]['token'] == T_VARIABLE) {
+ /* $a[] only works on array and string */
+
+ /* $object has to exist and has to be a object */
+ $objname = $ts[$last - 1]['value'];
+
+ if (!isset($GLOBALS[ltrim($objname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $objname));
+ }
+ $obj = $GLOBALS[ltrim($objname, '$')];
+
+ if (is_object($obj)) {
+ throw new Exception(sprintf('Objects (%s) don\'t support array access operators', $objname));
+ }
+ }
+ break;
+ }
+
+ $eval .= $token;
+ }
+ }
+
+ $last = count($ts) - 1;
+ if ($last >= 2 &&
+ $ts[$last - 0]['token'] == T_STRING &&
+ $ts[$last - 1]['token'] == T_DOUBLE_COLON &&
+ $ts[$last - 2]['token'] == T_STRING ) {
+
+ /* Class::constant */
+
+ /* $object has to exist and has to be a object */
+ $classname = $ts[$last - 2]['value'];
+
+ if (!class_exists($classname)) {
+ throw new Exception(sprintf('Class \'%s\' doesn\'t exist', $classname));
+ }
+
+ $constname = $ts[$last - 0]['value'];
+
+ $c = new ReflectionClass($classname);
+ if (!$c->hasConstant($constname)) {
+ throw new Exception(sprintf("Class '%s' doesn't have a constant named '%s'",
+ $classname, $constname));
+ }
+ } else if ($last == 0 &&
+ $ts[$last - 0]['token'] == T_VARIABLE ) {
+
+ /* $var */
+
+ $varname = $ts[$last - 0]['value'];
+
+ if (!isset($GLOBALS[ltrim($varname, '$')])) {
+ throw new Exception(sprintf('Variable \'%s\' is not set', $varname));
+ }
+ }
+
+
+ $need_more = (count($braces) > 0) || $open_comment;
+
+ if ($need_more || ';' === $token) {
+ $need_semicolon = 0;
+ }
+
+ if ($need_return) {
+ $eval = "return ".$eval;
+ }
+
+ /* add a traling ; if necessary */
+ if ($need_semicolon)
+ {
+ $this->has_semicolon = preg_match('/;\s*$/', $eval);
+ $eval .= ';';
+ }
+
+ if (!$need_more) {
+ $this->code = $eval;
+ }
+
+ return $need_more;
+ }
+
+ /**
+ * show the prompt and fetch a single line
+ *
+ * uses readline() if avaialbe
+ *
+ * @return string a input-line
+ */
+ public function readline() {
+ if (empty($this->code)) print PHP_EOL;
+
+ $prompt = (empty($this->code)) ? '>> ' : '.. ';
+
+ if (count($this->code_buffer) > 0) {
+ print $prompt;
+
+ $line = array_shift($this->code_buffer);
+
+ print $line.PHP_EOL;
+
+ return $line.PHP_EOL;
+ }
+
+ if ($this->have_readline) {
+ $l = readline($prompt);
+
+ readline_add_history($l);
+ } else {
+ print $prompt;
+
+ if (is_null($this->stdin)) {
+ if (false === ($this->stdin = fopen("php://stdin", "r"))) {
+ return false;
+ }
+ }
+ $l = fgets($this->stdin);
+ }
+ return $l;
+ }
+
+ /**
+ * get the inline help
+ *
+ * @return string the inline help as string
+ */
+ public function cmdHelp($l) {
+ $o = 'Inline Help:'.PHP_EOL;
+
+ $cmds = PHP_Shell_Commands::getInstance()->getCommands();
+
+ $help = array();
+ foreach ($cmds as $cmd) {
+ $help[] = sprintf(' >> %s'.PHP_EOL.' %s'.PHP_EOL,
+ $cmd['command'],
+ $cmd['description']
+ );
+ }
+
+ return var_export(implode("\n", $help), 1);
+ }
+
+ /**
+ * get the license string
+ *
+ * @return string the inline help as string
+ */
+ public function cmdLicense($l) {
+ $o = <<<EOF
+(c) 2006 Jan Kneschke <jan@kneschke.de>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+EOF;
+
+ return var_export($o, 1);
+ }
+
+ /**
+ * handle the 'quit' command
+ *
+ * @return bool false to leave the input() call
+ * @see input
+ */
+ protected function cmdQuit($l) {
+ return false;
+ }
+
+ /**
+ * handle the input line
+ *
+ * read the input and handle the commands of the shell
+ *
+ * @return bool false on 'quit' or EOF, true otherwise
+ */
+ public function input() {
+ $l = $this->readline();
+
+ /* got EOF ? */
+ if (false === $l) return false;
+
+ $l = trim($l);
+
+ if (empty($this->code)) {
+ $this->verbose = 0;
+
+ $cmds = PHP_Shell_Commands::getInstance()->getCommands();
+
+ foreach ($cmds as $cmd) {
+ if (preg_match($cmd['regex'], $l)) {
+ $obj = $cmd['obj'];
+ $func = $cmd['method'];
+
+ if (false === ($l = $obj->$func($l))) {
+ ## quit
+ return false;
+ }
+
+ if (is_array($l)) {
+ $this->code_buffer = $l;
+ $l = '';
+ }
+ break;
+ }
+ }
+ }
+
+ $this->appendCode($l);
+
+ return true;
+ }
+
+ /**
+ * get the code-buffer
+ *
+ * @return string the code-buffer
+ */
+ public function getCode() {
+ return $this->code;
+ return $code;
+ }
+
+ /**
+ * reset the code-buffer
+ */
+ public function resetCode() {
+ $this->has_semicolon=false;
+ $this->code = '';
+ }
+
+ /**
+ * append code to the code-buffer
+ *
+ * @param string $code input buffer
+ */
+ public function appendCode($code) {
+ if (strlen($code)) $code .= PHP_EOL;
+
+ $this->code .= $code;
+ }
+
+ /**
+ * check if readline support is enabled
+ *
+ * @return bool true if enabled, false otherwise
+ */
+ public function hasReadline() {
+ return $this->have_readline;
+ }
+
+ /**
+ * get version of the class
+ *
+ * @return string version-string
+ */
+ public function getVersion() {
+ return $this->version;
+ }
+}
+
+/**
+* a readline completion callback
+*
+* @param string $str linebuffer
+* @param integer $pos position in linebuffer
+* @return array list of possible matches
+*/
+function __shell_readline_complete($str, $pos) {
+ $in = readline_info('line_buffer');
+
+ /**
+ * parse the line-buffer backwards to see if we have a
+ * - constant
+ * - function
+ * - variable
+ */
+
+ $m = array();
+
+ if (preg_match('#\$([A-Za-z0-9_]+)->#', $in, $a)) {
+ /* check for $o->... */
+ $name = $a[1];
+
+ if (isset($GLOBALS[$name]) && is_object($GLOBALS[$name])) {
+ $c = get_class_methods($GLOBALS[$name]);
+
+ foreach ($c as $v) {
+ $m[] = $v.'(';
+ }
+ $c = get_class_vars(get_class($GLOBALS[$name]));
+
+ foreach ($c as $k => $v) {
+ $m[] = $k;
+ }
+
+ return $m;
+ }
+ } else if (preg_match('#\$([A-Za-z0-9_]+)\[([^\]]+)\]->#', $in, $a)) {
+ /* check for $o[...]->... */
+ $name = $a[1];
+
+ if (isset($GLOBALS[$name]) &&
+ is_array($GLOBALS[$name]) &&
+ isset($GLOBALS[$name][$a[2]])) {
+
+ $c = get_class_methods($GLOBALS[$name][$a[2]]);
+
+ foreach ($c as $v) {
+ $m[] = $v.'(';
+ }
+ $c = get_class_vars(get_class($GLOBALS[$name][$a[2]]));
+
+ foreach ($c as $k => $v) {
+ $m[] = $k;
+ }
+ return $m;
+ }
+
+ } else if (preg_match('#([A-Za-z0-9_]+)::#', $in, $a)) {
+ /* check for Class:: */
+ $name = $a[1];
+
+ if (class_exists($name, false)) {
+ $c = get_class_methods($name);
+
+ foreach ($c as $v) {
+ $m[] = sprintf('%s::%s(', $name, $v);
+ }
+
+ $cl = new ReflectionClass($name);
+ $c = $cl->getConstants();
+
+ foreach ($c as $k => $v) {
+ $m[] = sprintf('%s::%s', $name, $k);
+ }
+
+ return $m;
+ }
+ } else if (preg_match('#\$([a-zA-Z]?[a-zA-Z0-9_]*)$#', $in)) {
+ $m = array_keys($GLOBALS);
+
+ return $m;
+ } else if (preg_match('#new #', $in)) {
+ $c = get_declared_classes();
+
+ foreach ($c as $v) {
+ $m[] = $v.'(';
+ }
+
+ return $m;
+ } else if (preg_match('#^:set #', $in)) {
+ foreach (PHP_Shell_Options::getInstance()->getOptions() as $v) {
+ $m[] = $v;
+ }
+
+ return $m;
+ }
+
+ $f = get_defined_functions();
+
+ foreach ($f['internal'] as $v) {
+ $m[] = $v.'(';
+ }
+
+ foreach ($f['user'] as $v) {
+ $m[] = $v.'(';
+ }
+
+ $c = get_declared_classes();
+
+ foreach ($c as $v) {
+ $m[] = $v.'::';
+ }
+
+ $c = get_defined_constants();
+
+ foreach ($c as $k => $v) {
+ $m[] = $k;
+ }
+
+ /* taken from http://de3.php.net/manual/en/reserved.php */
+ $m[] = 'abstract';
+ $m[] = 'and';
+ $m[] = 'array(';
+ $m[] = 'as';
+ $m[] = 'break';
+ $m[] = 'case';
+ $m[] = 'catch';
+ $m[] = 'class';
+ $m[] = 'const';
+ $m[] = 'continue';
+ # $m[] = 'declare';
+ $m[] = 'default';
+ $m[] = 'die(';
+ $m[] = 'do';
+ $m[] = 'echo(';
+ $m[] = 'else';
+ $m[] = 'elseif';
+ $m[] = 'empty(';
+ # $m[] = 'enddeclare';
+ $m[] = 'eval(';
+ $m[] = 'exception';
+ $m[] = 'extends';
+ $m[] = 'exit(';
+ $m[] = 'extends';
+ $m[] = 'final';
+ $m[] = 'for (';
+ $m[] = 'foreach (';
+ $m[] = 'function';
+ $m[] = 'global';
+ $m[] = 'if';
+ $m[] = 'implements';
+ $m[] = 'include "';
+ $m[] = 'include_once "';
+ $m[] = 'interface';
+ $m[] = 'isset(';
+ $m[] = 'list(';
+ $m[] = 'new';
+ $m[] = 'or';
+ $m[] = 'print(';
+ $m[] = 'private';
+ $m[] = 'protected';
+ $m[] = 'public';
+ $m[] = 'require "';
+ $m[] = 'require_once "';
+ $m[] = 'return';
+ $m[] = 'static';
+ $m[] = 'switch (';
+ $m[] = 'throw';
+ $m[] = 'try';
+ $m[] = 'unset(';
+ # $m[] = 'use';
+ $m[] = 'var';
+ $m[] = 'while';
+ $m[] = 'xor';
+ $m[] = '__FILE__';
+ $m[] = '__FUNCTION__';
+ $m[] = '__CLASS__';
+ $m[] = '__LINE__';
+ $m[] = '__METHOD__';
+
+ # printf("%s ... %s\n", $str, $pos);
+ return $m;
+}
+
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Commands.php b/framework/Vendor/PhpShell/PHP/Shell/Commands.php
new file mode 100644
index 00000000..3d4bf5b2
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Commands.php
@@ -0,0 +1,72 @@
+<?php
+
+/**
+* Commands for the PHP_Shell
+*
+* Extensions can register their own commands for the shell like the
+* InlineHelp Extension which provides inline help for all functions
+*
+* It uses the pattern '? <string>' to catch the cmdline strings.
+*
+* registerCommand() should be called by the extensions in the register()
+* method. Its parameters are
+* - the regex which matches the command
+* - the object and the method to call if the command is matched
+* - the human readable command string and the description for the help
+*/
+class PHP_Shell_Commands {
+ /*
+ * instance of the current class
+ *
+ * @var PHP_Shell_Commands
+ */
+ static protected $instance;
+
+ /**
+ * registered commands
+ *
+ * array('quit' => ... )
+ *
+ * @var array
+ * @see registerCommand
+ */
+ protected $commands = array();
+
+ /**
+ * register your own command for the shell
+ *
+ * @param string $regex a regex to match against the input line
+ * @param string $obj a Object
+ * @param string $method a method in the object to call of the regex matches
+ * @param string $cmd the command string for the help
+ * @param string $help the full help description for this command
+ */
+ public function registerCommand($regex, $obj, $method, $cmd, $help) {
+ $this->commands[] = array(
+ 'regex' => $regex,
+ 'obj' => $obj,
+ 'method' => $method,
+ 'command' => $cmd,
+ 'description' => $help
+ );
+ }
+
+ /**
+ * return a copy of the commands array
+ *
+ * @return all commands
+ */
+ public function getCommands() {
+ return $this->commands;
+ }
+
+ static function getInstance() {
+ if (is_null(self::$instance)) {
+ $class = __CLASS__;
+ self::$instance = new $class();
+ }
+ return self::$instance;
+ }
+}
+
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions.php
new file mode 100644
index 00000000..9b210c47
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+* the interface for all shell extensions
+*
+* Extension can hook into the execution of the shell
+*
+* examples:
+* - execution time for parsing and execute
+* - colours for the output
+* - inline help
+*
+*
+*/
+interface PHP_Shell_Extension {
+ public function register();
+}
+
+/**
+* storage class for Shell Extensions
+*
+*
+*/
+class PHP_Shell_Extensions {
+ /**
+ * @var PHP_Shell_Extensions
+ */
+ static protected $instance;
+
+ /**
+ * storage for the extension
+ *
+ * @var array
+ */
+ protected $exts = array();
+
+ /**
+ * the extension object gives access to the register objects
+ * through the a simple $exts->name->...
+ *
+ * @param string registered name of the extension
+ * @return PHP_Shell_Extension object handle
+ */
+ public function __get($key) {
+ if (!isset($this->exts[$key])) {
+ throw new Exception("Extension $s is not known.");
+ }
+ return $this->exts[$key];
+ }
+
+ /**
+ * register set of extensions
+ *
+ * @param array set of (name, class-name) pairs
+ */
+ public function registerExtensions($exts) {
+ foreach ($exts as $k => $v) {
+ $this->registerExtension($k, $v);
+ }
+ }
+
+ /**
+ * register a single extension
+ *
+ * @param string name of the registered extension
+ * @param PHP_Shell_Extension the extension object
+ */
+ public function registerExtension($k, PHP_Shell_Extension $obj) {
+ $obj->register();
+
+ $this->exts[$k] = $obj;
+ }
+
+ /**
+ * @return object a singleton of the class
+ */
+ static function getInstance() {
+ if (is_null(self::$instance)) {
+ $class = __CLASS__;
+ self::$instance = new $class();
+ }
+ return self::$instance;
+ }
+}
+
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/Autoload.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/Autoload.php
new file mode 100644
index 00000000..72a5692b
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/Autoload.php
@@ -0,0 +1,60 @@
+<?php
+/**
+* Autoload Extension
+*
+* Note: shell wrapper has to create the __autoload() function when
+* isAutoloadEnabled() is true
+*
+* handles the options to enable the internal autoload support
+*
+* :set al
+* :set autoload
+*
+* autoload can't be disabled
+*/
+
+class PHP_Shell_Extensions_Autoload implements PHP_Shell_Extension {
+ /**
+ * does the use want to use the internal autoload ?
+ *
+ * @var bool
+ */
+ protected $autoload = false;
+
+ public function register() {
+ $opt = PHP_Shell_Options::getInstance();
+
+ $opt->registerOption("autoload", $this, "optSetAutoload");
+ $opt->registerOptionAlias("al", "autoload");
+ }
+
+ /**
+ * sets the autoload-flag
+ *
+ * - the $value is ignored and doesn't have to be set
+ * - if __autoload() is defined, the set fails
+ */
+ public function optSetAutoload($key, $value) {
+ if ($this->autoload) {
+ print('autload is already enabled');
+ return;
+ }
+
+ if (function_exists('__autoload')) {
+ print('can\'t enabled autoload as a external __autoload() function is already defined');
+ return;
+ }
+
+ $this->autoload = true;
+ }
+
+ /**
+ * is the autoload-flag set ?
+ *
+ * @return bool true if __autoload() should be set by the external wrapper
+ */
+ public function isAutoloadEnabled() {
+ return $this->autoload;
+ }
+}
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php
new file mode 100644
index 00000000..3926ff9e
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/AutoloadDebug.php
@@ -0,0 +1,84 @@
+<?php
+/**
+* Autoload debugging
+*
+* The internal __autoload() function of the shell-wrapper has two hooks.
+* The first is called before the include is done, the second afterwards.
+*
+* we use it to track the order the includes are handled. That makes it
+* easier to find implicit dependency problems.
+*
+* :set autoloaddebug = on
+* :set autoloaddebug = off
+*
+* the depth functions track the recursive depth of the includes. The
+* wrapper uses it to print the dots at the beginning of the line.
+*/
+class PHP_Shell_Extensions_AutoloadDebug implements PHP_Shell_Extension {
+ /**
+ * is the extenion enabled
+ *
+ * @var bool
+ */
+ protected $autoload_debug = false;
+
+ /**
+ * recursive depth of the includes
+ *
+ * @var int
+ */
+ protected $autoload_depth = 0;
+
+ public function register() {
+ $opt = PHP_Shell_Options::getInstance();
+ $opt->registerOption('autoloaddebug', $this, 'optSetAutoloadDebug');
+ }
+
+ /**
+ * handle the autoloaddebug flag
+ *
+ * @param string
+ */
+ public function optSetAutoloadDebug($key, $value) {
+ switch ($value) {
+ case "enable":
+ case "1":
+ case "on":
+ $this->autoload_debug = true;
+ break;
+ case "disable":
+ case "0":
+ case "off":
+ $this->autoload_debug = false;
+ break;
+ default:
+ printf(":set %s failed, unknown value. Use :set %s = (on|off)", $key, $key);
+ return;
+ }
+
+ }
+
+ /**
+ * is the autoload-debug flag set ?
+ *
+ * @return bool true if debug is enabled
+ */
+ public function isAutoloadDebug() {
+ return $this->autoload_debug;
+ }
+
+ /**
+ * increment the depth counter
+ */
+ public function incAutoloadDepth() {
+ return $this->autoload_depth++;
+ }
+
+ /**
+ * decrement the depth counter
+ */
+ public function decAutoloadDepth() {
+ return --$this->autoload_depth;
+ }
+}
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/Colour.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/Colour.php
new file mode 100644
index 00000000..05d7be1d
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/Colour.php
@@ -0,0 +1,120 @@
+<?php
+
+class PHP_Shell_Extensions_Colour implements PHP_Shell_Extension {
+ static protected $instance;
+ # shell colours
+ const C_RESET = "\033[0m";
+
+ const C_BLACK = "\033[0;30m";
+ const C_RED = "\033[0;31m";
+ const C_GREEN = "\033[0;32m";
+ const C_BROWN = "\033[0;33m";
+ const C_BLUE = "\033[0;34m";
+ const C_PURPLE = "\033[0;35m";
+ const C_CYAN = "\033[0;36m";
+ const C_LIGHT_GRAY = "\033[0;37m";
+
+ const C_GRAY = "\033[1;30m";
+ const C_LIGHT_RED = "\033[1;31m";
+ const C_LIGHT_GREEN = "\033[1;32m";
+ const C_YELLOW = "\033[1;33m";
+ const C_LIGHT_BLUE = "\033[1;34m";
+ const C_LIGHT_PURPLE = "\033[1;35m";
+ const C_LIGHT_CYAN = "\033[1;36m";
+ const C_WHITE = "\033[1;37m";
+
+ /**
+ * shell colours
+ *
+ * @var array
+ * @see applyColourScheme
+ */
+ protected $colours;
+
+ /**
+ * shell colour schemes
+ *
+ * @var array
+ * @see registerColourScheme
+ */
+ protected $colour_scheme;
+
+ public function register() {
+ $opt = PHP_Shell_Options::getInstance();
+
+ $opt->registerOption("background", $this, "optSetBackground");
+ $opt->registerOptionAlias("bg", "background");
+
+ $this->registerColourScheme(
+ "plain", array(
+ "default" => "", "value" => "",
+ "exception" => "", "reset" => ""));
+
+ $this->registerColourScheme(
+ "dark", array(
+ "default" => self::C_YELLOW,
+ "value" => self::C_WHITE,
+ "exception" => self::C_PURPLE));
+
+ $this->registerColourScheme(
+ "light", array(
+ "default" => self::C_BLACK,
+ "value" => self::C_BLUE,
+ "exception" => self::C_RED));
+
+ }
+
+ /**
+ * background colours
+ */
+ public function optSetBackground($key, $value) {
+ if (is_null($value)) {
+ print(':set '.$key.' needs a colour-scheme, e.g. :set '.$key.'=dark');
+ return;
+ }
+ if (false == $this->applyColourScheme($value)) {
+ print('setting colourscheme failed: colourscheme '.$value.' is unknown');
+ return;
+ }
+ }
+
+ /**
+ * get a colour for the shell
+ *
+ * @param string $type one of (value|exception|reset|default)
+ * @return string a colour string or a empty string
+ */
+ public function getColour($type) {
+ return isset($this->colour[$type]) ? $this->colour[$type] : '';
+ }
+
+ /**
+ * apply a colour scheme to the current shell
+ *
+ * @param string $scheme name of the scheme
+ * @return false if colourscheme is not known, otherwise true
+ */
+ public function applyColourScheme($scheme) {
+ if (!isset($this->colour_scheme[$scheme])) return false;
+
+ $this->colour = $this->colour_scheme[$scheme];
+
+ return true;
+ }
+
+ /**
+ * registers a colour scheme
+ *
+ * @param string $scheme name of the colour scheme
+ * @param array a array of colours
+ */
+ public function registerColourScheme($scheme, $colours) {
+ if (!is_array($colours)) return;
+
+ /* set a reset colour if it is not supplied from the outside */
+ if (!isset($colours["reset"])) $colours["reset"] = self::C_RESET;
+
+ $this->colour_scheme[$scheme] = $colours;
+ }
+}
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/ExecutionTime.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/ExecutionTime.php
new file mode 100644
index 00000000..2c2bf9ad
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/ExecutionTime.php
@@ -0,0 +1,56 @@
+<?php
+
+class PHP_Shell_Extensions_ExecutionTime implements PHP_Shell_Extension {
+ protected $show_exectime = false;
+
+ protected $parse_time;
+ protected $exec_time;
+ protected $end_time;
+
+ public function register() {
+ $opt = PHP_Shell_Options::getInstance();
+
+ $opt->registerOption("exectime", $this, "optSetExecTime");
+ }
+
+ public function optSetExecTime($key, $val) {
+ switch ($val) {
+ case "enable":
+ case "1":
+ case "on":
+ $this->show_exectime = true;
+ break;
+ case "disable":
+ case "0":
+ case "off":
+ $this->show_exectime = false;
+ break;
+ default:
+ printf(":set %s failed, unknown value. Use :set %s = (on|off)", $key, $key);
+ break;
+ }
+ }
+
+ public function startParseTime() {
+ $this->parse_time = microtime(1);
+ $this->exec_time = 0.0;
+ }
+ public function startExecTime() {
+ $this->exec_time = microtime(1);
+ }
+ public function stopTime() {
+ $this->end_time = microtime(1);
+ }
+
+ public function getParseTime() {
+ return ($this->exec_time == 0.0 ? $this->end_time : $this->exec_time) - $this->parse_time;
+ }
+
+ public function getExecTime() {
+ return ($this->exec_time == 0.0 ? 0.0 : $this->end_time - $this->exec_time);
+ }
+
+ public function isShow() {
+ return $this->show_exectime;
+ }
+}
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/InlineHelp.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/InlineHelp.php
new file mode 100644
index 00000000..4449d1f4
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/InlineHelp.php
@@ -0,0 +1,140 @@
+<?php
+
+require_once(dirname(__FILE__)."/../Extensions.php");
+require_once(dirname(__FILE__)."/Prototypes.php");
+
+class PHP_Shell_Extensions_InlineHelp implements PHP_Shell_Extension {
+ public function register() {
+ $cmd = PHP_Shell_Commands::getInstance();
+
+ $cmd->registerCommand('#^\? #', $this, 'cmdHelp', '? <var>',
+ 'show the DocComment a Class, Method or Function'.PHP_EOL.
+ ' e.g.: ? fopen(), ? PHP_Shell, ? $__shell');
+ }
+
+ /**
+ * handle the '?' commands
+ *
+ * With the help of the Reflection Class we extract the DocComments and display them
+ * For internal Functions we extract the prototype from the php source.
+ *
+ * ? Class::method()
+ * ? $obj->method()
+ * ? Class::property
+ * ? $obj::property
+ * ? Class
+ * ? $obj
+ * ? function()
+ *
+ * The license of the PHP_Shell class
+ * ? license
+ *
+ * @return string the help text
+ */
+ public function cmdHelp($l) {
+ if ("? " == substr($l, 0, strlen("? "))) {
+ $str = substr($l, 2);
+
+ $cmd = '';
+
+ if (preg_match('#^([A-Za-z0-9_]+)::([a-zA-Z0-9_]+)\(\s*\)\s*#', $str, $a)) {
+ /* ? Class::method() */
+
+ $class = $a[1];
+ $method = $a[2];
+
+ if (false !== ($proto = PHP_ShellPrototypes::getInstance()->get($class.'::'.$method))) {
+
+ $cmd = sprintf("/**\n* %s\n\n* @params %s\n* @return %s\n*/\n",
+ $proto['description'],
+ $proto['params'],
+ $proto['return']
+ );
+ } else if (class_exists($class, false)) {
+ $c = new ReflectionClass($class);
+
+ if ($c->hasMethod($method)) {
+ $cmd = $c->getMethod($method)->getDocComment();
+ }
+ }
+ } else if (preg_match('#^\$([A-Za-z0-9_]+)->([a-zA-Z0-9_]+)\(\s*\)\s*#', $str, $a)) {
+ /* ? $obj->method() */
+ if (isset($GLOBALS[$a[1]]) && is_object($GLOBALS[$a[1]])) {
+ $class = get_class($GLOBALS[$a[1]]);
+ $method = $a[2];
+
+ $c = new ReflectionClass($class);
+
+ if ($c->hasMethod($method)) {
+ $cmd = $c->getMethod($method)->getDocComment();
+ }
+ }
+ } else if (preg_match('#^([A-Za-z0-9_]+)::([a-zA-Z0-9_]+)\s*$#', $str, $a)) {
+ /* ? Class::property */
+ $class = $a[1];
+ $property = $a[2];
+ if (class_exists($class, false)) {
+ $c = new ReflectionClass($class);
+
+ if ($c->hasProperty($property)) {
+ $cmd = $c->getProperty($property)->getDocComment();
+ }
+ }
+ } else if (preg_match('#^\$([A-Za-z0-9_]+)->([a-zA-Z0-9_]+)\s*$#', $str, $a)) {
+ /* ? $obj->property */
+ if (isset($GLOBALS[$a[1]]) && is_object($GLOBALS[$a[1]])) {
+ $class = get_class($GLOBALS[$a[1]]);
+ $method = $a[2];
+
+ $c = new ReflectionClass($class);
+
+ if ($c->hasProperty($property)) {
+ $cmd = $c->getProperty($property)->getDocComment();
+ }
+
+ }
+ } else if (preg_match('#^([A-Za-z0-9_]+)$#', $str, $a)) {
+ /* ? Class */
+ if (class_exists($a[1], false)) {
+ $c = new ReflectionClass($a[1]);
+ $cmd = $c->getDocComment();
+ }
+ } else if (preg_match('#^\$([A-Za-z0-9_]+)$#', $str, $a)) {
+ /* ? $object */
+ $obj = $a[1];
+ if (isset($GLOBALS[$obj]) && is_object($GLOBALS[$obj])) {
+ $class = get_class($GLOBALS[$obj]);
+
+ $c = new ReflectionClass($class);
+ $cmd = $c->getDocComment();
+ }
+
+ } else if (preg_match('#^([A-Za-z0-9_]+)\(\s*\)$#', $str, $a)) {
+ /* ? function() */
+ $func = $a[1];
+
+ if (false !== ($proto = PHP_ShellPrototypes::getInstance()->get($func))) {
+ $cmd = sprintf("/**\n* %s\n*\n* @params %s\n* @return %s\n*/\n",
+ $proto['description'],
+ $proto['params'],
+ $proto['return']
+ );
+ } else if (function_exists($func)) {
+ $c = new ReflectionFunction($func);
+ $cmd = $c->getDocComment();
+ }
+ }
+
+ if ($cmd == '') {
+ $cmd = var_export(sprintf('no help found for \'%s\'', $str), 1);
+ } else {
+ $cmd = var_export($cmd, 1);
+ }
+ } else if ("?" == $l) {
+ $cmd = $this->getHelp();
+ $cmd = var_export($cmd, 1);
+ }
+
+ return $cmd;
+ }
+}
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/LoadScript.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/LoadScript.php
new file mode 100644
index 00000000..a8c4697d
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/LoadScript.php
@@ -0,0 +1,32 @@
+<?php
+
+class PHP_Shell_Extensions_LoadScript implements PHP_Shell_Extension {
+ public function register() {
+ $cmd = PHP_Shell_Commands::getInstance();
+
+ $cmd->registerCommand('#^r #', $this, 'cmdLoadScript', 'r <filename>',
+ 'load a php-script and execute each line');
+
+ }
+
+ public function cmdLoadScript($l) {
+ $l = substr($l, 2);
+
+ if (file_exists($l)) {
+ $content = file($l);
+
+ $source = array();
+
+ foreach ($content as $line) {
+ $line = chop($line);
+
+ if (preg_match('#^<\?php#', $line)) continue;
+
+ $source[] = $line;
+ }
+
+ return $source;
+ }
+ return "";
+ }
+}
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/Prototypes.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/Prototypes.php
new file mode 100644
index 00000000..618074e5
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/Prototypes.php
@@ -0,0 +1,16235 @@
+<?php
+class PHP_ShellPrototypes {
+ static private $instance = null;
+
+ protected $prototype = array (
+ 'XMLReader::close' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Closes xmlreader - current frees resources until xmlTextReaderClose is fixed in libxml',
+ ),
+ 'XMLReader::getAttribute' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string name',
+ 'description' => 'Get value of an attribute from current element',
+ ),
+ 'XMLReader::getAttributeNo' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int index',
+ 'description' => 'Get value of an attribute at index from current element',
+ ),
+ 'XMLReader::getAttributeNs' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string name, string namespaceURI',
+ 'description' => 'Get value of a attribute via name and namespace from current element',
+ ),
+ 'XMLReader::getParserProperty' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'int property',
+ 'description' => 'Indicates whether given property (one of the parser option constants) is set or not on parser',
+ ),
+ 'XMLReader::isValid' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns boolean indicating if parsed document is valid or not.Must set XMLREADER_LOADDTD or XMLREADER_VALIDATE parser option prior to the first call to reador this method will always return FALSE',
+ ),
+ 'XMLReader::lookupNamespace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string prefix',
+ 'description' => 'Return namespaceURI for associated prefix on current node',
+ ),
+ 'XMLReader::moveToAttribute' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string name',
+ 'description' => 'Positions reader at specified attribute - Returns TRUE on success and FALSE on failure',
+ ),
+ 'XMLReader::moveToAttributeNo' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'int index',
+ 'description' => 'Positions reader at attribute at spcecified index.Returns TRUE on success and FALSE on failure',
+ ),
+ 'XMLReader::moveToAttributeNs' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string name, string namespaceURI',
+ 'description' => 'Positions reader at attribute spcified by name and namespaceURI.Returns TRUE on success and FALSE on failure',
+ ),
+ 'XMLReader::moveToElement' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Moves the position of the current instance to the node that contains the current Attribute node.',
+ ),
+ 'XMLReader::moveToFirstAttribute' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Moves the position of the current instance to the first attribute associated with the current node.',
+ ),
+ 'XMLReader::moveToNextAttribute' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Moves the position of the current instance to the next attribute associated with the current node.',
+ ),
+ 'XMLReader::read' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Moves the position of the current instance to the next node in the stream.',
+ ),
+ 'XMLReader::next' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '[string localname]',
+ 'description' => 'Moves the position of the current instance to the next node in the stream.',
+ ),
+ 'XMLReader::open' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string URI',
+ 'description' => 'Sets the URI that the the XMLReader will parse.',
+ ),
+ 'XMLReader::setParserProperty' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'int property, boolean value',
+ 'description' => 'Sets parser property (one of the parser option constants).Properties must be set after open() or XML() and before the first read() is called',
+ ),
+ 'XMLReader::setRelaxNGSchemaSource' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string source',
+ 'description' => 'Sets the string that the the XMLReader will parse.',
+ ),
+ 'XMLReader::XML' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string source',
+ 'description' => 'Sets the string that the the XMLReader will parse.',
+ ),
+ 'XMLReader::expand' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Moves the position of the current instance to the next node in the stream.',
+ ),
+ 'SimpleXMLElement::asXML' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string filename]',
+ 'description' => 'Return a well-formed XML string based on SimpleXML element',
+ ),
+ 'SimpleXMLElement::getNamespaces' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[bool recursve]',
+ 'description' => 'Return all namespaces in use',
+ ),
+ 'SimpleXMLElement::getDocNamespaces' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[bool recursive]',
+ 'description' => 'Return all namespaces registered with document',
+ ),
+ 'SimpleXMLElement::children' =>
+ array (
+ 'return' => 'object',
+ 'params' => '[string ns]',
+ 'description' => 'Finds children of given node',
+ ),
+ 'SimpleXMLElement::getName' =>
+ array (
+ 'return' => 'object',
+ 'params' => '',
+ 'description' => 'Finds children of given node',
+ ),
+ 'SimpleXMLElement::attributes' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string ns]',
+ 'description' => 'Identifies an element\'s attributes',
+ ),
+ 'SimpleXMLElement::addChild' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string qName [, string value [,string ns]]',
+ 'description' => 'Add Element with optional namespace information',
+ ),
+ 'SimpleXMLElement::addAttribute' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string qName, string value [,string ns]',
+ 'description' => 'Add Attribute with optional namespace information',
+ ),
+ 'simplexml_load_file' =>
+ array (
+ 'return' => 'simplemxml_element',
+ 'params' => 'string filename [, string class_name [, int options]]',
+ 'description' => 'Load a filename and return a simplexml_element object to allow for processing',
+ ),
+ 'simplexml_load_string' =>
+ array (
+ 'return' => 'simplemxml_element',
+ 'params' => 'string data [, string class_name [, int options]]',
+ 'description' => 'Load a string and return a simplexml_element object to allow for processing',
+ ),
+ 'simplexml_import_dom' =>
+ array (
+ 'return' => 'simplemxml_element',
+ 'params' => 'domNode node [, string class_name]',
+ 'description' => 'Get a simplexml_element object from dom to allow for processing',
+ ),
+ 'snmpget' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch a SNMP object',
+ ),
+ 'snmpgetnext' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch a SNMP object',
+ ),
+ 'snmpwalk' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Return all objects under the specified object id',
+ ),
+ 'snmprealwalk' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Return all objects including their respective object id withing the specified one',
+ ),
+ 'snmp_get_quick_print' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Return the current status of quick_print',
+ ),
+ 'snmp_set_quick_print' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int quick_print',
+ 'description' => 'Return all objects including their respective object id withing the specified one',
+ ),
+ 'snmp_set_enum_print' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int enum_print',
+ 'description' => 'Return all values that are enums with their enum value instead of the raw integer',
+ ),
+ 'snmp_set_oid_numeric_print' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int oid_numeric_print',
+ 'description' => 'Return all objects including their respective object id withing the specified one',
+ ),
+ 'snmpset' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]]',
+ 'description' => 'Set the value of a SNMP object',
+ ),
+ 'snmp2_get' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch a SNMP object',
+ ),
+ 'snmp2_getnext' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch a SNMP object',
+ ),
+ 'snmp2_walk' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Return all objects under the specified object id',
+ ),
+ 'snmp2_real_walk' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string host, string community, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Return all objects including their respective object id withing the specified one',
+ ),
+ 'snmp2_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]]',
+ 'description' => 'Set the value of a SNMP object',
+ ),
+ 'php_snmpv3' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'INTERNAL_FUNCTION_PARAMETERS, int st',
+ 'description' => '** Generic SNMPv3 object fetcher* From here is passed on the the common internal object fetcher.** st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value.* st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value.* st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array* containing the values.* st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an* array of oid,value pairs.* st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value*',
+ ),
+ 'snmp3_get' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch the value of a SNMP object',
+ ),
+ 'snmp3_getnext' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch the value of a SNMP object',
+ ),
+ 'snmp3_walk' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch the value of a SNMP object',
+ ),
+ 'snmp3_real_walk' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]]',
+ 'description' => 'Fetch the value of a SNMP object',
+ ),
+ 'snmp3_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]]',
+ 'description' => 'Fetch the value of a SNMP object',
+ ),
+ 'snmp_set_valueretrieval' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int method',
+ 'description' => 'Specify the method how the SNMP values will be returned',
+ ),
+ 'snmp_get_valueretrieval' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Return the method how the SNMP values will be returned',
+ ),
+ 'snmp_read_mib' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Reads and parses a MIB file into the active MIB tree.',
+ ),
+ 'mysqli_embedded_server_start' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'bool start, array arguments, array groups',
+ 'description' => 'initialize and start embedded server',
+ ),
+ 'mysqli_embedded_server_end' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => '',
+ ),
+ 'mysqli_connect' =>
+ array (
+ 'return' => 'object',
+ 'params' => '[string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]]',
+ 'description' => 'Open a connection to a mysql server',
+ ),
+ 'mysqli_connect_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns the numerical value of the error message from last connect command',
+ ),
+ 'mysqli_connect_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns the text of the error message from previous MySQL operation',
+ ),
+ 'mysqli_multi_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string query',
+ 'description' => 'Binary-safe version of mysql_query()',
+ ),
+ 'mysqli_set_charset' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string csname',
+ 'description' => 'sets client character set',
+ ),
+ 'mysqli_get_charset' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'object link',
+ 'description' => 'returns a character set object',
+ ),
+ 'mysqli_affected_rows' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object link',
+ 'description' => 'Get number of affected rows in previous MySQL operation',
+ ),
+ 'mysqli_autocommit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, bool mode',
+ 'description' => 'Turn auto commit on or of',
+ ),
+ 'mysqli_stmt_bind_param' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt, string types, mixed variable [,mixed,....]',
+ 'description' => 'Bind variables to a prepared statement as parameters',
+ ),
+ 'mysqli_stmt_bind_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt, mixed var, [,mixed, ...]',
+ 'description' => 'Bind variables to a prepared statement for result storage',
+ ),
+ 'mysqli_change_user' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string user, string password, string database',
+ 'description' => 'Change logged-in user of the active connection',
+ ),
+ 'mysqli_character_set_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link',
+ 'description' => 'Returns the name of the character set used for this connection',
+ ),
+ 'mysqli_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => 'Close connection',
+ ),
+ 'mysqli_commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => 'Commit outstanding actions and close transaction',
+ ),
+ 'mysqli_data_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object result, int offset',
+ 'description' => 'Move internal result pointer',
+ ),
+ 'mysqli_debug' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string debug',
+ 'description' => '',
+ ),
+ 'mysqli_dump_debug_info' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object link',
+ 'description' => 'Returns the numerical value of the error message from previous MySQL operation',
+ ),
+ 'mysqli_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link',
+ 'description' => 'Returns the text of the error message from previous MySQL operation',
+ ),
+ 'mysqli_stmt_execute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt',
+ 'description' => 'Execute a prepared statement',
+ ),
+ 'mysqli_stmt_fetch' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object stmt',
+ 'description' => 'Fetch results from a prepared statement into the bound variables',
+ ),
+ 'mysqli_field_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object link',
+ 'description' => 'Fetch the number of fields returned by the last query for the given link',
+ ),
+ 'mysqli_field_seek' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object result, int fieldnr',
+ 'description' => 'Set result pointer to a specified field offset',
+ ),
+ 'mysqli_field_tell' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object result',
+ 'description' => 'Get current field offset of result pointer',
+ ),
+ 'mysqli_free_result' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object result',
+ 'description' => 'Free query result memory for the given result handle',
+ ),
+ 'mysqli_get_client_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Get MySQL client info',
+ ),
+ 'mysqli_get_client_version' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get MySQL client info',
+ ),
+ 'mysqli_get_proto_info' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object link',
+ 'description' => 'Get MySQL protocol information',
+ ),
+ 'mysqli_get_server_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link',
+ 'description' => 'Get MySQL server info',
+ ),
+ 'mysqli_get_server_version' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object link',
+ 'description' => 'Return the MySQL version for the server referenced by the given link',
+ ),
+ 'mysqli_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link',
+ 'description' => 'Get information about the most recent query',
+ ),
+ 'mysqli_init' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'void',
+ 'description' => 'Initialize mysqli and return a resource for use with mysql_real_connect',
+ ),
+ 'mysqli_insert_id' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object link',
+ 'description' => 'Get the ID generated from the previous INSERT operation',
+ ),
+ 'mysqli_kill' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, int processid',
+ 'description' => 'Kill a mysql process on the server',
+ ),
+ 'mysqli_set_local_infile_handler' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, callback read_func',
+ 'description' => 'Set callback functions for LOAD DATA LOCAL INFILE',
+ ),
+ 'mysqli_more_results' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => 'check if there any more query results from a multi query',
+ ),
+ 'mysqli_next_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => 'read next result from multi_query',
+ ),
+ 'mysqli_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object result',
+ 'description' => 'Get number of fields in result',
+ ),
+ 'mysqli_num_rows' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object result',
+ 'description' => 'Get number of rows in result',
+ ),
+ 'mysqli_options' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, int flags, mixed values',
+ 'description' => 'Set options',
+ ),
+ 'mysqli_ping' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => 'Ping a server connection or reconnect if there is no connection',
+ ),
+ 'mysqli_prepare' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object link, string query',
+ 'description' => 'Prepare a SQL statement for execution',
+ ),
+ 'mysqli_real_connect' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]]',
+ 'description' => 'Open a connection to a mysql server',
+ ),
+ 'mysqli_real_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string query',
+ 'description' => 'Binary-safe version of mysql_query()',
+ ),
+ 'mysqli_real_escape_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link, string escapestr',
+ 'description' => 'Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection',
+ ),
+ 'mysqli_rollback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => 'Undo actions from current transaction',
+ ),
+ 'mysqli_send_long_data' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt, int param_nr, string data',
+ 'description' => '',
+ ),
+ 'mysqli_stmt_affected_rows' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object stmt',
+ 'description' => 'Return the number of rows affected in the last query for the given link',
+ ),
+ 'mysqli_stmt_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt',
+ 'description' => 'Close statement',
+ ),
+ 'mysqli_stmt_data_seek' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object stmt, int offset',
+ 'description' => 'Move internal result pointer',
+ ),
+ 'mysqli_stmt_free_result' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object stmt',
+ 'description' => 'Free stored result memory for the given statement handle',
+ ),
+ 'mysqli_stmt_insert_id' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object stmt',
+ 'description' => 'Get the ID generated from the previous INSERT operation',
+ ),
+ 'mysqli_stmt_reset' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt',
+ 'description' => 'reset a prepared statement',
+ ),
+ 'mysqli_stmt_num_rows' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object stmt',
+ 'description' => 'Return the number of rows in statements result set',
+ ),
+ 'mysqli_select_db' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link, string dbname',
+ 'description' => 'Select a MySQL database',
+ ),
+ 'mysqli_sqlstate' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object link',
+ 'description' => 'Returns the SQLSTATE error from previous MySQL operation',
+ ),
+ 'mysqli_ssl_set' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link ,string key ,string cert ,string ca ,string capath ,string cipher]',
+ 'description' => '',
+ ),
+ 'mysqli_stat' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object link',
+ 'description' => 'Get current system status',
+ ),
+ 'mysqli_stmt_attr_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object stmt, long attr, bool mode',
+ 'description' => '',
+ ),
+ 'mysqli_stmt_attr_get' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object stmt, long attr',
+ 'description' => '',
+ ),
+ 'mysqli_stmt_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object stmt',
+ 'description' => '',
+ ),
+ 'mysqli_stmt_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object stmt',
+ 'description' => '',
+ ),
+ 'mysqli_stmt_init' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object link',
+ 'description' => 'Initialize statement object',
+ ),
+ 'mysqli_stmt_prepare' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object stmt, string query',
+ 'description' => 'prepare server side statement with query',
+ ),
+ 'mysqli_stmt_result_metadata' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object stmt',
+ 'description' => 'return result set from statement',
+ ),
+ 'mysqli_stmt_store_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'stmt',
+ 'description' => '',
+ ),
+ 'mysqli_stmt_sqlstate' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'object stmt',
+ 'description' => '',
+ ),
+ 'mysqli_store_result' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'object link',
+ 'description' => 'Buffer result set on client',
+ ),
+ 'mysqli_thread_id' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object link',
+ 'description' => 'Return the current thread ID',
+ ),
+ 'mysqli_thread_safe' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Return whether thread safety is given or not',
+ ),
+ 'mysqli_use_result' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'object link',
+ 'description' => 'Directly retrieve query results - do not buffer results on client side',
+ ),
+ 'mysqli_disable_reads_from_master' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_disable_rpl_parse' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_enable_reads_from_master' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_enable_rpl_parse' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_master_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string query',
+ 'description' => 'Enforce execution of a query on the master in a master/slave setup',
+ ),
+ 'mysqli_rpl_parse_enabled' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_rpl_probe' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link',
+ 'description' => '',
+ ),
+ 'mysqli_rpl_query_type' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string query',
+ 'description' => '',
+ ),
+ 'mysqli_send_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string query',
+ 'description' => '',
+ ),
+ 'mysqli_slave_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object link, string query',
+ 'description' => 'Enforce execution of a query on a slave in a master/slave setup',
+ ),
+ 'imap_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string mailbox, string user, string password [, int options]',
+ 'description' => 'Open an IMAP stream to a mailbox',
+ ),
+ 'imap_reopen' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string mailbox [, int options]',
+ 'description' => 'Reopen an IMAP stream to a new mailbox',
+ ),
+ 'imap_append' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string folder, string message [, string options]',
+ 'description' => 'Append a new message to a specified mailbox',
+ ),
+ 'imap_num_msg' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream_id',
+ 'description' => 'Gives the number of messages in the current mailbox',
+ ),
+ 'imap_ping' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id',
+ 'description' => 'Check if the IMAP stream is still active',
+ ),
+ 'imap_num_recent' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream_id',
+ 'description' => 'Gives the number of recent messages in current mailbox',
+ ),
+ 'imap_get_quota' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string qroot',
+ 'description' => 'Returns the quota set to the mailbox account qroot',
+ ),
+ 'imap_get_quotaroot' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string mbox',
+ 'description' => 'Returns the quota set to the mailbox account mbox',
+ ),
+ 'imap_set_quota' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string qroot, int mailbox_size',
+ 'description' => 'Will set the quota for qroot mailbox',
+ ),
+ 'imap_setacl' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string mailbox, string id, string rights',
+ 'description' => 'Sets the ACL for a given mailbox',
+ ),
+ 'imap_getacl' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string mailbox',
+ 'description' => 'Gets the ACL for a given mailbox',
+ ),
+ 'imap_expunge' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id',
+ 'description' => 'Permanently delete all messages marked for deletion',
+ ),
+ 'imap_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id [, int options]',
+ 'description' => 'Close an IMAP stream',
+ ),
+ 'imap_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id',
+ 'description' => 'Returns headers for all messages in a mailbox',
+ ),
+ 'imap_body' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream_id, int msg_no [, int options]',
+ 'description' => 'Read the message body',
+ ),
+ 'imap_mail_copy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, int msg_no, string mailbox [, int options]',
+ 'description' => 'Copy specified message to a mailbox',
+ ),
+ 'imap_mail_move' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, int msg_no, string mailbox [, int options]',
+ 'description' => 'Move specified message to a mailbox',
+ ),
+ 'imap_createmailbox' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string mailbox',
+ 'description' => 'Create a new mailbox',
+ ),
+ 'imap_renamemailbox' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string old_name, string new_name',
+ 'description' => 'Rename a mailbox',
+ ),
+ 'imap_deletemailbox' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string mailbox',
+ 'description' => 'Delete a mailbox',
+ ),
+ 'imap_list' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string ref, string pattern',
+ 'description' => 'Read the list of mailboxes',
+ ),
+ 'imap_getmailboxes' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string ref, string pattern',
+ 'description' => 'Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter',
+ ),
+ 'imap_scan' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string ref, string pattern, string content',
+ 'description' => 'Read list of mailboxes containing a certain string',
+ ),
+ 'imap_check' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource stream_id',
+ 'description' => 'Get mailbox properties',
+ ),
+ 'imap_delete' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, int msg_no [, int options]',
+ 'description' => 'Mark a message for deletion',
+ ),
+ 'imap_undelete' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, int msg_no',
+ 'description' => 'Remove the delete flag from a message',
+ ),
+ 'imap_headerinfo' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]]',
+ 'description' => 'Read the headers of the message',
+ ),
+ 'imap_rfc822_parse_headers' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string headers [, string default_host]',
+ 'description' => 'Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()',
+ ),
+ 'imap_lsub' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string ref, string pattern',
+ 'description' => 'Return a list of subscribed mailboxes',
+ ),
+ 'imap_getsubscribed' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string ref, string pattern',
+ 'description' => 'Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()',
+ ),
+ 'imap_subscribe' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string mailbox',
+ 'description' => 'Subscribe to a mailbox',
+ ),
+ 'imap_unsubscribe' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string mailbox',
+ 'description' => 'Unsubscribe from a mailbox',
+ ),
+ 'imap_fetchstructure' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource stream_id, int msg_no [, int options]',
+ 'description' => 'Read the full structure of a message',
+ ),
+ 'imap_fetchbody' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream_id, int msg_no, string section [, int options]',
+ 'description' => 'Get a specific body section',
+ ),
+ 'imap_savebody' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string|resource file, int msg_no[, string section = ""[, int options = 0]]',
+ 'description' => 'Save a specific body section to a file',
+ ),
+ 'imap_base64' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string text',
+ 'description' => 'Decode BASE64 encoded text',
+ ),
+ 'imap_qprint' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string text',
+ 'description' => 'Convert a quoted-printable string to an 8-bit string',
+ ),
+ 'imap_8bit' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string text',
+ 'description' => 'Convert an 8-bit string to a quoted-printable string',
+ ),
+ 'imap_binary' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string text',
+ 'description' => 'Convert an 8bit string to a base64 string',
+ ),
+ 'imap_mailboxmsginfo' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource stream_id',
+ 'description' => 'Returns info about the current mailbox',
+ ),
+ 'imap_rfc822_write_address' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string mailbox, string host, string personal',
+ 'description' => 'Returns a properly formatted email address given the mailbox, host, and personal info',
+ ),
+ 'imap_rfc822_parse_adrlist' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string address_string, string default_host',
+ 'description' => 'Parses an address string',
+ ),
+ 'imap_utf8' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string mime_encoded_text',
+ 'description' => 'Convert a mime-encoded text to UTF-8',
+ ),
+ 'imap_utf7_decode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string buf',
+ 'description' => 'Decode a modified UTF-7 string',
+ ),
+ 'imap_utf7_encode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string buf',
+ 'description' => 'Encode a string in modified UTF-7',
+ ),
+ 'imap_setflag_full' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string sequence, string flag [, int options]',
+ 'description' => 'Sets flags on messages',
+ ),
+ 'imap_clearflag_full' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_id, string sequence, string flag [, int options]',
+ 'description' => 'Clears flags on messages',
+ ),
+ 'imap_sort' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]]',
+ 'description' => 'Sort an array of message headers, optionally including only messages that meet specified criteria.',
+ ),
+ 'imap_fetchheader' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream_id, int msg_no [, int options]',
+ 'description' => 'Get the full unfiltered header for a message',
+ ),
+ 'imap_uid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream_id, int msg_no',
+ 'description' => 'Get the unique message id associated with a standard sequential message number',
+ ),
+ 'imap_msgno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream_id, int unique_msg_id',
+ 'description' => 'Get the sequence number associated with a UID',
+ ),
+ 'imap_status' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource stream_id, string mailbox, int options',
+ 'description' => 'Get status info from a mailbox',
+ ),
+ 'imap_bodystruct' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource stream_id, int msg_no, string section',
+ 'description' => 'Read the structure of a specified body section of a specific message',
+ ),
+ 'imap_fetch_overview' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, int msg_no [, int options]',
+ 'description' => 'Read an overview of the information in the headers of the given message sequence',
+ ),
+ 'imap_mail_compose' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'array envelope, array body',
+ 'description' => 'Create a MIME message based on given envelope and body sections',
+ ),
+ 'imap_mail' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]]',
+ 'description' => 'Send an email message',
+ ),
+ 'imap_search' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id, string criteria [, int options [, string charset]]',
+ 'description' => 'Return a list of messages matching the given criteria',
+ ),
+ 'imap_alerts' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called.',
+ ),
+ 'imap_errors' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called.',
+ ),
+ 'imap_last_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call.',
+ ),
+ 'imap_mime_header_decode' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string str',
+ 'description' => 'Decode mime header element in accordance with RFC 2047 and return array of objects containing \'charset\' encoding and decoded \'text\'',
+ ),
+ 'imap_thread' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream_id [, int options]',
+ 'description' => 'Return threaded by REFERENCES tree',
+ ),
+ 'imap_timeout' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int timeout_type [, int timeout]',
+ 'description' => 'Set or fetch imap timeout',
+ ),
+ 'session_set_cookie_params' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int lifetime [, string path [, string domain [, bool secure]]]',
+ 'description' => 'Set session cookie parameters',
+ ),
+ 'session_get_cookie_params' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Return the session cookie parameters',
+ ),
+ 'session_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string newname]',
+ 'description' => 'Return the current session name. If newname is given, the session name is replaced with newname',
+ ),
+ 'session_module_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string newname]',
+ 'description' => 'Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname',
+ ),
+ 'session_set_save_handler' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string open, string close, string read, string write, string destroy, string gc',
+ 'description' => 'Sets user-level functions',
+ ),
+ 'session_save_path' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string newname]',
+ 'description' => 'Return the current save path passed to module_name. If newname is given, the save path is replaced with newname',
+ ),
+ 'session_id' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string newid]',
+ 'description' => 'Return the current session id. If newid is given, the session id is replaced with newid',
+ ),
+ 'session_regenerate_id' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[bool delete_old_session]',
+ 'description' => 'Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session.',
+ ),
+ 'session_cache_limiter' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_cache_limiter]',
+ 'description' => 'Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter',
+ ),
+ 'session_cache_expire' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int new_cache_expire]',
+ 'description' => 'Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire',
+ ),
+ 'session_register' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var_names [, mixed ...]',
+ 'description' => 'Adds varname(s) to the list of variables which are freezed at the session end',
+ ),
+ 'session_unregister' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string varname',
+ 'description' => 'Removes varname from the list of variables which are freezed at the session end',
+ ),
+ 'session_is_registered' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string varname',
+ 'description' => 'Checks if a variable is registered in session',
+ ),
+ 'session_encode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Serializes the current setup and returns the serialized representation',
+ ),
+ 'session_decode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data',
+ 'description' => 'Deserializes data and reinitializes the variables',
+ ),
+ 'session_start' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Begin session - reinitializes freezed variables, registers browsers etc',
+ ),
+ 'session_destroy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Destroy the current session and all data associated with it',
+ ),
+ 'session_unset' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Unset all registered variables',
+ ),
+ 'session_write_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Write session data and end session',
+ ),
+ 'mysql_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]]',
+ 'description' => 'Opens a connection to a MySQL Server',
+ ),
+ 'mysql_pconnect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]]',
+ 'description' => 'Opens a persistent connection to a MySQL Server',
+ ),
+ 'mysql_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Close a MySQL connection',
+ ),
+ 'mysql_select_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, int link_identifier]',
+ 'description' => 'Selects a MySQL database',
+ ),
+ 'mysql_get_client_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns a string that represents the client library version',
+ ),
+ 'mysql_get_host_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns a string describing the type of connection in use, including the server host name',
+ ),
+ 'mysql_get_proto_info' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns the protocol version used by current connection',
+ ),
+ 'mysql_get_server_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns a string that represents the server version number',
+ ),
+ 'mysql_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns a string containing information about the most recent query',
+ ),
+ 'mysql_thread_id' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns the thread id of current connection',
+ ),
+ 'mysql_stat' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns a string containing status information',
+ ),
+ 'mysql_client_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns the default character set for the current connection',
+ ),
+ 'mysql_create_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, int link_identifier]',
+ 'description' => 'Create a MySQL database',
+ ),
+ 'mysql_drop_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, int link_identifier]',
+ 'description' => 'Drops (delete) a MySQL database',
+ ),
+ 'mysql_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string query [, int link_identifier]',
+ 'description' => 'Sends an SQL query to MySQL',
+ ),
+ 'mysql_unbuffered_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string query [, int link_identifier]',
+ 'description' => 'Sends an SQL query to MySQL, without fetching and buffering the result rows',
+ ),
+ 'mysql_db_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name, string query [, int link_identifier]',
+ 'description' => 'Sends an SQL query to MySQL',
+ ),
+ 'mysql_list_dbs' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[int link_identifier]',
+ 'description' => 'List databases available on a MySQL server',
+ ),
+ 'mysql_list_tables' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name [, int link_identifier]',
+ 'description' => 'List tables in a MySQL database',
+ ),
+ 'mysql_list_fields' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name, string table_name [, int link_identifier]',
+ 'description' => 'List MySQL result fields',
+ ),
+ 'mysql_list_processes' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns a result set describing the current server threads',
+ ),
+ 'mysql_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns the text of the error message from previous MySQL operation',
+ ),
+ 'mysql_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Returns the number of the error message from previous MySQL operation',
+ ),
+ 'mysql_affected_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Gets number of affected rows in previous MySQL operation',
+ ),
+ 'mysql_escape_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string to_be_escaped',
+ 'description' => 'Escape string for mysql query',
+ ),
+ 'mysql_real_escape_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string to_be_escaped [, int link_identifier]',
+ 'description' => 'Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection',
+ ),
+ 'mysql_insert_id' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Gets the ID generated from the previous INSERT operation',
+ ),
+ 'mysql_result' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource result, int row [, mixed field]',
+ 'description' => 'Gets result data',
+ ),
+ 'mysql_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result',
+ 'description' => 'Gets number of rows in a result',
+ ),
+ 'mysql_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result',
+ 'description' => 'Gets number of fields in a result',
+ ),
+ 'mysql_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result',
+ 'description' => 'Gets a result row as an enumerated array',
+ ),
+ 'mysql_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result [, string class_name [, NULL|array ctor_params]]',
+ 'description' => 'Fetch a result row as an object',
+ ),
+ 'mysql_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int result_type]',
+ 'description' => 'Fetch a result row as an array (associative, numeric or both)',
+ ),
+ 'mysql_fetch_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result',
+ 'description' => 'Fetch a result row as an associative array',
+ ),
+ 'mysql_data_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result, int row_number',
+ 'description' => 'Move internal result pointer',
+ ),
+ 'mysql_fetch_lengths' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result',
+ 'description' => 'Gets max data size of each column in a result',
+ ),
+ 'mysql_fetch_field' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result [, int field_offset]',
+ 'description' => 'Gets column information from a result and return as an object',
+ ),
+ 'mysql_field_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result, int field_offset',
+ 'description' => 'Sets result pointer to a specific field offset',
+ ),
+ 'mysql_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_index',
+ 'description' => 'Gets the name of the specified field in a result',
+ ),
+ 'mysql_field_table' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_offset',
+ 'description' => 'Gets name of the table the specified field is in',
+ ),
+ 'mysql_field_len' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result, int field_offset',
+ 'description' => 'Returns the length of the specified field',
+ ),
+ 'mysql_field_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_offset',
+ 'description' => 'Gets the type of the specified field in a result',
+ ),
+ 'mysql_field_flags' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_offset',
+ 'description' => 'Gets the flags associated with the specified field in a result',
+ ),
+ 'mysql_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result',
+ 'description' => 'Free result memory',
+ ),
+ 'mysql_ping' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[int link_identifier]',
+ 'description' => 'Ping a server connection. If no connection then reconnect.',
+ ),
+ 'dom_domerrorhandler_handle_error' =>
+ array (
+ 'return' => 'dom_boolean',
+ 'params' => 'domerror error',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleErrorSince:',
+ ),
+ 'dom_document_create_element' =>
+ array (
+ 'return' => 'DOMElement',
+ 'params' => 'string tagName [, string value]',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547Since:',
+ ),
+ 'dom_document_create_document_fragment' =>
+ array (
+ 'return' => 'DOMDocumentFragment',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5Since:',
+ ),
+ 'dom_document_create_text_node' =>
+ array (
+ 'return' => 'DOMText',
+ 'params' => 'string data',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127Since:',
+ ),
+ 'dom_document_create_comment' =>
+ array (
+ 'return' => 'DOMComment',
+ 'params' => 'string data',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328Since:',
+ ),
+ 'dom_document_create_cdatasection' =>
+ array (
+ 'return' => 'DOMCdataSection',
+ 'params' => 'string data',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8Since:',
+ ),
+ 'dom_document_create_processing_instruction' =>
+ array (
+ 'return' => 'DOMProcessingInstruction',
+ 'params' => 'string target, string data',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439Since:',
+ ),
+ 'dom_document_create_attribute' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198Since:',
+ ),
+ 'dom_document_create_entity_reference' =>
+ array (
+ 'return' => 'DOMEntityReference',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AESince:',
+ ),
+ 'dom_document_get_elements_by_tag_name' =>
+ array (
+ 'return' => 'DOMNodeList',
+ 'params' => 'string tagname',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094Since:',
+ ),
+ 'dom_document_import_node' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'DOMNode importedNode, boolean deep',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNodeSince: DOM Level 2',
+ ),
+ 'dom_document_create_element_ns' =>
+ array (
+ 'return' => 'DOMElement',
+ 'params' => 'string namespaceURI, string qualifiedName [,string value]',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNSSince: DOM Level 2',
+ ),
+ 'dom_document_create_attribute_ns' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'string namespaceURI, string qualifiedName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNSSince: DOM Level 2',
+ ),
+ 'dom_document_get_elements_by_tag_name_ns' =>
+ array (
+ 'return' => 'DOMNodeList',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNSSince: DOM Level 2',
+ ),
+ 'dom_document_get_element_by_id' =>
+ array (
+ 'return' => 'DOMElement',
+ 'params' => 'string elementId',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBIdSince: DOM Level 2',
+ ),
+ 'dom_document_adopt_node' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'DOMNode source',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNodeSince: DOM Level 3',
+ ),
+ 'dom_document_normalize_document' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocumentSince: DOM Level 3',
+ ),
+ 'dom_document_rename_node' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'node n, string namespaceURI, string qualifiedName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNodeSince: DOM Level 3',
+ ),
+ 'dom_document_load' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string source [, int options]',
+ 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadSince: DOM Level 3',
+ ),
+ 'dom_document_loadxml' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string source [, int options]',
+ 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXMLSince: DOM Level 3',
+ ),
+ 'dom_document_save' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string file',
+ 'description' => 'Convenience method to save to file',
+ ),
+ 'dom_document_savexml' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[node n]',
+ 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXMLSince: DOM Level 3',
+ ),
+ 'dom_document_xinclude' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int options]',
+ 'description' => 'Substitutues xincludes in a DomDocument',
+ ),
+ 'dom_document_validate' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Since: DOM extended',
+ ),
+ 'dom_document_load_html_file' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string source',
+ 'description' => 'Since: DOM extended',
+ ),
+ 'dom_document_load_html' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string source',
+ 'description' => 'Since: DOM extended',
+ ),
+ 'dom_document_save_html_file' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string file',
+ 'description' => 'Convenience method to save to file as html',
+ ),
+ 'dom_document_save_html' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Convenience method to output as html',
+ ),
+ 'dom_domstringlist_item' =>
+ array (
+ 'return' => 'domstring',
+ 'params' => 'int index',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-itemSince:',
+ ),
+ 'dom_string_extend_find_offset16' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int offset32',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16Since:',
+ ),
+ 'dom_string_extend_find_offset32' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int offset16',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32Since:',
+ ),
+ 'dom_import_simplexml' =>
+ array (
+ 'return' => 'somNode',
+ 'params' => 'sxeobject node',
+ 'description' => 'Get a simplexml_element object from dom to allow for processing',
+ ),
+ 'dom_domimplementation_has_feature' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string feature, string version',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7Since:',
+ ),
+ 'dom_domimplementation_create_document_type' =>
+ array (
+ 'return' => 'DOMDocumentType',
+ 'params' => 'string qualifiedName, string publicId, string systemId',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocTypeSince: DOM Level 2',
+ ),
+ 'dom_domimplementation_create_document' =>
+ array (
+ 'return' => 'DOMDocument',
+ 'params' => 'string namespaceURI, string qualifiedName, DOMDocumentType doctype',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocumentSince: DOM Level 2',
+ ),
+ 'dom_domimplementation_get_feature' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string feature, string version',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeatureSince: DOM Level 3',
+ ),
+ 'dom_namelist_get_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int index',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNameSince:',
+ ),
+ 'dom_namelist_get_namespace_uri' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int index',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURISince:',
+ ),
+ 'dom_text_split_text' =>
+ array (
+ 'return' => 'DOMText',
+ 'params' => 'int offset',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1DSince:',
+ ),
+ 'dom_text_is_whitespace_in_element_content' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContentSince: DOM Level 3',
+ ),
+ 'dom_text_replace_whole_text' =>
+ array (
+ 'return' => 'DOMText',
+ 'params' => 'string content',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeTextSince: DOM Level 3',
+ ),
+ 'dom_element_get_attribute' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9Since:',
+ ),
+ 'dom_element_set_attribute' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string name, string value',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082Since:',
+ ),
+ 'dom_element_remove_attribute' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9Since:',
+ ),
+ 'dom_element_get_attribute_node' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8Since:',
+ ),
+ 'dom_element_set_attribute_node' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'DOMAttr newAttr',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154Since:',
+ ),
+ 'dom_element_remove_attribute_node' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'DOMAttr oldAttr',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198Since:',
+ ),
+ 'dom_element_get_elements_by_tag_name' =>
+ array (
+ 'return' => 'DOMNodeList',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918DSince:',
+ ),
+ 'dom_element_get_attribute_ns' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNSSince: DOM Level 2',
+ ),
+ 'dom_element_set_attribute_ns' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string namespaceURI, string qualifiedName, string value',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNSSince: DOM Level 2',
+ ),
+ 'dom_element_remove_attribute_ns' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNSSince: DOM Level 2',
+ ),
+ 'dom_element_get_attribute_node_ns' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNSSince: DOM Level 2',
+ ),
+ 'dom_element_set_attribute_node_ns' =>
+ array (
+ 'return' => 'DOMAttr',
+ 'params' => 'DOMAttr newAttr',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNSSince: DOM Level 2',
+ ),
+ 'dom_element_get_elements_by_tag_name_ns' =>
+ array (
+ 'return' => 'DOMNodeList',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942Since: DOM Level 2',
+ ),
+ 'dom_element_has_attribute' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrSince: DOM Level 2',
+ ),
+ 'dom_element_has_attribute_ns' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNSSince: DOM Level 2',
+ ),
+ 'dom_element_set_id_attribute' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string name, boolean isId',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrSince: DOM Level 3',
+ ),
+ 'dom_element_set_id_attribute_ns' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string namespaceURI, string localName, boolean isId',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNSSince: DOM Level 3',
+ ),
+ 'dom_element_set_id_attribute_node' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'attr idAttr, boolean isId',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNodeSince: DOM Level 3',
+ ),
+ 'dom_userdatahandler_handle' =>
+ array (
+ 'return' => 'dom_void',
+ 'params' => 'short operation, string key, domobject data, node src, node dst',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEventSince:',
+ ),
+ 'dom_characterdata_substring_data' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int offset, int count',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCFSince:',
+ ),
+ 'dom_characterdata_append_data' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string arg',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2FSince:',
+ ),
+ 'dom_characterdata_insert_data' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int offset, string arg',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695FSince:',
+ ),
+ 'dom_characterdata_delete_data' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int offset, int count',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781Since:',
+ ),
+ 'dom_characterdata_replace_data' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int offset, int count, string arg',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FBSince:',
+ ),
+ 'dom_domimplementationsource_get_domimplementation' =>
+ array (
+ 'return' => 'domdomimplementation',
+ 'params' => 'string features',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImplSince:',
+ ),
+ 'dom_domimplementationsource_get_domimplementations' =>
+ array (
+ 'return' => 'domimplementationlist',
+ 'params' => 'string features',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImplsSince:',
+ ),
+ 'dom_node_insert_before' =>
+ array (
+ 'return' => 'domnode',
+ 'params' => 'DomNode newChild, DomNode refChild',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727Since:',
+ ),
+ 'dom_node_replace_child' =>
+ array (
+ 'return' => 'DomNode',
+ 'params' => 'DomNode newChild, DomNode oldChild',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307Since:',
+ ),
+ 'dom_node_remove_child' =>
+ array (
+ 'return' => 'DomNode',
+ 'params' => 'DomNode oldChild',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066Since:',
+ ),
+ 'dom_node_append_child' =>
+ array (
+ 'return' => 'DomNode',
+ 'params' => 'DomNode newChild',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107Since:',
+ ),
+ 'dom_node_has_child_nodes' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187Since:',
+ ),
+ 'dom_node_clone_node' =>
+ array (
+ 'return' => 'DomNode',
+ 'params' => 'boolean deep',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4Since:',
+ ),
+ 'dom_node_normalize' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalizeSince:',
+ ),
+ 'dom_node_is_supported' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string feature, string version',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supportsSince: DOM Level 2',
+ ),
+ 'dom_node_has_attributes' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrsSince: DOM Level 2',
+ ),
+ 'dom_node_compare_document_position' =>
+ array (
+ 'return' => 'short',
+ 'params' => 'DomNode other',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPositionSince: DOM Level 3',
+ ),
+ 'dom_node_is_same_node' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'DomNode other',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNodeSince: DOM Level 3',
+ ),
+ 'dom_node_lookup_prefix' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string namespaceURI',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefixSince: DOM Level 3',
+ ),
+ 'dom_node_is_default_namespace' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string namespaceURI',
+ 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespaceSince: DOM Level 3',
+ ),
+ 'dom_node_lookup_namespace_uri' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string prefix',
+ 'description' => 'URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURISince: DOM Level 3',
+ ),
+ 'dom_node_is_equal_node' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'DomNode arg',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNodeSince: DOM Level 3',
+ ),
+ 'dom_node_get_feature' =>
+ array (
+ 'return' => 'DomNode',
+ 'params' => 'string feature, string version',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeatureSince: DOM Level 3',
+ ),
+ 'dom_node_set_user_data' =>
+ array (
+ 'return' => 'DomUserData',
+ 'params' => 'string key, DomUserData data, userdatahandler handler',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserDataSince: DOM Level 3',
+ ),
+ 'dom_node_get_user_data' =>
+ array (
+ 'return' => 'DomUserData',
+ 'params' => 'string key',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserDataSince: DOM Level 3',
+ ),
+ 'dom_domconfiguration_set_parameter' =>
+ array (
+ 'return' => 'dom_void',
+ 'params' => 'string name, domuserdata value',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-propertySince:',
+ ),
+ 'dom_domconfiguration_get_parameter' =>
+ array (
+ 'return' => 'domdomuserdata',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameterSince:',
+ ),
+ 'dom_domconfiguration_can_set_parameter' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string name, domuserdata value',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameterSince:',
+ ),
+ 'dom_namednodemap_get_named_item' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549Since:',
+ ),
+ 'dom_namednodemap_set_named_item' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'DOMNode arg',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788Since:',
+ ),
+ 'dom_namednodemap_remove_named_item' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string name',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193Since:',
+ ),
+ 'dom_namednodemap_item' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'int index',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9Since:',
+ ),
+ 'dom_namednodemap_get_named_item_ns' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNSSince: DOM Level 2',
+ ),
+ 'dom_namednodemap_set_named_item_ns' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'DOMNode arg',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNSSince: DOM Level 2',
+ ),
+ 'dom_namednodemap_remove_named_item_ns' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'string namespaceURI, string localName',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNSSince: DOM Level 2',
+ ),
+ 'dom_attr_is_id' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isIdSince: DOM Level 3',
+ ),
+ 'dom_domimplementationlist_item' =>
+ array (
+ 'return' => 'domdomimplementation',
+ 'params' => 'int index',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-itemSince:',
+ ),
+ 'dom_nodelist_item' =>
+ array (
+ 'return' => 'DOMNode',
+ 'params' => 'int index',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136Since:',
+ ),
+ 'PDO::pgsqlLOBCreate' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Creates a new large object, returning its identifier. Must be called inside a transaction.',
+ ),
+ 'PDO::pgsqlLOBOpen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string oid [, string mode = \'rb\']',
+ 'description' => 'Opens an existing large object stream. Must be called inside a transaction.',
+ ),
+ 'PDO::pgsqlLOBUnlink' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string oid',
+ 'description' => 'Deletes the large object identified by oid. Must be called inside a transaction.',
+ ),
+ 'xmlrpc_encode_request' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string method, mixed params',
+ 'description' => 'Generates XML for a method request',
+ ),
+ 'xmlrpc_encode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed value',
+ 'description' => 'Generates XML for a PHP value',
+ ),
+ 'xmlrpc_decode_request' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string xml, string& method [, string encoding]',
+ 'description' => 'Decodes XML into native PHP types',
+ ),
+ 'xmlrpc_decode' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string xml [, string encoding]',
+ 'description' => 'Decodes XML into native PHP types',
+ ),
+ 'xmlrpc_server_create' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'void',
+ 'description' => 'Creates an xmlrpc server',
+ ),
+ 'xmlrpc_server_destroy' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource server',
+ 'description' => 'Destroys server resources',
+ ),
+ 'xmlrpc_server_register_method' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource server, string method_name, string function',
+ 'description' => 'Register a PHP function to handle method matching method_name',
+ ),
+ 'xmlrpc_server_register_introspection_callback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource server, string function',
+ 'description' => 'Register a PHP function to generate documentation',
+ ),
+ 'xmlrpc_server_call_method' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource server, string xml, mixed user_data [, array output_options]',
+ 'description' => 'Parses XML requests and call methods',
+ ),
+ 'xmlrpc_server_add_introspection_data' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource server, array desc',
+ 'description' => 'Adds introspection documentation',
+ ),
+ 'xmlrpc_parse_method_descriptions' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string xml',
+ 'description' => 'Decodes XML into a list of method descriptions',
+ ),
+ 'xmlrpc_set_type' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string value, string type',
+ 'description' => 'Sets xmlrpc type, base64 or datetime, for a PHP string value',
+ ),
+ 'xmlrpc_get_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed value',
+ 'description' => 'Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings',
+ ),
+ 'xmlrpc_is_fault' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array',
+ 'description' => 'Determines if an array value represents an XMLRPC fault.',
+ ),
+ 'textdomain' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string domain',
+ 'description' => 'Set the textdomain to "domain". Returns the current domain',
+ ),
+ 'gettext' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string msgid',
+ 'description' => 'Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist',
+ ),
+ 'dgettext' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string domain_name, string msgid',
+ 'description' => 'Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist',
+ ),
+ 'dcgettext' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string domain_name, string msgid, long category',
+ 'description' => 'Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist',
+ ),
+ 'bindtextdomain' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string domain_name, string dir',
+ 'description' => 'Bind to the text domain domain_name, looking for translations in dir. Returns the current domain',
+ ),
+ 'ngettext' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string MSGID1, string MSGID2, int N',
+ 'description' => 'Plural version of gettext()',
+ ),
+ 'msg_set_queue' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource queue, array data',
+ 'description' => 'Set information for a message queue',
+ ),
+ 'msg_stat_queue' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource queue',
+ 'description' => 'Returns information about a message queue',
+ ),
+ 'msg_get_queue' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int key [, int perms]',
+ 'description' => 'Attach to a message queue',
+ ),
+ 'msg_remove_queue' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource queue',
+ 'description' => 'Destroy the queue',
+ ),
+ 'msg_receive' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]]',
+ 'description' => 'Send a message of type msgtype (must be > 0) to a message queue',
+ ),
+ 'msg_send' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]]',
+ 'description' => 'Send a message of type msgtype (must be > 0) to a message queue',
+ ),
+ 'xml_parser_create' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string encoding]',
+ 'description' => 'Create an XML parser',
+ ),
+ 'xml_parser_create_ns' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string encoding [, string sep]]',
+ 'description' => 'Create an XML parser',
+ ),
+ 'xml_set_object' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, object &obj',
+ 'description' => 'Set up object which should be used for callbacks',
+ ),
+ 'xml_set_element_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string shdl, string ehdl',
+ 'description' => 'Set up start and end element handlers',
+ ),
+ 'xml_set_character_data_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up character data handler',
+ ),
+ 'xml_set_processing_instruction_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up processing instruction (PI) handler',
+ ),
+ 'xml_set_default_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up default handler',
+ ),
+ 'xml_set_unparsed_entity_decl_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up unparsed entity declaration handler',
+ ),
+ 'xml_set_notation_decl_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up notation declaration handler',
+ ),
+ 'xml_set_external_entity_ref_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up external entity reference handler',
+ ),
+ 'xml_set_start_namespace_decl_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up character data handler',
+ ),
+ 'xml_set_end_namespace_decl_handler' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string hdl',
+ 'description' => 'Set up character data handler',
+ ),
+ 'xml_parse' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string data [, int isFinal]',
+ 'description' => 'Start parsing an XML document',
+ ),
+ 'xml_parse_into_struct' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, string data, array &struct, array &index',
+ 'description' => 'Parsing a XML document',
+ ),
+ 'xml_get_error_code' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser',
+ 'description' => 'Get XML parser error code',
+ ),
+ 'xml_error_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int code',
+ 'description' => 'Get XML parser error string',
+ ),
+ 'xml_get_current_line_number' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser',
+ 'description' => 'Get current line number for an XML parser',
+ ),
+ 'xml_get_current_column_number' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser',
+ 'description' => 'Get current column number for an XML parser',
+ ),
+ 'xml_get_current_byte_index' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser',
+ 'description' => 'Get current byte index for an XML parser',
+ ),
+ 'xml_parser_free' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser',
+ 'description' => 'Free an XML parser',
+ ),
+ 'xml_parser_set_option' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, int option, mixed value',
+ 'description' => 'Set options in an XML parser',
+ ),
+ 'xml_parser_get_option' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource parser, int option',
+ 'description' => 'Get options from an XML parser',
+ ),
+ 'utf8_encode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'Encodes an ISO-8859-1 string to UTF-8',
+ ),
+ 'utf8_decode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'Converts a UTF-8 encoded string to ISO-8859-1',
+ ),
+ 'shm_attach' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int key [, int memsize [, int perm]]',
+ 'description' => 'Creates or open a shared memory segment',
+ ),
+ 'shm_detach' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int shm_identifier',
+ 'description' => 'Disconnects from shared memory segment',
+ ),
+ 'shm_remove' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int shm_identifier',
+ 'description' => 'Removes shared memory from Unix systems',
+ ),
+ 'shm_put_var' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int shm_identifier, int variable_key, mixed variable',
+ 'description' => 'Inserts or updates a variable in shared memory',
+ ),
+ 'shm_get_var' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int id, int variable_key',
+ 'description' => 'Returns a variable from shared memory',
+ ),
+ 'shm_remove_var' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int id, int variable_key',
+ 'description' => 'Removes variable from shared memory',
+ ),
+ 'socket_select' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'array &read_fds, array &write_fds, &array except_fds, int tv_sec[, int tv_usec]',
+ 'description' => 'Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec',
+ ),
+ 'socket_create_listen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int port[, int backlog]',
+ 'description' => 'Opens a socket on port to accept connections',
+ ),
+ 'socket_accept' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource socket',
+ 'description' => 'Accepts a connection on the listening socket fd',
+ ),
+ 'socket_set_nonblock' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket',
+ 'description' => 'Sets nonblocking mode on a socket resource',
+ ),
+ 'socket_set_block' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket',
+ 'description' => 'Sets blocking mode on a socket resource',
+ ),
+ 'socket_listen' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket[, int backlog]',
+ 'description' => 'Sets the maximum number of connections allowed to be waited for on the socket specified by fd',
+ ),
+ 'socket_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource socket',
+ 'description' => 'Closes a file descriptor',
+ ),
+ 'socket_write' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource socket, string buf[, int length]',
+ 'description' => 'Writes the buffer to the socket resource, length is optional',
+ ),
+ 'socket_read' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource socket, int length [, int type]',
+ 'description' => 'Reads a maximum of length bytes from socket',
+ ),
+ 'socket_getsockname' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, string &addr[, int &port]',
+ 'description' => 'Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type.',
+ ),
+ 'socket_getpeername' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, string &addr[, int &port]',
+ 'description' => 'Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type.',
+ ),
+ 'socket_create' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int domain, int type, int protocol',
+ 'description' => 'Creates an endpoint for communication in the domain specified by domain, of type specified by type',
+ ),
+ 'socket_connect' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, string addr [, int port]',
+ 'description' => 'Opens a connection to addr:port on the socket specified by socket',
+ ),
+ 'socket_strerror' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int errno',
+ 'description' => 'Returns a string describing an error',
+ ),
+ 'socket_bind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, string addr [, int port]',
+ 'description' => 'Binds an open socket to a listening port, port is only specified in AF_INET family.',
+ ),
+ 'socket_recv' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource socket, string &buf, int len, int flags',
+ 'description' => 'Receives data from a connected socket',
+ ),
+ 'socket_send' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource socket, string buf, int len, int flags',
+ 'description' => 'Sends data to a connected socket',
+ ),
+ 'socket_recvfrom' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource socket, string &buf, int len, int flags, string &name [, int &port]',
+ 'description' => 'Receives data from a socket, connected or not',
+ ),
+ 'socket_sendto' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource socket, string buf, int len, int flags, string addr [, int port]',
+ 'description' => 'Sends a message to a socket, whether it is connected or not',
+ ),
+ 'socket_get_option' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource socket, int level, int optname',
+ 'description' => 'Gets socket options for the socket',
+ ),
+ 'socket_set_option' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, int level, int optname, int|array optval',
+ 'description' => 'Sets socket options for the socket',
+ ),
+ 'socket_create_pair' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int domain, int type, int protocol, array &fd',
+ 'description' => 'Creates a pair of indistinguishable sockets and stores them in fds.',
+ ),
+ 'socket_shutdown' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket[, int how]',
+ 'description' => 'Shuts down a socket for receiving, sending, or both.',
+ ),
+ 'socket_last_error' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource socket]',
+ 'description' => 'Returns the last socket error (either the last used or the provided socket resource)',
+ ),
+ 'socket_clear_error' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[resource socket]',
+ 'description' => 'Clears the error on the socket or the last error code.',
+ ),
+ 'sybase_connect' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string host [, string user [, string password [, string charset [, string appname]]]]]',
+ 'description' => 'Open Sybase server connection',
+ ),
+ 'sybase_pconnect' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string host [, string user [, string password [, string charset [, string appname]]]]]',
+ 'description' => 'Open persistent Sybase connection',
+ ),
+ 'sybase_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[int link_id]',
+ 'description' => 'Close Sybase connection',
+ ),
+ 'sybase_select_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database [, int link_id]',
+ 'description' => 'Select Sybase database',
+ ),
+ 'sybase_query' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string query [, int link_id]',
+ 'description' => 'Send Sybase query',
+ ),
+ 'sybase_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result',
+ 'description' => 'Free result memory',
+ ),
+ 'sybase_get_last_message' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns the last message from server (over min_message_severity)',
+ ),
+ 'sybase_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int result',
+ 'description' => 'Get number of rows in result',
+ ),
+ 'sybase_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int result',
+ 'description' => 'Get number of fields in result',
+ ),
+ 'sybase_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int result',
+ 'description' => 'Get row as enumerated array',
+ ),
+ 'sybase_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'int result [, mixed object]',
+ 'description' => 'Fetch row as object',
+ ),
+ 'sybase_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int result',
+ 'description' => 'Fetch row as array',
+ ),
+ 'sybase_data_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result, int offset',
+ 'description' => 'Move internal row pointer',
+ ),
+ 'sybase_fetch_field' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'int result [, int offset]',
+ 'description' => 'Get field information',
+ ),
+ 'sybase_field_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result, int offset',
+ 'description' => 'Set field offset',
+ ),
+ 'sybase_result' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int result, int row, mixed field',
+ 'description' => 'Get result data',
+ ),
+ 'sybase_affected_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int link_id]',
+ 'description' => 'Get number of affected rows in last query',
+ ),
+ 'sybase_min_error_severity' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int severity',
+ 'description' => 'Sets the minimum error severity',
+ ),
+ 'sybase_min_message_severity' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int severity',
+ 'description' => 'Sets the minimum message severity',
+ ),
+ 'confirm_extname_compiled' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string arg',
+ 'description' => 'Return a string to confirm that the module is compiled in',
+ ),
+ 'fdf_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Opens a new FDF document',
+ ),
+ 'fdf_open_string' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string fdf_data',
+ 'description' => 'Opens a new FDF document from string',
+ ),
+ 'fdf_create' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'void',
+ 'description' => 'Creates a new FDF document',
+ ),
+ 'fdf_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource fdfdoc',
+ 'description' => 'Closes the FDF document',
+ ),
+ 'fdf_get_value' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fdfdoc, string fieldname [, int which]',
+ 'description' => 'Gets the value of a field as string',
+ ),
+ 'fdf_set_value' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, mixed value [, int isname]',
+ 'description' => 'Sets the value of a field',
+ ),
+ 'fdf_next_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fdfdoc [, string fieldname]',
+ 'description' => 'Gets the name of the next field name or the first field name',
+ ),
+ 'fdf_set_ap' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int face, string filename, int pagenr',
+ 'description' => 'Sets the appearence of a field',
+ ),
+ 'fdf_get_ap' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int face, string filename',
+ 'description' => 'Gets the appearance of a field and creates a PDF document out of it.',
+ ),
+ 'fdf_get_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fdf',
+ 'description' => 'Gets FDF file encoding scheme',
+ ),
+ 'fdf_set_status' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string status',
+ 'description' => 'Sets the value of /Status key',
+ ),
+ 'fdf_get_status' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fdfdoc',
+ 'description' => 'Gets the value of /Status key',
+ ),
+ 'fdf_set_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string filename [, string target_frame]',
+ 'description' => 'Sets the value of /F key',
+ ),
+ 'fdf_get_file' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fdfdoc',
+ 'description' => 'Gets the value of /F key',
+ ),
+ 'fdf_save' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc [, string filename]',
+ 'description' => 'Writes out the FDF file',
+ ),
+ 'fdf_save_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fdfdoc',
+ 'description' => 'Returns the FDF file as a string',
+ ),
+ 'fdf_add_template' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, int newpage, string filename, string template, int rename',
+ 'description' => 'Adds a template into the FDF document',
+ ),
+ 'fdf_set_flags' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int whichflags, int newflags',
+ 'description' => 'Sets flags for a field in the FDF document',
+ ),
+ 'fdf_get_flags' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resorce fdfdoc, string fieldname, int whichflags',
+ 'description' => 'Gets the flags of a field',
+ ),
+ 'fdf_set_opt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int element, string value, string name',
+ 'description' => 'Sets a value in the opt array for a field',
+ ),
+ 'fdf_get_opt' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource fdfdof, string fieldname [, int element]',
+ 'description' => 'Gets a value from the opt array of a field',
+ ),
+ 'fdf_set_submit_form_action' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int whichtrigger, string url, int flags',
+ 'description' => 'Sets the submit form action for a field',
+ ),
+ 'fdf_set_javascript_action' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int whichtrigger, string script',
+ 'description' => 'Sets the javascript action for a field',
+ ),
+ 'fdf_set_encoding' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdf_document, string encoding',
+ 'description' => 'Sets FDF encoding (either "Shift-JIS" or "Unicode")',
+ ),
+ 'fdf_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Gets error code for last operation',
+ ),
+ 'fdf_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int errno]',
+ 'description' => 'Gets error description for error code',
+ ),
+ 'fdf_get_version' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource fdfdoc]',
+ 'description' => 'Gets version number for FDF api or file',
+ ),
+ 'fdf_set_version' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resourece fdfdoc, string version',
+ 'description' => 'Sets FDF version for a file',
+ ),
+ 'fdf_add_doc_javascript' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string scriptname, string script',
+ 'description' => 'Add javascript code to the fdf file',
+ ),
+ 'fdf_set_on_import_javascript' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string script [, bool before_data_import]',
+ 'description' => 'Adds javascript code to be executed when Acrobat opens the FDF',
+ ),
+ 'fdf_set_target_frame' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string target',
+ 'description' => 'Sets target frame for form',
+ ),
+ 'fdf_remove_item' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, string fieldname, int item',
+ 'description' => 'Sets target frame for form',
+ ),
+ 'fdf_get_attachment' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource fdfdoc, string fieldname, string savepath',
+ 'description' => 'Get attached uploaded file',
+ ),
+ 'fdf_enum_values' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fdfdoc, callback function [, mixed userdata]',
+ 'description' => 'Call a user defined function for each document value',
+ ),
+ 'fdf_header' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Set FDF specific HTTP headers',
+ ),
+ 'variant_set' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object variant, mixed value',
+ 'description' => 'Assigns a new value for a variant object',
+ ),
+ 'variant_add' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => '"Adds" two variant values together and returns the result',
+ ),
+ 'variant_cat' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'concatenates two variant values together and returns the result',
+ ),
+ 'variant_sub' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'subtracts the value of the right variant from the left variant value and returns the result',
+ ),
+ 'variant_mul' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'multiplies the values of the two variants and returns the result',
+ ),
+ 'variant_and' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'performs a bitwise AND operation between two variants and returns the result',
+ ),
+ 'variant_div' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Returns the result from dividing two variants',
+ ),
+ 'variant_eqv' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Performs a bitwise equivalence on two variants',
+ ),
+ 'variant_idiv' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Converts variants to integers and then returns the result from dividing them',
+ ),
+ 'variant_imp' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Performs a bitwise implication on two variants',
+ ),
+ 'variant_mod' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Divides two variants and returns only the remainder',
+ ),
+ 'variant_or' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Performs a logical disjunction on two variants',
+ ),
+ 'variant_pow' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Returns the result of performing the power function with two variants',
+ ),
+ 'variant_xor' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, mixed right',
+ 'description' => 'Performs a logical exclusion on two variants',
+ ),
+ 'variant_abs' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left',
+ 'description' => 'Returns the absolute value of a variant',
+ ),
+ 'variant_fix' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left',
+ 'description' => 'Returns the integer part ? of a variant',
+ ),
+ 'variant_int' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left',
+ 'description' => 'Returns the integer portion of a variant',
+ ),
+ 'variant_neg' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left',
+ 'description' => 'Performs logical negation on a variant',
+ ),
+ 'variant_not' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left',
+ 'description' => 'Performs bitwise not negation on a variant',
+ ),
+ 'variant_round' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed left, int decimals',
+ 'description' => 'Rounds a variant to the specified number of decimal places',
+ ),
+ 'variant_cmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'mixed left, mixed right [, int lcid [, int flags]]',
+ 'description' => 'Compares two variants',
+ ),
+ 'variant_date_to_timestamp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object variant',
+ 'description' => 'Converts a variant date/time value to unix timestamp',
+ ),
+ 'variant_date_from_timestamp' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'int timestamp',
+ 'description' => 'Returns a variant date representation of a unix timestamp',
+ ),
+ 'variant_get_type' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'object variant',
+ 'description' => 'Returns the VT_XXX type code for a variant',
+ ),
+ 'variant_set_type' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object variant, int type',
+ 'description' => 'Convert a variant into another type. Variant is modified "in-place"',
+ ),
+ 'variant_cast' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'object variant, int type',
+ 'description' => 'Convert a variant into a new variant object of another type',
+ ),
+ 'com_get_active_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string progid [, int code_page ]',
+ 'description' => 'Returns a handle to an already running instance of a COM object',
+ ),
+ 'com_create_guid' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Generate a globally unique identifier (GUID)',
+ ),
+ 'com_event_sink' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object comobject, object sinkobject [, mixed sinkinterface]',
+ 'description' => 'Connect events from a COM object to a PHP object',
+ ),
+ 'com_print_typeinfo' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object comobject | string typelib, string dispinterface, bool wantsink',
+ 'description' => 'Print out a PHP class definition for a dispatchable interface',
+ ),
+ 'com_message_pump' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[int timeoutms]',
+ 'description' => 'Process COM messages, sleeping for up to timeoutms milliseconds',
+ ),
+ 'com_load_typelib' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string typelib_name [, int case_insensitive]',
+ 'description' => 'Loads a Typelibrary and registers its constants',
+ ),
+ 'COMPersistHelper::GetCurFile' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Determines the filename into which an object will be saved, or false if none is set, via IPersistFile::GetCurFile',
+ ),
+ 'COMPersistHelper::SaveToFile' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename [, bool remember]',
+ 'description' => 'Persist object data to file, via IPersistFile::Save',
+ ),
+ 'COMPersistHelper::LoadFromFile' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename [, int flags]',
+ 'description' => 'Load object data from file, via IPersistFile::Load',
+ ),
+ 'COMPersistHelper::GetMaxStreamSize' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Gets maximum stream size required to store the object data, via IPersistStream::GetSizeMax (or IPersistStreamInit::GetSizeMax)',
+ ),
+ 'COMPersistHelper::InitNew' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Initializes the object to a default state, via IPersistStreamInit::InitNew',
+ ),
+ 'COMPersistHelper::LoadFromStream' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource stream',
+ 'description' => 'Initializes an object from the stream where it was previously saved, via IPersistStream::Load or OleLoadFromStream',
+ ),
+ 'COMPersistHelper::SaveToStream' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream',
+ 'description' => 'Saves the object to a stream, via IPersistStream::Save',
+ ),
+ 'COMPersistHelper::__construct' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[object com_object]',
+ 'description' => 'Creates a persistence helper object, usually associated with a com_object',
+ ),
+ 'pg_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database',
+ 'description' => 'Open a PostgreSQL connection',
+ ),
+ 'pg_pconnect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string connection_string | [string host, string port [, string options [, string tty,]]] string database',
+ 'description' => 'Open a persistent PostgreSQL connection',
+ ),
+ 'pg_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection]',
+ 'description' => 'Close a PostgreSQL connection',
+ ),
+ 'pg_dbname' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection]',
+ 'description' => 'Get the database name',
+ ),
+ 'pg_last_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection]',
+ 'description' => 'Get the error message string',
+ ),
+ 'pg_options' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection]',
+ 'description' => 'Get the options associated with the connection',
+ ),
+ 'pg_port' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource connection]',
+ 'description' => 'Return the port number associated with the connection',
+ ),
+ 'pg_tty' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection]',
+ 'description' => 'Return the tty name associated with the connection',
+ ),
+ 'pg_host' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection]',
+ 'description' => 'Returns the host name associated with the connection',
+ ),
+ 'pg_version' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[resource connection]',
+ 'description' => 'Returns an array with client, protocol and server version (when available)',
+ ),
+ 'pg_parameter_status' =>
+ array (
+ 'return' => 'string|false',
+ 'params' => '[resource connection,] string param_name',
+ 'description' => 'Returns the value of a server parameter',
+ ),
+ 'pg_ping' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection]',
+ 'description' => 'Ping database. If connection is bad, try to reconnect.',
+ ),
+ 'pg_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource connection,] string query',
+ 'description' => 'Execute a query',
+ ),
+ 'pg_query_params' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource connection,] string query, array params',
+ 'description' => 'Execute a query',
+ ),
+ 'pg_prepare' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource connection,] string stmtname, string query',
+ 'description' => 'Prepare a query for future execution',
+ ),
+ 'pg_execute' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource connection,] string stmtname, array params',
+ 'description' => 'Execute a prepared query',
+ ),
+ 'pg_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result',
+ 'description' => 'Return the number of rows in the result',
+ ),
+ 'pg_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result',
+ 'description' => 'Return the number of fields in the result',
+ ),
+ 'pg_affected_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result',
+ 'description' => 'Returns the number of affected tuples',
+ ),
+ 'pg_last_notice' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource connection',
+ 'description' => 'Returns the last notice set by the backend',
+ ),
+ 'pg_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_number',
+ 'description' => 'Returns the name of the field',
+ ),
+ 'pg_field_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result, int field_number',
+ 'description' => 'Returns the internal size of the field',
+ ),
+ 'pg_field_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_number',
+ 'description' => 'Returns the type name for the given field',
+ ),
+ 'pg_field_type_oid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int field_number',
+ 'description' => 'Returns the type oid for the given field',
+ ),
+ 'pg_field_num' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result, string field_name',
+ 'description' => 'Returns the field number of the named field',
+ ),
+ 'pg_fetch_result' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource result, [int row_number,] mixed field_name',
+ 'description' => 'Returns values from a result identifier',
+ ),
+ 'pg_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int row [, int result_type]]',
+ 'description' => 'Get a row as an enumerated array',
+ ),
+ 'pg_fetch_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int row]',
+ 'description' => 'Fetch a row as an assoc array',
+ ),
+ 'pg_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int row [, int result_type]]',
+ 'description' => 'Fetch a row as an array',
+ ),
+ 'pg_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result [, int row [, string class_name [, NULL|array ctor_params]]]',
+ 'description' => 'Fetch a row as an object',
+ ),
+ 'pg_fetch_all' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result',
+ 'description' => 'Fetch all rows into array',
+ ),
+ 'pg_fetch_all_columns' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int column_number]',
+ 'description' => 'Fetch all rows into array',
+ ),
+ 'pg_result_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result, int offset',
+ 'description' => 'Set internal row offset',
+ ),
+ 'pg_field_prtlen' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result, [int row,] mixed field_name_or_number',
+ 'description' => 'Returns the printed length',
+ ),
+ 'pg_field_is_null' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result, [int row,] mixed field_name_or_number',
+ 'description' => 'Test if a field is NULL',
+ ),
+ 'pg_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result',
+ 'description' => 'Free result memory',
+ ),
+ 'pg_last_oid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result',
+ 'description' => 'Returns the last object identifier',
+ ),
+ 'pg_trace' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename [, string mode [, resource connection]]',
+ 'description' => 'Enable tracing a PostgreSQL connection',
+ ),
+ 'pg_untrace' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection]',
+ 'description' => 'Disable tracing of a PostgreSQL connection',
+ ),
+ 'pg_lo_create' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource connection]',
+ 'description' => 'Create a large object',
+ ),
+ 'pg_lo_unlink' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection,] string large_object_oid',
+ 'description' => 'Delete a large object',
+ ),
+ 'pg_lo_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource connection,] int large_object_oid, string mode',
+ 'description' => 'Open a large object and return fd',
+ ),
+ 'pg_lo_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource large_object',
+ 'description' => 'Close a large object',
+ ),
+ 'pg_lo_read' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource large_object [, int len]',
+ 'description' => 'Read a large object',
+ ),
+ 'pg_lo_write' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource large_object, string buf [, int len]',
+ 'description' => 'Write a large object',
+ ),
+ 'pg_lo_read_all' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource large_object',
+ 'description' => 'Read a large object and send straight to browser',
+ ),
+ 'pg_lo_import' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource connection, ] string filename',
+ 'description' => 'Import large object direct from filesystem',
+ ),
+ 'pg_lo_export' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection, ] int objoid, string filename',
+ 'description' => 'Export large object direct to filesystem',
+ ),
+ 'pg_lo_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource large_object, int offset [, int whence]',
+ 'description' => 'Seeks position of large object',
+ ),
+ 'pg_lo_tell' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource large_object',
+ 'description' => 'Returns current position of large object',
+ ),
+ 'pg_set_error_verbosity' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource connection,] int verbosity',
+ 'description' => 'Set error verbosity',
+ ),
+ 'pg_set_client_encoding' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource connection,] string encoding',
+ 'description' => 'Set client encoding',
+ ),
+ 'pg_client_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection]',
+ 'description' => 'Get the current client encoding',
+ ),
+ 'pg_end_copy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection]',
+ 'description' => 'Sync with backend. Completes the Copy command',
+ ),
+ 'pg_put_line' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource connection,] string query',
+ 'description' => 'Send null-terminated string to backend server',
+ ),
+ 'pg_copy_to' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource connection, string table_name [, string delimiter [, string null_as]]',
+ 'description' => 'Copy table to array',
+ ),
+ 'pg_copy_from' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection, string table_name , array rows [, string delimiter [, string null_as]]',
+ 'description' => 'Copy table from array',
+ ),
+ 'pg_escape_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'Escape string for text/char type',
+ ),
+ 'pg_escape_bytea' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'Escape binary for bytea type',
+ ),
+ 'pg_unescape_bytea' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'Unescape binary for bytea type',
+ ),
+ 'pg_result_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result',
+ 'description' => 'Get error message associated with result',
+ ),
+ 'pg_result_error_field' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int fieldcode',
+ 'description' => 'Get error message field associated with result',
+ ),
+ 'pg_connection_status' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource connnection',
+ 'description' => 'Get connection status',
+ ),
+ 'pg_transaction_status' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource connnection',
+ 'description' => 'Get transaction status',
+ ),
+ 'pg_connection_reset' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection',
+ 'description' => 'Reset connection (reconnect)',
+ ),
+ 'pg_cancel_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection',
+ 'description' => 'Cancel request',
+ ),
+ 'pg_connection_busy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection',
+ 'description' => 'Get connection is busy or not',
+ ),
+ 'pg_send_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection, string query',
+ 'description' => 'Send asynchronous query',
+ ),
+ 'pg_send_query_params' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection, string query',
+ 'description' => 'Send asynchronous parameterized query',
+ ),
+ 'pg_send_prepare' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection, string stmtname, string query',
+ 'description' => 'Asynchronously prepare a query for future execution',
+ ),
+ 'pg_send_execute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection, string stmtname, array params',
+ 'description' => 'Executes prevriously prepared stmtname asynchronously',
+ ),
+ 'pg_get_result' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection',
+ 'description' => 'Get asynchronous query result',
+ ),
+ 'pg_result_status' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource result[, long result_type]',
+ 'description' => 'Get status of query result',
+ ),
+ 'pg_get_notify' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[resource connection[, result_type]]',
+ 'description' => 'Get asynchronous notification',
+ ),
+ 'pg_get_pid' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource connection',
+ 'description' => 'Get backend(server) pid',
+ ),
+ 'pg_meta_data' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource db, string table',
+ 'description' => 'Get meta_data',
+ ),
+ 'pg_convert' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource db, string table, array values[, int options]',
+ 'description' => 'Check and convert values for PostgreSQL SQL statement',
+ ),
+ 'pg_insert' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource db, string table, array values[, int options]',
+ 'description' => 'Insert values (filed=>value) to table',
+ ),
+ 'pg_update' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource db, string table, array fields, array ids[, int options]',
+ 'description' => 'Update table using values (field=>value) and ids (id=>value)',
+ ),
+ 'pg_delete' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource db, string table, array ids[, int options]',
+ 'description' => 'Delete records has ids (id=>value)',
+ ),
+ 'pg_select' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource db, string table, array ids[, int options]',
+ 'description' => 'Select records that has ids (id=>value)',
+ ),
+ 'filepro' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string directory',
+ 'description' => 'Read and verify the map file',
+ ),
+ 'filepro_rowcount' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Find out how many rows are in a filePro database',
+ ),
+ 'filepro_fieldname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int fieldnumber',
+ 'description' => 'Gets the name of a field',
+ ),
+ 'filepro_fieldtype' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int field_number',
+ 'description' => 'Gets the type of a field',
+ ),
+ 'filepro_fieldwidth' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int field_number',
+ 'description' => 'Gets the width of a field',
+ ),
+ 'filepro_fieldcount' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Find out how many fields are in a filePro database',
+ ),
+ 'filepro_retrieve' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int row_number, int field_number',
+ 'description' => 'Retrieves data from a filePro database',
+ ),
+ 'bzread' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int bz[, int length]',
+ 'description' => 'Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified',
+ ),
+ 'bzopen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string|int file|fp, string mode',
+ 'description' => 'Opens a new BZip2 stream',
+ ),
+ 'bzerrno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource bz',
+ 'description' => 'Returns the error number',
+ ),
+ 'bzerrstr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource bz',
+ 'description' => 'Returns the error string',
+ ),
+ 'bzerror' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource bz',
+ 'description' => 'Returns the error number and error string in an associative array',
+ ),
+ 'bzcompress' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string source [, int blocksize100k [, int workfactor]]',
+ 'description' => 'Compresses a string into BZip2 encoded data',
+ ),
+ 'bzdecompress' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string source [, int small]',
+ 'description' => 'Decompresses BZip2 compressed data',
+ ),
+ 'dba_popen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string path, string mode [, string handlername, string ...]',
+ 'description' => 'Opens path using the specified handler in mode persistently',
+ ),
+ 'dba_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string path, string mode [, string handlername, string ...]',
+ 'description' => 'Opens path using the specified handler in mode',
+ ),
+ 'dba_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource handle',
+ 'description' => 'Closes database',
+ ),
+ 'dba_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string key, resource handle',
+ 'description' => 'Checks, if the specified key exists',
+ ),
+ 'dba_fetch' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string key, [int skip ,] resource handle',
+ 'description' => 'Fetches the data associated with key',
+ ),
+ 'dba_key_split' =>
+ array (
+ 'return' => 'array|false',
+ 'params' => 'string key',
+ 'description' => 'Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null',
+ ),
+ 'dba_firstkey' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource handle',
+ 'description' => 'Resets the internal key pointer and returns the first key',
+ ),
+ 'dba_nextkey' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource handle',
+ 'description' => 'Returns the next key',
+ ),
+ 'dba_delete' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string key, resource handle',
+ 'description' => 'Deletes the entry associated with keyIf inifile: remove all other key lines',
+ ),
+ 'dba_insert' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string key, string value, resource handle',
+ 'description' => 'If not inifile: Insert value as key, return false, if key exists alreadyIf inifile: Add vakue as key (next instance of key)',
+ ),
+ 'dba_replace' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string key, string value, resource handle',
+ 'description' => 'Inserts value as key, replaces key, if key exists alreadyIf inifile: remove all other key lines',
+ ),
+ 'dba_optimize' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource handle',
+ 'description' => 'Optimizes (e.g. clean up, vacuum) database',
+ ),
+ 'dba_sync' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource handle',
+ 'description' => 'Synchronizes database',
+ ),
+ 'dba_handlers' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[bool full_info]',
+ 'description' => 'List configured database handlers',
+ ),
+ 'dba_list' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'List opened databases',
+ ),
+ 'iconv_strlen' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str [, string charset]',
+ 'description' => 'Returns the character count of str',
+ ),
+ 'iconv_substr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, int offset, [int length, string charset]',
+ 'description' => 'Returns specified part of a string',
+ ),
+ 'iconv_strpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle, int offset [, string charset]',
+ 'description' => 'Finds position of first occurrence of needle within part of haystack beginning with offset',
+ ),
+ 'iconv_strrpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, string charset]',
+ 'description' => 'Finds position of last occurrence of needle within part of haystack beginning with offset',
+ ),
+ 'iconv_mime_encode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string field_name, string field_value, [, array preference]',
+ 'description' => 'Composes a mime header field with field_name and field_value in a specified scheme',
+ ),
+ 'iconv_mime_decode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string encoded_string [, int mode, string charset]',
+ 'description' => 'Decodes a mime header field',
+ ),
+ 'iconv_mime_decode_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string headers [, int mode, string charset]',
+ 'description' => 'Decodes multiple mime header fields',
+ ),
+ 'iconv' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string in_charset, string out_charset, string str',
+ 'description' => 'Returns str converted to the out_charset character set',
+ ),
+ 'ob_iconv_handler' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string contents, int status',
+ 'description' => 'Returns str in output buffer converted to the iconv.output_encoding character set',
+ ),
+ 'iconv_set_encoding' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string type, string charset',
+ 'description' => 'Sets internal encoding and output encoding for ob_iconv_handler()',
+ ),
+ 'iconv_get_encoding' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[string type]',
+ 'description' => 'Get internal encoding and output encoding for ob_iconv_handler()',
+ ),
+ 'ctype_alnum' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for alphanumeric character(s)',
+ ),
+ 'ctype_alpha' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for alphabetic character(s)',
+ ),
+ 'ctype_cntrl' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for control character(s)',
+ ),
+ 'ctype_digit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for numeric character(s)',
+ ),
+ 'ctype_lower' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for lowercase character(s)',
+ ),
+ 'ctype_graph' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for any printable character(s) except space',
+ ),
+ 'ctype_print' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for printable character(s)',
+ ),
+ 'ctype_punct' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for any printable character which is not whitespace or an alphanumeric character',
+ ),
+ 'ctype_space' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for whitespace character(s)',
+ ),
+ 'ctype_upper' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for uppercase character(s)',
+ ),
+ 'ctype_xdigit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed c',
+ 'description' => 'Checks for character(s) representing a hexadecimal digit',
+ ),
+ 'bcadd' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string left_operand, string right_operand [, int scale]',
+ 'description' => 'Returns the sum of two arbitrary precision numbers',
+ ),
+ 'bcsub' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string left_operand, string right_operand [, int scale]',
+ 'description' => 'Returns the difference between two arbitrary precision numbers',
+ ),
+ 'bcmul' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string left_operand, string right_operand [, int scale]',
+ 'description' => 'Returns the multiplication of two arbitrary precision numbers',
+ ),
+ 'bcdiv' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string left_operand, string right_operand [, int scale]',
+ 'description' => 'Returns the quotient of two arbitrary precision numbers (division)',
+ ),
+ 'bcmod' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string left_operand, string right_operand',
+ 'description' => 'Returns the modulus of the two arbitrary precision operands',
+ ),
+ 'bcpowmod' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string x, string y, string mod [, int scale]',
+ 'description' => 'Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous',
+ ),
+ 'bcpow' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string x, string y [, int scale]',
+ 'description' => 'Returns the value of an arbitrary precision number raised to the power of another',
+ ),
+ 'bcsqrt' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string operand [, int scale]',
+ 'description' => 'Returns the square root of an arbitray precision number',
+ ),
+ 'bccomp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string left_operand, string right_operand [, int scale]',
+ 'description' => 'Compares two arbitrary precision numbers',
+ ),
+ 'bcscale' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int scale',
+ 'description' => 'Sets default scale parameter for all bc math functions',
+ ),
+ 'ldap_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string host [, int port]]',
+ 'description' => 'Connect to an LDAP server',
+ ),
+ 'ldap_bind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link [, string dn, string password]',
+ 'description' => 'Bind to LDAP directory',
+ ),
+ 'ldap_sasl_bind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link [, string binddn, string password, string sasl_mech, string sasl_realm, string sasl_authz_id, string props]',
+ 'description' => 'Bind to LDAP directory using SASL',
+ ),
+ 'ldap_unbind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link',
+ 'description' => 'Unbind from LDAP directory',
+ ),
+ 'ldap_read' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]',
+ 'description' => 'Read an entry',
+ ),
+ 'ldap_list' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]',
+ 'description' => 'Single-level search',
+ ),
+ 'ldap_search' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]]',
+ 'description' => 'Search LDAP tree under base_dn',
+ ),
+ 'ldap_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result',
+ 'description' => 'Free result memory',
+ ),
+ 'ldap_count_entries' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource link, resource result',
+ 'description' => 'Count the number of entries in a search result',
+ ),
+ 'ldap_first_entry' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, resource result',
+ 'description' => 'Return first result id',
+ ),
+ 'ldap_next_entry' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, resource result_entry',
+ 'description' => 'Get next result entry',
+ ),
+ 'ldap_get_entries' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource link, resource result',
+ 'description' => 'Get all result entries',
+ ),
+ 'ldap_first_attribute' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link, resource result_entry, int ber',
+ 'description' => 'Return first attribute',
+ ),
+ 'ldap_next_attribute' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link, resource result_entry, resource ber',
+ 'description' => 'Get the next attribute in result',
+ ),
+ 'ldap_get_attributes' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource link, resource result_entry',
+ 'description' => 'Get attributes from a search result entry',
+ ),
+ 'ldap_get_values' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource link, resource result_entry, string attribute',
+ 'description' => 'Get all values from a result entry',
+ ),
+ 'ldap_get_values_len' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource link, resource result_entry, string attribute',
+ 'description' => 'Get all values with lengths from a result entry',
+ ),
+ 'ldap_get_dn' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link, resource result_entry',
+ 'description' => 'Get the DN of a result entry',
+ ),
+ 'ldap_explode_dn' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string dn, int with_attrib',
+ 'description' => 'Splits DN into its component parts',
+ ),
+ 'ldap_dn2ufn' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string dn',
+ 'description' => 'Convert DN to User Friendly Naming format',
+ ),
+ 'ldap_add' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn, array entry',
+ 'description' => 'Add entries to LDAP directory',
+ ),
+ 'ldap_mod_replace' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn, array entry',
+ 'description' => 'Replace attribute values with new ones',
+ ),
+ 'ldap_mod_add' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn, array entry',
+ 'description' => 'Add attribute values to current',
+ ),
+ 'ldap_mod_del' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn, array entry',
+ 'description' => 'Delete attribute values',
+ ),
+ 'ldap_delete' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn',
+ 'description' => 'Delete an entry from a directory',
+ ),
+ 'ldap_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource link',
+ 'description' => 'Get the current ldap error number',
+ ),
+ 'ldap_err2str' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int errno',
+ 'description' => 'Convert error number to error string',
+ ),
+ 'ldap_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link',
+ 'description' => 'Get the current ldap error string',
+ ),
+ 'ldap_compare' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn, string attr, string value',
+ 'description' => 'Determine if an entry has a specific value for one of its attributes',
+ ),
+ 'ldap_sort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, resource result, string sortfilter',
+ 'description' => 'Sort LDAP result entries',
+ ),
+ 'ldap_get_option' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, int option, mixed retval',
+ 'description' => 'Get the current value of various session-wide parameters',
+ ),
+ 'ldap_set_option' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, int option, mixed newval',
+ 'description' => 'Set the value of various session-wide parameters',
+ ),
+ 'ldap_parse_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals',
+ 'description' => 'Extract information from result',
+ ),
+ 'ldap_first_reference' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, resource result',
+ 'description' => 'Return first reference',
+ ),
+ 'ldap_next_reference' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource link, resource reference_entry',
+ 'description' => 'Get next reference',
+ ),
+ 'ldap_parse_reference' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, resource reference_entry, array referrals',
+ 'description' => 'Extract information from reference entry',
+ ),
+ 'ldap_rename' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string dn, string newrdn, string newparent, bool deleteoldrdn',
+ 'description' => 'Modify the name of an entry',
+ ),
+ 'ldap_start_tls' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link',
+ 'description' => 'Start TLS',
+ ),
+ 'ldap_set_rebind_proc' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link, string callback',
+ 'description' => 'Set a callback function to do re-binds on referral chasing.',
+ ),
+ 'ldap_t61_to_8859' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string value',
+ 'description' => 'Translate t61 characters to 8859 characters',
+ ),
+ 'ldap_8859_to_t61' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string value',
+ 'description' => 'Translate 8859 characters to t61 characters',
+ ),
+ 'SoapServer::setClass' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string class_name [, mixed args]',
+ 'description' => 'Sets class which will handle SOAP requests',
+ ),
+ 'SoapServer::getFunctions' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns list of defined functions',
+ ),
+ 'SoapServer::addFunction' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed functions',
+ 'description' => 'Adds one or several functions those will handle SOAP requests',
+ ),
+ 'SoapClient::__getLastRequestHeaders' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns last SOAP request headers',
+ ),
+ 'SoapClient::__getLastResponseHeaders' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns last SOAP response headers',
+ ),
+ 'SoapClient::__doRequest' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'SoapClient::__doRequest()',
+ ),
+ 'SoapClient::__setCookie' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string name [, strung value]',
+ 'description' => 'Sets cookie thet will sent with SOAP request.The call to this function will effect all folowing calls of SOAP methods.If value is not specified cookie is removed.',
+ ),
+ 'SoapClient::__setSoapHeaders' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'array SoapHeaders',
+ 'description' => 'Sets SOAP headers for subsequent calls (replaces any previousvalues).If no value is specified, all of the headers are removed.',
+ ),
+ 'SoapClient::__setLocation' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_location]',
+ 'description' => 'Sets the location option (the endpoint URL that will be touched by thefollowing SOAP requests).If new_location is not specified or null then SoapClient will use endpointfrom WSDL file.The function returns old value of location options.',
+ ),
+ 'fbsql_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string hostname [, string username [, string password]]]',
+ 'description' => 'Create a connection to a database server',
+ ),
+ 'fbsql_pconnect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string hostname [, string username [, string password]]]',
+ 'description' => 'Create a persistant connection to a database server',
+ ),
+ 'fbsql_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Close a connection to a database server',
+ ),
+ 'fbsql_set_transaction' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource link_identifier, int locking, int isolation',
+ 'description' => 'Sets the transaction locking and isolation',
+ ),
+ 'fbsql_autocommit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link_identifier [, bool OnOff]',
+ 'description' => 'Turns on auto-commit',
+ ),
+ 'fbsql_commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Commit the transaction',
+ ),
+ 'fbsql_rollback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Rollback all statments since last commit',
+ ),
+ 'fbsql_create_blob' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string blob_data [, resource link_identifier]',
+ 'description' => 'Create a BLOB in the database for use with an insert or update statement',
+ ),
+ 'fbsql_create_clob' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string clob_data [, resource link_identifier]',
+ 'description' => 'Create a CLOB in the database for use with an insert or update statement',
+ ),
+ 'fbsql_set_lob_mode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result, int lob_mode',
+ 'description' => 'Sets the mode for how LOB data re retreived (actual data or a handle)',
+ ),
+ 'fbsql_read_blob' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string blob_handle [, resource link_identifier]',
+ 'description' => 'Read the BLOB data identified by blob_handle',
+ ),
+ 'fbsql_read_clob' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string clob_handle [, resource link_identifier]',
+ 'description' => 'Read the CLOB data identified by clob_handle',
+ ),
+ 'fbsql_blob_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string blob_handle [, resource link_identifier]',
+ 'description' => 'Get the size of a BLOB identified by blob_handle',
+ ),
+ 'fbsql_clob_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string clob_handle [, resource link_identifier]',
+ 'description' => 'Get the size of a CLOB identified by clob_handle',
+ ),
+ 'fbsql_hostname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link_identifier [, string host_name]',
+ 'description' => 'Get or set the host name used with a connection',
+ ),
+ 'fbsql_database' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link_identifier [, string database]',
+ 'description' => 'Get or set the database name used with a connection',
+ ),
+ 'fbsql_database_password' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link_identifier [, string database_password]',
+ 'description' => 'Get or set the databsae password used with a connection',
+ ),
+ 'fbsql_username' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link_identifier [, string username]',
+ 'description' => 'Get or set the host user used with a connection',
+ ),
+ 'fbsql_password' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource link_identifier [, string password]',
+ 'description' => 'Get or set the user password used with a connection',
+ ),
+ 'fbsql_set_password' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource link_identifier, string user, string password, string old_password',
+ 'description' => 'Change the password for a given user',
+ ),
+ 'fbsql_select_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string database_name [, resource link_identifier]]',
+ 'description' => 'Select the database to open',
+ ),
+ 'fbsql_set_characterset' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource link_identifier, long charcterset [, long in_out_both]]',
+ 'description' => 'Change input/output character set',
+ ),
+ 'fbsql_change_user' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string user, string password [, string database [, resource link_identifier]]',
+ 'description' => 'Change the user for a session',
+ ),
+ 'fbsql_create_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Create a new database on the server',
+ ),
+ 'fbsql_drop_db' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Drop a database on the server',
+ ),
+ 'fbsql_start_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource link_identifier [, string database_options]]',
+ 'description' => 'Start a database on the server',
+ ),
+ 'fbsql_stop_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Stop a database on the server',
+ ),
+ 'fbsql_db_status' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Gets the status (Stopped, Starting, Running, Stopping) for a given database',
+ ),
+ 'fbsql_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string query [, resource link_identifier [, long batch_size]]',
+ 'description' => 'Send one or more SQL statements to the server and execute them',
+ ),
+ 'fbsql_db_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name, string query [, resource link_identifier]',
+ 'description' => 'Send one or more SQL statements to a specified database on the server',
+ ),
+ 'fbsql_list_dbs' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Retreive a list of all databases on the server',
+ ),
+ 'fbsql_list_tables' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database [, int link_identifier]',
+ 'description' => 'Retreive a list of all tables from the specifoied database',
+ ),
+ 'fbsql_list_fields' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name, string table_name [, resource link_identifier]',
+ 'description' => 'Retrieve a list of all fields for the specified database.table',
+ ),
+ 'fbsql_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Returns the last error string',
+ ),
+ 'fbsql_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Returns the last error code',
+ ),
+ 'fbsql_warnings' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[int flag]',
+ 'description' => 'Enable or disable FrontBase warnings',
+ ),
+ 'fbsql_affected_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Get the number of rows affected by the last statement',
+ ),
+ 'fbsql_insert_id' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Get the internal index for the last insert statement',
+ ),
+ 'fbsql_result' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int result [, int row [, mixed field]]',
+ 'description' => '???',
+ ),
+ 'fbsql_next_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result',
+ 'description' => 'Switch to the next result if multiple results are available',
+ ),
+ 'fbsql_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int result',
+ 'description' => 'Get number of rows',
+ ),
+ 'fbsql_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int result',
+ 'description' => 'Get number of fields in the result set',
+ ),
+ 'fbsql_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result',
+ 'description' => 'Fetch a row of data. Returns an indexed array',
+ ),
+ 'fbsql_fetch_assoc' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result',
+ 'description' => 'Detch a row of data. Returns an assoc array',
+ ),
+ 'fbsql_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result [, int result_type]',
+ 'description' => 'Fetch a row of data. Returns an object',
+ ),
+ 'fbsql_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int result_type]',
+ 'description' => 'Fetches a result row as an array (associative, numeric or both)',
+ ),
+ 'fbsql_data_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result, int row_number',
+ 'description' => 'Move the internal row counter to the specified row_number',
+ ),
+ 'fbsql_fetch_lengths' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int result',
+ 'description' => 'Returns an array of the lengths of each column in the result set',
+ ),
+ 'fbsql_fetch_field' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'int result [, int field_index]',
+ 'description' => 'Get the field properties for a specified field_index',
+ ),
+ 'fbsql_field_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result [, int field_index]',
+ 'description' => '???',
+ ),
+ 'fbsql_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int result [, int field_index]',
+ 'description' => 'Get the column name for a specified field_index',
+ ),
+ 'fbsql_field_table' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int result [, int field_index]',
+ 'description' => 'Get the table name for a specified field_index',
+ ),
+ 'fbsql_field_len' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int result [, int field_index]',
+ 'description' => 'Get the column length for a specified field_index',
+ ),
+ 'fbsql_field_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int result [, int field_index]',
+ 'description' => 'Get the field type for a specified field_index',
+ ),
+ 'fbsql_field_flags' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int result [, int field_index]',
+ 'description' => '???',
+ ),
+ 'fbsql_table_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result, int index',
+ 'description' => 'Retreive the table name for index after a call to fbsql_list_tables()',
+ ),
+ 'fbsql_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result',
+ 'description' => 'free the memory used to store a result',
+ ),
+ 'fbsql_get_autostart_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[resource link_identifier]',
+ 'description' => '???',
+ ),
+ 'sem_get' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int key [, int max_acquire [, int perm [, int auto_release]]',
+ 'description' => 'Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously',
+ ),
+ 'sem_acquire' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource id',
+ 'description' => 'Acquires the semaphore with the given id, blocking if necessary',
+ ),
+ 'sem_release' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource id',
+ 'description' => 'Releases the semaphore with the given id',
+ ),
+ 'sem_remove' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource id',
+ 'description' => 'Removes semaphore from Unix systems',
+ ),
+ 'token_get_all' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string source',
+ 'description' => '',
+ ),
+ 'token_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int type',
+ 'description' => '',
+ ),
+ 'gzfile' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename [, int use_include_path]',
+ 'description' => 'Read und uncompress entire .gz-file into an array',
+ ),
+ 'gzopen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename, string mode [, int use_include_path]',
+ 'description' => 'Open a .gz-file and return a .gz-file pointer',
+ ),
+ 'readgzfile' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename [, int use_include_path]',
+ 'description' => 'Output a .gz-file',
+ ),
+ 'gzcompress' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data [, int level]',
+ 'description' => 'Gzip-compress a string',
+ ),
+ 'gzuncompress' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data [, int length]',
+ 'description' => 'Unzip a gzip-compressed string',
+ ),
+ 'gzdeflate' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data [, int level]',
+ 'description' => 'Gzip-compress a string',
+ ),
+ 'gzinflate' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data [, int length]',
+ 'description' => 'Unzip a gzip-compressed string',
+ ),
+ 'zlib_get_coding_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns the coding type used for output compression',
+ ),
+ 'gzencode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data [, int level [, int encoding_mode]]',
+ 'description' => 'GZ encode a string',
+ ),
+ 'ob_gzhandler' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, int mode',
+ 'description' => 'Encode str based on accept-encoding setting - designed to be called from ob_start()',
+ ),
+ 'msql_connect' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string hostname[:port]] [, string username] [, string password]',
+ 'description' => 'Open a connection to an mSQL Server',
+ ),
+ 'msql_pconnect' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string hostname[:port]] [, string username] [, string password]',
+ 'description' => 'Open a persistent connection to an mSQL Server',
+ ),
+ 'msql_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Close an mSQL connection',
+ ),
+ 'msql_select_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Select an mSQL database',
+ ),
+ 'msql_create_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Create an mSQL database',
+ ),
+ 'msql_drop_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'Drop (delete) an mSQL database',
+ ),
+ 'msql_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string query [, resource link_identifier]',
+ 'description' => 'Send an SQL query to mSQL',
+ ),
+ 'msql_db_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name, string query [, resource link_identifier]',
+ 'description' => 'Send an SQL query to mSQL',
+ ),
+ 'msql_list_dbs' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'List databases available on an mSQL server',
+ ),
+ 'msql_list_tables' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name [, resource link_identifier]',
+ 'description' => 'List tables in an mSQL database',
+ ),
+ 'msql_list_fields' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database_name, string table_name [, resource link_identifier]',
+ 'description' => 'List mSQL result fields',
+ ),
+ 'msql_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns the text of the error message from previous mSQL operation',
+ ),
+ 'msql_result' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int query, int row [, mixed field]',
+ 'description' => 'Get result data',
+ ),
+ 'msql_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource query',
+ 'description' => 'Get number of rows in a result',
+ ),
+ 'msql_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource query',
+ 'description' => 'Get number of fields in a result',
+ ),
+ 'msql_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource query',
+ 'description' => 'Get a result row as an enumerated array',
+ ),
+ 'msql_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource query [, resource result_type]',
+ 'description' => 'Fetch a result row as an object',
+ ),
+ 'msql_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource query [, int result_type]',
+ 'description' => 'Fetch a result row as an associative array',
+ ),
+ 'msql_data_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource query, int row_number',
+ 'description' => 'Move internal result pointer',
+ ),
+ 'msql_fetch_field' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource query [, int field_offset]',
+ 'description' => 'Get column information from a result and return as an object',
+ ),
+ 'msql_field_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource query, int field_offset',
+ 'description' => 'Set result pointer to a specific field offset',
+ ),
+ 'msql_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource query, int field_index',
+ 'description' => 'Get the name of the specified field in a result',
+ ),
+ 'msql_field_table' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource query, int field_offset',
+ 'description' => 'Get name of the table the specified field is in',
+ ),
+ 'msql_field_len' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int query, int field_offet',
+ 'description' => 'Returns the length of the specified field',
+ ),
+ 'msql_field_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource query, int field_offset',
+ 'description' => 'Get the type of the specified field in a result',
+ ),
+ 'msql_field_flags' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource query, int field_offset',
+ 'description' => 'Get the flags associated with the specified field in a result',
+ ),
+ 'msql_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource query',
+ 'description' => 'Free result memory',
+ ),
+ 'msql_affected_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource query',
+ 'description' => 'Return number of affected rows',
+ ),
+ 'PDO::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string dsn, string username, string passwd [, array options]',
+ 'description' => '',
+ ),
+ 'PDO::prepare' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string statment [, array options]',
+ 'description' => 'Prepares a statement for execution and returns a statement object',
+ ),
+ 'PDO::beginTransaction' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Initiates a transaction',
+ ),
+ 'PDO::commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Commit a transaction',
+ ),
+ 'PDO::rollBack' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'roll back a transaction',
+ ),
+ 'PDO::setAttribute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'long attribute, mixed value',
+ 'description' => 'Set an attribute',
+ ),
+ 'PDO::getAttribute' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'long attribute',
+ 'description' => 'Get an attribute',
+ ),
+ 'PDO::exec' =>
+ array (
+ 'return' => 'long',
+ 'params' => 'string query',
+ 'description' => 'Execute a query that does not return a row set, returning the number of affected rows',
+ ),
+ 'PDO::lastInsertId' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string seqname]',
+ 'description' => 'Returns the id of the last row that we affected on this connection. Some databases require a sequence or table name to be passed in. Not always meaningful.',
+ ),
+ 'PDO::errorCode' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Fetch the error code associated with the last operation on the database handle',
+ ),
+ 'PDO::errorInfo' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Fetch extended error information associated with the last operation on the database handle',
+ ),
+ 'PDO::query' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string sql [, PDOStatement::setFetchMode() args]',
+ 'description' => 'Prepare and execute $sql; returns the statement object for iteration',
+ ),
+ 'PDO::quote' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string [, int paramtype]',
+ 'description' => 'quotes string for use in a query. The optional paramtype acts as a hint for drivers that have alternate quoting styles. The default value is PDO_PARAM_STR',
+ ),
+ 'PDO::__wakeup' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Prevents use of a PDO instance that has been unserialized',
+ ),
+ 'PDO::__sleep' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Prevents serialization of a PDO instance',
+ ),
+ 'pdo_drivers' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Return array of available PDO drivers',
+ ),
+ 'PDOStatement::execute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[array $bound_input_params]',
+ 'description' => 'Execute a prepared statement, optionally binding parameters',
+ ),
+ 'PDOStatement::fetch' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[int $how = PDO_FETCH_BOTH [, int $orientation [, int $offset]]]',
+ 'description' => 'Fetches the next row and returns it, or false if there are no more rows',
+ ),
+ 'PDOStatement::fetchObject' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string class_name [, NULL|array ctor_args]',
+ 'description' => 'Fetches the next row and returns it as an object.',
+ ),
+ 'PDOStatement::fetchColumn' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[int column_number]',
+ 'description' => 'Returns a data of the specified column in the result set.',
+ ),
+ 'PDOStatement::fetchAll' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[int $how = PDO_FETCH_BOTH [, string class_name [, NULL|array ctor_args]]]',
+ 'description' => 'Returns an array of all of the results.',
+ ),
+ 'PDOStatement::bindValue' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed $paramno, mixed $param [, int $type ]',
+ 'description' => 'bind an input parameter to the value of a PHP variable. $paramno is the 1-based position of the placeholder in the SQL statement (but can be the parameter name for drivers that support named placeholders). It should be called prior to execute().',
+ ),
+ 'PDOStatement::bindParam' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed $paramno, mixed &$param [, int $type [, int $maxlen [, mixed $driverdata]]]',
+ 'description' => 'bind a parameter to a PHP variable. $paramno is the 1-based position of the placeholder in the SQL statement (but can be the parameter name for drivers that support named placeholders). This isn\'t supported by all drivers. It should be called prior to execute().',
+ ),
+ 'PDOStatement::bindColumn' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed $column, mixed &$param [, int $type [, int $maxlen [, mixed $driverdata]]]',
+ 'description' => 'bind a column to a PHP variable. On each row fetch $param will contain the value of the corresponding column. $column is the 1-based offset of the column, or the column name. For portability, don\'t call this before execute().',
+ ),
+ 'PDOStatement::rowCount' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the number of rows in a result set, or the number of rows affected by the last execute(). It is not always meaningful.',
+ ),
+ 'PDOStatement::errorCode' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Fetch the error code associated with the last operation on the statement handle',
+ ),
+ 'PDOStatement::errorInfo' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Fetch extended error information associated with the last operation on the statement handle',
+ ),
+ 'PDOStatement::setAttribute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'long attribute, mixed value',
+ 'description' => 'Set an attribute',
+ ),
+ 'PDOStatement::getAttribute' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'long attribute',
+ 'description' => 'Get an attribute',
+ ),
+ 'PDOStatement::columnCount' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the number of columns in the result set',
+ ),
+ 'PDOStatement::getColumnMeta' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int $column',
+ 'description' => 'Returns meta data for a numbered column',
+ ),
+ 'PDOStatement::setFetchMode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int mode [mixed* params]',
+ 'description' => 'Changes the default fetch mode for subsequent fetches (params have different meaning for different fetch modes)',
+ ),
+ 'PDOStatement::nextRowset' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Advances to the next rowset in a multi-rowset statement handle. Returns true if it succeded, false otherwise',
+ ),
+ 'PDOStatement::closeCursor' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Closes the cursor, leaving the statement ready for re-execution.',
+ ),
+ 'PDOStatement::debugDumpParams' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'A utility for internals hackers to debug parameter internals',
+ ),
+ 'PDOStatement::__wakeup' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Prevents use of a PDOStatement instance that has been unserialized',
+ ),
+ 'PDOStatement::__sleep' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Prevents serialization of a PDOStatement instance',
+ ),
+ 'xsl_xsltprocessor_import_stylesheet' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'domdocument doc',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Since:',
+ ),
+ 'xsl_xsltprocessor_transform_to_doc' =>
+ array (
+ 'return' => 'domdocument',
+ 'params' => 'domnode doc',
+ 'description' => 'URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Since:',
+ ),
+ 'xsl_xsltprocessor_transform_to_uri' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'domdocument doc, string uri',
+ 'description' => '',
+ ),
+ 'xsl_xsltprocessor_transform_to_xml' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'domdocument doc',
+ 'description' => '',
+ ),
+ 'xsl_xsltprocessor_set_parameter' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string namespace, mixed name [, string value]',
+ 'description' => '',
+ ),
+ 'xsl_xsltprocessor_get_parameter' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string namespace, string name',
+ 'description' => '',
+ ),
+ 'xsl_xsltprocessor_remove_parameter' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string namespace, string name',
+ 'description' => '',
+ ),
+ 'xsl_xsltprocessor_register_php_functions' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'xsl_xsltprocessor_has_exslt_support' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'libxml_set_streams_context' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource streams_context',
+ 'description' => 'Set the streams context for the next libxml document load or write',
+ ),
+ 'libxml_use_internal_errors' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'boolean use_errors',
+ 'description' => 'Disable libxml errors and allow user to fetch error information as needed',
+ ),
+ 'libxml_get_last_error' =>
+ array (
+ 'return' => 'object',
+ 'params' => '',
+ 'description' => 'Retrieve last error from libxml',
+ ),
+ 'libxml_get_errors' =>
+ array (
+ 'return' => 'object',
+ 'params' => '',
+ 'description' => 'Retrieve array of errors',
+ ),
+ 'libxml_clear_errors' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Clear last error from libxml',
+ ),
+ 'mssql_connect' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string servername [, string username [, string password [, bool new_link]]]',
+ 'description' => 'Establishes a connection to a MS-SQL server',
+ ),
+ 'mssql_pconnect' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string servername [, string username [, string password [, bool new_link]]]]',
+ 'description' => 'Establishes a persistent connection to a MS-SQL server',
+ ),
+ 'mssql_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource conn_id]',
+ 'description' => 'Closes a connection to a MS-SQL server',
+ ),
+ 'mssql_select_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string database_name [, resource conn_id]',
+ 'description' => 'Select a MS-SQL database',
+ ),
+ 'mssql_fetch_batch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_index',
+ 'description' => 'Returns the next batch of records',
+ ),
+ 'mssql_query' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string query [, resource conn_id [, int batch_size]]',
+ 'description' => 'Perform an SQL query on a MS-SQL server database',
+ ),
+ 'mssql_rows_affected' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource conn_id',
+ 'description' => 'Returns the number of records affected by the query',
+ ),
+ 'mssql_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_index',
+ 'description' => 'Free a MS-SQL result index',
+ ),
+ 'mssql_get_last_message' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Gets the last message from the MS-SQL server',
+ ),
+ 'mssql_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource mssql_result_index',
+ 'description' => 'Returns the number of rows fetched in from the result id specified',
+ ),
+ 'mssql_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource mssql_result_index',
+ 'description' => 'Returns the number of fields fetched in from the result id specified',
+ ),
+ 'mssql_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result_id',
+ 'description' => 'Returns an array of the current row in the result set specified by result_id',
+ ),
+ 'mssql_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result_id [, int result_type]',
+ 'description' => 'Returns a psuedo-object of the current row in the result set specified by result_id',
+ ),
+ 'mssql_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result_id [, int result_type]',
+ 'description' => 'Returns an associative array of the current row in the result set specified by result_id',
+ ),
+ 'mssql_fetch_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result_id',
+ 'description' => 'Returns an associative array of the current row in the result set specified by result_id',
+ ),
+ 'mssql_data_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id, int offset',
+ 'description' => 'Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number',
+ ),
+ 'mssql_fetch_field' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result_id [, int offset]',
+ 'description' => 'Gets information about certain fields in a query result',
+ ),
+ 'mssql_field_length' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id [, int offset]',
+ 'description' => 'Get the length of a MS-SQL field',
+ ),
+ 'mssql_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result_id [, int offset]',
+ 'description' => 'Returns the name of the field given by offset in the result set given by result_id',
+ ),
+ 'mssql_field_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result_id [, int offset]',
+ 'description' => 'Returns the type of a field',
+ ),
+ 'mssql_field_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result_id, int offset',
+ 'description' => 'Seeks to the specified field offset',
+ ),
+ 'mssql_result' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result_id, int row, mixed field',
+ 'description' => 'Returns the contents of one cell from a MS-SQL result set',
+ ),
+ 'mssql_next_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id',
+ 'description' => 'Move the internal result pointer to the next result',
+ ),
+ 'mssql_min_error_severity' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int severity',
+ 'description' => 'Sets the lower error severity',
+ ),
+ 'mssql_min_message_severity' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int severity',
+ 'description' => 'Sets the lower message severity',
+ ),
+ 'mssql_init' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string sp_name [, resource conn_id]',
+ 'description' => 'Initializes a stored procedure or a remote stored procedure',
+ ),
+ 'mssql_bind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt, string param_name, mixed var, int type [, int is_output [, int is_null [, int maxlen]]]',
+ 'description' => 'Adds a parameter to a stored procedure or a remote stored procedure',
+ ),
+ 'mssql_execute' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource stmt [, bool skip_results = false]',
+ 'description' => 'Executes a stored procedure on a MS-SQL server database',
+ ),
+ 'mssql_free_statement' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_index',
+ 'description' => 'Free a MS-SQL statement index',
+ ),
+ 'mssql_guid_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string binary [,int short_format]',
+ 'description' => 'Converts a 16 byte binary GUID to a string',
+ ),
+ 'oci_define_by_name' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt, string name, mixed &var [, int type]',
+ 'description' => 'Define a PHP variable to an Oracle column by name',
+ ),
+ 'oci_bind_by_name' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt, string name, mixed &var, [, int maxlength [, int type]]',
+ 'description' => 'Bind a PHP variable to an Oracle placeholder by name',
+ ),
+ 'oci_bind_array_by_name' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]]',
+ 'description' => 'Bind a PHP array to an Oracle PL/SQL type by name',
+ ),
+ 'oci_free_descriptor' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Deletes large object description',
+ ),
+ 'oci_lob_save' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' string data [, int offset ]',
+ 'description' => 'Saves a large object',
+ ),
+ 'oci_lob_import' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' string filename ',
+ 'description' => 'Loads file into a LOB',
+ ),
+ 'oci_lob_load' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Loads a large object',
+ ),
+ 'oci_lob_read' =>
+ array (
+ 'return' => 'string',
+ 'params' => ' int length ',
+ 'description' => 'Reads particular part of a large object',
+ ),
+ 'oci_lob_eof' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Checks if EOF is reached',
+ ),
+ 'oci_lob_tell' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Tells LOB pointer position',
+ ),
+ 'oci_lob_rewind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Rewind pointer of a LOB',
+ ),
+ 'oci_lob_seek' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' int offset [, int whence ]',
+ 'description' => 'Moves the pointer of a LOB',
+ ),
+ 'oci_lob_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns size of a large object',
+ ),
+ 'oci_lob_write' =>
+ array (
+ 'return' => 'int',
+ 'params' => ' string string [, int length ]',
+ 'description' => 'Writes data to current position of a LOB',
+ ),
+ 'oci_lob_append' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' object lob ',
+ 'description' => 'Appends data from a LOB to another LOB',
+ ),
+ 'oci_lob_truncate' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' [ int length ]',
+ 'description' => 'Truncates a LOB',
+ ),
+ 'oci_lob_erase' =>
+ array (
+ 'return' => 'int',
+ 'params' => ' [ int offset [, int length ] ] ',
+ 'description' => 'Erases a specified portion of the internal LOB, starting at a specified offset',
+ ),
+ 'oci_lob_flush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' [ int flag ] ',
+ 'description' => 'Flushes the LOB buffer',
+ ),
+ 'ocisetbufferinglob' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' boolean flag ',
+ 'description' => 'Enables/disables buffering for a LOB',
+ ),
+ 'ocigetbufferinglob' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns current state of buffering for a LOB',
+ ),
+ 'oci_lob_copy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' object lob_to, object lob_from [, int length ] ',
+ 'description' => 'Copies data from a LOB to another LOB',
+ ),
+ 'oci_lob_is_equal' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' object lob1, object lob2 ',
+ 'description' => 'Tests to see if two LOB/FILE locators are equal',
+ ),
+ 'oci_lob_export' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string filename [, int start [, int length]]]',
+ 'description' => 'Writes a large object into a file',
+ ),
+ 'oci_lob_write_temporary' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string var [, int lob_type]',
+ 'description' => 'Writes temporary blob',
+ ),
+ 'oci_lob_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Closes lob descriptor',
+ ),
+ 'oci_new_descriptor' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource connection [, int type]',
+ 'description' => 'Initialize a new empty descriptor LOB/FILE (LOB is default)',
+ ),
+ 'oci_rollback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection',
+ 'description' => 'Rollback the current context',
+ ),
+ 'oci_commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection',
+ 'description' => 'Commit the current context',
+ ),
+ 'oci_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell the name of a column',
+ ),
+ 'oci_field_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell the maximum data size of a column',
+ ),
+ 'oci_field_scale' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell the scale of a column',
+ ),
+ 'oci_field_precision' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell the precision of a column',
+ ),
+ 'oci_field_type' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell the data type of a column',
+ ),
+ 'oci_field_type_raw' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell the raw oracle data type of a column',
+ ),
+ 'oci_field_is_null' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt, int col',
+ 'description' => 'Tell whether a column is NULL',
+ ),
+ 'oci_internal_debug' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int onoff',
+ 'description' => 'Toggle internal debugging output for the OCI extension',
+ ),
+ 'oci_execute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt [, int mode]',
+ 'description' => 'Execute a parsed statement',
+ ),
+ 'oci_cancel' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt',
+ 'description' => 'Cancel reading from a cursor',
+ ),
+ 'oci_fetch' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt',
+ 'description' => 'Prepare a new row of data for reading',
+ ),
+ 'ocifetchinto' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt, array &output [, int mode]',
+ 'description' => 'Fetch a row of result data into an array',
+ ),
+ 'oci_fetch_all' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt, array &output[, int skip[, int maxrows[, int flags]]]',
+ 'description' => 'Fetch all rows of result data into an array',
+ ),
+ 'oci_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => ' resource stmt ',
+ 'description' => 'Fetch a result row as an object',
+ ),
+ 'oci_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => ' resource stmt ',
+ 'description' => 'Fetch a result row as an enumerated array',
+ ),
+ 'oci_fetch_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => ' resource stmt ',
+ 'description' => 'Fetch a result row as an associative array',
+ ),
+ 'oci_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => ' resource stmt [, int mode ]',
+ 'description' => 'Fetch a result row as an array',
+ ),
+ 'oci_free_statement' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt',
+ 'description' => 'Free all resources associated with a statement',
+ ),
+ 'oci_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection',
+ 'description' => 'Disconnect from database',
+ ),
+ 'oci_new_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string user, string pass [, string db]',
+ 'description' => 'Connect to an Oracle database and log on. Returns a new session.',
+ ),
+ 'oci_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string user, string pass [, string db [, string charset [, int session_mode ]]',
+ 'description' => 'Connect to an Oracle database and log on. Returns a new session.',
+ ),
+ 'oci_pconnect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string user, string pass [, string db [, string charset ]]',
+ 'description' => 'Connect to an Oracle database using a persistent connection and log on. Returns a new session.',
+ ),
+ 'oci_error' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[resource stmt|connection|global]',
+ 'description' => 'Return the last error of stmt|connection|global. If no error happened returns false.',
+ ),
+ 'oci_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt',
+ 'description' => 'Return the number of result columns in a statement',
+ ),
+ 'oci_parse' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection, string query',
+ 'description' => 'Parse a query and return a statement',
+ ),
+ 'oci_set_prefetch' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stmt, int prefetch_rows',
+ 'description' => 'Sets the number of rows to be prefetched on execute to prefetch_rows for stmt',
+ ),
+ 'oci_password_change' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection, string username, string old_password, string new_password',
+ 'description' => 'Changes the password of an account',
+ ),
+ 'oci_new_cursor' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection',
+ 'description' => 'Return a new cursor (Statement-Handle) - use this to bind ref-cursors!',
+ ),
+ 'oci_result' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stmt, mixed column',
+ 'description' => 'Return a single column of result data',
+ ),
+ 'oci_server_version' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource connection',
+ 'description' => 'Return a string containing server version information',
+ ),
+ 'oci_statement_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stmt',
+ 'description' => 'Return the query type of an OCI statement',
+ ),
+ 'oci_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stmt',
+ 'description' => 'Return the row count of an OCI statement',
+ ),
+ 'oci_free_collection' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Deletes collection object',
+ ),
+ 'oci_collection_append' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string value',
+ 'description' => 'Append an object to the collection',
+ ),
+ 'oci_collection_element_get' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int ndx',
+ 'description' => 'Retrieve the value at collection index ndx',
+ ),
+ 'oci_collection_assign' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object from',
+ 'description' => 'Assign a collection from another existing collection',
+ ),
+ 'oci_collection_element_assign' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index, string val',
+ 'description' => 'Assign element val to collection at index ndx',
+ ),
+ 'oci_collection_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Return the size of a collection',
+ ),
+ 'oci_collection_max' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Return the max value of a collection. For a varray this is the maximum length of the array',
+ ),
+ 'oci_collection_trim' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int num',
+ 'description' => 'Trim num elements from the end of a collection',
+ ),
+ 'oci_new_collection' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource connection, string tdo [, string schema]',
+ 'description' => 'Initialize a new collection',
+ ),
+ 'mb_language' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string language]',
+ 'description' => 'Sets the current language or Returns the current language as a string',
+ ),
+ 'mb_internal_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string encoding]',
+ 'description' => 'Sets the current internal encoding or Returns the current internal encoding as a string',
+ ),
+ 'mb_http_input' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[string type]',
+ 'description' => 'Returns the input encoding',
+ ),
+ 'mb_http_output' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string encoding]',
+ 'description' => 'Sets the current output_encoding or returns the current output_encoding as a string',
+ ),
+ 'mb_detect_order' =>
+ array (
+ 'return' => 'bool|array',
+ 'params' => '[mixed encoding-list]',
+ 'description' => 'Sets the current detect_order or Return the current detect_order as a array',
+ ),
+ 'mb_substitute_character' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[mixed substchar]',
+ 'description' => 'Sets the current substitute_character or returns the current substitute_character',
+ ),
+ 'mb_preferred_mime_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string encoding',
+ 'description' => 'Return the preferred MIME name (charset) as a string',
+ ),
+ 'mb_parse_str' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string encoded_string [, array result]',
+ 'description' => 'Parses GET/POST/COOKIE data and sets global variables',
+ ),
+ 'mb_output_handler' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string contents, int status',
+ 'description' => 'Returns string in output buffer converted to the http_output encoding',
+ ),
+ 'mb_strlen' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str [, string encoding]',
+ 'description' => 'Get character numbers of a string',
+ ),
+ 'mb_strpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, int offset [, string encoding]]',
+ 'description' => 'Find position of first occurrence of a string within another',
+ ),
+ 'mb_strrpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, string encoding]',
+ 'description' => 'Find the last occurrence of a character in a string within another',
+ ),
+ 'mb_substr_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, string encoding]',
+ 'description' => 'Count the number of substring occurrences',
+ ),
+ 'mb_substr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, int start [, int length [, string encoding]]',
+ 'description' => 'Returns part of a string',
+ ),
+ 'mb_strcut' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, int start [, int length [, string encoding]]',
+ 'description' => 'Returns part of a string',
+ ),
+ 'mb_strwidth' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str [, string encoding]',
+ 'description' => 'Gets terminal width of a string',
+ ),
+ 'mb_strimwidth' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, int start, int width [, string trimmarker [, string encoding]]',
+ 'description' => 'Trim the string in terminal width',
+ ),
+ 'mb_convert_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, string to-encoding [, mixed from-encoding]',
+ 'description' => 'Returns converted string in desired encoding',
+ ),
+ 'mb_convert_case' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string sourcestring, int mode [, string encoding]',
+ 'description' => 'Returns a case-folded version of sourcestring',
+ ),
+ 'mb_strtoupper' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string sourcestring [, string encoding]',
+ 'description' => '* Returns a uppercased version of sourcestring',
+ ),
+ 'mb_strtolower' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string sourcestring [, string encoding]',
+ 'description' => '* Returns a lowercased version of sourcestring',
+ ),
+ 'mb_detect_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, mixed encoding_list [, bool strict]]',
+ 'description' => 'Encodings of the given string is returned (as a string)',
+ ),
+ 'mb_list_encodings' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Returns an array of all supported encodings',
+ ),
+ 'mb_encode_mimeheader' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]]',
+ 'description' => 'Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?=',
+ ),
+ 'mb_decode_mimeheader' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string',
+ 'description' => 'Decodes the MIME "encoded-word" in the string',
+ ),
+ 'mb_convert_kana' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string option] [, string encoding]',
+ 'description' => 'Conversion between full-width character and half-width character (Japanese)',
+ ),
+ 'mb_convert_variables' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string to-encoding, mixed from-encoding [, mixed ...]',
+ 'description' => 'Converts the string resource in variables to desired encoding',
+ ),
+ 'mb_encode_numericentity' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string, array convmap [, string encoding]',
+ 'description' => 'Converts specified characters to HTML numeric entities',
+ ),
+ 'mb_decode_numericentity' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string, array convmap [, string encoding]',
+ 'description' => 'Converts HTML numeric entities to character code',
+ ),
+ 'mb_send_mail' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string to, string subject, string message [, string additional_headers [, string additional_parameters]]',
+ 'description' => '* Sends an email message with MIME scheme',
+ ),
+ 'mb_get_info' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[string type]',
+ 'description' => 'Returns the current settings of mbstring',
+ ),
+ 'mb_check_encoding' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string var[, string encoding]]',
+ 'description' => 'Check if the string is valid for the specified encoding',
+ ),
+ 'mb_regex_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string encoding]',
+ 'description' => 'Returns the current encoding for regex as a string.',
+ ),
+ 'mb_ereg' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pattern, string string [, array registers]',
+ 'description' => 'Regular expression match for multibyte string',
+ ),
+ 'mb_eregi' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pattern, string string [, array registers]',
+ 'description' => 'Case-insensitive regular expression match for multibyte string',
+ ),
+ 'mb_ereg_replace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string pattern, string replacement, string string [, string option]',
+ 'description' => 'Replace regular expression for multibyte string',
+ ),
+ 'mb_eregi_replace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string pattern, string replacement, string string',
+ 'description' => 'Case insensitive replace regular expression for multibyte string',
+ ),
+ 'mb_split' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string pattern, string string [, int limit]',
+ 'description' => 'split multibyte string into array by regular expression',
+ ),
+ 'mb_ereg_match' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string pattern, string string [,string option]',
+ 'description' => 'Regular expression match for multibyte string',
+ ),
+ 'mb_ereg_search' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string pattern[, string option]]',
+ 'description' => 'Regular expression search for multibyte string',
+ ),
+ 'mb_ereg_search_pos' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string pattern[, string option]]',
+ 'description' => 'Regular expression search for multibyte string',
+ ),
+ 'mb_ereg_search_regs' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string pattern[, string option]]',
+ 'description' => 'Regular expression search for multibyte string',
+ ),
+ 'mb_ereg_search_init' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string string [, string pattern[, string option]]',
+ 'description' => 'Initialize string and regular expression for search.',
+ ),
+ 'mb_ereg_search_getregs' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get matched substring of the last time',
+ ),
+ 'mb_ereg_search_getpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get search start position',
+ ),
+ 'mb_ereg_search_setpos' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int position',
+ 'description' => 'Set search start position',
+ ),
+ 'mb_regex_set_options' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string options]',
+ 'description' => 'Set or get the default options for mbregex functions',
+ ),
+ 'preg_match' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pattern, string subject [, array subpatterns [, int flags [, int offset]]]',
+ 'description' => 'Perform a Perl-style regular expression match',
+ ),
+ 'preg_match_all' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pattern, string subject, array subpatterns [, int flags [, int offset]]',
+ 'description' => 'Perform a Perl-style global regular expression match',
+ ),
+ 'preg_replace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed regex, mixed replace, mixed subject [, int limit [, count]]',
+ 'description' => 'Perform Perl-style regular expression replacement.',
+ ),
+ 'preg_replace_callback' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed regex, mixed callback, mixed subject [, int limit [, count]]',
+ 'description' => 'Perform Perl-style regular expression replacement using replacement callback.',
+ ),
+ 'preg_split' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string pattern, string subject [, int limit [, int flags]]',
+ 'description' => 'Split string into an array using a perl-style regular expression as a delimiter',
+ ),
+ 'preg_quote' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, string delim_char',
+ 'description' => 'Quote regular expression characters plus an optional character',
+ ),
+ 'preg_grep' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string regex, array input',
+ 'description' => 'Searches array and returns entries which match regex',
+ ),
+ 'pcntl_fork' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Forks the currently running process following the same behavior as the UNIX fork() system call',
+ ),
+ 'pcntl_alarm' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int seconds',
+ 'description' => 'Set an alarm clock for delivery of a signal',
+ ),
+ 'pcntl_waitpid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int pid, int &status, int options',
+ 'description' => 'Waits on or returns the status of a forked child as defined by the waitpid() system call',
+ ),
+ 'pcntl_wait' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int &status',
+ 'description' => 'Waits on or returns the status of a forked child as defined by the waitpid() system call',
+ ),
+ 'pcntl_wifexited' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int status',
+ 'description' => 'Returns true if the child status code represents a successful exit',
+ ),
+ 'pcntl_wifstopped' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int status',
+ 'description' => 'Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)',
+ ),
+ 'pcntl_wifsignaled' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int status',
+ 'description' => 'Returns true if the child status code represents a process that was terminated due to a signal',
+ ),
+ 'pcntl_wexitstatus' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int status',
+ 'description' => 'Returns the status code of a child\'s exit',
+ ),
+ 'pcntl_wtermsig' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int status',
+ 'description' => 'Returns the number of the signal that terminated the process who\'s status code is passed',
+ ),
+ 'pcntl_wstopsig' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int status',
+ 'description' => 'Returns the number of the signal that caused the process to stop who\'s status code is passed',
+ ),
+ 'pcntl_exec' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string path [, array args [, array envs]]',
+ 'description' => 'Executes specified program in current process space as defined by exec(2)',
+ ),
+ 'pcntl_signal' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int signo, callback handle [, bool restart_syscalls]',
+ 'description' => 'Assigns a system signal handler to a PHP function',
+ ),
+ 'pcntl_getpriority' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int pid [, int process_identifier]]',
+ 'description' => 'Get the priority of any process',
+ ),
+ 'pcntl_setpriority' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int priority [, int pid [, int process_identifier]]',
+ 'description' => 'Change the priority of any process',
+ ),
+ 'mcrypt_module_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string cipher, string cipher_directory, string mode, string mode_directory',
+ 'description' => 'Opens the module of the algorithm and the mode to be used',
+ ),
+ 'mcrypt_generic_init' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource td, string key, string iv',
+ 'description' => 'This function initializes all buffers for the specific module',
+ ),
+ 'mcrypt_generic' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource td, string data',
+ 'description' => 'This function encrypts the plaintext',
+ ),
+ 'mdecrypt_generic' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource td, string data',
+ 'description' => 'This function decrypts the plaintext',
+ ),
+ 'mcrypt_enc_get_supported_key_sizes' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource td',
+ 'description' => 'This function decrypts the crypttext',
+ ),
+ 'mcrypt_enc_self_test' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource td',
+ 'description' => 'This function runs the self test on the algorithm specified by the descriptor td',
+ ),
+ 'mcrypt_module_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource td',
+ 'description' => 'Free the descriptor td',
+ ),
+ 'mcrypt_generic_end' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource td',
+ 'description' => 'This function terminates encrypt specified by the descriptor td',
+ ),
+ 'mcrypt_generic_deinit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource td',
+ 'description' => 'This function terminates encrypt specified by the descriptor td',
+ ),
+ 'mcrypt_enc_is_block_algorithm_mode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource td',
+ 'description' => 'Returns TRUE if the mode is for use with block algorithms',
+ ),
+ 'mcrypt_enc_is_block_algorithm' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource td',
+ 'description' => 'Returns TRUE if the alrogithm is a block algorithms',
+ ),
+ 'mcrypt_enc_is_block_mode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource td',
+ 'description' => 'Returns TRUE if the mode outputs blocks',
+ ),
+ 'mcrypt_enc_get_block_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource td',
+ 'description' => 'Returns the block size of the cipher specified by the descriptor td',
+ ),
+ 'mcrypt_enc_get_key_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource td',
+ 'description' => 'Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td',
+ ),
+ 'mcrypt_enc_get_iv_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource td',
+ 'description' => 'Returns the size of the IV in bytes of the algorithm specified by the descriptor td',
+ ),
+ 'mcrypt_enc_get_algorithms_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource td',
+ 'description' => 'Returns the name of the algorithm specified by the descriptor td',
+ ),
+ 'mcrypt_enc_get_modes_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource td',
+ 'description' => 'Returns the name of the mode specified by the descriptor td',
+ ),
+ 'mcrypt_module_self_test' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string algorithm [, string lib_dir]',
+ 'description' => 'Does a self test of the module "module"',
+ ),
+ 'mcrypt_module_is_block_algorithm_mode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string mode [, string lib_dir]',
+ 'description' => 'Returns TRUE if the mode is for use with block algorithms',
+ ),
+ 'mcrypt_module_is_block_algorithm' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string algorithm [, string lib_dir]',
+ 'description' => 'Returns TRUE if the algorithm is a block algorithm',
+ ),
+ 'mcrypt_module_is_block_mode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string mode [, string lib_dir]',
+ 'description' => 'Returns TRUE if the mode outputs blocks of bytes',
+ ),
+ 'mcrypt_module_get_algo_block_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string algorithm [, string lib_dir]',
+ 'description' => 'Returns the block size of the algorithm',
+ ),
+ 'mcrypt_module_get_algo_key_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string algorithm [, string lib_dir]',
+ 'description' => 'Returns the maximum supported key size of the algorithm',
+ ),
+ 'mcrypt_module_get_supported_key_sizes' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string algorithm [, string lib_dir]',
+ 'description' => 'This function decrypts the crypttext',
+ ),
+ 'mcrypt_list_algorithms' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string lib_dir]',
+ 'description' => 'List all algorithms in "module_dir"',
+ ),
+ 'mcrypt_list_modes' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string lib_dir]',
+ 'description' => 'List all modes "module_dir"',
+ ),
+ 'mcrypt_get_key_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string cipher, string module',
+ 'description' => 'Get the key size of cipher',
+ ),
+ 'mcrypt_get_block_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string cipher, string module',
+ 'description' => 'Get the key size of cipher',
+ ),
+ 'mcrypt_get_iv_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string cipher, string module',
+ 'description' => 'Get the IV size of cipher (Usually the same as the blocksize)',
+ ),
+ 'mcrypt_get_cipher_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string cipher',
+ 'description' => 'Get the key size of cipher',
+ ),
+ 'mcrypt_encrypt' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string cipher, string key, string data, string mode, string iv',
+ 'description' => 'OFB crypt/decrypt data using key key with cipher cipher starting with iv',
+ ),
+ 'mcrypt_decrypt' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string cipher, string key, string data, string mode, string iv',
+ 'description' => 'OFB crypt/decrypt data using key key with cipher cipher starting with iv',
+ ),
+ 'mcrypt_ecb' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int cipher, string key, string data, int mode, string iv',
+ 'description' => 'ECB crypt/decrypt data using key key with cipher cipher starting with iv',
+ ),
+ 'mcrypt_cbc' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int cipher, string key, string data, int mode, string iv',
+ 'description' => 'CBC crypt/decrypt data using key key with cipher cipher starting with iv',
+ ),
+ 'mcrypt_cfb' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int cipher, string key, string data, int mode, string iv',
+ 'description' => 'CFB crypt/decrypt data using key key with cipher cipher starting with iv',
+ ),
+ 'mcrypt_ofb' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int cipher, string key, string data, int mode, string iv',
+ 'description' => 'OFB crypt/decrypt data using key key with cipher cipher starting with iv',
+ ),
+ 'mcrypt_create_iv' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int size, int source',
+ 'description' => 'Create an initialization vector (IV)',
+ ),
+ 'readline' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string prompt]',
+ 'description' => 'Reads a line',
+ ),
+ 'readline_info' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[string varname] [, string newvalue]',
+ 'description' => 'Gets/sets various internal readline variables.',
+ ),
+ 'readline_add_history' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string prompt]',
+ 'description' => 'Adds a line to the history',
+ ),
+ 'readline_clear_history' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Clears the history',
+ ),
+ 'readline_list_history' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Lists the history',
+ ),
+ 'readline_read_history' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string filename] [, int from] [,int to]',
+ 'description' => 'Reads the history',
+ ),
+ 'readline_write_history' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string filename]',
+ 'description' => 'Writes the history',
+ ),
+ 'readline_completion_function' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string funcname',
+ 'description' => 'Readline completion function?',
+ ),
+ 'readline_callback_handler_install' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string prompt, mixed callback',
+ 'description' => 'Initializes the readline callback interface and terminal, prints the prompt and returns immediately',
+ ),
+ 'readline_callback_read_char' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Informs the readline callback interface that a character is ready for input',
+ ),
+ 'readline_callback_handler_remove' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Removes a previously installed callback handler and restores terminal settings',
+ ),
+ 'readline_redisplay' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Ask readline to redraw the display',
+ ),
+ 'readline_on_new_line' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Inform readline that the cursor has moved to a new line',
+ ),
+ 'dbase_open' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string name, int mode',
+ 'description' => 'Opens a dBase-format database file',
+ ),
+ 'dbase_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int identifier',
+ 'description' => 'Closes an open dBase-format database file',
+ ),
+ 'dbase_numrecords' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int identifier',
+ 'description' => 'Returns the number of records in the database',
+ ),
+ 'dbase_numfields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int identifier',
+ 'description' => 'Returns the number of fields (columns) in the database',
+ ),
+ 'dbase_pack' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int identifier',
+ 'description' => 'Packs the database (deletes records marked for deletion)',
+ ),
+ 'dbase_add_record' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int identifier, array data',
+ 'description' => 'Adds a record to the database',
+ ),
+ 'dbase_replace_record' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int identifier, array data, int recnum',
+ 'description' => 'Replaces a record to the database',
+ ),
+ 'dbase_delete_record' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int identifier, int record',
+ 'description' => 'Marks a record to be deleted',
+ ),
+ 'dbase_get_record' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int identifier, int record',
+ 'description' => 'Returns an array representing a record from the database',
+ ),
+ 'dbase_get_record_with_names' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int identifier, int record',
+ 'description' => 'Returns an associative array representing a record from the database',
+ ),
+ 'dbase_create' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename, array fields',
+ 'description' => 'Creates a new dBase-format database file',
+ ),
+ 'dbase_get_header_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int database_handle',
+ 'description' => '',
+ ),
+ 'ibase_add_user' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]]',
+ 'description' => 'Add a user to security database',
+ ),
+ 'ibase_modify_user' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]]',
+ 'description' => 'Modify a user in security database',
+ ),
+ 'ibase_delete_user' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]]',
+ 'description' => 'Delete a user from security database',
+ ),
+ 'ibase_service_attach' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string host, string dba_username, string dba_password',
+ 'description' => 'Connect to the service manager',
+ ),
+ 'ibase_service_detach' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource service_handle',
+ 'description' => 'Disconnect from the service manager',
+ ),
+ 'ibase_backup' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource service_handle, string source_db, string dest_file [, int options [, bool verbose]]',
+ 'description' => 'Initiates a backup task in the service manager and returns immediately',
+ ),
+ 'ibase_restore' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource service_handle, string source_file, string dest_db [, int options [, bool verbose]]',
+ 'description' => 'Initiates a restore task in the service manager and returns immediately',
+ ),
+ 'ibase_maintain_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource service_handle, string db, int action [, int argument]',
+ 'description' => 'Execute a maintenance command on the database server',
+ ),
+ 'ibase_db_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource service_handle, string db, int action [, int argument]',
+ 'description' => 'Request statistics about a database',
+ ),
+ 'ibase_server_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource service_handle, int action',
+ 'description' => 'Request information about a database server',
+ ),
+ 'ibase_errmsg' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return error message',
+ ),
+ 'ibase_errcode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Return error code',
+ ),
+ 'ibase_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]',
+ 'description' => 'Open a connection to an InterBase database',
+ ),
+ 'ibase_pconnect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]]',
+ 'description' => 'Open a persistent connection to an InterBase database',
+ ),
+ 'ibase_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Close an InterBase connection',
+ ),
+ 'ibase_drop_db' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Drop an InterBase database',
+ ),
+ 'ibase_trans' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]]',
+ 'description' => 'Start a transaction over one or several databases',
+ ),
+ 'ibase_commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' resource link_identifier ',
+ 'description' => 'Commit transaction',
+ ),
+ 'ibase_rollback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' resource link_identifier ',
+ 'description' => 'Rollback transaction',
+ ),
+ 'ibase_commit_ret' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' resource link_identifier ',
+ 'description' => 'Commit transaction and retain the transaction context',
+ ),
+ 'ibase_rollback_ret' =>
+ array (
+ 'return' => 'bool',
+ 'params' => ' resource link_identifier ',
+ 'description' => 'Rollback transaction and retain the transaction context',
+ ),
+ 'ibase_gen_id' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string generator [, int increment [, resource link_identifier ]]',
+ 'description' => 'Increments the named generator and returns its new value',
+ ),
+ 'ibase_blob_create' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource link_identifier]',
+ 'description' => 'Create blob for adding data',
+ ),
+ 'ibase_blob_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[ resource link_identifier, ] string blob_id',
+ 'description' => 'Open blob for retrieving data parts',
+ ),
+ 'ibase_blob_add' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource blob_handle, string data',
+ 'description' => 'Add data into created blob',
+ ),
+ 'ibase_blob_get' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource blob_handle, int len',
+ 'description' => 'Get len bytes data from open blob',
+ ),
+ 'ibase_blob_close' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource blob_handle',
+ 'description' => 'Close blob',
+ ),
+ 'ibase_blob_cancel' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource blob_handle',
+ 'description' => 'Cancel creating blob',
+ ),
+ 'ibase_blob_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[ resource link_identifier, ] string blob_id',
+ 'description' => 'Return blob length and other useful info',
+ ),
+ 'ibase_blob_echo' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[ resource link_identifier, ] string blob_id',
+ 'description' => 'Output blob contents to browser',
+ ),
+ 'ibase_blob_import' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[ resource link_identifier, ] resource file',
+ 'description' => 'Create blob, copy file in it, and close it',
+ ),
+ 'ibase_query' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]]',
+ 'description' => 'Execute a query',
+ ),
+ 'ibase_affected_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => ' [ resource link_identifier ] ',
+ 'description' => 'Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement',
+ ),
+ 'ibase_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => ' resource result_identifier ',
+ 'description' => 'Return the number of rows that are available in a result',
+ ),
+ 'ibase_fetch_row' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int fetch_flags]',
+ 'description' => 'Fetch a row from the results of a query',
+ ),
+ 'ibase_fetch_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource result [, int fetch_flags]',
+ 'description' => 'Fetch a row from the results of a query',
+ ),
+ 'ibase_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource result [, int fetch_flags]',
+ 'description' => 'Fetch a object from the results of a query',
+ ),
+ 'ibase_name_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result, string name',
+ 'description' => 'Assign a name to a result for use with ... WHERE CURRENT OF <name> statements',
+ ),
+ 'ibase_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result',
+ 'description' => 'Free the memory used by a result',
+ ),
+ 'ibase_prepare' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource link_identifier, ] string query',
+ 'description' => 'Prepare a query for later execution',
+ ),
+ 'ibase_execute' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource query [, mixed bind_arg [, mixed bind_arg [, ...]]]',
+ 'description' => 'Execute a previously prepared query',
+ ),
+ 'ibase_free_query' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource query',
+ 'description' => 'Free memory used by a query',
+ ),
+ 'ibase_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource query_result',
+ 'description' => 'Get the number of fields in result',
+ ),
+ 'ibase_field_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource query_result, int field_number',
+ 'description' => 'Get information about a field',
+ ),
+ 'ibase_num_params' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource query',
+ 'description' => 'Get the number of params in a prepared query',
+ ),
+ 'ibase_param_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource query, int field_number',
+ 'description' => 'Get information about a parameter',
+ ),
+ 'ibase_wait_event' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource link_identifier,] string event [, string event [, ...]]',
+ 'description' => 'Waits for any one of the passed Interbase events to be posted by the database, and returns its name',
+ ),
+ 'ibase_set_event_handler' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[resource link_identifier,] callback handler, string event [, string event [, ...]]',
+ 'description' => 'Register the callback for handling each of the named events',
+ ),
+ 'ibase_free_event_handler' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource event',
+ 'description' => 'Frees the event handler set by ibase_set_event_handler()',
+ ),
+ 'openssl_x509_export_to_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed x509, string outfilename [, bool notext = true]',
+ 'description' => 'Exports a CERT to file or a var',
+ ),
+ 'openssl_x509_export' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed x509, string &out [, bool notext = true]',
+ 'description' => 'Exports a CERT to file or a var',
+ ),
+ 'openssl_x509_check_private_key' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed cert, mixed key',
+ 'description' => 'Checks if a private key corresponds to a CERT',
+ ),
+ 'openssl_x509_parse' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'mixed x509 [, bool shortnames=true]',
+ 'description' => 'Returns an array of the fields/values of the CERT',
+ ),
+ 'openssl_x509_checkpurpose' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'mixed x509cert, int purpose, array cainfo [, string untrustedfile]',
+ 'description' => 'Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs',
+ ),
+ 'openssl_x509_read' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'mixed cert',
+ 'description' => 'Reads X.509 certificates',
+ ),
+ 'openssl_x509_free' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource x509',
+ 'description' => 'Frees X.509 certificates',
+ ),
+ 'openssl_csr_export_to_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource csr, string outfilename [, bool notext=true]',
+ 'description' => 'Exports a CSR to file',
+ ),
+ 'openssl_csr_export' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource csr, string &out [, bool notext=true]',
+ 'description' => 'Exports a CSR to file or a var',
+ ),
+ 'openssl_csr_sign' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]]',
+ 'description' => 'Signs a cert with another CERT',
+ ),
+ 'openssl_csr_new' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array dn, resource &privkey [, array configargs, array extraattribs]',
+ 'description' => 'Generates a privkey and CSR',
+ ),
+ 'openssl_pkey_new' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[array configargs]',
+ 'description' => 'Generates a new private key',
+ ),
+ 'openssl_pkey_export_to_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed key, string outfilename [, string passphrase, array config_args',
+ 'description' => 'Gets an exportable representation of a key into a file',
+ ),
+ 'openssl_pkey_export' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed key, &mixed out [, string passphrase [, array config_args]]',
+ 'description' => 'Gets an exportable representation of a key into a string or file',
+ ),
+ 'openssl_pkey_get_public' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'mixed cert',
+ 'description' => 'Gets public key from X.509 certificate',
+ ),
+ 'openssl_pkey_free' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int key',
+ 'description' => 'Frees a key',
+ ),
+ 'openssl_pkey_get_private' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string key [, string passphrase]',
+ 'description' => 'Gets private keys',
+ ),
+ 'openssl_pkcs7_verify' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]]',
+ 'description' => 'Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers',
+ ),
+ 'openssl_pkcs7_encrypt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]]',
+ 'description' => 'Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile',
+ ),
+ 'openssl_pkcs7_sign' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]]',
+ 'description' => 'Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum',
+ ),
+ 'openssl_pkcs7_decrypt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string infilename, string outfilename, mixed recipcert [, mixed recipkey]',
+ 'description' => 'Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key',
+ ),
+ 'openssl_private_encrypt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data, string crypted, mixed key [, int padding]',
+ 'description' => 'Encrypts data with private key',
+ ),
+ 'openssl_private_decrypt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data, string decrypted, mixed key [, int padding]',
+ 'description' => 'Decrypts data with private key',
+ ),
+ 'openssl_public_encrypt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data, string crypted, mixed key [, int padding]',
+ 'description' => 'Encrypts data with public key',
+ ),
+ 'openssl_public_decrypt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data, string crypted, resource key [, int padding]',
+ 'description' => 'Decrypts data with public key',
+ ),
+ 'openssl_error_string' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'void',
+ 'description' => 'Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages',
+ ),
+ 'openssl_sign' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data, &string signature, mixed key',
+ 'description' => 'Signs data',
+ ),
+ 'openssl_verify' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string data, string signature, mixed key',
+ 'description' => 'Verifys data',
+ ),
+ 'openssl_seal' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string data, &string sealdata, &array ekeys, array pubkeys',
+ 'description' => 'Seals data',
+ ),
+ 'openssl_open' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string data, &string opendata, string ekey, mixed privkey',
+ 'description' => 'Opens data',
+ ),
+ 'date' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format [, long timestamp]',
+ 'description' => 'Format a local date/time',
+ ),
+ 'gmdate' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format [, long timestamp]',
+ 'description' => 'Format a GMT date/time',
+ ),
+ 'idate' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string format [, int timestamp]',
+ 'description' => 'Format a local time/date as integer',
+ ),
+ 'strtotime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string time [, int now ]',
+ 'description' => 'Convert string representation of date and time to a timestamp',
+ ),
+ 'mktime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int hour, int min, int sec, int mon, int day, int year',
+ 'description' => 'Get UNIX timestamp for a date',
+ ),
+ 'gmmktime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int hour, int min, int sec, int mon, int day, int year',
+ 'description' => 'Get UNIX timestamp for a GMT date',
+ ),
+ 'checkdate' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int month, int day, int year',
+ 'description' => 'Returns true(1) if it is a valid date in gregorian calendar',
+ ),
+ 'strftime' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format [, int timestamp]',
+ 'description' => 'Format a local time/date according to locale settings',
+ ),
+ 'gmstrftime' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format [, int timestamp]',
+ 'description' => 'Format a GMT/UCT time/date according to locale settings',
+ ),
+ 'time' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Return current UNIX timestamp',
+ ),
+ 'localtime' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[int timestamp [, bool associative_array]]',
+ 'description' => 'Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array',
+ ),
+ 'getdate' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[int timestamp]',
+ 'description' => 'Get date/time information',
+ ),
+ 'date_default_timezone_set' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string timezone_identifier',
+ 'description' => 'Sets the default timezone used by all date/time functions in a script',
+ ),
+ 'date_default_timezone_get' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Gets the default timezone used by all date/time functions in a script',
+ ),
+ 'date_sunrise' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]]',
+ 'description' => 'Returns time of sunrise for a given day and location',
+ ),
+ 'date_sunset' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]]',
+ 'description' => 'Returns time of sunset for a given day and location',
+ ),
+ 'date_sun_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'long time, float latitude, float longitude',
+ 'description' => 'Returns an array with information about sun set/rise and twilight begin/end',
+ ),
+ 'wddx_serialize_value' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed var [, string comment]',
+ 'description' => 'Creates a new packet and serializes the given value',
+ ),
+ 'wddx_serialize_vars' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed var_name [, mixed ...]',
+ 'description' => 'Creates a new packet and serializes given variables into a struct',
+ ),
+ 'wddx_packet_start' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[string comment]',
+ 'description' => 'Starts a WDDX packet with optional comment and returns the packet id',
+ ),
+ 'wddx_packet_end' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int packet_id',
+ 'description' => 'Ends specified WDDX packet and returns the string containing the packet',
+ ),
+ 'wddx_add_vars' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int packet_id, mixed var_names [, mixed ...]',
+ 'description' => 'Serializes given variables and adds them to packet given by packet_id',
+ ),
+ 'wddx_deserialize' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed packet',
+ 'description' => 'Deserializes given packet and returns a PHP value',
+ ),
+ 'gmp_init' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'mixed number [, int base]',
+ 'description' => 'Initializes GMP number',
+ ),
+ 'gmp_intval' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource gmpnumber',
+ 'description' => 'Gets signed long value of GMP number',
+ ),
+ 'gmp_strval' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource gmpnumber [, int base]',
+ 'description' => 'Gets string representation of GMP number',
+ ),
+ 'gmp_add' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Add a and b',
+ ),
+ 'gmp_sub' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Subtract b from a',
+ ),
+ 'gmp_mul' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Multiply a and b',
+ ),
+ 'gmp_div_qr' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource a, resource b [, int round]',
+ 'description' => 'Divide a by b, returns quotient and reminder',
+ ),
+ 'gmp_div_r' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b [, int round]',
+ 'description' => 'Divide a by b, returns reminder only',
+ ),
+ 'gmp_div_q' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b [, int round]',
+ 'description' => 'Divide a by b, returns quotient only',
+ ),
+ 'gmp_mod' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Computes a modulo b',
+ ),
+ 'gmp_divexact' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Divide a by b using exact division algorithm',
+ ),
+ 'gmp_neg' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a',
+ 'description' => 'Negates a number',
+ ),
+ 'gmp_abs' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a',
+ 'description' => 'Calculates absolute value',
+ ),
+ 'gmp_fact' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int a',
+ 'description' => 'Calculates factorial function',
+ ),
+ 'gmp_pow' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource base, int exp',
+ 'description' => 'Raise base to power exp',
+ ),
+ 'gmp_powm' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource base, resource exp, resource mod',
+ 'description' => 'Raise base to power exp and take result modulo mod',
+ ),
+ 'gmp_sqrt' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a',
+ 'description' => 'Takes integer part of square root of a',
+ ),
+ 'gmp_sqrtrem' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource a',
+ 'description' => 'Square root with remainder',
+ ),
+ 'gmp_perfect_square' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource a',
+ 'description' => 'Checks if a is an exact square',
+ ),
+ 'gmp_prob_prime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a[, int reps]',
+ 'description' => 'Checks if a is "probably prime"',
+ ),
+ 'gmp_gcd' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Computes greatest common denominator (gcd) of a and b',
+ ),
+ 'gmp_gcdext' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Computes G, S, and T, such that AS + BT = G = `gcd\' (A, B)',
+ ),
+ 'gmp_invert' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Computes the inverse of a modulo b',
+ ),
+ 'gmp_jacobi' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Computes Jacobi symbol',
+ ),
+ 'gmp_legendre' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Computes Legendre symbol',
+ ),
+ 'gmp_cmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Compares two numbers',
+ ),
+ 'gmp_sign' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a',
+ 'description' => 'Gets the sign of the number',
+ ),
+ 'gmp_random' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[int limiter]',
+ 'description' => 'Gets random number',
+ ),
+ 'gmp_and' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Calculates logical AND of a and b',
+ ),
+ 'gmp_or' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Calculates logical OR of a and b',
+ ),
+ 'gmp_com' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a',
+ 'description' => 'Calculates one\'s complement of a',
+ ),
+ 'gmp_xor' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Calculates logical exclusive OR of a and b',
+ ),
+ 'gmp_setbit' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource &a, int index[, bool set_clear]',
+ 'description' => 'Sets or clear bit in a',
+ ),
+ 'gmp_clrbit' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource &a, int index',
+ 'description' => 'Clears bit in a',
+ ),
+ 'gmp_popcount' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a',
+ 'description' => 'Calculates the population count of a',
+ ),
+ 'gmp_hamdist' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a, resource b',
+ 'description' => 'Calculates hamming distance between a and b',
+ ),
+ 'gmp_scan0' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a, int start',
+ 'description' => 'Finds first zero bit',
+ ),
+ 'gmp_scan1' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource a, int start',
+ 'description' => 'Finds first non-zero bit',
+ ),
+ 'gd_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'imageloadfont' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Load a new font',
+ ),
+ 'imagesetstyle' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, array styles',
+ 'description' => 'Set the line drawing styles for use with imageline and IMG_COLOR_STYLED.',
+ ),
+ 'imagecreatetruecolor' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int x_size, int y_size',
+ 'description' => 'Create a new true color image',
+ ),
+ 'imageistruecolor' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im',
+ 'description' => 'return true if the image uses truecolor',
+ ),
+ 'imagetruecolortopalette' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource im, bool ditherFlag, int colorsWanted',
+ 'description' => 'Convert a true colour image to a palette based image with a number of colours, optionally using dithering.',
+ ),
+ 'imagecolormatch' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im1, resource im2',
+ 'description' => 'Makes the colors of the palette version of an image more closely match the true color version',
+ ),
+ 'imagesetthickness' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int thickness',
+ 'description' => 'Set line thickness for drawing lines, ellipses, rectangles, polygons etc.',
+ ),
+ 'imagefilledellipse' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int cx, int cy, int w, int h, int color',
+ 'description' => 'Draw an ellipse',
+ ),
+ 'imagefilledarc' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int cx, int cy, int w, int h, int s, int e, int col, int style',
+ 'description' => 'Draw a filled partial ellipse',
+ ),
+ 'imagealphablending' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, bool on',
+ 'description' => 'Turn alpha blending mode on or off for the given image',
+ ),
+ 'imagesavealpha' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, bool on',
+ 'description' => 'Include alpha channel to a saved image',
+ ),
+ 'imagelayereffect' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int effect',
+ 'description' => 'Set the alpha blending flag to use the bundled libgd layering effects',
+ ),
+ 'imagecolorallocatealpha' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue, int alpha',
+ 'description' => 'Allocate a color with an alpha level. Works for true color and palette based images',
+ ),
+ 'imagecolorresolvealpha' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue, int alpha',
+ 'description' => 'Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images',
+ ),
+ 'imagecolorclosestalpha' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue, int alpha',
+ 'description' => 'Find the closest matching colour with alpha transparency',
+ ),
+ 'imagecolorexactalpha' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue, int alpha',
+ 'description' => 'Find exact match for colour with transparency',
+ ),
+ 'imagecopyresampled' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h',
+ 'description' => 'Copy and resize part of an image using resampling to help ensure clarity',
+ ),
+ 'imagerotate' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource src_im, float angle, int bgdcolor',
+ 'description' => 'Rotate an image using a custom angle',
+ ),
+ 'imagesettile' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource image, resource tile',
+ 'description' => 'Set the tile image to $tile when filling $image with the "IMG_COLOR_TILED" color',
+ ),
+ 'imagesetbrush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource image, resource brush',
+ 'description' => 'Set the brush image to $brush when filling $image with the "IMG_COLOR_BRUSHED" color',
+ ),
+ 'imagecreate' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int x_size, int y_size',
+ 'description' => 'Create a new image',
+ ),
+ 'imagetypes' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM',
+ ),
+ 'imagecreatefromstring' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string image',
+ 'description' => 'Create a new image from the image stream in the string',
+ ),
+ 'imagecreatefromgif' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from GIF file or URL',
+ ),
+ 'imagecreatefromjpeg' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from JPEG file or URL',
+ ),
+ 'imagecreatefrompng' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from PNG file or URL',
+ ),
+ 'imagecreatefromxbm' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from XBM file or URL',
+ ),
+ 'imagecreatefromxpm' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from XPM file or URL',
+ ),
+ 'imagecreatefromwbmp' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from WBMP file or URL',
+ ),
+ 'imagecreatefromgd' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from GD file or URL',
+ ),
+ 'imagecreatefromgd2' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename',
+ 'description' => 'Create a new image from GD2 file or URL',
+ ),
+ 'imagecreatefromgd2part' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename, int srcX, int srcY, int width, int height',
+ 'description' => 'Create a new image from a given part of GD2 file or URL',
+ ),
+ 'imagexbm' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int im, string filename [, int foreground]',
+ 'description' => 'Output XBM image to browser or file',
+ ),
+ 'imagegif' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename]',
+ 'description' => 'Output GIF image to browser or file',
+ ),
+ 'imagepng' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename]',
+ 'description' => 'Output PNG image to browser or file',
+ ),
+ 'imagejpeg' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename [, int quality]]',
+ 'description' => 'Output JPEG image to browser or file',
+ ),
+ 'imagewbmp' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename, [, int foreground]]',
+ 'description' => 'Output WBMP image to browser or file',
+ ),
+ 'imagegd' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename]',
+ 'description' => 'Output GD image to browser or file',
+ ),
+ 'imagegd2' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename, [, int chunk_size, [, int type]]]',
+ 'description' => 'Output GD2 image to browser or file',
+ ),
+ 'imagedestroy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im',
+ 'description' => 'Destroy an image',
+ ),
+ 'imagecolorallocate' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue',
+ 'description' => 'Allocate a color for an image',
+ ),
+ 'imagepalettecopy' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource dst, resource src',
+ 'description' => 'Copy the palette from the src image onto the dst image',
+ ),
+ 'imagecolorat' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int x, int y',
+ 'description' => 'Get the index of the color of a pixel',
+ ),
+ 'imagecolorclosest' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue',
+ 'description' => 'Get the index of the closest color to the specified color',
+ ),
+ 'imagecolorclosesthwb' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue',
+ 'description' => 'Get the index of the color which has the hue, white and blackness nearest to the given color',
+ ),
+ 'imagecolordeallocate' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int index',
+ 'description' => 'De-allocate a color for an image',
+ ),
+ 'imagecolorresolve' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue',
+ 'description' => 'Get the index of the specified color or its closest possible alternative',
+ ),
+ 'imagecolorexact' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im, int red, int green, int blue',
+ 'description' => 'Get the index of the specified color',
+ ),
+ 'imagecolorset' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource im, int col, int red, int green, int blue',
+ 'description' => 'Set the color for the specified palette index',
+ ),
+ 'imagecolorsforindex' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource im, int col',
+ 'description' => 'Get the colors for an index',
+ ),
+ 'imagegammacorrect' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, float inputgamma, float outputgamma',
+ 'description' => 'Apply a gamma correction to a GD image',
+ ),
+ 'imagesetpixel' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x, int y, int col',
+ 'description' => 'Set a single pixel',
+ ),
+ 'imageline' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x1, int y1, int x2, int y2, int col',
+ 'description' => 'Draw a line',
+ ),
+ 'imagedashedline' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x1, int y1, int x2, int y2, int col',
+ 'description' => 'Draw a dashed line',
+ ),
+ 'imagerectangle' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x1, int y1, int x2, int y2, int col',
+ 'description' => 'Draw a rectangle',
+ ),
+ 'imagefilledrectangle' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x1, int y1, int x2, int y2, int col',
+ 'description' => 'Draw a filled rectangle',
+ ),
+ 'imagearc' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int cx, int cy, int w, int h, int s, int e, int col',
+ 'description' => 'Draw a partial ellipse',
+ ),
+ 'imageellipse' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int cx, int cy, int w, int h, int color',
+ 'description' => 'Draw an ellipse',
+ ),
+ 'imagefilltoborder' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x, int y, int border, int col',
+ 'description' => 'Flood fill to specific color',
+ ),
+ 'imagefill' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int x, int y, int col',
+ 'description' => 'Flood fill',
+ ),
+ 'imagecolorstotal' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im',
+ 'description' => 'Find out the number of colors in an image\'s palette',
+ ),
+ 'imagecolortransparent' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im [, int col]',
+ 'description' => 'Define a color as transparent',
+ ),
+ 'imageinterlace' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im [, int interlace]',
+ 'description' => 'Enable or disable interlace',
+ ),
+ 'imagepolygon' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, array point, int num_points, int col',
+ 'description' => 'Draw a polygon',
+ ),
+ 'imagefilledpolygon' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, array point, int num_points, int col',
+ 'description' => 'Draw a filled polygon',
+ ),
+ 'imagefontwidth' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int font',
+ 'description' => 'Get font width',
+ ),
+ 'imagefontheight' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int font',
+ 'description' => 'Get font height',
+ ),
+ 'imagechar' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int font, int x, int y, string c, int col',
+ 'description' => 'Draw a character',
+ ),
+ 'imagecharup' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int font, int x, int y, string c, int col',
+ 'description' => 'Draw a character rotated 90 degrees counter-clockwise',
+ ),
+ 'imagestring' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int font, int x, int y, string str, int col',
+ 'description' => 'Draw a string horizontally',
+ ),
+ 'imagestringup' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, int font, int x, int y, string str, int col',
+ 'description' => 'Draw a string vertically - rotated 90 degrees counter-clockwise',
+ ),
+ 'imagecopy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h',
+ 'description' => 'Copy part of an image',
+ ),
+ 'imagecopymerge' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct',
+ 'description' => 'Merge one part of an image with another',
+ ),
+ 'imagecopymergegray' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct',
+ 'description' => 'Merge one part of an image with another',
+ ),
+ 'imagecopyresized' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h',
+ 'description' => 'Copy and resize part of an image',
+ ),
+ 'imagesx' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im',
+ 'description' => 'Get image width',
+ ),
+ 'imagesy' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource im',
+ 'description' => 'Get image height',
+ ),
+ 'imageftbbox' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'float size, float angle, string font_file, string text [, array extrainfo]',
+ 'description' => 'Give the bounding box of a text using fonts via freetype2',
+ ),
+ 'imagefttext' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo]',
+ 'description' => 'Write text to the image using fonts via freetype2',
+ ),
+ 'imagettfbbox' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'float size, float angle, string font_file, string text',
+ 'description' => 'Give the bounding box of a text using TrueType fonts',
+ ),
+ 'imagettftext' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource im, float size, float angle, int x, int y, int col, string font_file, string text',
+ 'description' => 'Write text to the image using a TrueType font',
+ ),
+ 'imagepsloadfont' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string pathname',
+ 'description' => 'Load a new font from specified file',
+ ),
+ 'imagepscopyfont' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int font_index',
+ 'description' => 'Make a copy of a font for purposes like extending or reenconding',
+ ),
+ 'imagepsfreefont' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource font_index',
+ 'description' => 'Free memory used by a font',
+ ),
+ 'imagepsencodefont' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource font_index, string filename',
+ 'description' => 'To change a fonts character encoding vector',
+ ),
+ 'imagepsextendfont' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource font_index, float extend',
+ 'description' => 'Extend or or condense (if extend < 1) a font',
+ ),
+ 'imagepsslantfont' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource font_index, float slant',
+ 'description' => 'Slant a font',
+ ),
+ 'imagepstext' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource image, string text, resource font, int size, int xcoord, int ycoord [, int space, int tightness, float angle, int antialias]',
+ 'description' => 'Rasterize a string over an image',
+ ),
+ 'imagepsbbox' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string text, resource font, int size [, int space, int tightness, int angle]',
+ 'description' => 'Return the bounding box needed by a string if rasterized',
+ ),
+ 'image2wbmp' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im [, string filename [, int threshold]]',
+ 'description' => 'Output WBMP image to browser or file',
+ ),
+ 'imagefilter' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource src_im, int filtertype, [args] ',
+ 'description' => 'Applies Filter an image using a custom angle',
+ ),
+ 'imageconvolution' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource src_im, array matrix3x3, double div, double offset',
+ 'description' => 'Apply a 3x3 convolution matrix, using coefficient div and offset',
+ ),
+ 'imageantialias' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource im, bool on',
+ 'description' => 'Should antialiased functions used or not',
+ ),
+ 'recode_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string request, string str',
+ 'description' => 'Recode string str according to request string',
+ ),
+ 'recode_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string request, resource input, resource output',
+ 'description' => 'Recode file input into file output according to request',
+ ),
+ 'posix_kill' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pid, int sig',
+ 'description' => 'Send a signal to a process (POSIX.1, 3.3.2)',
+ ),
+ 'posix_getpid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current process id (POSIX.1, 4.1.1)',
+ ),
+ 'posix_getppid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the parent process id (POSIX.1, 4.1.1)',
+ ),
+ 'posix_getuid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current user id (POSIX.1, 4.2.1)',
+ ),
+ 'posix_getgid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current group id (POSIX.1, 4.2.1)',
+ ),
+ 'posix_geteuid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current effective user id (POSIX.1, 4.2.1)',
+ ),
+ 'posix_getegid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current effective group id (POSIX.1, 4.2.1)',
+ ),
+ 'posix_setuid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'long uid',
+ 'description' => 'Set user id (POSIX.1, 4.2.2)',
+ ),
+ 'posix_setgid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int uid',
+ 'description' => 'Set group id (POSIX.1, 4.2.2)',
+ ),
+ 'posix_seteuid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'long uid',
+ 'description' => 'Set effective user id',
+ ),
+ 'posix_setegid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'long uid',
+ 'description' => 'Set effective group id',
+ ),
+ 'posix_getgroups' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get supplementary group id\'s (POSIX.1, 4.2.3)',
+ ),
+ 'posix_getlogin' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Get user name (POSIX.1, 4.2.4)',
+ ),
+ 'posix_getpgrp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get current process group id (POSIX.1, 4.3.1)',
+ ),
+ 'posix_setsid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Create session and set process group id (POSIX.1, 4.3.2)',
+ ),
+ 'posix_setpgid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pid, int pgid',
+ 'description' => 'Set process group id for job control (POSIX.1, 4.3.3)',
+ ),
+ 'posix_getpgid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)',
+ ),
+ 'posix_getsid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)',
+ ),
+ 'posix_uname' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get system name (POSIX.1, 4.4.1)',
+ ),
+ 'posix_times' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get process times (POSIX.1, 4.5.2)',
+ ),
+ 'posix_ctermid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Generate terminal path name (POSIX.1, 4.7.1)',
+ ),
+ 'posix_ttyname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int fd',
+ 'description' => 'Determine terminal device name (POSIX.1, 4.7.2)',
+ ),
+ 'posix_isatty' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int fd',
+ 'description' => 'Determine if filedesc is a tty (POSIX.1, 4.7.1)',
+ ),
+ 'posix_getcwd' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Get working directory pathname (POSIX.1, 5.2.2)',
+ ),
+ 'posix_mkfifo' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string pathname, int mode',
+ 'description' => 'Make a FIFO special file (POSIX.1, 5.4.2)',
+ ),
+ 'posix_mknod' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string pathname, int mode [, int major [, int minor]]',
+ 'description' => 'Make a special or ordinary file (POSIX.1)',
+ ),
+ 'posix_access' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string file [, int mode]',
+ 'description' => 'Determine accessibility of a file (POSIX.1 5.6.3)',
+ ),
+ 'posix_getgrnam' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string groupname',
+ 'description' => 'Group database access (POSIX.1, 9.2.1)',
+ ),
+ 'posix_getgrgid' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'long gid',
+ 'description' => 'Group database access (POSIX.1, 9.2.1)',
+ ),
+ 'posix_getpwnam' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string groupname',
+ 'description' => 'User database access (POSIX.1, 9.2.2)',
+ ),
+ 'posix_getpwuid' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'long uid',
+ 'description' => 'User database access (POSIX.1, 9.2.2)',
+ ),
+ 'posix_getrlimit' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)',
+ ),
+ 'posix_get_last_error' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Retrieve the error number set by the last posix function which failed.',
+ ),
+ 'posix_strerror' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int errno',
+ 'description' => 'Retrieve the system error message associated with the given errno.',
+ ),
+ 'curl_multi_init' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'void',
+ 'description' => 'Returns a new cURL multi handle',
+ ),
+ 'curl_multi_add_handle' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource multi, resource ch',
+ 'description' => 'Add a normal cURL handle to a cURL multi handle',
+ ),
+ 'curl_multi_remove_handle' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource mh, resource ch',
+ 'description' => 'Remove a multi handle from a set of cURL handles',
+ ),
+ 'curl_multi_select' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource mh[, double timeout]',
+ 'description' => 'Get all the sockets associated with the cURL extension, which can then be "selected"',
+ ),
+ 'curl_multi_exec' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource mh, int &still_running',
+ 'description' => 'Run the sub-connections of the current cURL handle',
+ ),
+ 'curl_multi_getcontent' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource ch',
+ 'description' => 'Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set',
+ ),
+ 'curl_multi_info_read' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource mh',
+ 'description' => 'Get information about the current transfers',
+ ),
+ 'curl_multi_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource mh',
+ 'description' => 'Close a set of cURL handles',
+ ),
+ 'curl_version' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[int version]',
+ 'description' => 'Return cURL version information.',
+ ),
+ 'curl_init' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[string url]',
+ 'description' => 'Initialize a CURL session',
+ ),
+ 'curl_copy_handle' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource ch',
+ 'description' => 'Copy a cURL handle along with all of it\'s preferences',
+ ),
+ 'curl_setopt' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource ch, int option, mixed value',
+ 'description' => 'Set an option for a CURL transfer',
+ ),
+ 'curl_setopt_array' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource ch, array options',
+ 'description' => 'Set an array of option for a CURL transfer',
+ ),
+ 'curl_exec' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource ch',
+ 'description' => 'Perform a CURL session',
+ ),
+ 'curl_getinfo' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource ch, int opt',
+ 'description' => 'Get information regarding a specific transfer',
+ ),
+ 'curl_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource ch',
+ 'description' => 'Return a string contain the last error for the current session',
+ ),
+ 'curl_errno' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource ch',
+ 'description' => 'Return an integer containing the last error number',
+ ),
+ 'curl_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource ch',
+ 'description' => 'Close a CURL session',
+ ),
+ 'ncurses_addch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int ch',
+ 'description' => 'Adds character at current position and advance cursor',
+ ),
+ 'ncurses_waddch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int ch',
+ 'description' => 'Adds character at current position in a window and advance cursor',
+ ),
+ 'ncurses_color_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int pair',
+ 'description' => 'Sets fore- and background color',
+ ),
+ 'ncurses_delwin' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource window',
+ 'description' => 'Deletes a ncurses window',
+ ),
+ 'ncurses_end' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Stops using ncurses, clean up the screen',
+ ),
+ 'ncurses_getch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Reads a character from keyboard',
+ ),
+ 'ncurses_has_colors' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Checks if terminal has colors',
+ ),
+ 'ncurses_init' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Initializes ncurses',
+ ),
+ 'ncurses_init_pair' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int pair, int fg, int bg',
+ 'description' => 'Allocates a color pair',
+ ),
+ 'ncurses_move' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x',
+ 'description' => 'Moves output position',
+ ),
+ 'ncurses_newpad' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'int rows, int cols',
+ 'description' => 'Creates a new pad (window)',
+ ),
+ 'ncurses_prefresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol',
+ 'description' => 'Copys a region from a pad into the virtual screen',
+ ),
+ 'ncurses_pnoutrefresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol',
+ 'description' => 'Copys a region from a pad into the virtual screen',
+ ),
+ 'ncurses_newwin' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int rows, int cols, int y, int x',
+ 'description' => 'Creates a new window',
+ ),
+ 'ncurses_refresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int ch',
+ 'description' => 'Refresh screen',
+ ),
+ 'ncurses_start_color' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Starts using colors',
+ ),
+ 'ncurses_standout' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Starts using \'standout\' attribute',
+ ),
+ 'ncurses_standend' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Stops using \'standout\' attribute',
+ ),
+ 'ncurses_baudrate' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns baudrate of terminal',
+ ),
+ 'ncurses_beep' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Let the terminal beep',
+ ),
+ 'ncurses_can_change_color' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Checks if we can change terminals colors',
+ ),
+ 'ncurses_cbreak' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Switches of input buffering',
+ ),
+ 'ncurses_clear' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Clears screen',
+ ),
+ 'ncurses_clrtobot' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Clears screen from current position to bottom',
+ ),
+ 'ncurses_clrtoeol' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Clears screen from current position to end of line',
+ ),
+ 'ncurses_reset_prog_mode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Resets the prog mode saved by def_prog_mode',
+ ),
+ 'ncurses_reset_shell_mode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Resets the shell mode saved by def_shell_mode',
+ ),
+ 'ncurses_def_prog_mode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Saves terminals (program) mode',
+ ),
+ 'ncurses_def_shell_mode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Saves terminal (shell) mode',
+ ),
+ 'ncurses_delch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Deletes character at current position, move rest of line left',
+ ),
+ 'ncurses_deleteln' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Deletes line at current position, move rest of screen up',
+ ),
+ 'ncurses_doupdate' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Writes all prepared refreshes to terminal',
+ ),
+ 'ncurses_echo' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Activates keyboard input echo',
+ ),
+ 'ncurses_erase' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Erases terminal screen',
+ ),
+ 'ncurses_erasechar' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns current erase character',
+ ),
+ 'ncurses_flash' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Flashes terminal screen (visual bell)',
+ ),
+ 'ncurses_flushinp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Flushes keyboard input buffer',
+ ),
+ 'ncurses_has_ic' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Checks for insert- and delete-capabilities',
+ ),
+ 'ncurses_has_il' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Checks for line insert- and delete-capabilities',
+ ),
+ 'ncurses_inch' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Gets character and attribute at current position',
+ ),
+ 'ncurses_insertln' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Inserts a line, move rest of screen down',
+ ),
+ 'ncurses_isendwin' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Ncurses is in endwin mode, normal screen output may be performed',
+ ),
+ 'ncurses_killchar' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns current line kill character',
+ ),
+ 'ncurses_nl' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Translates newline and carriage return / line feed',
+ ),
+ 'ncurses_nocbreak' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Switches terminal to cooked mode',
+ ),
+ 'ncurses_noecho' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Switches off keyboard input echo',
+ ),
+ 'ncurses_nonl' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Do not ranslate newline and carriage return / line feed',
+ ),
+ 'ncurses_noraw' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Switches terminal out of raw mode',
+ ),
+ 'ncurses_raw' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Switches terminal into raw mode',
+ ),
+ 'ncurses_meta' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, bool 8bit',
+ 'description' => 'Enables/Disable 8-bit meta key information',
+ ),
+ 'ncurses_werase' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'Erase window contents',
+ ),
+ 'ncurses_resetty' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Restores saved terminal state',
+ ),
+ 'ncurses_savetty' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Saves terminal state',
+ ),
+ 'ncurses_termattrs' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns a logical OR of all attribute flags supported by terminal',
+ ),
+ 'ncurses_use_default_colors' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Assigns terminal default colors to color id -1',
+ ),
+ 'ncurses_slk_attr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns current soft label keys attribute',
+ ),
+ 'ncurses_slk_clear' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Clears soft label keys from screen',
+ ),
+ 'ncurses_slk_noutrefresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Copies soft label keys to virtual screen',
+ ),
+ 'ncurses_slk_refresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Copies soft label keys to screen',
+ ),
+ 'ncurses_slk_restore' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Restores soft label keys',
+ ),
+ 'ncurses_slk_touch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Forces output when ncurses_slk_noutrefresh is performed',
+ ),
+ 'ncurses_slk_set' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int labelnr, string label, int format',
+ 'description' => 'Sets function key labels',
+ ),
+ 'ncurses_attroff' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int attributes',
+ 'description' => 'Turns off the given attributes',
+ ),
+ 'ncurses_attron' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int attributes',
+ 'description' => 'Turns on the given attributes',
+ ),
+ 'ncurses_attrset' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int attributes',
+ 'description' => 'Sets given attributes',
+ ),
+ 'ncurses_bkgd' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int attrchar',
+ 'description' => 'Sets background property for terminal screen',
+ ),
+ 'ncurses_curs_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int visibility',
+ 'description' => 'Sets cursor state',
+ ),
+ 'ncurses_delay_output' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int milliseconds',
+ 'description' => 'Delays output on terminal using padding characters',
+ ),
+ 'ncurses_echochar' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int character',
+ 'description' => 'Single character output including refresh',
+ ),
+ 'ncurses_halfdelay' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int tenth',
+ 'description' => 'Puts terminal into halfdelay mode',
+ ),
+ 'ncurses_has_key' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int keycode',
+ 'description' => 'Checks for presence of a function key on terminal keyboard',
+ ),
+ 'ncurses_insch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int character',
+ 'description' => 'Inserts character moving rest of line including character at current position',
+ ),
+ 'ncurses_insdelln' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int count',
+ 'description' => 'Inserts lines before current line scrolling down (negative numbers delete and scroll up)',
+ ),
+ 'ncurses_mouseinterval' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int milliseconds',
+ 'description' => 'Sets timeout for mouse button clicks',
+ ),
+ 'ncurses_napms' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int milliseconds',
+ 'description' => 'Sleep',
+ ),
+ 'ncurses_scrl' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int count',
+ 'description' => 'Scrolls window content up or down without changing current position',
+ ),
+ 'ncurses_slk_attroff' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int intarg',
+ 'description' => '???',
+ ),
+ 'ncurses_slk_attron' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int intarg',
+ 'description' => '???',
+ ),
+ 'ncurses_slk_attrset' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int intarg',
+ 'description' => '???',
+ ),
+ 'ncurses_slk_color' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int intarg',
+ 'description' => 'Sets color for soft label keys',
+ ),
+ 'ncurses_slk_init' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int intarg',
+ 'description' => 'Inits soft label keys',
+ ),
+ 'ncurses_typeahead' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int fd',
+ 'description' => 'Specifys different filedescriptor for typeahead checking',
+ ),
+ 'ncurses_ungetch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int keycode',
+ 'description' => 'Puts a character back into the input stream',
+ ),
+ 'ncurses_vidattr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int intarg',
+ 'description' => '???',
+ ),
+ 'ncurses_use_extended_names' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'bool flag',
+ 'description' => 'Controls use of extended names in terminfo descriptions',
+ ),
+ 'ncurses_bkgdset' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int attrchar',
+ 'description' => 'Controls screen background',
+ ),
+ 'ncurses_filter' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => '',
+ ),
+ 'ncurses_noqiflush' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Do not flush on signal characters',
+ ),
+ 'ncurses_qiflush' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Flushes on signal characters',
+ ),
+ 'ncurses_timeout' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int millisec',
+ 'description' => 'Sets timeout for special key sequences',
+ ),
+ 'ncurses_use_env' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int flag',
+ 'description' => 'Controls use of environment information about terminal size',
+ ),
+ 'ncurses_addstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string text',
+ 'description' => 'Outputs text at current position',
+ ),
+ 'ncurses_putp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string text',
+ 'description' => '???',
+ ),
+ 'ncurses_scr_dump' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Dumps screen content to file',
+ ),
+ 'ncurses_scr_init' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Initializes screen from file dump',
+ ),
+ 'ncurses_scr_restore' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Restores screen from file dump',
+ ),
+ 'ncurses_scr_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Inherits screen from file dump',
+ ),
+ 'ncurses_mvaddch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, int c',
+ 'description' => 'Moves current position and add character',
+ ),
+ 'ncurses_mvaddchnstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, string s, int n',
+ 'description' => 'Moves position and add attrributed string with specified length',
+ ),
+ 'ncurses_addchnstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string s, int n',
+ 'description' => 'Adds attributed string with specified length at current position',
+ ),
+ 'ncurses_mvaddchstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, string s',
+ 'description' => 'Moves position and add attributed string',
+ ),
+ 'ncurses_addchstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string s',
+ 'description' => 'Adds attributed string at current position',
+ ),
+ 'ncurses_mvaddnstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, string s, int n',
+ 'description' => 'Moves position and add string with specified length',
+ ),
+ 'ncurses_addnstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string s, int n',
+ 'description' => 'Adds string with specified length at current position',
+ ),
+ 'ncurses_mvaddstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, string s',
+ 'description' => 'Moves position and add string',
+ ),
+ 'ncurses_mvdelch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x',
+ 'description' => 'Moves position and delete character, shift rest of line left',
+ ),
+ 'ncurses_mvgetch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x',
+ 'description' => 'Moves position and get character at new position',
+ ),
+ 'ncurses_mvinch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x',
+ 'description' => 'Moves position and get attributed character at new position',
+ ),
+ 'ncurses_insstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string text',
+ 'description' => 'Inserts string at current position, moving rest of line right',
+ ),
+ 'ncurses_instr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string &buffer',
+ 'description' => 'Reads string from terminal screen',
+ ),
+ 'ncurses_mvhline' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, int attrchar, int n',
+ 'description' => 'Sets new position and draw a horizontal line using an attributed character and max. n characters long',
+ ),
+ 'ncurses_mvvline' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int y, int x, int attrchar, int n',
+ 'description' => 'Sets new position and draw a vertical line using an attributed character and max. n characters long',
+ ),
+ 'ncurses_mvcur' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int old_y,int old_x, int new_y, int new_x',
+ 'description' => 'Moves cursor immediately',
+ ),
+ 'ncurses_init_color' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int color, int r, int g, int b',
+ 'description' => 'Sets new RGB value for color',
+ ),
+ 'ncurses_color_content' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int color, int &r, int &g, int &b',
+ 'description' => 'Gets the RGB value for color',
+ ),
+ 'ncurses_pair_content' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int pair, int &f, int &b',
+ 'description' => 'Gets the RGB value for color',
+ ),
+ 'ncurses_border' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner',
+ 'description' => 'Draws a border around the screen using attributed characters',
+ ),
+ 'ncurses_wborder' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner',
+ 'description' => 'Draws a border around the window using attributed characters',
+ ),
+ 'ncurses_assume_default_colors' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int fg, int bg',
+ 'description' => 'Defines default colors for color 0',
+ ),
+ 'ncurses_define_key' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string definition, int keycode',
+ 'description' => 'Defines a keycode',
+ ),
+ 'ncurses_hline' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int charattr, int n',
+ 'description' => 'Draws a horizontal line at current position using an attributed character and max. n characters long',
+ ),
+ 'ncurses_vline' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int charattr, int n',
+ 'description' => 'Draws a vertical line at current position using an attributed character and max. n characters long',
+ ),
+ 'ncurses_whline' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int charattr, int n',
+ 'description' => 'Draws a horizontal line in a window at current position using an attributed character and max. n characters long',
+ ),
+ 'ncurses_wvline' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int charattr, int n',
+ 'description' => 'Draws a vertical line in a window at current position using an attributed character and max. n characters long',
+ ),
+ 'ncurses_keyok' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int keycode, int enable',
+ 'description' => 'Enables or disable a keycode',
+ ),
+ 'ncurses_mvwaddstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int y, int x, string text',
+ 'description' => 'Adds string at new position in window',
+ ),
+ 'ncurses_wrefresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'Refreshes window on terminal screen',
+ ),
+ 'ncurses_termname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns terminal name',
+ ),
+ 'ncurses_longname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Returns terminal description',
+ ),
+ 'ncurses_mousemask' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int newmask, int &oldmask',
+ 'description' => 'Returns and sets mouse options',
+ ),
+ 'ncurses_getmouse' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array &mevent',
+ 'description' => 'Reads mouse event from queue. The content of mevent is cleared before new data is added.',
+ ),
+ 'ncurses_ungetmouse' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'array mevent',
+ 'description' => 'Pushes mouse event to queue',
+ ),
+ 'ncurses_mouse_trafo' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int &y, int &x, bool toscreen',
+ 'description' => 'Transforms coordinates',
+ ),
+ 'ncurses_wmouse_trafo' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource window, int &y, int &x, bool toscreen',
+ 'description' => 'Transforms window/stdscr coordinates',
+ ),
+ 'ncurses_getyx' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource window, int &y, int &x',
+ 'description' => 'Returns the current cursor position for a window',
+ ),
+ 'ncurses_getmaxyx' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource window, int &y, int &x',
+ 'description' => 'Returns the size of a window',
+ ),
+ 'ncurses_wmove' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int y, int x',
+ 'description' => 'Moves windows output position',
+ ),
+ 'ncurses_keypad' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, bool bf',
+ 'description' => 'Turns keypad on or off',
+ ),
+ 'ncurses_wcolor_set' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int color_pair',
+ 'description' => 'Sets windows color pairings',
+ ),
+ 'ncurses_wclear' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'Clears window',
+ ),
+ 'ncurses_wnoutrefresh' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'Copies window to virtual screen',
+ ),
+ 'ncurses_waddstr' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, string str [, int n]',
+ 'description' => 'Outputs text at current postion in window',
+ ),
+ 'ncurses_wgetch' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'Reads a character from keyboard (window)',
+ ),
+ 'ncurses_wattroff' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int attrs',
+ 'description' => 'Turns off attributes for a window',
+ ),
+ 'ncurses_wattron' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int attrs',
+ 'description' => 'Turns on attributes for a window',
+ ),
+ 'ncurses_wattrset' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window, int attrs',
+ 'description' => 'Set the attributes for a window',
+ ),
+ 'ncurses_wstandend' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'End standout mode for a window',
+ ),
+ 'ncurses_wstandout' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource window',
+ 'description' => 'Enter standout mode for a window',
+ ),
+ 'ncurses_new_panel' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource window',
+ 'description' => 'Create a new panel and associate it with window',
+ ),
+ 'ncurses_del_panel' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource panel',
+ 'description' => 'Remove panel from the stack and delete it (but not the associated window)',
+ ),
+ 'ncurses_hide_panel' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource panel',
+ 'description' => 'Remove panel from the stack, making it invisible',
+ ),
+ 'ncurses_show_panel' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource panel',
+ 'description' => 'Places an invisible panel on top of the stack, making it visible',
+ ),
+ 'ncurses_top_panel' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource panel',
+ 'description' => 'Moves a visible panel to the top of the stack',
+ ),
+ 'ncurses_bottom_panel' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource panel',
+ 'description' => 'Moves a visible panel to the bottom of the stack',
+ ),
+ 'ncurses_move_panel' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource panel, int startx, int starty',
+ 'description' => 'Moves a panel so that it\'s upper-left corner is at [startx, starty]',
+ ),
+ 'ncurses_replace_panel' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource panel, resource window',
+ 'description' => 'Replaces the window associated with panel',
+ ),
+ 'ncurses_panel_above' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource panel',
+ 'description' => 'Returns the panel above panel. If panel is null, returns the bottom panel in the stack',
+ ),
+ 'ncurses_panel_below' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource panel',
+ 'description' => 'Returns the panel below panel. If panel is null, returns the top panel in the stack',
+ ),
+ 'ncurses_panel_window' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource panel',
+ 'description' => 'Returns the window associated with panel',
+ ),
+ 'ncurses_update_panels' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Refreshes the virtual screen to reflect the relations between panels in the stack.',
+ ),
+ 'ftp_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string host [, int port [, int timeout]]',
+ 'description' => 'Opens a FTP stream',
+ ),
+ 'ftp_ssl_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string host [, int port [, int timeout]]',
+ 'description' => 'Opens a FTP-SSL stream',
+ ),
+ 'ftp_login' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string username, string password',
+ 'description' => 'Logs into the FTP server',
+ ),
+ 'ftp_pwd' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream',
+ 'description' => 'Returns the present working directory',
+ ),
+ 'ftp_cdup' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream',
+ 'description' => 'Changes to the parent directory',
+ ),
+ 'ftp_chdir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string directory',
+ 'description' => 'Changes directories',
+ ),
+ 'ftp_exec' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string command',
+ 'description' => 'Requests execution of a program on the FTP server',
+ ),
+ 'ftp_raw' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream, string command',
+ 'description' => 'Sends a literal command to the FTP server',
+ ),
+ 'ftp_mkdir' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream, string directory',
+ 'description' => 'Creates a directory and returns the absolute path for the new directory or false on error',
+ ),
+ 'ftp_rmdir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string directory',
+ 'description' => 'Removes a directory',
+ ),
+ 'ftp_chmod' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, int mode, string filename',
+ 'description' => 'Sets permissions on a file',
+ ),
+ 'ftp_alloc' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, int size[, &response]',
+ 'description' => 'Attempt to allocate space on the remote FTP server',
+ ),
+ 'ftp_nlist' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream, string directory',
+ 'description' => 'Returns an array of filenames in the given directory',
+ ),
+ 'ftp_rawlist' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource stream, string directory [, bool recursive]',
+ 'description' => 'Returns a detailed listing of a directory as an array of output lines',
+ ),
+ 'ftp_systype' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream',
+ 'description' => 'Returns the system type identifier',
+ ),
+ 'ftp_fget' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, resource fp, string remote_file, int mode[, int resumepos]',
+ 'description' => 'Retrieves a file from the FTP server and writes it to an open file',
+ ),
+ 'ftp_nb_fget' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, resource fp, string remote_file, int mode[, int resumepos]',
+ 'description' => 'Retrieves a file from the FTP server asynchronly and writes it to an open file',
+ ),
+ 'ftp_pasv' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, bool pasv',
+ 'description' => 'Turns passive mode on or off',
+ ),
+ 'ftp_get' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string local_file, string remote_file, int mode[, int resume_pos]',
+ 'description' => 'Retrieves a file from the FTP server and writes it to a local file',
+ ),
+ 'ftp_nb_get' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string local_file, string remote_file, int mode[, int resume_pos]',
+ 'description' => 'Retrieves a file from the FTP server nbhronly and writes it to a local file',
+ ),
+ 'ftp_nb_continue' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream',
+ 'description' => 'Continues retrieving/sending a file nbronously',
+ ),
+ 'ftp_fput' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string remote_file, resource fp, int mode[, int startpos]',
+ 'description' => 'Stores a file from an open file to the FTP server',
+ ),
+ 'ftp_nb_fput' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string remote_file, resource fp, int mode[, int startpos]',
+ 'description' => 'Stores a file from an open file to the FTP server nbronly',
+ ),
+ 'ftp_put' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string remote_file, string local_file, int mode[, int startpos]',
+ 'description' => 'Stores a file on the FTP server',
+ ),
+ 'ftp_nb_put' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string remote_file, string local_file, int mode[, int startpos]',
+ 'description' => 'Stores a file on the FTP server',
+ ),
+ 'ftp_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string filename',
+ 'description' => 'Returns the size of the file, or -1 on error',
+ ),
+ 'ftp_mdtm' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string filename',
+ 'description' => 'Returns the last modification time of the file, or -1 on error',
+ ),
+ 'ftp_rename' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string src, string dest',
+ 'description' => 'Renames the given file to a new path',
+ ),
+ 'ftp_delete' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string file',
+ 'description' => 'Deletes a file',
+ ),
+ 'ftp_site' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, string cmd',
+ 'description' => 'Sends a SITE command to the server',
+ ),
+ 'ftp_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream',
+ 'description' => 'Closes the FTP stream',
+ ),
+ 'ftp_set_option' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, int option, mixed value',
+ 'description' => 'Sets an FTP option',
+ ),
+ 'ftp_get_option' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource stream, int option',
+ 'description' => 'Gets an FTP option',
+ ),
+ 'birdstep_connect' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string server, string user, string pass',
+ 'description' => '',
+ ),
+ 'birdstep_close' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int id',
+ 'description' => '',
+ ),
+ 'birdstep_exec' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int index, string exec_str',
+ 'description' => '',
+ ),
+ 'birdstep_fetch' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'birdstep_result' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int index, int col',
+ 'description' => '',
+ ),
+ 'birdstep_freeresult' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'birdstep_autocommit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'birdstep_off_autocommit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'birdstep_commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'birdstep_rollback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'birdstep_fieldname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int index, int col',
+ 'description' => '',
+ ),
+ 'birdstep_fieldnum' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int index',
+ 'description' => '',
+ ),
+ 'odbc_close_all' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Close all ODBC connections',
+ ),
+ 'odbc_binmode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result_id, int mode',
+ 'description' => 'Handle binary column data',
+ ),
+ 'odbc_longreadlen' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int result_id, int length',
+ 'description' => 'Handle LONG columns',
+ ),
+ 'odbc_prepare' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string query',
+ 'description' => 'Prepares a statement for execution',
+ ),
+ 'odbc_execute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id [, array parameters_array]',
+ 'description' => 'Execute a prepared statement',
+ ),
+ 'odbc_cursor' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result_id',
+ 'description' => 'Get cursor name',
+ ),
+ 'odbc_data_source' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource connection_id, int fetch_type',
+ 'description' => 'Return information about the currently connected data source',
+ ),
+ 'odbc_exec' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string query [, int flags]',
+ 'description' => 'Prepare and execute an SQL statement',
+ ),
+ 'odbc_fetch_object' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'int result [, int rownumber]',
+ 'description' => 'Fetch a result row as an object',
+ ),
+ 'odbc_fetch_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int result [, int rownumber]',
+ 'description' => 'Fetch a result row as an associative array',
+ ),
+ 'odbc_fetch_into' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id, array result_array, [, int rownumber]',
+ 'description' => 'Fetch one result row into an array',
+ ),
+ 'solid_fetch_prev' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id',
+ 'description' => '',
+ ),
+ 'odbc_fetch_row' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id [, int row_number]',
+ 'description' => 'Fetch a row',
+ ),
+ 'odbc_result' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource result_id, mixed field',
+ 'description' => 'Get result data',
+ ),
+ 'odbc_result_all' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id [, string format]',
+ 'description' => 'Print result as HTML table',
+ ),
+ 'odbc_free_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id',
+ 'description' => 'Free resources associated with a result',
+ ),
+ 'odbc_connect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string DSN, string user, string password [, int cursor_option]',
+ 'description' => 'Connect to a datasource',
+ ),
+ 'odbc_pconnect' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string DSN, string user, string password [, int cursor_option]',
+ 'description' => 'Establish a persistent connection to a datasource',
+ ),
+ 'odbc_close' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource connection_id',
+ 'description' => 'Close an ODBC connection',
+ ),
+ 'odbc_num_rows' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id',
+ 'description' => 'Get number of rows in a result',
+ ),
+ 'odbc_next_result' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource result_id',
+ 'description' => 'Checks if multiple results are avaiable',
+ ),
+ 'odbc_num_fields' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id',
+ 'description' => 'Get number of columns in a result',
+ ),
+ 'odbc_field_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result_id, int field_number',
+ 'description' => 'Get a column name',
+ ),
+ 'odbc_field_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource result_id, int field_number',
+ 'description' => 'Get the datatype of a column',
+ ),
+ 'odbc_field_len' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id, int field_number',
+ 'description' => 'Get the length (precision) of a column',
+ ),
+ 'odbc_field_scale' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id, int field_number',
+ 'description' => 'Get the scale of a column',
+ ),
+ 'odbc_field_num' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource result_id, string field_name',
+ 'description' => 'Return column number',
+ ),
+ 'odbc_autocommit' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource connection_id [, int OnOff]',
+ 'description' => 'Toggle autocommit mode or get status',
+ ),
+ 'odbc_commit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection_id',
+ 'description' => 'Commit an ODBC transaction',
+ ),
+ 'odbc_rollback' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource connection_id',
+ 'description' => 'Rollback a transaction',
+ ),
+ 'odbc_error' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection_id]',
+ 'description' => 'Get the last error code',
+ ),
+ 'odbc_errormsg' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource connection_id]',
+ 'description' => 'Get the last error message',
+ ),
+ 'odbc_setoption' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource conn_id|result_id, int which, int option, int value',
+ 'description' => 'Sets connection or statement options',
+ ),
+ 'odbc_tables' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]]',
+ 'description' => 'Call the SQLTables function',
+ ),
+ 'odbc_columns' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]]',
+ 'description' => 'Returns a result identifier that can be used to fetch a list of column names in specified tables',
+ ),
+ 'odbc_columnprivileges' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string catalog, string schema, string table, string column',
+ 'description' => 'Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table',
+ ),
+ 'odbc_foreignkeys' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table',
+ 'description' => 'Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table',
+ ),
+ 'odbc_gettypeinfo' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id [, int data_type]',
+ 'description' => 'Returns a result identifier containing information about data types supported by the data source',
+ ),
+ 'odbc_primarykeys' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string qualifier, string owner, string table',
+ 'description' => 'Returns a result identifier listing the column names that comprise the primary key for a table',
+ ),
+ 'odbc_procedurecolumns' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id [, string qualifier, string owner, string proc, string column]',
+ 'description' => 'Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures',
+ ),
+ 'odbc_procedures' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id [, string qualifier, string owner, string name]',
+ 'description' => 'Returns a result identifier containg the list of procedure names in a datasource',
+ ),
+ 'odbc_specialcolumns' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable',
+ 'description' => 'Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction',
+ ),
+ 'odbc_statistics' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string qualifier, string owner, string name, int unique, int accuracy',
+ 'description' => 'Returns a result identifier that contains statistics about a single table and the indexes associated with the table',
+ ),
+ 'odbc_tableprivileges' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource connection_id, string qualifier, string owner, string name',
+ 'description' => 'Returns a result identifier containing a list of tables and the privileges associated with each table',
+ ),
+ 'pspell_new' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string language [, string spelling [, string jargon [, string encoding [, int mode]]]]',
+ 'description' => 'Load a dictionary',
+ ),
+ 'pspell_new_personal' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]]',
+ 'description' => 'Load a dictionary with a personal wordlist',
+ ),
+ 'pspell_new_config' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int config',
+ 'description' => 'Load a dictionary based on the given config',
+ ),
+ 'pspell_check' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pspell, string word',
+ 'description' => 'Returns true if word is valid',
+ ),
+ 'pspell_suggest' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int pspell, string word',
+ 'description' => 'Returns array of suggestions',
+ ),
+ 'pspell_store_replacement' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pspell, string misspell, string correct',
+ 'description' => 'Notify the dictionary of a user-selected replacement',
+ ),
+ 'pspell_add_to_personal' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pspell, string word',
+ 'description' => 'Adds a word to a personal list',
+ ),
+ 'pspell_add_to_session' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pspell, string word',
+ 'description' => 'Adds a word to the current session',
+ ),
+ 'pspell_clear_session' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pspell',
+ 'description' => 'Clears the current session',
+ ),
+ 'pspell_save_wordlist' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int pspell',
+ 'description' => 'Saves the current (personal) wordlist',
+ ),
+ 'pspell_config_create' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string language [, string spelling [, string jargon [, string encoding]]]',
+ 'description' => 'Create a new config to be used later to create a manager',
+ ),
+ 'pspell_config_runtogether' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, bool runtogether',
+ 'description' => 'Consider run-together words as valid components',
+ ),
+ 'pspell_config_mode' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, long mode',
+ 'description' => 'Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)',
+ ),
+ 'pspell_config_ignore' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, int ignore',
+ 'description' => 'Ignore words <= n chars',
+ ),
+ 'pspell_config_personal' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, string personal',
+ 'description' => 'Use a personal dictionary for this config',
+ ),
+ 'pspell_config_dict_dir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, string directory',
+ 'description' => 'location of the main word list',
+ ),
+ 'pspell_config_data_dir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, string directory',
+ 'description' => 'location of language data files',
+ ),
+ 'pspell_config_repl' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, string repl',
+ 'description' => 'Use a personal dictionary with replacement pairs for this config',
+ ),
+ 'pspell_config_save_repl' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int conf, bool save',
+ 'description' => 'Save replacement pairs when personal list is saved for this config',
+ ),
+ 'dl' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string extension_filename',
+ 'description' => 'Load a PHP extension at runtime',
+ ),
+ 'ftok' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pathname, string proj',
+ 'description' => 'Convert a pathname and a project identifier to a System V IPC key',
+ ),
+ 'assert' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string|bool assertion',
+ 'description' => 'Checks if assertion is false',
+ ),
+ 'assert_options' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int what [, mixed value]',
+ 'description' => 'Set/get the various assert flags',
+ ),
+ 'sprintf' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format [, mixed arg1 [, mixed ...]]',
+ 'description' => 'Return a formatted string',
+ ),
+ 'vsprintf' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format, array args',
+ 'description' => 'Return a formatted string',
+ ),
+ 'printf' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string format [, mixed arg1 [, mixed ...]]',
+ 'description' => 'Output a formatted string',
+ ),
+ 'vprintf' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string format, array args',
+ 'description' => 'Output a formatted string',
+ ),
+ 'fprintf' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string format [, mixed arg1 [, mixed ...]]',
+ 'description' => 'Output a formatted string into a stream',
+ ),
+ 'vfprintf' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, string format, array args',
+ 'description' => 'Output a formatted string into a stream',
+ ),
+ 'stream_socket_pair' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int domain, int type, int protocol',
+ 'description' => 'Creates a pair of connected, indistinguishable socket streams',
+ ),
+ 'stream_socket_client' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string remoteaddress [, long &errcode, string &errstring, double timeout, long flags, resource context]',
+ 'description' => 'Open a client connection to a remote address',
+ ),
+ 'stream_socket_server' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string localaddress [, long &errcode, string &errstring, long flags, resource context]',
+ 'description' => 'Create a server socket bound to localaddress',
+ ),
+ 'stream_socket_accept' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource serverstream, [ double timeout, string &peername ]',
+ 'description' => 'Accept a client connection from a server socket',
+ ),
+ 'stream_socket_get_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream, bool want_peer',
+ 'description' => 'Returns either the locally bound or remote name for a socket stream',
+ ),
+ 'stream_socket_sendto' =>
+ array (
+ 'return' => 'long',
+ 'params' => 'resouce stream, string data [, long flags [, string target_addr]]',
+ 'description' => 'Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format',
+ ),
+ 'stream_socket_recvfrom' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream, long amount [, long flags [, string &remote_addr]]',
+ 'description' => 'Receives data from a socket stream',
+ ),
+ 'stream_get_contents' =>
+ array (
+ 'return' => 'long',
+ 'params' => 'resource source [, long maxlen [, long offset]]',
+ 'description' => 'Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string.',
+ ),
+ 'stream_copy_to_stream' =>
+ array (
+ 'return' => 'long',
+ 'params' => 'resource source, resource dest [, long maxlen [, long pos]]',
+ 'description' => 'Reads up to maxlen bytes from source stream and writes them to dest stream.',
+ ),
+ 'stream_get_meta_data' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource fp',
+ 'description' => 'Retrieves header/meta data from streams/file pointers',
+ ),
+ 'stream_get_transports' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Retrieves list of registered socket transports',
+ ),
+ 'stream_get_wrappers' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Retrieves list of registered stream wrappers',
+ ),
+ 'stream_select' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec]',
+ 'description' => 'Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec',
+ ),
+ 'stream_context_get_options' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource context|resource stream',
+ 'description' => 'Retrieve options for a stream/wrapper/context',
+ ),
+ 'stream_context_set_option' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource context|resource stream, string wrappername, string optionname, mixed value',
+ 'description' => 'Set an option for a wrapper',
+ ),
+ 'stream_context_set_params' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource context|resource stream, array options',
+ 'description' => 'Set parameters for a file context',
+ ),
+ 'stream_context_get_default' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[array options]',
+ 'description' => 'Get a handle on the default file/stream context and optionally set parameters',
+ ),
+ 'stream_context_create' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '[array options]',
+ 'description' => 'Create a file context and optionally set parameters',
+ ),
+ 'stream_filter_prepend' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource stream, string filtername[, int read_write[, string filterparams]]',
+ 'description' => 'Prepend a filter to a stream',
+ ),
+ 'stream_filter_append' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource stream, string filtername[, int read_write[, string filterparams]]',
+ 'description' => 'Append a filter to a stream',
+ ),
+ 'stream_filter_remove' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream_filter',
+ 'description' => 'Flushes any data in the filter\'s internal buffer, removes it from the chain, and frees the resource',
+ ),
+ 'stream_get_line' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource stream, int maxlen [, string ending]',
+ 'description' => 'Read up to maxlen bytes from a stream or until the ending string is found',
+ ),
+ 'stream_set_blocking' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, int mode',
+ 'description' => 'Set blocking/non-blocking mode on a socket or stream',
+ ),
+ 'set_socket_blocking' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource socket, int mode',
+ 'description' => 'Set blocking/non-blocking mode on a socket',
+ ),
+ 'stream_set_timeout' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource stream, int seconds, int microseconds',
+ 'description' => 'Set timeout on stream read to seconds + microseonds',
+ ),
+ 'stream_set_write_buffer' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp, int buffer',
+ 'description' => 'Set file write buffer',
+ ),
+ 'stream_socket_enable_crypto' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource stream, bool enable [, int cryptokind, resource sessionstream]',
+ 'description' => 'Enable or disable a specific kind of crypto on the stream',
+ ),
+ 'proc_terminate' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource process [, long signal]',
+ 'description' => 'kill a process opened by proc_open',
+ ),
+ 'proc_close' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource process',
+ 'description' => 'close a process opened by proc_open',
+ ),
+ 'proc_get_status' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource process',
+ 'description' => 'get information about a process opened by proc_open',
+ ),
+ 'proc_open' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]]',
+ 'description' => 'Run a process with more control over it\'s file descriptors',
+ ),
+ 'opendir' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string path[, resource context]',
+ 'description' => 'Open a directory and return a dir_handle',
+ ),
+ 'dir' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string directory[, resource context]',
+ 'description' => 'Directory class with properties, handle and class and methods read, rewind and close',
+ ),
+ 'closedir' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[resource dir_handle]',
+ 'description' => 'Close directory connection identified by the dir_handle',
+ ),
+ 'chroot' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string directory',
+ 'description' => 'Change root directory',
+ ),
+ 'chdir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string directory',
+ 'description' => 'Change the current directory',
+ ),
+ 'getcwd' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'void',
+ 'description' => 'Gets the current directory',
+ ),
+ 'rewinddir' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[resource dir_handle]',
+ 'description' => 'Rewind dir_handle back to the start',
+ ),
+ 'readdir' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[resource dir_handle]',
+ 'description' => 'Read directory entry from dir_handle',
+ ),
+ 'glob' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string pattern [, int flags]',
+ 'description' => 'Find pathnames matching a pattern',
+ ),
+ 'scandir' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string dir [, int sorting_order [, resource context]]',
+ 'description' => 'List files & directories inside the specified path',
+ ),
+ 'disk_total_space' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'string path',
+ 'description' => 'Get total disk space for filesystem that path is on',
+ ),
+ 'disk_free_space' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'string path',
+ 'description' => 'Get free disk space for filesystem that path is on',
+ ),
+ 'chgrp' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename, mixed group',
+ 'description' => 'Change file group',
+ ),
+ 'lchgrp' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename, mixed group',
+ 'description' => 'Change symlink group',
+ ),
+ 'chmod' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename, int mode',
+ 'description' => 'Change file mode',
+ ),
+ 'touch' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename [, int time [, int atime]]',
+ 'description' => 'Set modification time of file',
+ ),
+ 'clearstatcache' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Clear file stat cache',
+ ),
+ 'fileperms' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get file permissions',
+ ),
+ 'fileinode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get file inode',
+ ),
+ 'filesize' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get file size',
+ ),
+ 'fileowner' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get file owner',
+ ),
+ 'filegroup' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get file group',
+ ),
+ 'fileatime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get last access time of file',
+ ),
+ 'filemtime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get last modification time of file',
+ ),
+ 'filectime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Get inode modification time of file',
+ ),
+ 'filetype' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename',
+ 'description' => 'Get file type',
+ ),
+ 'is_writable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if file can be written',
+ ),
+ 'is_readable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if file can be read',
+ ),
+ 'is_executable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if file is executable',
+ ),
+ 'is_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if file is a regular file',
+ ),
+ 'is_dir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if file is directory',
+ ),
+ 'is_link' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if file is symbolic link',
+ ),
+ 'file_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Returns true if filename exists',
+ ),
+ 'lstat' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename',
+ 'description' => 'Give information about a file or symbolic link',
+ ),
+ 'stat' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename',
+ 'description' => 'Give information about a file',
+ ),
+ 'convert_cyr_string' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, string from, string to',
+ 'description' => 'Convert from one Cyrillic character set to another',
+ ),
+ 'krsort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg [, int sort_flags]',
+ 'description' => 'Sort an array by key value in reverse order',
+ ),
+ 'ksort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg [, int sort_flags]',
+ 'description' => 'Sort an array by key',
+ ),
+ 'count' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'mixed var [, int mode]',
+ 'description' => 'Count the number of elements in a variable (usually an array)',
+ ),
+ 'natsort' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'array array_arg',
+ 'description' => 'Sort an array using natural sort',
+ ),
+ 'natcasesort' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'array array_arg',
+ 'description' => 'Sort an array using case-insensitive natural sort',
+ ),
+ 'asort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg [, int sort_flags]',
+ 'description' => 'Sort an array and maintain index association',
+ ),
+ 'arsort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg [, int sort_flags]',
+ 'description' => 'Sort an array in reverse order and maintain index association',
+ ),
+ 'sort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg [, int sort_flags]',
+ 'description' => 'Sort an array',
+ ),
+ 'rsort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg [, int sort_flags]',
+ 'description' => 'Sort an array in reverse order',
+ ),
+ 'usort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg, string cmp_function',
+ 'description' => 'Sort an array by values using a user-defined comparison function',
+ ),
+ 'uasort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg, string cmp_function',
+ 'description' => 'Sort an array with a user-defined comparison function and maintain index association',
+ ),
+ 'uksort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg, string cmp_function',
+ 'description' => 'Sort an array by keys using a user-defined comparison function',
+ ),
+ 'end' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array array_arg',
+ 'description' => 'Advances array argument\'s internal pointer to the last element and return it',
+ ),
+ 'prev' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array array_arg',
+ 'description' => 'Move array argument\'s internal pointer to the previous element and return it',
+ ),
+ 'next' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array array_arg',
+ 'description' => 'Move array argument\'s internal pointer to the next element and return it',
+ ),
+ 'reset' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array array_arg',
+ 'description' => 'Set array argument\'s internal pointer to the first element and return it',
+ ),
+ 'current' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array array_arg',
+ 'description' => 'Return the element currently pointed to by the internal array pointer',
+ ),
+ 'key' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array array_arg',
+ 'description' => 'Return the key of the element currently pointed to by the internal array pointer',
+ ),
+ 'min' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed arg1 [, mixed arg2 [, mixed ...]]',
+ 'description' => 'Return the lowest value in an array or a series of arguments',
+ ),
+ 'max' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed arg1 [, mixed arg2 [, mixed ...]]',
+ 'description' => 'Return the highest value in an array or a series of arguments',
+ ),
+ 'array_walk' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array input, string funcname [, mixed userdata]',
+ 'description' => 'Apply a user function to every member of an array',
+ ),
+ 'array_walk_recursive' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array input, string funcname [, mixed userdata]',
+ 'description' => 'Apply a user function recursively to every member of an array',
+ ),
+ 'in_array' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed needle, array haystack [, bool strict]',
+ 'description' => 'Checks if the given value exists in the array',
+ ),
+ 'array_search' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed needle, array haystack [, bool strict]',
+ 'description' => 'Searches the array for a given value and returns the corresponding key if successful',
+ ),
+ 'extract' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'array var_array [, int extract_type [, string prefix]]',
+ 'description' => 'Imports variables into symbol table from an array',
+ ),
+ 'compact' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'mixed var_names [, mixed ...]',
+ 'description' => 'Creates a hash containing variables and their values',
+ ),
+ 'array_fill' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int start_key, int num, mixed val',
+ 'description' => 'Create an array containing num elements starting with index start_key each initialized to val',
+ ),
+ 'range' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'mixed low, mixed high[, int step]',
+ 'description' => 'Create an array containing the range of integers or characters from low to high (inclusive)',
+ ),
+ 'shuffle' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array array_arg',
+ 'description' => 'Randomly shuffle the contents of an array',
+ ),
+ 'array_push' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'array stack, mixed var [, mixed ...]',
+ 'description' => 'Pushes elements onto the end of the array',
+ ),
+ 'array_pop' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array stack',
+ 'description' => 'Pops an element off the end of the array',
+ ),
+ 'array_shift' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array stack',
+ 'description' => 'Pops an element off the beginning of the array',
+ ),
+ 'array_unshift' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'array stack, mixed var [, mixed ...]',
+ 'description' => 'Pushes elements onto the beginning of the array',
+ ),
+ 'array_splice' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input, int offset [, int length [, array replacement]]',
+ 'description' => 'Removes the elements designated by offset and length and replace them with supplied array',
+ ),
+ 'array_slice' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input, int offset [, int length]',
+ 'description' => 'Returns elements specified by offset and length',
+ ),
+ 'array_merge' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Merges elements from passed arrays into one array',
+ ),
+ 'array_merge_recursive' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Recursively merges elements from passed arrays into one array',
+ ),
+ 'array_keys' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input [, mixed search_value[, bool strict]]',
+ 'description' => 'Return just the keys from the input array, optionally only for the specified search_value',
+ ),
+ 'array_values' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input',
+ 'description' => 'Return just the values from the input array',
+ ),
+ 'array_count_values' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input',
+ 'description' => 'Return the value as key and the frequency of that value in input as value',
+ ),
+ 'array_reverse' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input [, bool preserve keys]',
+ 'description' => 'Return input as a new array with the order of the entries reversed',
+ ),
+ 'array_pad' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input, int pad_size, mixed pad_value',
+ 'description' => 'Returns a copy of input array padded with pad_value to size pad_size',
+ ),
+ 'array_flip' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input',
+ 'description' => 'Return array with key <-> value flipped',
+ ),
+ 'array_change_key_case' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input [, int case=CASE_LOWER]',
+ 'description' => 'Retuns an array with all string keys lowercased [or uppercased]',
+ ),
+ 'array_unique' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input',
+ 'description' => 'Removes duplicate values from array',
+ ),
+ 'array_intersect_key' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data.',
+ ),
+ 'array_intersect_ukey' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback key_compare_func',
+ 'description' => 'Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data.',
+ ),
+ 'array_intersect' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments',
+ ),
+ 'array_uintersect' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback data_compare_func',
+ 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback.',
+ ),
+ 'array_intersect_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check',
+ ),
+ 'array_uintersect_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback data_compare_func',
+ 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback.',
+ ),
+ 'array_intersect_uassoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback key_compare_func',
+ 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback.',
+ ),
+ 'array_uintersect_uassoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func',
+ 'description' => 'Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks.',
+ ),
+ 'array_diff_key' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved.',
+ ),
+ 'array_diff_ukey' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback key_comp_func',
+ 'description' => 'Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved.',
+ ),
+ 'array_diff' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments.',
+ ),
+ 'array_udiff' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback data_comp_func',
+ 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function.',
+ ),
+ 'array_diff_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...]',
+ 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal',
+ ),
+ 'array_diff_uassoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback data_comp_func',
+ 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function.',
+ ),
+ 'array_udiff_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback key_comp_func',
+ 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function.',
+ ),
+ 'array_udiff_uassoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func',
+ 'description' => 'Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions.',
+ ),
+ 'array_multisort' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...]',
+ 'description' => 'Sort multiple arrays at once similar to how ORDER BY clause works in SQL',
+ ),
+ 'array_rand' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array input [, int num_req]',
+ 'description' => 'Return key/keys for random entry/entries in the array',
+ ),
+ 'array_sum' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array input',
+ 'description' => 'Returns the sum of the array entries',
+ ),
+ 'array_product' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array input',
+ 'description' => 'Returns the product of the array entries',
+ ),
+ 'array_reduce' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'array input, mixed callback [, int initial]',
+ 'description' => 'Iteratively reduce the array to a single value via the callback.',
+ ),
+ 'array_filter' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input [, mixed callback]',
+ 'description' => 'Filters elements from the array via the callback.',
+ ),
+ 'array_map' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'mixed callback, array input1 [, array input2 ,...]',
+ 'description' => 'Applies the callback to the elements in given arrays.',
+ ),
+ 'array_key_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed key, array search',
+ 'description' => 'Checks if the given key or index exists in the array',
+ ),
+ 'array_chunk' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array input, int size [, bool preserve_keys]',
+ 'description' => 'Split array into chunks',
+ ),
+ 'array_combine' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array keys, array values',
+ 'description' => 'Creates an array by using the elements of the first parameter as keys and the elements of the second as correspoding keys',
+ ),
+ 'soundex' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Calculate the soundex key of a string',
+ ),
+ 'strptime' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string timestamp, string format',
+ 'description' => 'Parse a time/date generated with strftime()',
+ ),
+ 'md5' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, [ bool raw_output]',
+ 'description' => 'Calculate the md5 hash of a string',
+ ),
+ 'md5_file' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename [, bool raw_output]',
+ 'description' => 'Calculate the md5 hash of given filename',
+ ),
+ 'header' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string header [, bool replace, [int http_response_code]]',
+ 'description' => 'Sends a raw HTTP header',
+ ),
+ 'setcookie' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string name [, string value [, int expires [, string path [, string domain [, bool secure]]]]]',
+ 'description' => 'Send a cookie',
+ ),
+ 'setrawcookie' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string name [, string value [, int expires [, string path [, string domain [, bool secure]]]]]',
+ 'description' => 'Send a cookie with no url encoding of the value',
+ ),
+ 'headers_sent' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[string &$file [, int &$line]]',
+ 'description' => 'Returns true if headers have already been sent, false otherwise',
+ ),
+ 'headers_list' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Return list of headers to be sent / already sent',
+ ),
+ 'crc32' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Calculate the crc32 polynomial of a string',
+ ),
+ 'abs' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int number',
+ 'description' => 'Return the absolute value of the number',
+ ),
+ 'ceil' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the next highest integer value of the number',
+ ),
+ 'floor' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the next lowest integer value from the number',
+ ),
+ 'round' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number [, int precision]',
+ 'description' => 'Returns the number rounded to specified precision',
+ ),
+ 'sin' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the sine of the number in radians',
+ ),
+ 'cos' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the cosine of the number in radians',
+ ),
+ 'tan' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the tangent of the number in radians',
+ ),
+ 'asin' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the arc sine of the number in radians',
+ ),
+ 'acos' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Return the arc cosine of the number in radians',
+ ),
+ 'atan' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the arc tangent of the number in radians',
+ ),
+ 'atan2' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float y, float x',
+ 'description' => 'Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x',
+ ),
+ 'sinh' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2',
+ ),
+ 'cosh' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2',
+ ),
+ 'tanh' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)',
+ ),
+ 'asinh' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number',
+ ),
+ 'acosh' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number',
+ ),
+ 'atanh' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number',
+ ),
+ 'pi' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'void',
+ 'description' => 'Returns an approximation of pi',
+ ),
+ 'is_finite' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'float val',
+ 'description' => 'Returns whether argument is finite',
+ ),
+ 'is_infinite' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'float val',
+ 'description' => 'Returns whether argument is infinite',
+ ),
+ 'is_nan' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'float val',
+ 'description' => 'Returns whether argument is not a number',
+ ),
+ 'pow' =>
+ array (
+ 'return' => 'number',
+ 'params' => 'number base, number exponent',
+ 'description' => 'Returns base raised to the power of exponent. Returns integer result when possible',
+ ),
+ 'exp' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns e raised to the power of the number',
+ ),
+ 'expm1' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero',
+ ),
+ 'log1p' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero',
+ ),
+ 'log' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number, [float base]',
+ 'description' => 'Returns the natural logarithm of the number, or the base log if base is specified',
+ ),
+ 'log10' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the base-10 logarithm of the number',
+ ),
+ 'sqrt' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Returns the square root of the number',
+ ),
+ 'hypot' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float num1, float num2',
+ 'description' => 'Returns sqrt(num1*num1 + num2*num2)',
+ ),
+ 'deg2rad' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Converts the number in degrees to the radian equivalent',
+ ),
+ 'rad2deg' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float number',
+ 'description' => 'Converts the radian number to the equivalent number in degrees',
+ ),
+ 'bindec' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string binary_number',
+ 'description' => 'Returns the decimal equivalent of the binary number',
+ ),
+ 'hexdec' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string hexadecimal_number',
+ 'description' => 'Returns the decimal equivalent of the hexadecimal number',
+ ),
+ 'octdec' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string octal_number',
+ 'description' => 'Returns the decimal equivalent of an octal string',
+ ),
+ 'decbin' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int decimal_number',
+ 'description' => 'Returns a string containing a binary representation of the number',
+ ),
+ 'decoct' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int decimal_number',
+ 'description' => 'Returns a string containing an octal representation of the given number',
+ ),
+ 'dechex' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int decimal_number',
+ 'description' => 'Returns a string containing a hexadecimal representation of the given number',
+ ),
+ 'base_convert' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string number, int frombase, int tobase',
+ 'description' => 'Converts a number in a string from any base <= 36 to any base <= 36',
+ ),
+ 'number_format' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]]',
+ 'description' => 'Formats a number with grouped thousands',
+ ),
+ 'fmod' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'float x, float y',
+ 'description' => 'Returns the remainder of dividing x by y as a float',
+ ),
+ 'gethostbyaddr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string ip_address',
+ 'description' => 'Get the Internet host name corresponding to a given IP address',
+ ),
+ 'gethostbyname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string hostname',
+ 'description' => 'Get the IP address corresponding to a given Internet host name',
+ ),
+ 'gethostbynamel' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string hostname',
+ 'description' => 'Return a list of IP addresses that a given hostname resolves to.',
+ ),
+ 'dns_check_record' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string host [, string type]',
+ 'description' => 'Check DNS records corresponding to a given Internet host name or IP address',
+ ),
+ 'dns_get_record' =>
+ array (
+ 'return' => 'array|false',
+ 'params' => 'string hostname [, int type[, array authns, array addtl]]',
+ 'description' => 'Get any Resource Record corresponding to a given Internet host name',
+ ),
+ 'dns_get_mx' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string hostname, array mxhosts [, array weight]',
+ 'description' => 'Get MX records corresponding to a given Internet host name',
+ ),
+ 'bin2hex' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'Converts the binary representation of data to hex',
+ ),
+ 'strspn' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str, string mask [, start [, len]]',
+ 'description' => 'Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)',
+ ),
+ 'strcspn' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str, string mask [, start [, len]]',
+ 'description' => 'Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)',
+ ),
+ 'nl_langinfo' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int item',
+ 'description' => 'Query language and locale information',
+ ),
+ 'strcoll' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2',
+ 'description' => 'Compares two strings using the current locale',
+ ),
+ 'trim' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string character_mask]',
+ 'description' => 'Strips whitespace from the beginning and end of a string',
+ ),
+ 'rtrim' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string character_mask]',
+ 'description' => 'Removes trailing whitespace',
+ ),
+ 'ltrim' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string character_mask]',
+ 'description' => 'Strips whitespace from the beginning of a string',
+ ),
+ 'wordwrap' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, int width [, string break [, boolean cut]]]',
+ 'description' => 'Wraps buffer to selected number of characters using string break char',
+ ),
+ 'explode' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string separator, string str [, int limit]',
+ 'description' => 'Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned.',
+ ),
+ 'join' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'array src, string glue',
+ 'description' => 'An alias for implode',
+ ),
+ 'implode' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string glue,] array pieces',
+ 'description' => 'Joins array elements placing glue string between items and return one string',
+ ),
+ 'strtok' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string str,] string token',
+ 'description' => 'Tokenize a string',
+ ),
+ 'strtoupper' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Makes a string uppercase',
+ ),
+ 'strtolower' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Makes a string lowercase',
+ ),
+ 'basename' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string path [, string suffix]',
+ 'description' => 'Returns the filename component of the path',
+ ),
+ 'dirname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string path',
+ 'description' => 'Returns the directory name component of the path',
+ ),
+ 'pathinfo' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string path',
+ 'description' => 'Returns information about a certain string',
+ ),
+ 'stristr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string haystack, string needle',
+ 'description' => 'Finds first occurrence of a string within another, case insensitive',
+ ),
+ 'strstr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string haystack, string needle',
+ 'description' => 'Finds first occurrence of a string within another',
+ ),
+ 'strchr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string haystack, string needle',
+ 'description' => 'An alias for strstr',
+ ),
+ 'strpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, int offset]',
+ 'description' => 'Finds position of first occurrence of a string within another',
+ ),
+ 'stripos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, int offset]',
+ 'description' => 'Finds position of first occurrence of a string within another, case insensitive',
+ ),
+ 'strrpos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, int offset]',
+ 'description' => 'Finds position of last occurrence of a string within another string',
+ ),
+ 'strripos' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, int offset]',
+ 'description' => 'Finds position of last occurrence of a string within another string',
+ ),
+ 'strrchr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string haystack, string needle',
+ 'description' => 'Finds the last occurrence of a character in a string within another',
+ ),
+ 'chunk_split' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, int chunklen [, string ending]]',
+ 'description' => 'Returns split line',
+ ),
+ 'substr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, int start [, int length]',
+ 'description' => 'Returns part of a string',
+ ),
+ 'substr_replace' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed str, mixed repl, mixed start [, mixed length]',
+ 'description' => 'Replaces part of a string with another string',
+ ),
+ 'quotemeta' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Quotes meta characters',
+ ),
+ 'ord' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string character',
+ 'description' => 'Returns ASCII value of character',
+ ),
+ 'chr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int ascii',
+ 'description' => 'Converts ASCII code to a character',
+ ),
+ 'ucfirst' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Makes a string\'s first character uppercase',
+ ),
+ 'ucwords' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Uppercase the first character of every word in a string',
+ ),
+ 'strtr' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, string from, string to',
+ 'description' => 'Translates characters in str using given translation tables',
+ ),
+ 'strrev' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Reverse a string',
+ ),
+ 'similar_text' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2 [, float percent]',
+ 'description' => 'Calculates the similarity between two strings',
+ ),
+ 'addcslashes' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str, string charlist',
+ 'description' => 'Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except \'\\n\', \'\\r\', \'\\t\' etc...)',
+ ),
+ 'addslashes' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Escapes single quote, double quotes and backslash characters in a string with backslashes',
+ ),
+ 'stripcslashes' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Strips backslashes from a string. Uses C-style conventions',
+ ),
+ 'stripslashes' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Strips backslashes from a string',
+ ),
+ 'str_replace' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed search, mixed replace, mixed subject [, int &replace_count]',
+ 'description' => 'Replaces all occurrences of search in haystack with replace',
+ ),
+ 'str_ireplace' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed search, mixed replace, mixed subject [, int &replace_count]',
+ 'description' => 'Replaces all occurrences of search in haystack with replace / case-insensitive',
+ ),
+ 'hebrev' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, int max_chars_per_line]',
+ 'description' => 'Converts logical Hebrew text to visual text',
+ ),
+ 'hebrevc' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, int max_chars_per_line]',
+ 'description' => 'Converts logical Hebrew text to visual text with newline conversion',
+ ),
+ 'nl2br' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Converts newlines to HTML line breaks',
+ ),
+ 'strip_tags' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string allowable_tags]',
+ 'description' => 'Strips HTML and PHP tags from a string',
+ ),
+ 'setlocale' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed category, string locale [, string ...]',
+ 'description' => 'Set locale information',
+ ),
+ 'parse_str' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string encoded_string [, array result]',
+ 'description' => 'Parses GET/POST/COOKIE data and sets global variables',
+ ),
+ 'str_repeat' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string input, int mult',
+ 'description' => 'Returns the input string repeat mult times',
+ ),
+ 'count_chars' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string input [, int mode]',
+ 'description' => 'Returns info about what characters are used in input',
+ ),
+ 'strnatcmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string s1, string s2',
+ 'description' => 'Returns the result of string comparison using \'natural\' algorithm',
+ ),
+ 'localeconv' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns numeric formatting information based on the current locale',
+ ),
+ 'strnatcasecmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string s1, string s2',
+ 'description' => 'Returns the result of case-insensitive string comparison using \'natural\' algorithm',
+ ),
+ 'substr_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string haystack, string needle [, int offset [, int length]]',
+ 'description' => 'Returns the number of times a substring occurs in the string',
+ ),
+ 'str_pad' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string input, int pad_length [, string pad_string [, int pad_type]]',
+ 'description' => 'Returns input string padded on the left or right to specified length with pad_string',
+ ),
+ 'sscanf' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string str, string format [, string ...]',
+ 'description' => 'Implements an ANSI C compatible sscanf',
+ ),
+ 'str_rot13' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Perform the rot13 transform on a string',
+ ),
+ 'str_shuffle' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string str',
+ 'description' => 'Shuffles string. One permutation of all possible is created',
+ ),
+ 'str_word_count' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string str, [int format [, string charlist]]',
+ 'description' => 'Counts the number of words inside a string. If format of 1 is specified,then the function will return an array containing all the wordsfound inside the string. If format of 2 is specified, then the functionwill return an associated array where the position of the word is the keyand the word itself is the value.For the purpose of this function, \'word\' is defined as a locale dependentstring containing alphabetic characters, which also may contain, but not startwith "\'" and "-" characters.',
+ ),
+ 'money_format' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format , float value',
+ 'description' => 'Convert monetary value(s) to string',
+ ),
+ 'str_split' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string str [, int split_length]',
+ 'description' => 'Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long.',
+ ),
+ 'strpbrk' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string haystack, string char_list',
+ 'description' => 'Search a string for any of a set of characters',
+ ),
+ 'substr_compare' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string main_str, string str, int offset [, int length [, bool case_sensitivity]]',
+ 'description' => 'Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters',
+ ),
+ 'fsockopen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string hostname, int port [, int errno [, string errstr [, float timeout]]]',
+ 'description' => 'Open Internet or Unix domain socket connection',
+ ),
+ 'pfsockopen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string hostname, int port [, int errno [, string errstr [, float timeout]]]',
+ 'description' => 'Open persistent Internet or Unix domain socket connection',
+ ),
+ 'readlink' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename',
+ 'description' => 'Return the target of a symbolic link',
+ ),
+ 'linkinfo' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename',
+ 'description' => 'Returns the st_dev field of the UNIX C stat structure describing the link',
+ ),
+ 'symlink' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string target, string link',
+ 'description' => 'Create a symbolic link',
+ ),
+ 'link' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string target, string link',
+ 'description' => 'Create a hard link',
+ ),
+ 'getmyuid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get PHP script owner\'s UID',
+ ),
+ 'getmygid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get PHP script owner\'s GID',
+ ),
+ 'getmypid' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get current process ID',
+ ),
+ 'getmyinode' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the inode of the current script being parsed',
+ ),
+ 'getlastmod' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get time of last page modification',
+ ),
+ 'var_dump' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed var',
+ 'description' => 'Dumps a string representation of variable to output',
+ ),
+ 'debug_zval_dump' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed var',
+ 'description' => 'Dumps a string representation of an internal zend value to output.',
+ ),
+ 'var_export' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed var [, bool return]',
+ 'description' => 'Outputs or returns a string representation of a variable',
+ ),
+ 'serialize' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed variable',
+ 'description' => 'Returns a string representation of variable (which can later be unserialized)',
+ ),
+ 'unserialize' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string variable_representation',
+ 'description' => 'Takes a string representation of variable and recreates it',
+ ),
+ 'memory_get_usage' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the allocated by PHP memory',
+ ),
+ 'ereg' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pattern, string string [, array registers]',
+ 'description' => 'Regular expression match',
+ ),
+ 'eregi' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string pattern, string string [, array registers]',
+ 'description' => 'Case-insensitive regular expression match',
+ ),
+ 'ereg_replace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string pattern, string replacement, string string',
+ 'description' => 'Replace regular expression',
+ ),
+ 'eregi_replace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string pattern, string replacement, string string',
+ 'description' => 'Case insensitive replace regular expression',
+ ),
+ 'split' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string pattern, string string [, int limit]',
+ 'description' => 'Split string into array by regular expression',
+ ),
+ 'spliti' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string pattern, string string [, int limit]',
+ 'description' => 'Split string into array by regular expression case-insensitive',
+ ),
+ 'sql_regcase' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string',
+ 'description' => 'Make regular expression for case insensitive match',
+ ),
+ 'crypt' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, string salt]',
+ 'description' => 'Encrypt a string',
+ ),
+ 'ezmlm_hash' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string addr',
+ 'description' => 'Calculate EZMLM list hash value.',
+ ),
+ 'mail' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string to, string subject, string message [, string additional_headers [, string additional_parameters]]',
+ 'description' => 'Send an email message',
+ ),
+ 'srand' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int seed]',
+ 'description' => 'Seeds random number generator',
+ ),
+ 'mt_srand' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int seed]',
+ 'description' => 'Seeds Mersenne Twister random number generator',
+ ),
+ 'rand' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int min, int max]',
+ 'description' => 'Returns a random number',
+ ),
+ 'mt_rand' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int min, int max]',
+ 'description' => 'Returns a random number from Mersenne Twister',
+ ),
+ 'getrandmax' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns the maximum value a random number can have',
+ ),
+ 'mt_getrandmax' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns the maximum value a random number from Mersenne Twister can have',
+ ),
+ 'get_browser' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[string browser_name [, bool return_array]]',
+ 'description' => 'Get information about the capabilities of a browser. If browser_name is omittedor null, HTTP_USER_AGENT is used. Returns an object by default; if return_arrayis true, returns an array.',
+ ),
+ 'iptcembed' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string iptcdata, string jpeg_file_name [, int spool]',
+ 'description' => 'Embed binary IPTC data into a JPEG image.',
+ ),
+ 'iptcparse' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string iptcdata',
+ 'description' => 'Parse binary IPTC-data into associative array',
+ ),
+ 'quoted_printable_decode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Convert a quoted-printable string to an 8 bit string',
+ ),
+ 'pack' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string format, mixed arg1 [, mixed arg2 [, mixed ...]]',
+ 'description' => 'Takes one or more arguments and packs them into a binary string according to the format argument',
+ ),
+ 'unpack' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string format, string input',
+ 'description' => 'Unpack binary string into named array elements according to format argument',
+ ),
+ 'base64_encode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Encodes string using MIME base64 algorithm',
+ ),
+ 'base64_decode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Decodes string using MIME base64 algorithm',
+ ),
+ 'gettype' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed var',
+ 'description' => 'Returns the type of the variable',
+ ),
+ 'settype' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var, string type',
+ 'description' => 'Set the type of the variable',
+ ),
+ 'intval' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'mixed var [, int base]',
+ 'description' => 'Get the integer value of a variable using the optional base for the conversion',
+ ),
+ 'floatval' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'mixed var',
+ 'description' => 'Get the float value of a variable',
+ ),
+ 'strval' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed var',
+ 'description' => 'Get the string value of a variable',
+ ),
+ 'is_null' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is null',
+ ),
+ 'is_resource' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is a resource',
+ ),
+ 'is_bool' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is a boolean',
+ ),
+ 'is_long' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is a long (integer)',
+ ),
+ 'is_float' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is float point',
+ ),
+ 'is_string' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is a string',
+ ),
+ 'is_array' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is an array',
+ ),
+ 'is_object' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var',
+ 'description' => 'Returns true if variable is an object',
+ ),
+ 'is_numeric' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed value',
+ 'description' => 'Returns true if value is a number or a numeric string',
+ ),
+ 'is_scalar' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed value',
+ 'description' => 'Returns true if value is a scalar',
+ ),
+ 'is_callable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed var [, bool syntax_only [, string callable_name]]',
+ 'description' => 'Returns true if var is callable.',
+ ),
+ 'version_compare' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string ver1, string ver2 [, string oper]',
+ 'description' => 'Compares two "PHP-standardized" version number strings',
+ ),
+ 'exec' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string command [, array &output [, int &return_value]]',
+ 'description' => 'Execute an external program',
+ ),
+ 'system' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string command [, int &return_value]',
+ 'description' => 'Execute an external program and display output',
+ ),
+ 'passthru' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string command [, int &return_value]',
+ 'description' => 'Execute an external program and display raw output',
+ ),
+ 'escapeshellcmd' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string command',
+ 'description' => 'Escape shell metacharacters',
+ ),
+ 'escapeshellarg' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string arg',
+ 'description' => 'Quote and escape an argument for use in a shell command',
+ ),
+ 'shell_exec' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string cmd',
+ 'description' => 'Execute command via shell and return complete output as string',
+ ),
+ 'proc_nice' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int priority',
+ 'description' => 'Change the priority of the current process',
+ ),
+ 'constant' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string const_name',
+ 'description' => 'Given the name of a constant this function will return the constants associated value',
+ ),
+ 'inet_ntop' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string in_addr',
+ 'description' => 'Converts a packed inet address to a human readable IP address string',
+ ),
+ 'inet_pton' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string ip_address',
+ 'description' => 'Converts a human readable IP address to a packed binary string',
+ ),
+ 'ip2long' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string ip_address',
+ 'description' => 'Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address',
+ ),
+ 'long2ip' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int proper_address',
+ 'description' => 'Converts an (IPv4) Internet network address into a string in Internet standard dotted format',
+ ),
+ 'getenv' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string varname',
+ 'description' => 'Get the value of an environment variable',
+ ),
+ 'putenv' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string setting',
+ 'description' => 'Set the value of an environment variable',
+ ),
+ 'getopt' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string options [, array longopts]',
+ 'description' => 'Get options from the command line argument list',
+ ),
+ 'flush' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Flush the output buffer',
+ ),
+ 'sleep' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int seconds',
+ 'description' => 'Delay for a given number of seconds',
+ ),
+ 'usleep' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int micro_seconds',
+ 'description' => 'Delay for a given number of micro seconds',
+ ),
+ 'time_nanosleep' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'long seconds, long nanoseconds',
+ 'description' => 'Delay for a number of seconds and nano seconds',
+ ),
+ 'time_sleep_until' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'float timestamp',
+ 'description' => 'Make the script sleep until the specified time',
+ ),
+ 'get_current_user' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Get the name of the owner of the current PHP script',
+ ),
+ 'get_cfg_var' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string option_name',
+ 'description' => 'Get the value of a PHP configuration option',
+ ),
+ 'set_magic_quotes_runtime' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int new_setting',
+ 'description' => 'Set the current active configuration setting of magic_quotes_runtime and return previous',
+ ),
+ 'get_magic_quotes_runtime' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current active configuration setting of magic_quotes_runtime',
+ ),
+ 'get_magic_quotes_gpc' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the current active configuration setting of magic_quotes_gpc',
+ ),
+ 'error_log' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string message [, int message_type [, string destination [, string extra_headers]]]',
+ 'description' => 'Send an error message somewhere',
+ ),
+ 'call_user_func' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string function_name [, mixed parmeter] [, mixed ...]',
+ 'description' => 'Call a user function which is the first parameter',
+ ),
+ 'call_user_func_array' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string function_name, array parameters',
+ 'description' => 'Call a user function which is the first parameter with the arguments contained in array',
+ ),
+ 'call_user_method' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string method_name, mixed object [, mixed parameter] [, mixed ...]',
+ 'description' => 'Call a user method on a specific object or class',
+ ),
+ 'call_user_method_array' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string method_name, mixed object, array params',
+ 'description' => 'Call a user method on a specific object or class using a parameter array',
+ ),
+ 'register_shutdown_function' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string function_name',
+ 'description' => 'Register a user-level function to be called on request termination',
+ ),
+ 'highlight_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string file_name [, bool return] ',
+ 'description' => 'Syntax highlight a source file',
+ ),
+ 'php_strip_whitespace' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string file_name',
+ 'description' => 'Return source with stripped comments and whitespace',
+ ),
+ 'highlight_string' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string string [, bool return] ',
+ 'description' => 'Syntax highlight a string or optionally return it',
+ ),
+ 'ini_get' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string varname',
+ 'description' => 'Get a configuration option',
+ ),
+ 'ini_get_all' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string extension]',
+ 'description' => 'Get all configuration options',
+ ),
+ 'ini_set' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string varname, string newvalue',
+ 'description' => 'Set a configuration option, returns false on error and the old value of the configuration option on success',
+ ),
+ 'ini_restore' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string varname',
+ 'description' => 'Restore the value of a configuration option specified by varname',
+ ),
+ 'set_include_path' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string new_include_path',
+ 'description' => 'Sets the include_path configuration option',
+ ),
+ 'get_include_path' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get the current include_path configuration option',
+ ),
+ 'restore_include_path' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Restore the value of the include_path configuration option',
+ ),
+ 'print_r' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'mixed var [, bool return]',
+ 'description' => 'Prints out or returns information about the specified variable',
+ ),
+ 'connection_aborted' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns true if client disconnected',
+ ),
+ 'connection_status' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Returns the connection status bitfield',
+ ),
+ 'ignore_user_abort' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'bool value',
+ 'description' => 'Set whether we want to ignore a user abort event or not',
+ ),
+ 'getservbyname' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string service, string protocol',
+ 'description' => 'Returns port associated with service. Protocol must be "tcp" or "udp"',
+ ),
+ 'getservbyport' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int port, string protocol',
+ 'description' => 'Returns service name associated with port. Protocol must be "tcp" or "udp"',
+ ),
+ 'getprotobyname' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string name',
+ 'description' => 'Returns protocol number associated with name as per /etc/protocols',
+ ),
+ 'getprotobynumber' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int proto',
+ 'description' => 'Returns protocol name associated with protocol number proto',
+ ),
+ 'register_tick_function' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string function_name [, mixed arg [, mixed ... ]]',
+ 'description' => 'Registers a tick callback function',
+ ),
+ 'unregister_tick_function' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string function_name',
+ 'description' => 'Unregisters a tick callback function',
+ ),
+ 'is_uploaded_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string path',
+ 'description' => 'Check if file was created by rfc1867 upload',
+ ),
+ 'move_uploaded_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string path, string new_path',
+ 'description' => 'Move a file if and only if it was created by an upload',
+ ),
+ 'parse_ini_file' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename [, bool process_sections]',
+ 'description' => 'Parse configuration file',
+ ),
+ 'import_request_variables' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string types [, string prefix]',
+ 'description' => 'Import GET/POST/Cookie variables into the global scope',
+ ),
+ 'define_syslog_variables' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Initializes all syslog-related variables',
+ ),
+ 'openlog' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string ident, int option, int facility',
+ 'description' => 'Open connection to system logger',
+ ),
+ 'closelog' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Close connection to system logger',
+ ),
+ 'syslog' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int priority, string message',
+ 'description' => 'Generate a system log message',
+ ),
+ 'phpinfo' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int what]',
+ 'description' => 'Output a page of useful information about PHP and the current request',
+ ),
+ 'phpversion' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string extension]',
+ 'description' => 'Return the current PHP version',
+ ),
+ 'phpcredits' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int flag]',
+ 'description' => 'Prints the list of people who\'ve contributed to the PHP project',
+ ),
+ 'php_logo_guid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return the special ID used to request the PHP logo in phpinfo screens',
+ ),
+ 'php_real_logo_guid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return the special ID used to request the PHP logo in phpinfo screens',
+ ),
+ 'php_egg_logo_guid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return the special ID used to request the PHP logo in phpinfo screens',
+ ),
+ 'zend_logo_guid' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return the special ID used to request the Zend logo in phpinfo screens',
+ ),
+ 'php_sapi_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return the current SAPI module name',
+ ),
+ 'php_uname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return information about the system PHP was built on',
+ ),
+ 'php_ini_scanned_files' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return comma-separated string of .ini files parsed from the additional ini dir',
+ ),
+ 'levenshtein' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2',
+ 'description' => 'Calculate Levenshtein distance between two strings',
+ ),
+ 'lcg_value' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns a value from the combined linear congruential generator',
+ ),
+ 'http_build_query' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'mixed formdata [, string prefix [, string arg_separator]]',
+ 'description' => 'Generates a form-encoded query string from an associative array or object.',
+ ),
+ 'microtime' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '[bool get_as_float]',
+ 'description' => 'Returns either a string or a float containing the current time in seconds and microseconds',
+ ),
+ 'gettimeofday' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[bool get_as_float]',
+ 'description' => 'Returns the current time as array',
+ ),
+ 'getrusage' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[int who]',
+ 'description' => 'Returns an array of usage statistics',
+ ),
+ 'metaphone' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string text, int phones',
+ 'description' => 'Break english phrases down into their phonemes',
+ ),
+ 'htmlspecialchars' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string [, int quote_style]',
+ 'description' => 'Convert special HTML entities back to characters',
+ ),
+ 'html_entity_decode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string [, int quote_style][, string charset]',
+ 'description' => 'Convert all HTML entities to their applicable characters',
+ ),
+ 'htmlentities' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string string [, int quote_style][, string charset]',
+ 'description' => 'Convert all applicable characters to HTML entities',
+ ),
+ 'get_html_translation_table' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[int table [, int quote_style]]',
+ 'description' => 'Returns the internal translation table used by htmlspecialchars and htmlentities',
+ ),
+ 'stream_bucket_make_writeable' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'resource brigade',
+ 'description' => 'Return a bucket object from the brigade for operating on',
+ ),
+ 'stream_bucket_prepend' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource brigade, resource bucket',
+ 'description' => 'Prepend bucket to brigade',
+ ),
+ 'stream_bucket_append' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'resource brigade, resource bucket',
+ 'description' => 'Append bucket to brigade',
+ ),
+ 'stream_bucket_new' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource stream, string buffer',
+ 'description' => 'Create a new bucket for use on the current stream',
+ ),
+ 'stream_get_filters' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns a list of registered filters',
+ ),
+ 'stream_filter_register' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filtername, string classname',
+ 'description' => 'Registers a custom filter handler class',
+ ),
+ 'sha1' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str [, bool raw_output]',
+ 'description' => 'Calculate the sha1 hash of a string',
+ ),
+ 'sha1_file' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename [, bool raw_output]',
+ 'description' => 'Calculate the sha1 hash of given filename',
+ ),
+ 'image_type_to_mime_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int imagetype',
+ 'description' => 'Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype',
+ ),
+ 'image_type_to_extension' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int imagetype [, bool include_dot]',
+ 'description' => 'Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype',
+ ),
+ 'getimagesize' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string imagefile [, array info]',
+ 'description' => 'Get the size of an image as 4-element array',
+ ),
+ 'uniqid' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string prefix , bool more_entropy]',
+ 'description' => 'Generates a unique ID',
+ ),
+ 'parse_url' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string url, [int url_component]',
+ 'description' => 'Parse a URL and return its components',
+ ),
+ 'urlencode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'URL-encodes string',
+ ),
+ 'urldecode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Decodes URL-encoded string',
+ ),
+ 'rawurlencode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'URL-encodes string',
+ ),
+ 'rawurldecode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string str',
+ 'description' => 'Decodes URL-encodes string',
+ ),
+ 'get_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string url',
+ 'description' => 'fetches all the headers sent by the server in response to a HTTP request',
+ ),
+ 'uuencode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'uuencode a string',
+ ),
+ 'uudecode' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string data',
+ 'description' => 'decode a uuencoded string',
+ ),
+ 'flock' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fp, int operation [, int &wouldblock]',
+ 'description' => 'Portable file locking',
+ ),
+ 'get_meta_tags' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename [, bool use_include_path]',
+ 'description' => 'Extracts all meta tag content attributes from a file and returns an array',
+ ),
+ 'file_get_contents' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]]',
+ 'description' => 'Read the entire file into a string',
+ ),
+ 'file_put_contents' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string file, mixed data [, int flags [, resource context]]',
+ 'description' => 'Write/Create a file with contents data and return the number of bytes written',
+ ),
+ 'file' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename [, int flags[, resource context]]',
+ 'description' => 'Read entire file into an array',
+ ),
+ 'tempnam' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string dir, string prefix',
+ 'description' => 'Create a unique filename in a directory',
+ ),
+ 'tmpfile' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'void',
+ 'description' => 'Create a temporary file that will be deleted automatically after use',
+ ),
+ 'fopen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string filename, string mode [, bool use_include_path [, resource context]]',
+ 'description' => 'Open a file or a URL and return a file pointer',
+ ),
+ 'fclose' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fp',
+ 'description' => 'Close an open file pointer',
+ ),
+ 'popen' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string command, string mode',
+ 'description' => 'Execute a command and open either a read or a write pipe to it',
+ ),
+ 'pclose' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp',
+ 'description' => 'Close a file pointer opened by popen()',
+ ),
+ 'feof' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fp',
+ 'description' => 'Test for end-of-file on a file pointer',
+ ),
+ 'fgets' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fp[, int length]',
+ 'description' => 'Get a line from file pointer',
+ ),
+ 'fgetc' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fp',
+ 'description' => 'Get a character from file pointer',
+ ),
+ 'fgetss' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fp [, int length, string allowable_tags]',
+ 'description' => 'Get a line from file pointer and strip HTML tags',
+ ),
+ 'fscanf' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource stream, string format [, string ...]',
+ 'description' => 'Implements a mostly ANSI compatible fscanf()',
+ ),
+ 'fwrite' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp, string str [, int length]',
+ 'description' => 'Binary-safe file write',
+ ),
+ 'fflush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fp',
+ 'description' => 'Flushes output',
+ ),
+ 'rewind' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fp',
+ 'description' => 'Rewind the position of a file pointer',
+ ),
+ 'ftell' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp',
+ 'description' => 'Get file pointer\'s read/write position',
+ ),
+ 'fseek' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp, int offset [, int whence]',
+ 'description' => 'Seek on a file pointer',
+ ),
+ 'mkdir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string pathname [, int mode [, bool recursive [, resource context]]]',
+ 'description' => 'Create a directory',
+ ),
+ 'rmdir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string dirname[, resource context]',
+ 'description' => 'Remove a directory',
+ ),
+ 'readfile' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string filename [, bool use_include_path[, resource context]]',
+ 'description' => 'Output a file or a URL',
+ ),
+ 'umask' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int mask]',
+ 'description' => 'Return or change the umask',
+ ),
+ 'fpassthru' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp',
+ 'description' => 'Output all remaining data from a file pointer',
+ ),
+ 'rename' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string old_name, string new_name[, resource context]',
+ 'description' => 'Rename a file',
+ ),
+ 'unlink' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename[, context context]',
+ 'description' => 'Delete a file',
+ ),
+ 'ftruncate' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource fp, int size',
+ 'description' => 'Truncate file to \'size\' length',
+ ),
+ 'fstat' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource fp',
+ 'description' => 'Stat() on a filehandle',
+ ),
+ 'copy' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string source_file, string destination_file',
+ 'description' => 'Copy a file',
+ ),
+ 'fread' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource fp, int length',
+ 'description' => 'Binary-safe file read',
+ ),
+ 'fputcsv' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource fp, array fields [, string delimiter [, string enclosure]]',
+ 'description' => 'Format line as CSV and write to file pointer',
+ ),
+ 'fgetcsv' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'resource fp [,int length [, string delimiter [, string enclosure]]]',
+ 'description' => 'Get line from file pointer and parse for CSV fields',
+ ),
+ 'realpath' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string path',
+ 'description' => 'Return the resolved path',
+ ),
+ 'fnmatch' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string pattern, string filename [, int flags]',
+ 'description' => 'Match filename against pattern',
+ ),
+ 'xmlwriter_set_indent' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, bool indent',
+ 'description' => 'Toggle indentation on/off - returns FALSE on error',
+ ),
+ 'xmlwriter_set_indent_string' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string indentString',
+ 'description' => 'Set string used for indenting - returns FALSE on error',
+ ),
+ 'xmlwriter_start_attribute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name',
+ 'description' => 'Create start attribute - returns FALSE on error',
+ ),
+ 'xmlwriter_end_attribute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End attribute - returns FALSE on error',
+ ),
+ 'xmlwriter_start_attribute_ns' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string prefix, string name, string uri',
+ 'description' => 'Create start namespaced attribute - returns FALSE on error',
+ ),
+ 'xmlwriter_write_attribute' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string content',
+ 'description' => 'Write full attribute - returns FALSE on error',
+ ),
+ 'xmlwriter_write_attribute_ns' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string prefix, string name, string uri, string content',
+ 'description' => 'Write full namespaced attribute - returns FALSE on error',
+ ),
+ 'xmlwriter_start_element' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name',
+ 'description' => 'Create start element tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_element_ns' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string prefix, string name, string uri',
+ 'description' => 'Create start namespaced element tag - returns FALSE on error',
+ ),
+ 'xmlwriter_end_element' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current element - returns FALSE on error',
+ ),
+ 'xmlwriter_write_element' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string content',
+ 'description' => 'Write full element tag - returns FALSE on error',
+ ),
+ 'xmlwriter_write_element_ns' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string prefix, string name, string uri, string content',
+ 'description' => 'Write full namesapced element tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_pi' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string target',
+ 'description' => 'Create start PI tag - returns FALSE on error',
+ ),
+ 'xmlwriter_end_pi' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current PI - returns FALSE on error',
+ ),
+ 'xmlwriter_write_pi' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string target, string content',
+ 'description' => 'Write full PI tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_cdata' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'Create start CDATA tag - returns FALSE on error',
+ ),
+ 'xmlwriter_end_cdata' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current CDATA - returns FALSE on error',
+ ),
+ 'xmlwriter_write_cdata' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string content',
+ 'description' => 'Write full CDATA tag - returns FALSE on error',
+ ),
+ 'xmlwriter_text' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string content',
+ 'description' => 'Write text - returns FALSE on error',
+ ),
+ 'xmlwriter_start_comment' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'Create start comment - returns FALSE on error',
+ ),
+ 'xmlwriter_end_comment' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'Create end comment - returns FALSE on error',
+ ),
+ 'xmlwriter_write_comment' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string content',
+ 'description' => 'Write full comment tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_document' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string version, string encoding, string standalone',
+ 'description' => 'Create document tag - returns FALSE on error',
+ ),
+ 'xmlwriter_end_document' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current document - returns FALSE on error',
+ ),
+ 'xmlwriter_start_dtd' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string pubid, string sysid',
+ 'description' => 'Create start DTD tag - returns FALSE on error',
+ ),
+ 'xmlwriter_end_dtd' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current DTD - returns FALSE on error',
+ ),
+ 'xmlwriter_write_dtd' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string pubid, string sysid, string subset',
+ 'description' => 'Write full DTD tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_dtd_element' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name',
+ 'description' => 'Create start DTD element - returns FALSE on error',
+ ),
+ 'xmlwriter_end_dtd_element' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current DTD element - returns FALSE on error',
+ ),
+ 'xmlwriter_write_dtd_element' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string content',
+ 'description' => 'Write full DTD element tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_dtd_attlist' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name',
+ 'description' => 'Create start DTD AttList - returns FALSE on error',
+ ),
+ 'xmlwriter_end_dtd_attlist' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current DTD AttList - returns FALSE on error',
+ ),
+ 'xmlwriter_write_dtd_attlist' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string content',
+ 'description' => 'Write full DTD AttList tag - returns FALSE on error',
+ ),
+ 'xmlwriter_start_dtd_entity' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, bool isparam',
+ 'description' => 'Create start DTD Entity - returns FALSE on error',
+ ),
+ 'xmlwriter_end_dtd_entity' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter',
+ 'description' => 'End current DTD Entity - returns FALSE on error',
+ ),
+ 'xmlwriter_write_dtd_entity' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource xmlwriter, string name, string content',
+ 'description' => 'Write full DTD Entity tag - returns FALSE on error',
+ ),
+ 'xmlwriter_open_uri' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'resource xmlwriter, string source',
+ 'description' => 'Create new xmlwriter using source uri for output',
+ ),
+ 'xmlwriter_open_memory' =>
+ array (
+ 'return' => 'resource',
+ 'params' => '',
+ 'description' => 'Create new xmlwriter using memory for string output',
+ ),
+ 'xmlwriter_output_memory' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource xmlwriter [,bool flush]',
+ 'description' => 'Output current buffer as string',
+ ),
+ 'xmlwriter_flush' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'resource xmlwriter [,bool empty]',
+ 'description' => 'Output current buffer',
+ ),
+ 'easter_date' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int year]',
+ 'description' => 'Return the timestamp of midnight on Easter of a given year (defaults to current year)',
+ ),
+ 'easter_days' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int year, [int method]]',
+ 'description' => 'Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)',
+ ),
+ 'cal_info' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int calendar',
+ 'description' => 'Returns information about a particular calendar',
+ ),
+ 'cal_days_in_month' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int calendar, int month, int year',
+ 'description' => 'Returns the number of days in a month for a given year and calendar',
+ ),
+ 'cal_to_jd' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int calendar, int month, int day, int year',
+ 'description' => 'Converts from a supported calendar to Julian Day Count',
+ ),
+ 'cal_from_jd' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int jd, int calendar',
+ 'description' => 'Converts from Julian Day Count to a supported calendar and return extended information',
+ ),
+ 'jdtogregorian' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int juliandaycount',
+ 'description' => 'Converts a julian day count to a gregorian calendar date',
+ ),
+ 'gregoriantojd' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int month, int day, int year',
+ 'description' => 'Converts a gregorian calendar date to julian day count',
+ ),
+ 'jdtojulian' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int juliandaycount',
+ 'description' => 'Convert a julian day count to a julian calendar date',
+ ),
+ 'juliantojd' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int month, int day, int year',
+ 'description' => 'Converts a julian calendar date to julian day count',
+ ),
+ 'jdtojewish' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int juliandaycount [, bool hebrew [, int fl]]',
+ 'description' => 'Converts a julian day count to a jewish calendar date',
+ ),
+ 'jewishtojd' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int month, int day, int year',
+ 'description' => 'Converts a jewish calendar date to a julian day count',
+ ),
+ 'jdtofrench' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int juliandaycount',
+ 'description' => 'Converts a julian day count to a french republic calendar date',
+ ),
+ 'frenchtojd' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int month, int day, int year',
+ 'description' => 'Converts a french republic calendar date to julian day count',
+ ),
+ 'jddayofweek' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int juliandaycount [, int mode]',
+ 'description' => 'Returns name or number of day of week from julian day count',
+ ),
+ 'jdmonthname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int juliandaycount, int mode',
+ 'description' => 'Returns name of month for julian day count',
+ ),
+ 'unixtojd' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int timestamp]',
+ 'description' => 'Convert UNIX timestamp to Julian Day',
+ ),
+ 'jdtounix' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int jday',
+ 'description' => 'Convert Julian Day to UNIX timestamp',
+ ),
+ 'mime_content_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename|resource stream',
+ 'description' => 'Return content-type for file',
+ ),
+ 'exif_tagname' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'index',
+ 'description' => 'Get headername for index or false if not defined',
+ ),
+ 'exif_read_data' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string filename [, sections_needed [, sub_arrays[, read_thumbnail]]]',
+ 'description' => 'Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails',
+ ),
+ 'exif_thumbnail' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string filename [, &width, &height [, &imagetype]]',
+ 'description' => 'Reads the embedded thumbnail',
+ ),
+ 'exif_imagetype' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string imagefile',
+ 'description' => 'Get the type of an image',
+ ),
+ 'ming_setscale' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int scale',
+ 'description' => 'Set scale (?)',
+ ),
+ 'ming_useswfversion' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int version',
+ 'description' => 'Use SWF version (?)',
+ ),
+ 'ming_useconstants' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int use',
+ 'description' => 'Use constant pool (?)',
+ ),
+ 'swfaction::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string',
+ 'description' => 'Creates a new SWFAction object, compiling the given script',
+ ),
+ 'swfbitmap::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed file [, mixed maskfile]',
+ 'description' => 'Creates a new SWFBitmap object from jpg (with optional mask) or dbl file',
+ ),
+ 'swfbitmap::getWidth' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the width of this bitmap',
+ ),
+ 'swfbitmap::getHeight' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the height of this bitmap',
+ ),
+ 'swfbutton::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates a new SWFButton object',
+ ),
+ 'swfbutton::setHit' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFCharacter',
+ 'description' => 'Sets the character for this button\'s hit test state',
+ ),
+ 'swfbutton::setOver' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFCharacter',
+ 'description' => 'Sets the character for this button\'s over state',
+ ),
+ 'swfbutton::setUp' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFCharacter',
+ 'description' => 'Sets the character for this button\'s up state',
+ ),
+ 'swfbutton::setDown' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFCharacter',
+ 'description' => 'Sets the character for this button\'s down state',
+ ),
+ 'swfbutton::addShape' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFCharacter, int flags',
+ 'description' => 'Sets the character to display for the condition described in flags',
+ ),
+ 'swfbutton::setMenu' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int flag',
+ 'description' => 'enable track as menu button behaviour',
+ ),
+ 'swfbutton::setAction' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFAction',
+ 'description' => 'Sets the action to perform when button is pressed',
+ ),
+ 'swfbutton::addASound' =>
+ array (
+ 'return' => 'SWFSoundInstance',
+ 'params' => 'SWFSound sound, int flags',
+ 'description' => 'associates a sound with a button transitionNOTE: the transitions are all wrong _UP, _OVER, _DOWN _HIT',
+ ),
+ 'swfbutton::addAction' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFAction, int flags',
+ 'description' => 'Sets the action to perform when conditions described in flags is met',
+ ),
+ 'ming_keypress' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str',
+ 'description' => 'Returns the action flag for keyPress(char)',
+ ),
+ 'swfdisplayitem::moveTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int x, int y',
+ 'description' => 'Moves this SWFDisplayItem to movie coordinates (x, y)',
+ ),
+ 'swfdisplayitem::move' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float dx, float dy',
+ 'description' => 'Displaces this SWFDisplayItem by (dx, dy) in movie coordinates',
+ ),
+ 'swfdisplayitem::scaleTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float xScale [, float yScale]',
+ 'description' => 'Scales this SWFDisplayItem by xScale in the x direction, yScale in the y, or both to xScale if only one arg',
+ ),
+ 'swfdisplayitem::scale' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float xScale, float yScale',
+ 'description' => 'Multiplies this SWFDisplayItem\'s current x scale by xScale, its y scale by yScale',
+ ),
+ 'swfdisplayitem::rotateTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float degrees',
+ 'description' => 'Rotates this SWFDisplayItem the given (clockwise) degrees from its original orientation',
+ ),
+ 'swfdisplayitem::rotate' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float degrees',
+ 'description' => 'Rotates this SWFDisplayItem the given (clockwise) degrees from its current orientation',
+ ),
+ 'swfdisplayitem::skewXTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float xSkew',
+ 'description' => 'Sets this SWFDisplayItem\'s x skew value to xSkew',
+ ),
+ 'swfdisplayitem::skewX' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float xSkew',
+ 'description' => 'Adds xSkew to this SWFDisplayItem\'s x skew value',
+ ),
+ 'swfdisplayitem::skewYTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float ySkew',
+ 'description' => 'Sets this SWFDisplayItem\'s y skew value to ySkew',
+ ),
+ 'swfdisplayitem::skewY' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float ySkew',
+ 'description' => 'Adds ySkew to this SWFDisplayItem\'s y skew value',
+ ),
+ 'swfdisplayitem::setMatrix' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float a, float b, float c, float d, float x, float y',
+ 'description' => 'Sets the item\'s transform matrix',
+ ),
+ 'swfdisplayitem::setDepth' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int depth',
+ 'description' => 'Sets this SWFDisplayItem\'s z-depth to depth. Items with higher depth values are drawn on top of those with lower values',
+ ),
+ 'swfdisplayitem::setRatio' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float ratio',
+ 'description' => 'Sets this SWFDisplayItem\'s ratio to ratio. Obviously only does anything if displayitem was created from an SWFMorph',
+ ),
+ 'swfdisplayitem::addColor' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int r, int g, int b [, int a]',
+ 'description' => 'Sets the add color part of this SWFDisplayItem\'s CXform to (r, g, b [, a]), a defaults to 0',
+ ),
+ 'swfdisplayitem::multColor' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float r, float g, float b [, float a]',
+ 'description' => 'Sets the multiply color part of this SWFDisplayItem\'s CXform to (r, g, b [, a]), a defaults to 1.0',
+ ),
+ 'swfdisplayitem::setName' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string name',
+ 'description' => 'Sets this SWFDisplayItem\'s name to name',
+ ),
+ 'swfdisplayitem::addAction' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFAction, int flags',
+ 'description' => 'Adds this SWFAction to the given SWFSprite instance',
+ ),
+ 'swfdisplayitem::setMaskLevel' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int level',
+ 'description' => 'defines a MASK layer at level',
+ ),
+ 'swfdisplayitem::endMask' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'another way of defining a MASK layer',
+ ),
+ 'swffill::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates a new SWFFill object',
+ ),
+ 'swffill::moveTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float x, float y',
+ 'description' => 'Moves this SWFFill to shape coordinates (x,y)',
+ ),
+ 'swffill::scaleTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float xScale [, float yScale]',
+ 'description' => 'Scales this SWFFill by xScale in the x direction, yScale in the y, or both to xScale if only one arg',
+ ),
+ 'swffill::rotateTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float degrees',
+ 'description' => 'Rotates this SWFFill the given (clockwise) degrees from its original orientation',
+ ),
+ 'swffill::skewXTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float xSkew',
+ 'description' => 'Sets this SWFFill\'s x skew value to xSkew',
+ ),
+ 'swffill::skewYTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float ySkew',
+ 'description' => 'Sets this SWFFill\'s y skew value to ySkew',
+ ),
+ 'swffontcha::raddChars' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string',
+ 'description' => 'adds characters to a font for exporting font',
+ ),
+ 'swffontchar::addChars' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string',
+ 'description' => 'adds characters to a font for exporting font',
+ ),
+ 'swffont::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string filename',
+ 'description' => 'Creates a new SWFFont object from given file',
+ ),
+ 'swffont::getWidth' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'string str',
+ 'description' => 'Calculates the width of the given string in this font at full height',
+ ),
+ 'swffont::getUTF8Width' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string',
+ 'description' => 'Calculates the width of the given string in this font at full height',
+ ),
+ 'swffont::getWideWidth' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string',
+ 'description' => 'Calculates the width of the given string in this font at full height',
+ ),
+ 'swffont::getAscent' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the ascent of the font, or 0 if not available',
+ ),
+ 'swffont::getDescent' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the descent of the font, or 0 if not available',
+ ),
+ 'swffont::getLeading' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the leading of the font, or 0 if not available',
+ ),
+ 'swffont::addChars' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string',
+ 'description' => 'adds characters to a font required within textfields',
+ ),
+ 'swffont::getShape' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'code',
+ 'description' => 'Returns the glyph shape of a char as a text string',
+ ),
+ 'swfgradient::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates a new SWFGradient object',
+ ),
+ 'swfgradient::addEntry' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float ratio, int r, int g, int b [, int a]',
+ 'description' => 'Adds given entry to the gradient',
+ ),
+ 'swfmorph::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates a new SWFMorph object',
+ ),
+ 'swfmorph::getShape1' =>
+ array (
+ 'return' => 'object',
+ 'params' => '',
+ 'description' => 'Return\'s this SWFMorph\'s start shape object',
+ ),
+ 'swfmorph::getShape2' =>
+ array (
+ 'return' => 'object',
+ 'params' => '',
+ 'description' => 'Return\'s this SWFMorph\'s start shape object',
+ ),
+ 'swfsound::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string filename, int flags',
+ 'description' => 'Creates a new SWFSound object from given file',
+ ),
+ 'swfvideostream_init' =>
+ array (
+ 'return' => 'class',
+ 'params' => '[file]',
+ 'description' => 'Returns a SWVideoStream object',
+ ),
+ 'swfprebuiltclip_init' =>
+ array (
+ 'return' => 'class',
+ 'params' => '[file]',
+ 'description' => 'Returns a SWFPrebuiltClip object',
+ ),
+ 'swfmovie::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int version',
+ 'description' => 'Creates swfmovie object according to the passed version',
+ ),
+ 'swfmovie::nextframe' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'swfmovie::labelframe' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFBlock',
+ 'description' => '',
+ ),
+ 'swfmovie::add' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'object SWFBlock',
+ 'description' => '',
+ ),
+ 'swfmovie::output' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int compression]',
+ 'description' => '',
+ ),
+ 'swfmovie::saveToFile' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'stream x [, int compression]',
+ 'description' => '',
+ ),
+ 'swfmovie::save' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'mixed where [, int compression]',
+ 'description' => 'Saves the movie. \'where\' can be stream and the movie will be saved there otherwise it is treated as string and written in file with that name',
+ ),
+ 'swfmovie::setBackground' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int r, int g, int b',
+ 'description' => 'Sets background color (r,g,b)',
+ ),
+ 'swfmovie::setRate' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float rate',
+ 'description' => 'Sets movie rate',
+ ),
+ 'swfmovie::setDimension' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float x, float y',
+ 'description' => 'Sets movie dimension',
+ ),
+ 'swfmovie::setFrames' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int frames',
+ 'description' => 'Sets number of frames',
+ ),
+ 'swfmovie::streamMP3' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed file',
+ 'description' => 'Sets sound stream of the SWF movie. The parameter can be stream or string.',
+ ),
+ 'swfshape::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates a new SWFShape object',
+ ),
+ 'swfshape::setline' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int width, int r, int g, int b [, int a]',
+ 'description' => 'Sets the current line style for this SWFShape',
+ ),
+ 'swfshape::addfill' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'mixed arg1, int arg2, [int b [, int a]]',
+ 'description' => 'Returns a fill object, for use with swfshape_setleftfill and swfshape_setrightfill. If 1 or 2 parameter(s) is (are) passed first should be object (from gradient class) and the second int (flags). Gradient fill is performed. If 3 or 4 parameters are passed : r, g, b [, a]. Solid fill is performed.',
+ ),
+ 'swfshape::setleftfill' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int arg1 [, int g ,int b [,int a]]',
+ 'description' => 'Sets the right side fill style to fill in case only one parameter is passed. When 3 or 4 parameters are passed they are treated as : int r, int g, int b, int a . Solid fill is performed in this case before setting right side fill type.',
+ ),
+ 'swfshape::movepento' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float x, float y',
+ 'description' => 'Moves the pen to shape coordinates (x, y)',
+ ),
+ 'swfshape::movepen' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float x, float y',
+ 'description' => 'Moves the pen from its current location by vector (x, y)',
+ ),
+ 'swfshape::drawlineto' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float x, float y',
+ 'description' => 'Draws a line from the current pen position to shape coordinates (x, y) in the current line style',
+ ),
+ 'swfshape::drawline' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float dx, float dy',
+ 'description' => 'Draws a line from the current pen position (x, y) to the point (x+dx, y+dy) in the current line style',
+ ),
+ 'swfshape::drawcurveto' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float ax, float ay, float bx, float by [, float dx, float dy]',
+ 'description' => 'Draws a curve from the current pen position (x,y) to the point (bx, by) in the current line style, using point (ax, ay) as a control point. Or draws a cubic bezier to point (dx, dy) with control points (ax, ay) and (bx, by)',
+ ),
+ 'swfshape::drawcurve' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float adx, float ady, float bdx, float bdy [, float cdx, float cdy]',
+ 'description' => 'Draws a curve from the current pen position (x, y) to the point (x+bdx, y+bdy) in the current line style, using point (x+adx, y+ady) as a control point or draws a cubic bezier to point (x+cdx, x+cdy) with control points (x+adx, y+ady) and (x+bdx, y+bdy)',
+ ),
+ 'swfshape::drawglyph' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'SWFFont font, string character [, int size]',
+ 'description' => 'Draws the first character in the given string into the shape using the glyph definition from the given font',
+ ),
+ 'swfshape::drawcircle' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float r',
+ 'description' => 'Draws a circle of radius r centered at the current location, in a counter-clockwise fashion',
+ ),
+ 'swfshape::drawarc' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float r, float startAngle, float endAngle',
+ 'description' => 'Draws an arc of radius r centered at the current location, from angle startAngle to angle endAngle measured clockwise from 12 o\'clock',
+ ),
+ 'swfshape::drawcubic' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float bx, float by, float cx, float cy, float dx, float dy',
+ 'description' => 'Draws a cubic bezier curve using the current position and the three given points as control points',
+ ),
+ 'swfsprite::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates a new SWFSprite object',
+ ),
+ 'swfsprite::add' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'object SWFCharacter',
+ 'description' => 'Adds the character to the sprite, returns a displayitem object',
+ ),
+ 'swfsprite::remove' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object SWFDisplayItem',
+ 'description' => 'Remove the named character from the sprite\'s display list',
+ ),
+ 'swfsprite::nextFrame' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Moves the sprite to the next frame',
+ ),
+ 'swfsprite::labelFrame' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string label',
+ 'description' => 'Labels frame',
+ ),
+ 'swfsprite::setFrames' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int frames',
+ 'description' => 'Sets the number of frames in this SWFSprite',
+ ),
+ 'swftext::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Creates new SWFText object',
+ ),
+ 'swftext::setFont' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object font',
+ 'description' => 'Sets this SWFText object\'s current font to given font',
+ ),
+ 'swftext::setHeight' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float height',
+ 'description' => 'Sets this SWFText object\'s current height to given height',
+ ),
+ 'swftext::setSpacing' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float spacing',
+ 'description' => 'Sets this SWFText object\'s current letterspacing to given spacing',
+ ),
+ 'swftext::setColor' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int r, int g, int b [, int a]',
+ 'description' => 'Sets this SWFText object\'s current color to the given color',
+ ),
+ 'swftext::moveTo' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float x, float y',
+ 'description' => 'Moves this SWFText object\'s current pen position to (x, y) in text coordinates',
+ ),
+ 'swftext::addString' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string text',
+ 'description' => 'Writes the given text into this SWFText object at the current pen position, using the current font, height, spacing, and color',
+ ),
+ 'swftext::addUTF8String' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string text',
+ 'description' => 'Writes the given text into this SWFText object at the current pen position,using the current font, height, spacing, and color',
+ ),
+ 'swftext::addWideString' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string text',
+ 'description' => 'Writes the given text into this SWFText object at the current pen position,using the current font, height, spacing, and color',
+ ),
+ 'swftext::getWidth' =>
+ array (
+ 'return' => 'float',
+ 'params' => 'string str',
+ 'description' => 'Calculates the width of the given string in this text objects current font and size',
+ ),
+ 'swftext::getUTF8Width' =>
+ array (
+ 'return' => 'double',
+ 'params' => 'string',
+ 'description' => 'calculates the width of the given string in this text objects current font and size',
+ ),
+ 'swftext::getWideWidth' =>
+ array (
+ 'return' => 'double',
+ 'params' => 'string',
+ 'description' => 'calculates the width of the given string in this text objects current font and size',
+ ),
+ 'swftext::getAscent' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the ascent of the current font at its current size, or 0 if not available',
+ ),
+ 'swftext::getDescent' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the descent of the current font at its current size, or 0 if not available',
+ ),
+ 'swftext::getLeading' =>
+ array (
+ 'return' => 'float',
+ 'params' => '',
+ 'description' => 'Returns the leading of the current font at its current size, or 0 if not available',
+ ),
+ 'swftextfield::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int flags]',
+ 'description' => 'Creates a new SWFTextField object',
+ ),
+ 'swftextfield::setFont' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'object font',
+ 'description' => 'Sets the font for this textfield',
+ ),
+ 'swftextfield::setBounds' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float width, float height',
+ 'description' => 'Sets the width and height of this textfield',
+ ),
+ 'swftextfield::align' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int alignment',
+ 'description' => 'Sets the alignment of this textfield',
+ ),
+ 'swftextfield::setHeight' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float height',
+ 'description' => 'Sets the font height of this textfield',
+ ),
+ 'swftextfield::setLeftMargin' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float margin',
+ 'description' => 'Sets the left margin of this textfield',
+ ),
+ 'swftextfield::setRightMargin' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float margin',
+ 'description' => 'Sets the right margin of this textfield',
+ ),
+ 'swftextfield::setMargins' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float left, float right',
+ 'description' => 'Sets both margins of this textfield',
+ ),
+ 'swftextfield::setIndentation' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float indentation',
+ 'description' => 'Sets the indentation of the first line of this textfield',
+ ),
+ 'swftextfield::setLineSpacing' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float space',
+ 'description' => 'Sets the line spacing of this textfield',
+ ),
+ 'swftextfield::setColor' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int r, int g, int b [, int a]',
+ 'description' => 'Sets the color of this textfield',
+ ),
+ 'swftextfield::setName' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string var_name',
+ 'description' => 'Sets the variable name of this textfield',
+ ),
+ 'swftextfield::addString' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string str',
+ 'description' => 'Adds the given string to this textfield',
+ ),
+ 'swftextfield::setPadding' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'float padding',
+ 'description' => 'Sets the padding of this textfield',
+ ),
+ 'swftextfield::addChars' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string',
+ 'description' => 'adds characters to a font that will be available within a textfield',
+ ),
+ 'SplObjectStorage::attach' =>
+ array (
+ 'return' => 'void',
+ 'params' => '$obj',
+ 'description' => 'Attaches an object to the storage if not yet contained',
+ ),
+ 'SplObjectStorage::detach' =>
+ array (
+ 'return' => 'void',
+ 'params' => '$obj',
+ 'description' => 'Detaches an object from the storage',
+ ),
+ 'SplObjectStorage::contains' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '$obj',
+ 'description' => 'Determine whethe an object is contained in the storage',
+ ),
+ 'SplObjectStorage::count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Determine number of objects in storage',
+ ),
+ 'SplObjectStorage::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'SplObjectStorage::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'SplObjectStorage::key' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'SplObjectStorage::current' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'SplObjectStorage::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'RecursiveIteratorIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind the iterator to the first element of the top level inner iterator.',
+ ),
+ 'RecursiveIteratorIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the current position is valid',
+ ),
+ 'RecursiveIteratorIterator::key' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => 'Access the current key',
+ ),
+ 'RecursiveIteratorIterator::current' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => 'Access the current element value',
+ ),
+ 'RecursiveIteratorIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move forward to the next element',
+ ),
+ 'RecursiveIteratorIterator::getDepth' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get the current depth of the recursive iteration',
+ ),
+ 'RecursiveIteratorIterator::getSubIterator' =>
+ array (
+ 'return' => 'RecursiveIterator',
+ 'params' => '[int level]',
+ 'description' => 'The current active sub iterator or the iterator at specified level',
+ ),
+ 'RecursiveIteratorIterator::getInnerIterator' =>
+ array (
+ 'return' => 'RecursiveIterator',
+ 'params' => '',
+ 'description' => 'The current active sub iterator',
+ ),
+ 'RecursiveIteratorIterator::beginIteration' =>
+ array (
+ 'return' => 'RecursiveIterator',
+ 'params' => '',
+ 'description' => 'Called when iteration begins (after first rewind() call)',
+ ),
+ 'RecursiveIteratorIterator::endIteration' =>
+ array (
+ 'return' => 'RecursiveIterator',
+ 'params' => '',
+ 'description' => 'Called when iteration ends (when valid() first returns false',
+ ),
+ 'RecursiveIteratorIterator::callHasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Called for each element to test whether it has children',
+ ),
+ 'RecursiveIteratorIterator::callGetChildren' =>
+ array (
+ 'return' => 'RecursiveIterator',
+ 'params' => '',
+ 'description' => 'Return children of current element',
+ ),
+ 'RecursiveIteratorIterator::beginChildren' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Called when recursing one level down',
+ ),
+ 'RecursiveIteratorIterator::endChildren' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Called when end recursing one level',
+ ),
+ 'RecursiveIteratorIterator::nextElement' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Called when the next element is available',
+ ),
+ 'RecursiveIteratorIterator::setMaxDepth' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[$max_depth = -1]',
+ 'description' => 'Set the maximum allowed depth (or any depth if pmax_depth = -1]',
+ ),
+ 'RecursiveIteratorIterator::getMaxDepth' =>
+ array (
+ 'return' => 'int|false',
+ 'params' => '',
+ 'description' => 'Return the maximum accepted depth or false if any depth is allowed',
+ ),
+ 'FilterIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'Iterator it',
+ 'description' => 'Create an Iterator from another iterator',
+ ),
+ 'FilterIterator::getInnerIterator' =>
+ array (
+ 'return' => 'Iterator',
+ 'params' => '',
+ 'description' => 'proto Iterator CachingIterator::getInnerIterator()proto Iterator LimitIterator::getInnerIterator()proto Iterator ParentIterator::getInnerIterator()Get the inner iterator',
+ ),
+ 'ParentIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'proto void IteratorIterator::rewind()Rewind the iterator',
+ ),
+ 'FilterIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'proto bool ParentIterator::valid()proto bool IteratorIterator::valid()proto bool NoRewindIterator::valid()Check whether the current element is valid',
+ ),
+ 'FilterIterator::key' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => 'proto mixed CachingIterator::key()proto mixed LimitIterator::key()proto mixed ParentIterator::key()proto mixed IteratorIterator::key()proto mixed NoRewindIterator::key()proto mixed AppendIterator::key()Get the current key',
+ ),
+ 'FilterIterator::current' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => 'proto mixed CachingIterator::current()proto mixed LimitIterator::current()proto mixed ParentIterator::current()proto mixed IteratorIterator::current()proto mixed NoRewindIterator::current()proto mixed AppendIterator::current()Get the current element value',
+ ),
+ 'ParentIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'proto void IteratorIterator::next()proto void NoRewindIterator::next()Move the iterator forward',
+ ),
+ 'FilterIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind the iterator',
+ ),
+ 'FilterIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move the iterator forward',
+ ),
+ 'RecursiveFilterIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'RecursiveIterator it',
+ 'description' => 'Create a RecursiveFilterIterator from a RecursiveIterator',
+ ),
+ 'RecursiveFilterIterator::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the inner iterator\'s current element has children',
+ ),
+ 'RecursiveFilterIterator::getChildren' =>
+ array (
+ 'return' => 'RecursiveFilterIterator',
+ 'params' => '',
+ 'description' => 'Return the inner iterator\'s children contained in a RecursiveFilterIterator',
+ ),
+ 'ParentIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'RecursiveIterator it',
+ 'description' => 'Create a ParentIterator from a RecursiveIterator',
+ ),
+ 'ParentIterator::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the inner iterator\'s current element has children',
+ ),
+ 'ParentIterator::getChildren' =>
+ array (
+ 'return' => 'ParentIterator',
+ 'params' => '',
+ 'description' => 'Return the inner iterator\'s children contained in a ParentIterator',
+ ),
+ 'LimitIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind the iterator to the specified starting offset',
+ ),
+ 'LimitIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the current element is valid',
+ ),
+ 'LimitIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move the iterator forward',
+ ),
+ 'LimitIterator::seek' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int position',
+ 'description' => 'Seek to the given position',
+ ),
+ 'LimitIterator::getPosition' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Return the current position',
+ ),
+ 'CachingIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'Iterator it [, flags = CIT_CALL_TOSTRING]',
+ 'description' => 'Construct a CachingIterator from an Iterator',
+ ),
+ 'CachingIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind the iterator',
+ ),
+ 'CachingIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the current element is valid',
+ ),
+ 'CachingIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move the iterator forward',
+ ),
+ 'CachingIterator::hasNext' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the inner iterator has a valid next element',
+ ),
+ 'CachingIterator::__toString' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return the string representation of the current element',
+ ),
+ 'RecursiveCachingIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'RecursiveIterator it [, flags = CIT_CALL_TOSTRING]',
+ 'description' => 'Create an iterator from a RecursiveIterator',
+ ),
+ 'RecursiveCachingIterator::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether the current element of the inner iterator has children',
+ ),
+ 'RecursiveCachingIterator::getChildren' =>
+ array (
+ 'return' => 'RecursiveCachingIterator',
+ 'params' => '',
+ 'description' => 'Return the inner iterator\'s children as a RecursiveCachingIterator',
+ ),
+ 'IteratorIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'Traversable it',
+ 'description' => 'Create an iterator from anything that is traversable',
+ ),
+ 'NoRewindIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'Iterator it',
+ 'description' => 'Create an iterator from another iterator',
+ ),
+ 'NoRewindIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Prevent a call to inner iterators rewind()',
+ ),
+ 'NoRewindIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Return inner iterators valid()',
+ ),
+ 'NoRewindIterator::key' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => 'Return inner iterators key()',
+ ),
+ 'NoRewindIterator::current' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => '',
+ 'description' => 'Return inner iterators current()',
+ ),
+ 'NoRewindIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Return inner iterators next()',
+ ),
+ 'InfiniteIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'Iterator it',
+ 'description' => 'Create an iterator from another iterator',
+ ),
+ 'InfiniteIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Prevent a call to inner iterators rewind() (internally the current data will be fetched if valid())',
+ ),
+ 'EmptyIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Does nothing',
+ ),
+ 'EmptyIterator::valid' =>
+ array (
+ 'return' => 'false',
+ 'params' => '',
+ 'description' => 'Return false',
+ ),
+ 'EmptyIterator::key' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Throws exception BadMethodCallException',
+ ),
+ 'EmptyIterator::current' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Throws exception BadMethodCallException',
+ ),
+ 'EmptyIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Does nothing',
+ ),
+ 'AppendIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Create an AppendIterator',
+ ),
+ 'AppendIterator::append' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'Iterator it',
+ 'description' => 'Append an iterator',
+ ),
+ 'AppendIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind to the first iterator and rewind the first iterator, too',
+ ),
+ 'AppendIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check if the current state is valid',
+ ),
+ 'AppendIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Forward to next element',
+ ),
+ 'iterator_to_array' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'Traversable it',
+ 'description' => 'Copy the iterator into an array',
+ ),
+ 'iterator_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'Traversable it',
+ 'description' => 'Count the elements in an iterator',
+ ),
+ 'class_parents' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'object instance',
+ 'description' => 'Return an array containing the names of all parent classes',
+ ),
+ 'class_implements' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'mixed what [, bool autoload ]',
+ 'description' => 'Return all classes and interfaces implemented by SPL',
+ ),
+ 'spl_classes' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Return an array containing the names of all clsses and interfaces defined in SPL',
+ ),
+ 'spl_autoload' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string class_name [, string file_extensions]',
+ 'description' => 'Default implementation for __autoload()',
+ ),
+ 'spl_autoload_extensions' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string file_extensions]',
+ 'description' => 'Register and return default file extensions for spl_autoload',
+ ),
+ 'spl_autoload_call' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string class_name',
+ 'description' => 'Try all registerd autoload function to load the requested class',
+ ),
+ 'spl_autoload_register' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[mixed autoload_function = "spl_autoload" [, throw = true]]',
+ 'description' => 'Register given function as __autoload() implementation',
+ ),
+ 'spl_autoload_unregister' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed autoload_function',
+ 'description' => 'Unregister given function as __autoload() implementation',
+ ),
+ 'spl_autoload_functions' =>
+ array (
+ 'return' => 'false|array',
+ 'params' => '',
+ 'description' => 'Return all registered __autoload() functionns',
+ ),
+ 'SimpleXMLIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind to first element',
+ ),
+ 'SimpleXMLIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether iteration is valid',
+ ),
+ 'SimpleXMLIterator::current' =>
+ array (
+ 'return' => 'SimpleXMLIterator',
+ 'params' => '',
+ 'description' => 'Get current element',
+ ),
+ 'SimpleXMLIterator::key' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get name of current child element',
+ ),
+ 'SimpleXMLIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move to next element',
+ ),
+ 'SimpleXMLIterator::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether element has children (elements)',
+ ),
+ 'SimpleXMLIterator::getChildren' =>
+ array (
+ 'return' => 'SimpleXMLIterator',
+ 'params' => '',
+ 'description' => 'Get child element iterator',
+ ),
+ 'SimpleXMLIterator::count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get number of child elements',
+ ),
+ 'DirectoryIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string path',
+ 'description' => 'Cronstructs a new dir iterator from a path.',
+ ),
+ 'DirectoryIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind dir back to the start',
+ ),
+ 'DirectoryIterator::key' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return current dir entry',
+ ),
+ 'DirectoryIterator::current' =>
+ array (
+ 'return' => 'DirectoryIterator',
+ 'params' => '',
+ 'description' => 'Return this (needed for Iterator interface)',
+ ),
+ 'DirectoryIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move to next entry',
+ ),
+ 'DirectoryIterator::valid' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Check whether dir contains more entries',
+ ),
+ 'SplFileInfo::getPath' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return the path',
+ ),
+ 'SplFileInfo::getFilename' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return filename only',
+ ),
+ 'DirectoryIterator::getFilename' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return filename of current dir entry',
+ ),
+ 'SplFileInfo::getPathname' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return path and filename',
+ ),
+ 'RecursiveDirectoryIterator::key' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return getPathname() or getFilename() depending on flags',
+ ),
+ 'RecursiveDirectoryIterator::current' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return getFilename(), getFileInfo() or $this depending on flags',
+ ),
+ 'DirectoryIterator::isDot' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if current entry is \'.\' or \'..\'',
+ ),
+ 'SplFileInfo::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string file_name',
+ 'description' => 'Cronstructs a new SplFileInfo from a path.',
+ ),
+ 'SplFileInfo::getPerms' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get file permissions',
+ ),
+ 'SplFileInfo::getInode' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get file inode',
+ ),
+ 'SplFileInfo::getSize' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get file size',
+ ),
+ 'SplFileInfo::getOwner' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get file owner',
+ ),
+ 'SplFileInfo::getGroup' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get file group',
+ ),
+ 'SplFileInfo::getATime' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get last access time of file',
+ ),
+ 'SplFileInfo::getMTime' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get last modification time of file',
+ ),
+ 'SplFileInfo::getCTime' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get inode modification time of file',
+ ),
+ 'SplFileInfo::getType' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get file type',
+ ),
+ 'SplFileInfo::isWritable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if file can be written',
+ ),
+ 'SplFileInfo::isReadable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if file can be read',
+ ),
+ 'SplFileInfo::isExecutable' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if file is executable',
+ ),
+ 'SplFileInfo::isFile' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if file is a regular file',
+ ),
+ 'SplFileInfo::isDir' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if file is directory',
+ ),
+ 'SplFileInfo::isLink' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Returns true if file is symbolic link',
+ ),
+ 'SplFileInfo::openFile' =>
+ array (
+ 'return' => 'SplFileObject',
+ 'params' => '[string mode = \'r\' [, bool use_include_path [, resource context]]]',
+ 'description' => 'Open the current file',
+ ),
+ 'SplFileInfo::setFileClass' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[string class_name]',
+ 'description' => 'Class to use in openFile()',
+ ),
+ 'SplFileInfo::setInfoClass' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[string class_name]',
+ 'description' => 'Class to use in getFileInfo(), getPathInfo()',
+ ),
+ 'SplFileInfo::getFileInfo' =>
+ array (
+ 'return' => 'SplFileInfo',
+ 'params' => '[string $class_name]',
+ 'description' => 'Get/copy file info',
+ ),
+ 'SplFileInfo::getPathInfo' =>
+ array (
+ 'return' => 'SplFileInfo',
+ 'params' => '[string $class_name]',
+ 'description' => 'Get/copy file info',
+ ),
+ 'RecursiveDirectoryIterator::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string path [, int flags]',
+ 'description' => 'Cronstructs a new dir iterator from a path.',
+ ),
+ 'RecursiveDirectoryIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind dir back to the start',
+ ),
+ 'RecursiveDirectoryIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move to next entry',
+ ),
+ 'RecursiveDirectoryIterator::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[bool $allow_links = false]',
+ 'description' => 'Returns whether current entry is a directory and not \'.\' or \'..\'',
+ ),
+ 'DirectoryIterator::getChildren' =>
+ array (
+ 'return' => 'RecursiveDirectoryIterator',
+ 'params' => '',
+ 'description' => 'Returns an iterator for the current entry if it is a directory',
+ ),
+ 'RecursiveDirectoryIterator::getSubPath' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Get sub path',
+ ),
+ 'RecursiveDirectoryIterator::getSubPathname' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Get sub path and file name',
+ ),
+ 'SplFileObject::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int max_memory]',
+ 'description' => 'Construct a new temp file object',
+ ),
+ 'SplFileObject::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind the file and read the first line',
+ ),
+ 'SplFileObject::getFilename' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return the filename',
+ ),
+ 'SplFileObject::eof' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Return whether end of file is reached',
+ ),
+ 'SplFileObject::valid' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Return !eof()',
+ ),
+ 'SplFileObject::fgets' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Rturn next line from file',
+ ),
+ 'SplFileObject::current' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return current line from file',
+ ),
+ 'SplFileObject::key' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Return line number',
+ ),
+ 'SplFileObject::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Read next line',
+ ),
+ 'SplFileObject::setFlags' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int flags',
+ 'description' => 'Set file handling flags',
+ ),
+ 'SplFileObject::getFlags' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get file handling flags',
+ ),
+ 'SplFileObject::setMaxLineLen' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int max_len',
+ 'description' => 'Set maximum line length',
+ ),
+ 'SplFileObject::getMaxLineLen' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get maximum line length',
+ ),
+ 'SplFileObject::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Return false',
+ ),
+ 'SplFileObject::getChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Read NULL',
+ ),
+ 'SplFileObject::fgetcsv' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[string delimiter [, string enclosure]]',
+ 'description' => 'Return current line as csv',
+ ),
+ 'SplFileObject::flock' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int operation [, int &wouldblock]',
+ 'description' => 'Portable file locking',
+ ),
+ 'SplFileObject::fflush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Flush the file',
+ ),
+ 'SplFileObject::ftell' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Return current file position',
+ ),
+ 'SplFileObject::fseek' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int pos [, int whence = SEEK_SET]',
+ 'description' => 'Return current file position',
+ ),
+ 'SplFileObject::fgetc' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get a character form the file',
+ ),
+ 'SplFileObject::fgetss' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string allowable_tags]',
+ 'description' => 'Get a line from file pointer and strip HTML tags',
+ ),
+ 'SplFileObject::fpassthru' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Output all remaining data from a file pointer',
+ ),
+ 'SplFileObject::fscanf' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string format [, string ...]',
+ 'description' => 'Implements a mostly ANSI compatible fscanf()',
+ ),
+ 'SplFileObject::fwrite' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string str [, int length]',
+ 'description' => 'Binary-safe file write',
+ ),
+ 'SplFileObject::fstat' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Stat() on a filehandle',
+ ),
+ 'SplFileObject::ftruncate' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int size',
+ 'description' => 'Truncate file to \'size\' length',
+ ),
+ 'SplFileObject::seek' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int line_pos',
+ 'description' => 'Seek to specified line',
+ ),
+ 'ArrayObject::offsetExists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed $index',
+ 'description' => 'proto bool ArrayIterator::offsetExists(mixed $index)Returns whether the requested $index exists.',
+ ),
+ 'ArrayObject::offsetGet' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed $index',
+ 'description' => 'proto bool ArrayIterator::offsetGet(mixed $index)Returns the value at the specified $index.',
+ ),
+ 'ArrayObject::offsetSet' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed $index, mixed $newval',
+ 'description' => 'proto void ArrayIterator::offsetSet(mixed $index, mixed $newval)Sets the value at the specified $index to $newval.',
+ ),
+ 'ArrayObject::append' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed $newval',
+ 'description' => 'proto void ArrayIterator::append(mixed $newval)Appends the value (cannot be called for objects).',
+ ),
+ 'ArrayObject::offsetUnset' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'mixed $index',
+ 'description' => 'proto void ArrayIterator::offsetUnset(mixed $index)Unsets the value at the specified $index.',
+ ),
+ 'ArrayObject::__construct' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'array|object ar = array() [, int flags = 0 [, string iterator_class = "ArrayIterator"]]',
+ 'description' => 'proto void ArrayIterator::__construct(array|object ar = array() [, int flags = 0])Cronstructs a new array iterator from a path.',
+ ),
+ 'ArrayObject::setIteratorClass' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string iterator_class',
+ 'description' => 'Set the class used in getIterator.',
+ ),
+ 'ArrayObject::getIteratorClass' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get the class used in getIterator.',
+ ),
+ 'ArrayObject::getFlags' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get flags',
+ ),
+ 'ArrayObject::setFlags' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int flags',
+ 'description' => 'Set flags',
+ ),
+ 'ArrayObject::exchangeArray' =>
+ array (
+ 'return' => 'Array|Object',
+ 'params' => 'Array|Object ar = array()',
+ 'description' => 'Replace the referenced array or object with a new one and return the old one (right now copy - to be changed)',
+ ),
+ 'ArrayObject::getIterator' =>
+ array (
+ 'return' => 'ArrayIterator',
+ 'params' => '',
+ 'description' => 'Create a new iterator from a ArrayObject instance',
+ ),
+ 'ArrayIterator::rewind' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Rewind array back to the start',
+ ),
+ 'ArrayIterator::seek' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int $position',
+ 'description' => 'Seek to position.',
+ ),
+ 'ArrayObject::count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'proto int ArrayIterator::count()Return the number of elements in the Iterator.',
+ ),
+ 'ArrayIterator::current' =>
+ array (
+ 'return' => 'mixed|NULL',
+ 'params' => '',
+ 'description' => 'Return current array entry',
+ ),
+ 'ArrayIterator::key' =>
+ array (
+ 'return' => 'mixed|NULL',
+ 'params' => '',
+ 'description' => 'Return current array key',
+ ),
+ 'ArrayIterator::next' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => 'Move to next entry',
+ ),
+ 'ArrayIterator::valid' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether array contains more entries',
+ ),
+ 'RecursiveArrayIterator::hasChildren' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => 'Check whether current element has children (e.g. is an array)',
+ ),
+ 'RecursiveArrayIterator::getChildren' =>
+ array (
+ 'return' => 'object',
+ 'params' => '',
+ 'description' => 'Create a sub iterator for the current element (same class as $this)',
+ ),
+ 'hash' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string algo, string data[, bool raw_output = false]',
+ 'description' => 'Generate a hash of a given input stringReturns lowercase hexits by default',
+ ),
+ 'hash_file' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string algo, string filename[, bool raw_output = false]',
+ 'description' => 'Generate a hash of a given fileReturns lowercase hexits by default',
+ ),
+ 'hash_hmac' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string algo, string data, string key[, bool raw_output = false]',
+ 'description' => 'Generate a hash of a given input string with a key using HMACReturns lowercase hexits by default',
+ ),
+ 'hash_hmac_file' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string algo, string filename, string key[, bool raw_output = false]',
+ 'description' => 'Generate a hash of a given file with a key using HMACReturns lowercase hexits by default',
+ ),
+ 'hash_init' =>
+ array (
+ 'return' => 'resource',
+ 'params' => 'string algo[, int options, string key]',
+ 'description' => 'Initialize a hashing context',
+ ),
+ 'hash_update' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource context, string data',
+ 'description' => 'Pump data into the hashing algorithm',
+ ),
+ 'hash_update_stream' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'resource context, resource handle[, integer length]',
+ 'description' => 'Pump data into the hashing algorithm from an open stream',
+ ),
+ 'hash_update_file' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'resource context, string filename[, resource context]',
+ 'description' => 'Pump data into the hashing algorithm from a file',
+ ),
+ 'hash_final' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource context[, bool raw_output=false]',
+ 'description' => 'Output resulting digest',
+ ),
+ 'hash_algos' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Return a list of registered hashing algorithms',
+ ),
+ 'sybase_unbuffered_query' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string query [, int link_id]',
+ 'description' => 'Send Sybase query',
+ ),
+ 'sybase_fetch_assoc' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'int result',
+ 'description' => 'Fetch row as array without numberic indices',
+ ),
+ 'sybase_min_client_severity' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int severity',
+ 'description' => 'Sets minimum client severity',
+ ),
+ 'sybase_min_server_severity' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int severity',
+ 'description' => 'Sets minimum server severity',
+ ),
+ 'sybase_deadlock_retry_count' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int retry_count',
+ 'description' => 'Sets deadlock retry count',
+ ),
+ 'sybase_set_message_handler' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed error_func [, resource connection]',
+ 'description' => 'Set the error handler, to be called when a server message is raised.If error_func is NULL the handler will be deleted',
+ ),
+ 'mhash_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Gets the number of available hashes',
+ ),
+ 'mhash_get_block_size' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int hash',
+ 'description' => 'Gets the block size of hash',
+ ),
+ 'mhash_get_hash_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int hash',
+ 'description' => 'Gets the name of hash',
+ ),
+ 'mhash' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int hash, string data [, string key]',
+ 'description' => 'Hash data with hash',
+ ),
+ 'mhash_keygen_s2k' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'int hash, string input_password, string salt, int bytes',
+ 'description' => 'Generates a key using hash functions',
+ ),
+ 'tidy_parse_string' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string input [, mixed config_options [, string encoding]]',
+ 'description' => 'Parse a document stored in a string',
+ ),
+ 'tidy_get_error_buffer' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[boolean detailed]',
+ 'description' => 'Return warnings and errors which occured parsing the specified document',
+ ),
+ 'tidy_get_output' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Return a string representing the parsed tidy markup',
+ ),
+ 'tidy_parse_file' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string file [, mixed config_options [, string encoding [, bool use_include_path]]]',
+ 'description' => 'Parse markup in file or URI',
+ ),
+ 'tidy_clean_repair' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Execute configured cleanup and repair operations on parsed markup',
+ ),
+ 'tidy_repair_string' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string data [, mixed config_file [, string encoding]]',
+ 'description' => 'Repair a string using an optionally provided configuration file',
+ ),
+ 'tidy_repair_file' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string filename [, mixed config_file [, string encoding [, bool use_include_path]]]',
+ 'description' => 'Repair a file using an optionally provided configuration file',
+ ),
+ 'tidy_diagnose' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Run configured diagnostics on parsed and repaired markup.',
+ ),
+ 'tidy_get_release' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get release date (version) for Tidy library',
+ ),
+ 'tidy_get_opt_doc' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'tidy resource, string optname',
+ 'description' => 'Returns the documentation for the given option name',
+ ),
+ 'tidy_get_config' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Get current Tidy configuarion',
+ ),
+ 'tidy_get_status' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get status of specfied document.',
+ ),
+ 'tidy_get_html_ver' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get the Detected HTML version for the specified document.',
+ ),
+ 'tidy_is_xhtml' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Indicates if the document is a generic (non HTML/XHTML) XML document.',
+ ),
+ 'tidy_error_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the Number of Tidy errors encountered for specified document.',
+ ),
+ 'tidy_warning_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the Number of Tidy warnings encountered for specified document.',
+ ),
+ 'tidy_access_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the Number of Tidy accessibility warnings encountered for specified document.',
+ ),
+ 'tidy_config_count' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Returns the Number of Tidy configuration errors encountered for specified document.',
+ ),
+ 'tidy_getopt' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'string option',
+ 'description' => 'Returns the value of the specified configuration option for the tidy document.',
+ ),
+ 'tidy_get_root' =>
+ array (
+ 'return' => 'TidyNode',
+ 'params' => '',
+ 'description' => 'Returns a TidyNode Object representing the root of the tidy parse tree',
+ ),
+ 'tidy_get_html' =>
+ array (
+ 'return' => 'TidyNode',
+ 'params' => '',
+ 'description' => 'Returns a TidyNode Object starting from the <HTML> tag of the tidy parse tree',
+ ),
+ 'tidy_get_head' =>
+ array (
+ 'return' => 'TidyNode',
+ 'params' => '',
+ 'description' => 'Returns a TidyNode Object starting from the <HEAD> tag of the tidy parse tree',
+ ),
+ 'tidy_get_body' =>
+ array (
+ 'return' => 'TidyNode',
+ 'params' => 'resource tidy',
+ 'description' => 'Returns a TidyNode Object starting from the <BODY> tag of the tidy parse tree',
+ ),
+ 'tidyNode::hasChildren' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node has children',
+ ),
+ 'tidyNode::hasSiblings' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node has siblings',
+ ),
+ 'tidyNode::isComment' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node represents a comment',
+ ),
+ 'tidyNode::isHtml' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node is part of a HTML document',
+ ),
+ 'tidyNode::isXhtml' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node is part of a XHTML document',
+ ),
+ 'tidyNode::isXml' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node is part of a XML document',
+ ),
+ 'tidyNode::isText' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node represents text (no markup)',
+ ),
+ 'tidyNode::isJste' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node is JSTE',
+ ),
+ 'tidyNode::isAsp' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node is ASP',
+ ),
+ 'tidyNode::isPhp' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => '',
+ 'description' => 'Returns true if this node is PHP',
+ ),
+ 'smfi_setflags' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'long flags',
+ 'description' => 'Sets the flags describing the actions the filter may take.',
+ ),
+ 'smfi_settimeout' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'long timeout',
+ 'description' => 'Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket.',
+ ),
+ 'smfi_getsymval' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string macro',
+ 'description' => 'Returns the value of the given macro or NULL if the macro is not defined.',
+ ),
+ 'smfi_setreply' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string rcode, string xcode, string message',
+ 'description' => 'Directly set the SMTP error reply code for this connection.This code will be used on subsequent error replies resulting from actions taken by this filter.',
+ ),
+ 'smfi_addheader' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string headerf, string headerv',
+ 'description' => 'Adds a header to the current message.',
+ ),
+ 'smfi_chgheader' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string headerf, string headerv',
+ 'description' => 'Changes a header\'s value for the current message.',
+ ),
+ 'smfi_addrcpt' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string rcpt',
+ 'description' => 'Add a recipient to the message envelope.',
+ ),
+ 'smfi_delrcpt' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string rcpt',
+ 'description' => 'Removes the named recipient from the current message\'s envelope.',
+ ),
+ 'smfi_replacebody' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string body',
+ 'description' => 'Replaces the body of the current message. If called more than once,subsequent calls result in data being appended to the new body.',
+ ),
+ 'virtual' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string filename',
+ 'description' => 'Perform an Apache sub-request',
+ ),
+ 'getallheaders' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Alias for apache_request_headers()',
+ ),
+ 'apache_response_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Fetch all HTTP response headers',
+ ),
+ 'apache_note' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string note_name [, string note_value]',
+ 'description' => 'Get and set Apache request notes',
+ ),
+ 'apache_setenv' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string variable, string value [, bool walk_to_top]',
+ 'description' => 'Set an Apache subprocess_env variable',
+ ),
+ 'apache_getenv' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string variable [, bool walk_to_top]',
+ 'description' => 'Get an Apache subprocess_env variable',
+ ),
+ 'apache_get_version' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Fetch Apache version',
+ ),
+ 'apache_get_modules' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get a list of loaded Apache modules',
+ ),
+ 'nsapi_virtual' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string uri',
+ 'description' => 'Perform an NSAPI sub-request',
+ ),
+ 'nsapi_request_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get all headers from the request',
+ ),
+ 'nsapi_response_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Get all headers from the response',
+ ),
+ 'ApacheRequest::filename' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_filename]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::uri' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_uri]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::unparsed_uri' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_unparsed_uri]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::path_info' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_path_info]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::args' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_args]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::boundary' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::content_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_type]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::content_encoding' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_encoding]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::handler' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_handler]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::the_request' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::protocol' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::hostname' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::status_line' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[string new_status_line]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::method' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::proto_num' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::assbackwards' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::proxyreq' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int new_proxyreq]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::chunked' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::header_only' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::request_time' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::status' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int new_status]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::method_number' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int method_number]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::allowed' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int allowed]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::bytes_sent' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::mtime' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::content_length' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int new_content_length]',
+ 'description' => '',
+ ),
+ 'ApacheRequest::remaining' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::no_cache' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::no_local_copy' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'ApacheRequest::read_body' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_headers_in' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => '* fetch all incoming request headers',
+ ),
+ 'apache_request_headers_out' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[{string name|array list} [, string value [, bool replace = false]]]',
+ 'description' => '* fetch all outgoing request headers',
+ ),
+ 'apache_request_err_headers_out' =>
+ array (
+ 'return' => 'array',
+ 'params' => '[{string name|array list} [, string value [, bool replace = false]]]',
+ 'description' => '* fetch all headers that go out in case of an error or a subrequest',
+ ),
+ 'apache_request_server_port' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_remote_host' =>
+ array (
+ 'return' => 'int',
+ 'params' => '[int type]',
+ 'description' => '',
+ ),
+ 'apache_request_update_mtime' =>
+ array (
+ 'return' => 'long',
+ 'params' => '[int dependency_mtime]',
+ 'description' => '',
+ ),
+ 'apache_request_set_etag' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_set_last_modified' =>
+ array (
+ 'return' => 'void',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_meets_conditions' =>
+ array (
+ 'return' => 'long',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_discard_request_body' =>
+ array (
+ 'return' => 'long',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_satisfies' =>
+ array (
+ 'return' => 'long',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_is_initial_req' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_some_auth_required' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_auth_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_auth_name' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => '',
+ ),
+ 'apache_request_log_error' =>
+ array (
+ 'return' => 'boolean',
+ 'params' => 'string message, [long facility]',
+ 'description' => '',
+ ),
+ 'apache_request_sub_req_lookup_uri' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string uri',
+ 'description' => 'Returns sub-request for the specified uri. You wouldneed to run it yourself with run()',
+ ),
+ 'apache_request_sub_req_lookup_file' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string file',
+ 'description' => 'Returns sub-request for the specified file. You wouldneed to run it yourself with run().',
+ ),
+ 'apache_request_sub_req_method_uri' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string method, string uri',
+ 'description' => 'Returns sub-request for the specified file. You wouldneed to run it yourself with run().',
+ ),
+ 'apache_request_run' =>
+ array (
+ 'return' => 'long',
+ 'params' => '',
+ 'description' => 'This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takessub_request, runs it, destroys it, and returns it\'s status.',
+ ),
+ 'apache_child_terminate' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Terminate apache process after this request',
+ ),
+ 'apache_request_headers' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Fetch all HTTP request headers',
+ ),
+ 'apache_lookup_uri' =>
+ array (
+ 'return' => 'object',
+ 'params' => 'string URI',
+ 'description' => 'Perform a partial request of the given URI to obtain information about it',
+ ),
+ 'apache_reset_timeout' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Reset the Apache write timer',
+ ),
+ 'stream_wrapper_register' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string protocol, string classname',
+ 'description' => 'Registers a custom URL protocol handler class',
+ ),
+ 'stream_wrapper_unregister' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string protocol',
+ 'description' => 'Unregister a wrapper for the life of the current request.',
+ ),
+ 'stream_wrapper_restore' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string protocol',
+ 'description' => 'Restore the original protocol handler, overriding if necessary',
+ ),
+ 'set_time_limit' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'int seconds',
+ 'description' => 'Sets the maximum time a script can run',
+ ),
+ 'ob_list_handlers' =>
+ array (
+ 'return' => 'false|array',
+ 'params' => '',
+ 'description' => '* List all output_buffers in an array',
+ ),
+ 'ob_start' =>
+ array (
+ 'return' => 'bool',
+ 'params' => '[ string|array user_function [, int chunk_size [, bool erase]]]',
+ 'description' => 'Turn on Output Buffering (specifying an optional output handler).',
+ ),
+ 'ob_flush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Flush (send) contents of the output buffer. The last buffer content is sent to next buffer',
+ ),
+ 'ob_clean' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Clean (delete) the current output buffer',
+ ),
+ 'ob_end_flush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Flush (send) the output buffer, and delete current output buffer',
+ ),
+ 'ob_end_clean' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Clean the output buffer, and delete current output buffer',
+ ),
+ 'ob_get_flush' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Get current buffer contents, flush (send) the output buffer, and delete current output buffer',
+ ),
+ 'ob_get_clean' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Get current buffer contents and delete current output buffer',
+ ),
+ 'ob_get_contents' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Return the contents of the output buffer',
+ ),
+ 'ob_get_level' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Return the nesting level of the output buffer',
+ ),
+ 'ob_get_length' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Return the length of the output buffer',
+ ),
+ 'ob_get_status' =>
+ array (
+ 'return' => 'false|array',
+ 'params' => '[bool full_status]',
+ 'description' => 'Return the status of the active or all output buffers',
+ ),
+ 'ob_implicit_flush' =>
+ array (
+ 'return' => 'void',
+ 'params' => '[int flag]',
+ 'description' => 'Turn implicit flush on/off and is equivalent to calling flush() after every output call',
+ ),
+ 'output_reset_rewrite_vars' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'void',
+ 'description' => 'Reset(clear) URL rewriter values',
+ ),
+ 'output_add_rewrite_var' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string name, string value',
+ 'description' => 'Add URL rewriter values',
+ ),
+ 'zend_version' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'void',
+ 'description' => 'Get the version of the Zend Engine',
+ ),
+ 'func_num_args' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'void',
+ 'description' => 'Get the number of arguments that were passed to the function',
+ ),
+ 'func_get_arg' =>
+ array (
+ 'return' => 'mixed',
+ 'params' => 'int arg_num',
+ 'description' => 'Get the $arg_num\'th argument that was passed to the function',
+ ),
+ 'func_get_args' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Get an array of the arguments that were passed to the function',
+ ),
+ 'strlen' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str',
+ 'description' => 'Get string length',
+ ),
+ 'strcmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2',
+ 'description' => 'Binary safe string comparison',
+ ),
+ 'strncmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2, int len',
+ 'description' => 'Binary safe string comparison',
+ ),
+ 'strcasecmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2',
+ 'description' => 'Binary safe case-insensitive string comparison',
+ ),
+ 'strncasecmp' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'string str1, string str2, int len',
+ 'description' => 'Binary safe string comparison',
+ ),
+ 'each' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'array arr',
+ 'description' => 'Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element',
+ ),
+ 'error_reporting' =>
+ array (
+ 'return' => 'int',
+ 'params' => 'int new_error_level=null',
+ 'description' => 'Return the current error_reporting level, and if an argument was passed - change to the new level',
+ ),
+ 'define' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string constant_name, mixed value, boolean case_sensitive=true',
+ 'description' => 'Define a new constant',
+ ),
+ 'defined' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string constant_name',
+ 'description' => 'Check whether a constant exists',
+ ),
+ 'get_class' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[object object]',
+ 'description' => 'Retrieves the class name',
+ ),
+ 'get_parent_class' =>
+ array (
+ 'return' => 'string',
+ 'params' => '[mixed object]',
+ 'description' => 'Retrieves the parent class name for object or class or current scope.',
+ ),
+ 'is_subclass_of' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object object, string class_name',
+ 'description' => 'Returns true if the object has this class as one of its parents',
+ ),
+ 'is_a' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object object, string class_name',
+ 'description' => 'Returns true if the object is of this class or has this class as one of its parents',
+ ),
+ 'get_class_vars' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string class_name',
+ 'description' => 'Returns an array of default properties of the class.',
+ ),
+ 'get_object_vars' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'object obj',
+ 'description' => 'Returns an array of object properties',
+ ),
+ 'get_class_methods' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'mixed class',
+ 'description' => 'Returns an array of method names for class or class instance.',
+ ),
+ 'method_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'object object, string method',
+ 'description' => 'Checks if the class method exists',
+ ),
+ 'property_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'mixed object_or_class, string property_name',
+ 'description' => 'Checks if the object or class has a property',
+ ),
+ 'class_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string classname [, bool autoload]',
+ 'description' => 'Checks if the class exists',
+ ),
+ 'interface_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string classname [, bool autoload]',
+ 'description' => 'Checks if the class exists',
+ ),
+ 'function_exists' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string function_name',
+ 'description' => 'Checks if the function exists',
+ ),
+ 'leak' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'int num_bytes=3',
+ 'description' => 'Cause an intentional memory leak, for testing/debugging purposes',
+ ),
+ 'get_included_files' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns an array with the file names that were include_once()\'d',
+ ),
+ 'trigger_error' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'string messsage [, int error_type]',
+ 'description' => 'Generates a user-level error/warning/notice message',
+ ),
+ 'set_error_handler' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string error_handler [, int error_types]',
+ 'description' => 'Sets a user-defined error handler function. Returns the previously defined error handler, or false on error',
+ ),
+ 'restore_error_handler' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Restores the previously defined error handler function',
+ ),
+ 'set_exception_handler' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'callable exception_handler',
+ 'description' => 'Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error',
+ ),
+ 'restore_exception_handler' =>
+ array (
+ 'return' => 'void',
+ 'params' => 'void',
+ 'description' => 'Restores the previously defined exception handler function',
+ ),
+ 'get_declared_classes' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Returns an array of all declared classes.',
+ ),
+ 'get_declared_interfaces' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Returns an array of all declared interfaces.',
+ ),
+ 'get_defined_functions' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns an array of all defined functions',
+ ),
+ 'get_defined_vars' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Returns an associative array of names and values of all currently defined variable names (variables in the current scope)',
+ ),
+ 'create_function' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'string args, string code',
+ 'description' => 'Creates an anonymous function, and returns its name (funny, eh?)',
+ ),
+ 'get_resource_type' =>
+ array (
+ 'return' => 'string',
+ 'params' => 'resource res',
+ 'description' => 'Get the resource type name for a given resource',
+ ),
+ 'get_loaded_extensions' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Return an array containing names of loaded extensions',
+ ),
+ 'get_defined_constants' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Return an array containing the names and values of all defined constants',
+ ),
+ 'debug_backtrace' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'void',
+ 'description' => 'Return backtrace as array',
+ ),
+ 'extension_loaded' =>
+ array (
+ 'return' => 'bool',
+ 'params' => 'string extension_name',
+ 'description' => 'Returns true if the named extension is loaded',
+ ),
+ 'get_extension_funcs' =>
+ array (
+ 'return' => 'array',
+ 'params' => 'string extension_name',
+ 'description' => 'Returns an array with the names of functions belonging to the named extension',
+ ),
+ 'Exception::__clone' =>
+ array (
+ 'return' => 'Exception',
+ 'params' => '',
+ 'description' => 'Clone the exception object',
+ ),
+ 'Exception::getFile' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get the file in which the exception occurred',
+ ),
+ 'Exception::getLine' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get the line in which the exception occurred',
+ ),
+ 'Exception::getMessage' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Get the exception message',
+ ),
+ 'Exception::getCode' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get the exception code',
+ ),
+ 'Exception::getTrace' =>
+ array (
+ 'return' => 'array',
+ 'params' => '',
+ 'description' => 'Get the stack trace for the location in which the exception occurred',
+ ),
+ 'ErrorException::getSeverity' =>
+ array (
+ 'return' => 'int',
+ 'params' => '',
+ 'description' => 'Get the exception severity',
+ ),
+ 'Exception::getTraceAsString' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Obtain the backtrace for the exception as a string (instead of an array)',
+ ),
+ 'Exception::__toString' =>
+ array (
+ 'return' => 'string',
+ 'params' => '',
+ 'description' => 'Obtain the string representation of the Exception object',
+ ),
+) ;
+
+ public function get($k) {
+ if (isset($this->prototype[$k])) {
+ return $this->prototype[$k];
+ } else {
+ return false;
+ }
+ }
+
+ static function getInstance() {
+ if (is_null(self::$instance)) {
+ $class = __CLASS__;
+ self::$instance = new $class();
+ }
+ return self::$instance;
+ }
+} \ No newline at end of file
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Extensions/VerbosePrint.php b/framework/Vendor/PhpShell/PHP/Shell/Extensions/VerbosePrint.php
new file mode 100644
index 00000000..425937c1
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Extensions/VerbosePrint.php
@@ -0,0 +1,56 @@
+<?php
+class PHP_Shell_Extensions_VerbosePrint implements PHP_Shell_Extension {
+ protected $opt_verbose = false;
+ protected $oneshot_verbose = false;
+
+ public function register() {
+/* $cmd = PHP_Shell_Commands::getInstance();
+ $cmd->registerCommand('#^p #', $this, 'cmdPrint', 'p <var>', 'print the variable verbosly');
+
+ $opt = PHP_Shell_Options::getInstance();
+ $opt->registerOption('verboseprint', $this, 'optSetVerbose');
+*/
+ }
+
+ /**
+ * handle the 'p ' command
+ *
+ * set the verbose flag
+ *
+ * @return string the pure command-string without the 'p ' command
+ */
+ public function cmdPrint($l) {
+ $this->oneshot_verbose = true;
+
+ $cmd = substr($l, 2);
+
+ return $cmd;
+ }
+
+ public function optSetVerbose($key, $val) {
+ switch($val) {
+ case "false":
+ case "on":
+ case "1":
+ $this->opt_verbose = true;
+ default:
+ $this->opt_verbose = false;
+ break;
+ }
+ }
+
+ /**
+ * check if we have a verbose print-out
+ *
+ * @return bool 1 if verbose, 0 otherwise
+ */
+ public function isVerbose() {
+ $v = $this->opt_verbose || $this->oneshot_verbose;
+
+ $this->oneshot_verbose = false;
+
+ return $v;
+ }
+}
+
+
diff --git a/framework/Vendor/PhpShell/PHP/Shell/Options.php b/framework/Vendor/PhpShell/PHP/Shell/Options.php
new file mode 100644
index 00000000..8f5e57d1
--- /dev/null
+++ b/framework/Vendor/PhpShell/PHP/Shell/Options.php
@@ -0,0 +1,132 @@
+<?php
+
+require_once(dirname(__FILE__)."/Extensions.php"); /* for the PHP_Shell_Interface */
+
+/**
+*
+*/
+class PHP_Shell_Options implements PHP_Shell_Extension {
+ /*
+ * instance of the current class
+ *
+ * @var PHP_Shell_Options
+ */
+ static protected $instance;
+
+ /**
+ * known options and their setors
+ *
+ * @var array
+ * @see registerOption
+ */
+ protected $options = array();
+
+ /**
+ * known options and their setors
+ *
+ * @var array
+ * @see registerOptionAlias
+ */
+ protected $option_aliases = array();
+
+ public function register() {
+// $cmd = PHP_Shell_Commands::getInstance();
+ // $cmd->registerCommand('#^:set #', $this, 'cmdSet', ':set <var>', 'set a shell variable');
+ }
+
+ /**
+ * register a option
+ *
+ * @param string name of the option
+ * @param object a object handle
+ * @param string method-name of the setor in the object
+ * @param string (unused)
+ */
+ public function registerOption($option, $obj, $setor, $getor = null) {
+ if (!method_exists($obj, $setor)) {
+ throw new Exception(sprintf("setor %s doesn't exist on class %s", $setor, get_class($obj)));
+ }
+
+ $this->options[trim($option)] = array("obj" => $obj, "setor" => $setor);
+ }
+
+ /**
+ * set a shell-var
+ *
+ * :set al to enable autoload
+ * :set bg=dark to enable highlighting with a dark backgroud
+ */
+ public function cmdSet($l) {
+ if (!preg_match('#:set\s+([a-z]+)\s*(?:=\s*([a-z0-9]+)\s*)?$#i', $l, $a)) {
+ print(':set failed: either :set <option> or :set <option> = <value>');
+ return;
+ }
+
+ $this->execute($a[1], isset($a[2]) ? $a[2] : null);
+ }
+
+ /**
+ * get all the option names
+ *
+ * @return array names of all options
+ */
+ public function getOptions() {
+ return array_keys($this->options);
+ }
+
+ /**
+ * map a option to another option
+ *
+ * e.g.: bg maps to background
+ *
+ * @param string alias
+ * @param string option
+ */
+ public function registerOptionAlias($alias, $option) {
+ if (!isset($this->options[$option])) {
+ throw new Exception(sprintf("Option %s is not known", $option));
+ }
+
+ $this->option_aliases[trim($alias)] = trim($option);
+
+ }
+
+ /**
+ * execute a :set command
+ *
+ * calls the setor for the :set <option>
+ *
+ *
+ */
+ private function execute($key, $value) {
+ /* did we hit a alias (bg for backgroud) ? */
+ if (isset($this->option_aliases[$key])) {
+ $opt_key = $this->option_aliases[$key];
+ } else {
+ $opt_key = $key;
+ }
+
+ if (!isset($this->options[$opt_key])) {
+ print (':set '.$key.' failed: unknown key');
+ return;
+ }
+
+ if (!isset($this->options[$opt_key]["setor"])) {
+ return;
+ }
+
+ $setor = $this->options[$opt_key]["setor"];
+ $obj = $this->options[$opt_key]["obj"];
+ $obj->$setor($key, $value);
+ }
+
+ static function getInstance() {
+ if (is_null(self::$instance)) {
+ $class = __CLASS__;
+ self::$instance = new $class();
+ }
+ return self::$instance;
+ }
+}
+
+
diff --git a/framework/Vendor/PhpShell/README b/framework/Vendor/PhpShell/README
new file mode 100644
index 00000000..d15d83be
--- /dev/null
+++ b/framework/Vendor/PhpShell/README
@@ -0,0 +1,86 @@
+A interactive PHP Shell
+=======================
+
+The more I work with other languages like python and ruby I like their way how they
+work on problems. While PHP is very forgiving on errors, it is weak on the debugging
+side. It was missing a simple to use interactive shell for years. Python and Ruby have
+their ipython and iruby shell which give you a direct way to interact with the objects.
+No need to write a script and execute it afterwards.
+
+
+Starting the Shell
+------------------
+
+Starting with PHP_Shell 0.2.1 starting the shell is done by calling the shell-wrappers:
+
+$ php-shell.sh
+
+or on Windows
+
+> php-shell.bat
+
+Write your own wrapper
+----------------------
+
+Sometimes you want to write your own shell where you provide your own defaults, colours and
+error-handlers.
+
+<?php
+ error_reporting(E_ALL);
+
+ require "php-shell-cmd.php";
+?>
+
+and execute it with:
+
+$ php -q php-shell.php
+
+Inline Help
+-----------
+
+PHP-Shell - Version 0.2.0, with readline() support
+(c) 2006, Jan Kneschke <jan@kneschke.de>
+released under the terms of the PHP License 2.0
+
+>> use '?' to open the inline help
+
+>> ?
+"inline help for the PHP-shell
+
+ >> ?
+ print this help
+ >> ? <topic>
+ get the doccomment for a class, method, property or function
+ >> p <var>
+ execute a verbose print (if implemented)
+ >> quit
+ leave shell
+"
+>> ? PHP_Shell
+
+Shell Colours
+-------------
+
+The shell supports colours to seperate Exceptions from normal output of your
+functions. To enable the colours you can to set:
+
+>> :set background=dark
+
+By default the colour-schemes 'plain' (the default), 'light' and 'dark' are
+defined.
+
+You can also register your own colour schemes:
+
+>> $__shell->registerColourScheme( 'custom', array(
+.. "default" => PHP_SHELL::C_LIGHT_RED, /* colour of the prompt */
+.. "value" => PHP_SHELL::C_BLACK, /* colour of a return value */
+.. "exception" => PHP_SHELL::C_RED, /* colour of a exception */
+.. ))
+
+Alternatives
+------------
+
+- http://david.acz.org/phpa/
+- http://www.hping.org/phpinteractive/
+- the embedded interactive php-shell: $ php -a
+
diff --git a/framework/Vendor/PhpShell/php-shell-cmd.php b/framework/Vendor/PhpShell/php-shell-cmd.php
new file mode 100644
index 00000000..aec6d6ed
--- /dev/null
+++ b/framework/Vendor/PhpShell/php-shell-cmd.php
@@ -0,0 +1,86 @@
+<?php
+
+$f = <<<EOF
+PHP-Shell - Version %s%s
+(c) 2006, Jan Kneschke <jan@kneschke.de>
+
+>> use '?' to open the inline help
+
+EOF;
+
+printf($f,
+ $__shell->getVersion(),
+ $__shell->hasReadline() ? ', with readline() support' : '');
+unset($f);
+
+print $__shell_exts->colour->getColour("default");
+while($__shell->input()) {
+ if ($__shell_exts->autoload->isAutoloadEnabled() && !function_exists('__autoload')) {
+ /**
+ * default autoloader
+ *
+ * If a class doesn't exist try to load it by guessing the filename
+ * class PHP_Shell should be located in PHP/Shell.php.
+ *
+ * you can set your own autoloader by defining __autoload() before including
+ * this file
+ *
+ * @param string $classname name of the class
+ */
+
+ function __autoload($classname) {
+ global $__shell_exts;
+
+ if ($__shell_exts->autoload_debug->isAutoloadDebug()) {
+ print str_repeat(".", $__shell_exts->autoload_debug->incAutoloadDepth())." -> autoloading $classname".PHP_EOL;
+ }
+ include_once str_replace('_', '/', $classname).'.php';
+ if ($__shell_exts->autoload_debug->isAutoloadDebug()) {
+ print str_repeat(".", $__shell_exts->autoload_debug->decAutoloadDepth())." <- autoloading $classname".PHP_EOL;
+ }
+ }
+ }
+
+ try {
+ $__shell_exts->exectime->startParseTime();
+ if ($__shell->parse() == 0) {
+ ## we have a full command, execute it
+
+ $__shell_exts->exectime->startExecTime();
+
+ $__shell_retval = eval($__shell->getCode());
+ if (isset($__shell_retval)) {
+ print $__shell_exts->colour->getColour("value");
+
+ if (function_exists("__shell_print_var")) {
+ __shell_print_var($__shell,$__shell_retval, $__shell_exts->verboseprint->isVerbose());
+ } else {
+ var_export($__shell_retval);
+ }
+ }
+ ## cleanup the variable namespace
+ unset($__shell_retval);
+ $__shell->resetCode();
+ }
+ } catch(Exception $__shell_exception) {
+ print $__shell_exts->colour->getColour("exception");
+ printf('%s (code: %d) got thrown'.PHP_EOL, get_class($__shell_exception), $__shell_exception->getCode());
+ print $__shell_exception;
+
+ $__shell->resetCode();
+
+ ## cleanup the variable namespace
+ unset($__shell_exception);
+ }
+ print $__shell_exts->colour->getColour("default");
+ $__shell_exts->exectime->stopTime();
+ if ($__shell_exts->exectime->isShow()) {
+ printf(" (parse: %.4fs, exec: %.4fs)",
+ $__shell_exts->exectime->getParseTime(),
+ $__shell_exts->exectime->getExecTime()
+ );
+ }
+}
+
+print $__shell_exts->colour->getColour("reset");
+
diff --git a/framework/Vendor/PhpShell/php-shell-init.php b/framework/Vendor/PhpShell/php-shell-init.php
new file mode 100644
index 00000000..fd0e9063
--- /dev/null
+++ b/framework/Vendor/PhpShell/php-shell-init.php
@@ -0,0 +1,87 @@
+<?php
+@ob_end_clean();
+error_reporting(E_ALL);
+set_time_limit(0);
+
+/**
+* the wrapper around the PHP_Shell class
+*
+* - load extensions
+* - set default error-handler
+* - add exec-hooks for the extensions
+*
+* To keep the namespace clashing between shell and your program
+* as small as possible all public variables and functions from
+* the shell are prefixed with __shell:
+*
+* - $__shell is the object of the shell
+* can be read, this is the shell object itself, don't touch it
+* - $__shell_retval is the return value of the eval() before
+* it is printed
+* can't be read, but overwrites existing vars with this name
+* - $__shell_exception is the catched Exception on Warnings, Notices, ..
+* can't be read, but overwrites existing vars with this name
+*/
+
+//try loading it from PEAR
+@require_once('PHP/Shell.php');
+if(class_exists('PHP_Shell', false))
+{
+ require_once "PHP/Shell/Extensions/Autoload.php";
+ require_once "PHP/Shell/Extensions/AutoloadDebug.php";
+ require_once "PHP/Shell/Extensions/Colour.php";
+ require_once "PHP/Shell/Extensions/ExecutionTime.php";
+ require_once "PHP/Shell/Extensions/InlineHelp.php";
+ require_once "PHP/Shell/Extensions/VerbosePrint.php";
+ require_once "PHP/Shell/Extensions/LoadScript.php";
+}
+else
+{
+ require_once(dirname(__FILE__)."/PHP/Shell.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/Autoload.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/AutoloadDebug.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/Colour.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/ExecutionTime.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/InlineHelp.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/VerbosePrint.php");
+ require_once(dirname(__FILE__)."/PHP/Shell/Extensions/LoadScript.php");
+}
+
+/**
+* default error-handler
+*
+* Instead of printing the NOTICE or WARNING from php we wan't the turn non-FATAL
+* messages into exceptions and handle them in our own way.
+*
+* you can set your own error-handler by createing a function named
+* __shell_error_handler
+*
+* @param integer $errno Error-Number
+* @param string $errstr Error-Message
+* @param string $errfile Filename where the error was raised
+* @param interger $errline Line-Number in the File
+* @param mixed $errctx ...
+*/
+function __shell_default_error_handler($errno, $errstr, $errfile, $errline, $errctx) {
+ ## ... what is this errno again ?
+ if ($errno == 2048) return;
+
+ throw new Exception(sprintf("%s:%d\r\n%s", $errfile, $errline, $errstr));
+}
+
+//set_error_handler("__shell_default_error_handler");
+
+$__shell = new PHP_Shell();
+$__shell_exts = PHP_Shell_Extensions::getInstance();
+$__shell_exts->registerExtensions(array(
+ "options" => PHP_Shell_Options::getInstance(), /* the :set command */
+
+ "autoload" => new PHP_Shell_Extensions_Autoload(),
+ "autoload_debug" => new PHP_Shell_Extensions_AutoloadDebug(),
+ "colour" => new PHP_Shell_Extensions_Colour(),
+ "exectime" => new PHP_Shell_Extensions_ExecutionTime(),
+ "inlinehelp" => new PHP_Shell_Extensions_InlineHelp(),
+ "verboseprint" => new PHP_Shell_Extensions_VerbosePrint()
+ // "loadscript" => new PHP_Shell_Extensions_LoadScript()
+));
+
diff --git a/framework/Vendor/ReCaptcha/LICENSE b/framework/Vendor/ReCaptcha/LICENSE
new file mode 100644
index 00000000..b612f71f
--- /dev/null
+++ b/framework/Vendor/ReCaptcha/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+AUTHORS:
+ Mike Crawford
+ Ben Maurer
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/framework/Vendor/ReCaptcha/recaptchalib.php b/framework/Vendor/ReCaptcha/recaptchalib.php
new file mode 100644
index 00000000..de639c11
--- /dev/null
+++ b/framework/Vendor/ReCaptcha/recaptchalib.php
@@ -0,0 +1,276 @@
+<?php
+/*
+ * This is a PHP library that handles calling reCAPTCHA.
+ * - Documentation and latest version
+ * http://recaptcha.net/plugins/php/
+ * - Get a reCAPTCHA API Key
+ * https://www.google.com/recaptcha/admin/create
+ * - Discussion group
+ * http://groups.google.com/group/recaptcha
+ *
+ * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * AUTHORS:
+ * Mike Crawford
+ * Ben Maurer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * The reCAPTCHA server URL's
+ */
+define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
+define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
+define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
+
+/**
+ * Encodes the given data into a query string format
+ * @param $data - array of string elements to be encoded
+ * @return string - encoded request
+ */
+function _recaptcha_qsencode ($data) {
+ $req = "";
+ foreach ( $data as $key => $value )
+ $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
+
+ // Cut the last '&'
+ $req=substr($req,0,strlen($req)-1);
+ return $req;
+}
+
+
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post($host, $path, $data, $port = 80) {
+
+ $req = _recaptcha_qsencode ($data);
+
+ $http_request = "POST $path HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+ $http_request .= "Content-Length: " . strlen($req) . "\r\n";
+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+ $http_request .= "\r\n";
+ $http_request .= $req;
+
+ $response = '';
+ if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
+ die ('Could not open socket');
+ }
+
+ fwrite($fs, $http_request);
+
+ while ( !feof($fs) )
+ $response .= fgets($fs, 1160); // One TCP-IP packet
+ fclose($fs);
+ $response = explode("\r\n\r\n", $response, 2);
+
+ return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
+{
+ if ($pubkey == null || $pubkey == '') {
+ die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
+ }
+
+ if ($use_ssl) {
+ $server = RECAPTCHA_API_SECURE_SERVER;
+ } else {
+ $server = RECAPTCHA_API_SERVER;
+ }
+
+ $errorpart = "";
+ if ($error) {
+ $errorpart = "&amp;error=" . $error;
+ }
+ return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
+
+ <noscript>
+ <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
+ <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
+ <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
+ </noscript>';
+}
+
+
+
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+ var $is_valid;
+ var $error;
+}
+
+
+/**
+ * Calls an HTTP POST function to verify if the user's guess was correct
+ * @param string $privkey
+ * @param string $remoteip
+ * @param string $challenge
+ * @param string $response
+ * @param array $extra_params an array of extra variables to post to the server
+ * @return ReCaptchaResponse
+ */
+function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
+{
+ if ($privkey == null || $privkey == '') {
+ die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
+ }
+
+ if ($remoteip == null || $remoteip == '') {
+ die ("For security reasons, you must pass the remote ip to reCAPTCHA");
+ }
+
+
+
+ //discard spam submissions
+ if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
+ $recaptcha_response = new ReCaptchaResponse();
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = 'incorrect-captcha-sol';
+ return $recaptcha_response;
+ }
+
+ $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
+ array (
+ 'privatekey' => $privkey,
+ 'remoteip' => $remoteip,
+ 'challenge' => $challenge,
+ 'response' => $response
+ ) + $extra_params
+ );
+
+ $answers = explode ("\n", $response [1]);
+ $recaptcha_response = new ReCaptchaResponse();
+
+ if (trim ($answers [0]) == 'true') {
+ $recaptcha_response->is_valid = true;
+ }
+ else {
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = $answers [1];
+ }
+ return $recaptcha_response;
+
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url ($domain = null, $appname = null) {
+ return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
+}
+
+function _recaptcha_aes_pad($val) {
+ $block_size = 16;
+ $numpad = $block_size - (strlen ($val) % $block_size);
+ return str_pad($val, strlen ($val) + $numpad, chr($numpad));
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt($val,$ky) {
+ if (! function_exists ("mcrypt_encrypt")) {
+ die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
+ }
+ $mode=MCRYPT_MODE_CBC;
+ $enc=MCRYPT_RIJNDAEL_128;
+ $val=_recaptcha_aes_pad($val);
+ return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
+}
+
+
+function _recaptcha_mailhide_urlbase64 ($x) {
+ return strtr(base64_encode ($x), '+/', '-_');
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url($pubkey, $privkey, $email) {
+ if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
+ die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+ "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
+ }
+
+
+ $ky = pack('H*', $privkey);
+ $cryptmail = _recaptcha_aes_encrypt ($email, $ky);
+
+ return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts ($email) {
+ $arr = preg_split("/@/", $email );
+
+ if (strlen ($arr[0]) <= 4) {
+ $arr[0] = substr ($arr[0], 0, 1);
+ } else if (strlen ($arr[0]) <= 6) {
+ $arr[0] = substr ($arr[0], 0, 3);
+ } else {
+ $arr[0] = substr ($arr[0], 0, 4);
+ }
+ return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://www.google.com/recaptcha/mailhide/apikey
+ */
+function recaptcha_mailhide_html($pubkey, $privkey, $email) {
+ $emailparts = _recaptcha_mailhide_email_parts ($email);
+ $url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
+
+ return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
+ "' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
+
+}
+
+
diff --git a/framework/Vendor/SafeHtml/HTMLSax3.php b/framework/Vendor/SafeHtml/HTMLSax3.php
new file mode 100644
index 00000000..262cf2ac
--- /dev/null
+++ b/framework/Vendor/SafeHtml/HTMLSax3.php
@@ -0,0 +1,693 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+//
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2002 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Alexander Zhukov <alex@veresk.ru> Original port from Python |
+// | Authors: Harry Fuecks <hfuecks@phppatterns.com> Port to PEAR + more |
+// | Authors: Many @ Sitepointforums Advanced PHP Forums |
+// +----------------------------------------------------------------------+
+//
+// $Id: HTMLSax3.php 3188 2012-07-12 12:13:23Z ctrlaltca $
+//
+/**
+* Main parser components
+* @package System.Security.SafeHtml
+*/
+/**
+* Required classes
+*/
+
+require_once(dirname(__FILE__).'/HTMLSax3/States.php');
+require_once(dirname(__FILE__).'/HTMLSax3/Decorators.php');
+
+/**
+* Base State Parser
+* @package System.Security.SafeHtml
+* @access protected
+* @abstract
+*/
+class TSax3_StateParser {
+ /**
+ * Instance of user front end class to be passed to callbacks
+ * @var TSax3
+ * @access private
+ */
+ public $htmlsax;
+ /**
+ * User defined object for handling elements
+ * @var object
+ * @access private
+ */
+ public $handler_object_element;
+ /**
+ * User defined open tag handler method
+ * @var string
+ * @access private
+ */
+ public $handler_method_opening;
+ /**
+ * User defined close tag handler method
+ * @var string
+ * @access private
+ */
+ public $handler_method_closing;
+ /**
+ * User defined object for handling data in elements
+ * @var object
+ * @access private
+ */
+ public $handler_object_data;
+ /**
+ * User defined data handler method
+ * @var string
+ * @access private
+ */
+ public $handler_method_data;
+ /**
+ * User defined object for handling processing instructions
+ * @var object
+ * @access private
+ */
+ public $handler_object_pi;
+ /**
+ * User defined processing instruction handler method
+ * @var string
+ * @access private
+ */
+ public $handler_method_pi;
+ /**
+ * User defined object for handling JSP/ASP tags
+ * @var object
+ * @access private
+ */
+ public $handler_object_jasp;
+ /**
+ * User defined JSP/ASP handler method
+ * @var string
+ * @access private
+ */
+ public $handler_method_jasp;
+ /**
+ * User defined object for handling XML escapes
+ * @var object
+ * @access private
+ */
+ public $handler_object_escape;
+ /**
+ * User defined XML escape handler method
+ * @var string
+ * @access private
+ */
+ public $handler_method_escape;
+ /**
+ * User defined handler object or NullHandler
+ * @var object
+ * @access private
+ */
+ public $handler_default;
+ /**
+ * Parser options determining parsing behavior
+ * @var array
+ * @access private
+ */
+ protected $parser_options = array();
+ /**
+ * XML document being parsed
+ * @var string
+ * @access private
+ */
+ protected $rawtext;
+ /**
+ * Position in XML document relative to start (0)
+ * @var int
+ * @access private
+ */
+ protected $position;
+ /**
+ * Length of the XML document in characters
+ * @var int
+ * @access private
+ */
+ protected $length;
+ /**
+ * Array of state objects
+ * @var array
+ * @access private
+ */
+ protected $State = array();
+
+ const TSAX3_STATE_STOP = 0;
+ const TSAX3_STATE_START = 1;
+ const TSAX3_STATE_TAG = 2;
+ const TSAX3_STATE_OPENING_TAG = 3;
+ const TSAX3_STATE_CLOSING_TAG = 4;
+ const TSAX3_STATE_ESCAPE = 6;
+ const TSAX3_STATE_JASP = 7;
+ const TSAX3_STATE_PI = 8;
+
+ /**
+ * Constructs TSax3_StateParser setting up states
+ * @var TSax3 instance of user front end class
+ * @access protected
+ */
+ protected function __construct($htmlsax) {
+ $this->htmlsax = $htmlsax;
+ $this->State[self::TSAX3_STATE_START] = new TSax3_StartingState();
+
+ $this->State[self::TSAX3_STATE_CLOSING_TAG] = new TSax3_ClosingTagState();
+ $this->State[self::TSAX3_STATE_TAG] = new TSax3_TagState();
+ $this->State[self::TSAX3_STATE_OPENING_TAG] = new TSax3_OpeningTagState();
+
+ $this->State[self::TSAX3_STATE_PI] = new TSax3_PiState();
+ $this->State[self::TSAX3_STATE_JASP] = new TSax3_JaspState();
+ $this->State[self::TSAX3_STATE_ESCAPE] = new TSax3_EscapeState();
+ }
+
+ /**
+ * Moves the position back one character
+ * @access protected
+ * @return void
+ */
+ function unscanCharacter() {
+ $this->position -= 1;
+ }
+
+ /**
+ * Moves the position forward one character
+ * @access protected
+ * @return void
+ */
+ function ignoreCharacter() {
+ $this->position += 1;
+ }
+
+ /**
+ * Returns the next character from the XML document or void if at end
+ * @access protected
+ * @return mixed
+ */
+ function scanCharacter() {
+ if ($this->position < $this->length) {
+ return $this->rawtext{$this->position++};
+ }
+ }
+
+ /**
+ * Returns a string from the current position to the next occurance
+ * of the supplied string
+ * @param string string to search until
+ * @access protected
+ * @return string
+ */
+ function scanUntilString($string) {
+ $start = $this->position;
+ $this->position = strpos($this->rawtext, $string, $start);
+ if ($this->position === FALSE) {
+ $this->position = $this->length;
+ }
+ return substr($this->rawtext, $start, $this->position - $start);
+ }
+
+ /**
+ * Returns a string from the current position until the first instance of
+ * one of the characters in the supplied string argument
+ * @param string string to search until
+ * @access protected
+ * @return string
+ * @abstract
+ */
+ function scanUntilCharacters($string) {}
+
+ /**
+ * Moves the position forward past any whitespace characters
+ * @access protected
+ * @return void
+ * @abstract
+ */
+ function ignoreWhitespace() {}
+
+ /**
+ * Begins the parsing operation, setting up any decorators, depending on
+ * parse options invoking _parse() to execute parsing
+ * @param string XML document to parse
+ * @access protected
+ * @return void
+ */
+ function parse($data) {
+ if ($this->parser_options['XML_OPTION_TRIM_DATA_NODES']==1) {
+ $decorator = new TSax3_Trim(
+ $this->handler_object_data,
+ $this->handler_method_data);
+ $this->handler_object_data =& $decorator;
+ $this->handler_method_data = 'trimData';
+ }
+ if ($this->parser_options['XML_OPTION_CASE_FOLDING']==1) {
+ $open_decor = new TSax3_CaseFolding(
+ $this->handler_object_element,
+ $this->handler_method_opening,
+ $this->handler_method_closing);
+ $this->handler_object_element =& $open_decor;
+ $this->handler_method_opening ='foldOpen';
+ $this->handler_method_closing ='foldClose';
+ }
+ if ($this->parser_options['XML_OPTION_LINEFEED_BREAK']==1) {
+ $decorator = new TSax3_Linefeed(
+ $this->handler_object_data,
+ $this->handler_method_data);
+ $this->handler_object_data =& $decorator;
+ $this->handler_method_data = 'breakData';
+ }
+ if ($this->parser_options['XML_OPTION_TAB_BREAK']==1) {
+ $decorator = new TSax3_Tab(
+ $this->handler_object_data,
+ $this->handler_method_data);
+ $this->handler_object_data =& $decorator;
+ $this->handler_method_data = 'breakData';
+ }
+ if ($this->parser_options['XML_OPTION_ENTITIES_UNPARSED']==1) {
+ $decorator = new TSax3_Entities_Unparsed(
+ $this->handler_object_data,
+ $this->handler_method_data);
+ $this->handler_object_data =& $decorator;
+ $this->handler_method_data = 'breakData';
+ }
+ if ($this->parser_options['XML_OPTION_ENTITIES_PARSED']==1) {
+ $decorator = new TSax3_Entities_Parsed(
+ $this->handler_object_data,
+ $this->handler_method_data);
+ $this->handler_object_data =& $decorator;
+ $this->handler_method_data = 'breakData';
+ }
+ // Note switched on by default
+ if ($this->parser_options['XML_OPTION_STRIP_ESCAPES']==1) {
+ $decorator = new TSax3_Escape_Stripper(
+ $this->handler_object_escape,
+ $this->handler_method_escape);
+ $this->handler_object_escape =& $decorator;
+ $this->handler_method_escape = 'strip';
+ }
+ $this->rawtext = $data;
+ $this->length = strlen($data);
+ $this->position = 0;
+ $this->_parse();
+ }
+
+ /**
+ * Performs the parsing itself, delegating calls to a specific parser
+ * state
+ * @param constant state object to parse with
+ * @access protected
+ * @return void
+ */
+ function _parse($state = self::TSAX3_STATE_START) {
+ do {
+ $state = $this->State[$state]->parse($this);
+ } while ($state != self::TSAX3_STATE_STOP &&
+ $this->position < $this->length);
+ }
+}
+
+/**
+* Parser for PHP Versions below 4.3.0. Uses a slower parsing mechanism than
+* the equivalent PHP 4.3.0+ subclass of StateParser
+* @package System.Security.SafeHtml
+* @access protected
+* @see TSax3_StateParser_Gtet430
+*/
+class TSax3_StateParser_Lt430 extends TSax3_StateParser {
+ /**
+ * Constructs TSax3_StateParser_Lt430 defining available
+ * parser options
+ * @var TSax3 instance of user front end class
+ * @access protected
+ */
+ function __construct(& $htmlsax) {
+ parent::__construct($htmlsax);
+ $this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0;
+ $this->parser_options['XML_OPTION_CASE_FOLDING'] = 0;
+ $this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0;
+ $this->parser_options['XML_OPTION_TAB_BREAK'] = 0;
+ $this->parser_options['XML_OPTION_ENTITIES_PARSED'] = 0;
+ $this->parser_options['XML_OPTION_ENTITIES_UNPARSED'] = 0;
+ $this->parser_options['XML_OPTION_STRIP_ESCAPES'] = 0;
+ //var_dump($this->parser_options);
+ }
+
+ /**
+ * Returns a string from the current position until the first instance of
+ * one of the characters in the supplied string argument
+ * @param string string to search until
+ * @access protected
+ * @return string
+ */
+ function scanUntilCharacters($string) {
+ $startpos = $this->position;
+ while ($this->position < $this->length && strpos($string, $this->rawtext{$this->position}) === FALSE) {
+ $this->position++;
+ }
+ return substr($this->rawtext, $startpos, $this->position - $startpos);
+ }
+
+ /**
+ * Moves the position forward past any whitespace characters
+ * @access protected
+ * @return void
+ */
+ function ignoreWhitespace() {
+ while ($this->position < $this->length &&
+ strpos(" \n\r\t", $this->rawtext{$this->position}) !== FALSE) {
+ $this->position++;
+ }
+ }
+
+ /**
+ * Begins the parsing operation, setting up the unparsed XML entities
+ * decorator if necessary then delegating further work to parent
+ * @param string XML document to parse
+ * @access protected
+ * @return void
+ */
+ function parse($data) {
+ parent::parse($data);
+ }
+}
+
+/**
+* Parser for PHP Versions equal to or greater than 4.3.0. Uses a faster
+* parsing mechanism than the equivalent PHP < 4.3.0 subclass of StateParser
+* @package System.Security.SafeHtml
+* @access protected
+* @see TSax3_StateParser_Lt430
+*/
+class TSax3_StateParser_Gtet430 extends TSax3_StateParser {
+ /**
+ * Constructs TSax3_StateParser_Gtet430 defining available
+ * parser options
+ * @var TSax3 instance of user front end class
+ * @access protected
+ */
+ function __construct(& $htmlsax) {
+ parent::__construct($htmlsax);
+ $this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0;
+ $this->parser_options['XML_OPTION_CASE_FOLDING'] = 0;
+ $this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0;
+ $this->parser_options['XML_OPTION_TAB_BREAK'] = 0;
+ $this->parser_options['XML_OPTION_ENTITIES_PARSED'] = 0;
+ $this->parser_options['XML_OPTION_ENTITIES_UNPARSED'] = 0;
+ $this->parser_options['XML_OPTION_STRIP_ESCAPES'] = 0;
+ }
+ /**
+ * Returns a string from the current position until the first instance of
+ * one of the characters in the supplied string argument.
+ * @param string string to search until
+ * @access protected
+ * @return string
+ */
+ function scanUntilCharacters($string) {
+ $startpos = $this->position;
+ $length = strcspn($this->rawtext, $string, $startpos);
+ $this->position += $length;
+ return substr($this->rawtext, $startpos, $length);
+ }
+
+ /**
+ * Moves the position forward past any whitespace characters
+ * @access protected
+ * @return void
+ */
+ function ignoreWhitespace() {
+ $this->position += strspn($this->rawtext, " \n\r\t", $this->position);
+ }
+
+ /**
+ * Begins the parsing operation, setting up the parsed and unparsed
+ * XML entity decorators if necessary then delegating further work
+ * to parent
+ * @param string XML document to parse
+ * @access protected
+ * @return void
+ */
+ function parse($data) {
+ parent::parse($data);
+ }
+}
+
+/**
+* Default NullHandler for methods which were not set by user
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_NullHandler {
+ /**
+ * Generic handler method which does nothing
+ * @access protected
+ * @return void
+ */
+ function DoNothing() {
+ }
+}
+
+/**
+* User interface class. All user calls should only be made to this class
+* @package System.Security.SafeHtml
+* @access public
+*/
+class TSax3 {
+ /**
+ * Instance of concrete subclass of TSax3_StateParser
+ * @var TSax3_StateParser
+ * @access private
+ */
+ private $state_parser;
+
+ /**
+ * Constructs TSax3 selecting concrete StateParser subclass
+ * depending on PHP version being used as well as setting the default
+ * NullHandler for all callbacks<br />
+ * <b>Example:</b>
+ * <pre>
+ * $myHandler = & new MyHandler();
+ * $parser = new TSax3();
+ * $parser->set_object($myHandler);
+ * $parser->set_option('XML_OPTION_CASE_FOLDING');
+ * $parser->set_element_handler('myOpenHandler','myCloseHandler');
+ * $parser->set_data_handler('myDataHandler');
+ * $parser->parser($xml);
+ * </pre>
+ * @access public
+ */
+ function __construct() {
+ if (version_compare(phpversion(), '4.3', 'ge')) {
+ $this->state_parser = new TSax3_StateParser_Gtet430($this);
+ } else {
+ $this->state_parser = new TSax3_StateParser_Lt430($this);
+ }
+ $nullhandler = new TSax3_NullHandler();
+ $this->set_object($nullhandler);
+ $this->set_element_handler('DoNothing', 'DoNothing');
+ $this->set_data_handler('DoNothing');
+ $this->set_pi_handler('DoNothing');
+ $this->set_jasp_handler('DoNothing');
+ $this->set_escape_handler('DoNothing');
+ }
+
+ /**
+ * Sets the user defined handler object. Returns a PEAR Error
+ * if supplied argument is not an object.
+ * @param object handler object containing SAX callback methods
+ * @access public
+ * @return mixed
+ */
+ function set_object(&$object) {
+ if ( is_object($object) ) {
+ $this->state_parser->handler_default =& $object;
+ return true;
+ } else {
+ require_once('PEAR.php');
+ PEAR::raiseError('TSax3::set_object requires '.
+ 'an object instance');
+ }
+ }
+
+ /**
+ * Sets a parser option. By default all options are switched off.
+ * Returns a PEAR Error if option is invalid<br />
+ * <b>Available options:</b>
+ * <ul>
+ * <li>XML_OPTION_TRIM_DATA_NODES: trim whitespace off the beginning
+ * and end of data passed to the data handler</li>
+ * <li>XML_OPTION_LINEFEED_BREAK: linefeeds result in additional data
+ * handler calls</li>
+ * <li>XML_OPTION_TAB_BREAK: tabs result in additional data handler
+ * calls</li>
+ * <li>XML_OPTION_ENTITIES_UNPARSED: XML entities are returned as
+ * seperate data handler calls in unparsed form</li>
+ * <li>XML_OPTION_ENTITIES_PARSED: (PHP 4.3.0+ only) XML entities are
+ * returned as seperate data handler calls and are parsed with
+ * PHP's html_entity_decode() function</li>
+ * <li>XML_OPTION_STRIP_ESCAPES: strips out the -- -- comment markers
+ * or CDATA markup inside an XML escape, if found.</li>
+ * </ul>
+ * To get HTMLSax to behave in the same way as the native PHP SAX parser,
+ * using it's default state, you need to switch on XML_OPTION_LINEFEED_BREAK,
+ * XML_OPTION_ENTITIES_PARSED and XML_OPTION_CASE_FOLDING
+ * @param string name of parser option
+ * @param int (optional) 1 to switch on, 0 for off
+ * @access public
+ * @return boolean
+ */
+ function set_option($name, $value=1) {
+ if ( array_key_exists($name,$this->state_parser->parser_options) ) {
+ $this->state_parser->parser_options[$name] = $value;
+ return true;
+ } else {
+ require_once('PEAR.php');
+ PEAR::raiseError('TSax3::set_option('.$name.') illegal');
+ }
+ }
+
+ /**
+ * Sets the data handler method which deals with the contents of XML
+ * elements.<br />
+ * The handler method must accept two arguments, the first being an
+ * instance of TSax3 and the second being the contents of an
+ * XML element e.g.
+ * <pre>
+ * function myDataHander(& $parser,$data){}
+ * </pre>
+ * @param string name of method
+ * @access public
+ * @return void
+ * @see set_object
+ */
+ function set_data_handler($data_method) {
+ $this->state_parser->handler_object_data =& $this->state_parser->handler_default;
+ $this->state_parser->handler_method_data = $data_method;
+ }
+
+ /**
+ * Sets the open and close tag handlers
+ * <br />The open handler method must accept three arguments; the parser,
+ * the tag name and an array of attributes e.g.
+ * <pre>
+ * function myOpenHander(& $parser,$tagname,$attrs=array()){}
+ * </pre>
+ * The close handler method must accept two arguments; the parser and
+ * the tag name e.g.
+ * <pre>
+ * function myCloseHander(& $parser,$tagname){}
+ * </pre>
+ * @param string name of open method
+ * @param string name of close method
+ * @access public
+ * @return void
+ * @see set_object
+ */
+ function set_element_handler($opening_method, $closing_method) {
+ $this->state_parser->handler_object_element =& $this->state_parser->handler_default;
+ $this->state_parser->handler_method_opening = $opening_method;
+ $this->state_parser->handler_method_closing = $closing_method;
+ }
+
+ /**
+ * Sets the processing instruction handler method e.g. for PHP open
+ * and close tags<br />
+ * The handler method must accept three arguments; the parser, the
+ * PI target and data inside the PI
+ * <pre>
+ * function myPIHander(& $parser,$target, $data){}
+ * </pre>
+ * @param string name of method
+ * @access public
+ * @return void
+ * @see set_object
+ */
+ function set_pi_handler($pi_method) {
+ $this->state_parser->handler_object_pi =& $this->state_parser->handler_default;
+ $this->state_parser->handler_method_pi = $pi_method;
+ }
+
+ /**
+ * Sets the XML escape handler method e.g. for comments and doctype
+ * declarations<br />
+ * The handler method must accept two arguments; the parser and the
+ * contents of the escaped section
+ * <pre>
+ * function myEscapeHander(& $parser, $data){}
+ * </pre>
+ * @param string name of method
+ * @access public
+ * @return void
+ * @see set_object
+ */
+ function set_escape_handler($escape_method) {
+ $this->state_parser->handler_object_escape =& $this->state_parser->handler_default;
+ $this->state_parser->handler_method_escape = $escape_method;
+ }
+
+ /**
+ * Sets the JSP/ASP markup handler<br />
+ * The handler method must accept two arguments; the parser and
+ * body of the JASP tag
+ * <pre>
+ * function myJaspHander(& $parser, $data){}
+ * </pre>
+ * @param string name of method
+ * @access public
+ * @return void
+ * @see set_object
+ */
+ function set_jasp_handler ($jasp_method) {
+ $this->state_parser->handler_object_jasp =& $this->state_parser->handler_default;
+ $this->state_parser->handler_method_jasp = $jasp_method;
+ }
+
+ /**
+ * Returns the current string position of the "cursor" inside the XML
+ * document
+ * <br />Intended for use from within a user defined handler called
+ * via the $parser reference e.g.
+ * <pre>
+ * function myDataHandler(& $parser,$data) {
+ * echo( 'Current position: '.$parser->get_current_position() );
+ * }
+ * </pre>
+ * @access public
+ * @return int
+ * @see get_length
+ */
+ function get_current_position() {
+ return $this->state_parser->position;
+ }
+
+ /**
+ * Returns the string length of the XML document being parsed
+ * @access public
+ * @return int
+ */
+ function get_length() {
+ return $this->state_parser->length;
+ }
+
+ /**
+ * Start parsing some XML
+ * @param string XML document
+ * @access public
+ * @return void
+ */
+ function parse($data) {
+ $this->state_parser->parse($data);
+ }
+}
diff --git a/framework/Vendor/SafeHtml/HTMLSax3/Decorators.php b/framework/Vendor/SafeHtml/HTMLSax3/Decorators.php
new file mode 100644
index 00000000..d300ae65
--- /dev/null
+++ b/framework/Vendor/SafeHtml/HTMLSax3/Decorators.php
@@ -0,0 +1,361 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+//
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2002 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Alexander Zhukov <alex@veresk.ru> Original port from Python |
+// | Authors: Harry Fuecks <hfuecks@phppatterns.com> Port to PEAR + more |
+// | Authors: Many @ Sitepointforums Advanced PHP Forums |
+// +----------------------------------------------------------------------+
+//
+// $Id: Decorators.php 3188 2012-07-12 12:13:23Z ctrlaltca $
+//
+/**
+* Decorators for dealing with parser options
+* @package System.Security.SafeHtml
+* @see TSax3::set_option
+*/
+/**
+* Trims the contents of element data from whitespace at start and end
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_Trim {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original handler method
+ * @var string
+ * @access private
+ */
+ private $orig_method;
+ /**
+ * Constructs TSax3_Trim
+ * @param object handler object being decorated
+ * @param string original handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_method = $orig_method;
+ }
+ /**
+ * Trims the data
+ * @param TSax3
+ * @param string element data
+ * @access protected
+ */
+ function trimData(&$parser, $data) {
+ $data = trim($data);
+ if ($data != '') {
+ $this->orig_obj->{$this->orig_method}($parser, $data);
+ }
+ }
+}
+/**
+* Coverts tag names to upper case
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_CaseFolding {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original open handler method
+ * @var string
+ * @access private
+ */
+ private $orig_open_method;
+ /**
+ * Original close handler method
+ * @var string
+ * @access private
+ */
+ private $orig_close_method;
+ /**
+ * Constructs TSax3_CaseFolding
+ * @param object handler object being decorated
+ * @param string original open handler method
+ * @param string original close handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_open_method, $orig_close_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_open_method = $orig_open_method;
+ $this->orig_close_method = $orig_close_method;
+ }
+ /**
+ * Folds up open tag callbacks
+ * @param TSax3
+ * @param string tag name
+ * @param array tag attributes
+ * @access protected
+ */
+ function foldOpen(&$parser, $tag, $attrs=array(), $empty = FALSE) {
+ $this->orig_obj->{$this->orig_open_method}($parser, strtoupper($tag), $attrs, $empty);
+ }
+ /**
+ * Folds up close tag callbacks
+ * @param TSax3
+ * @param string tag name
+ * @access protected
+ */
+ function foldClose(&$parser, $tag, $empty = FALSE) {
+ $this->orig_obj->{$this->orig_close_method}($parser, strtoupper($tag), $empty);
+ }
+}
+/**
+* Breaks up data by linefeed characters, resulting in additional
+* calls to the data handler
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_Linefeed {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original handler method
+ * @var string
+ * @access private
+ */
+ private $orig_method;
+ /**
+ * Constructs TSax3_LineFeed
+ * @param object handler object being decorated
+ * @param string original handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_method = $orig_method;
+ }
+ /**
+ * Breaks the data up by linefeeds
+ * @param TSax3
+ * @param string element data
+ * @access protected
+ */
+ function breakData(&$parser, $data) {
+ $data = explode("\n",$data);
+ foreach ( $data as $chunk ) {
+ $this->orig_obj->{$this->orig_method}($parser, $chunk);
+ }
+ }
+}
+/**
+* Breaks up data by tab characters, resulting in additional
+* calls to the data handler
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_Tab {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original handler method
+ * @var string
+ * @access private
+ */
+ private $orig_method;
+ /**
+ * Constructs TSax3_Tab
+ * @param object handler object being decorated
+ * @param string original handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_method = $orig_method;
+ }
+ /**
+ * Breaks the data up by linefeeds
+ * @param TSax3
+ * @param string element data
+ * @access protected
+ */
+ function breakData(&$parser, $data) {
+ $data = explode("\t",$data);
+ foreach ( $data as $chunk ) {
+ $this->orig_obj->{$this->orig_method}($this, $chunk);
+ }
+ }
+}
+/**
+* Breaks up data by XML entities and parses them with html_entity_decode(),
+* resulting in additional calls to the data handler<br />
+* Requires PHP 4.3.0+
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_Entities_Parsed {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original handler method
+ * @var string
+ * @access private
+ */
+ private $orig_method;
+ /**
+ * Constructs TSax3_Entities_Parsed
+ * @param object handler object being decorated
+ * @param string original handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_method = $orig_method;
+ }
+ /**
+ * Breaks the data up by XML entities
+ * @param TSax3
+ * @param string element data
+ * @access protected
+ */
+ function breakData(&$parser, $data) {
+ $data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+ foreach ( $data as $chunk ) {
+ $chunk = html_entity_decode($chunk,ENT_NOQUOTES);
+ $this->orig_obj->{$this->orig_method}($this, $chunk);
+ }
+ }
+}
+/**
+* Compatibility with older PHP versions
+*/
+if (version_compare(phpversion(), '4.3', '<') && !function_exists('html_entity_decode') ) {
+ function html_entity_decode($str, $style=ENT_NOQUOTES) {
+ return strtr($str,
+ array_flip(get_html_translation_table(HTML_ENTITIES,$style)));
+ }
+}
+/**
+* Breaks up data by XML entities but leaves them unparsed,
+* resulting in additional calls to the data handler<br />
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_Entities_Unparsed {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original handler method
+ * @var string
+ * @access private
+ */
+ private $orig_method;
+ /**
+ * Constructs TSax3_Entities_Unparsed
+ * @param object handler object being decorated
+ * @param string original handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_method = $orig_method;
+ }
+ /**
+ * Breaks the data up by XML entities
+ * @param TSax3
+ * @param string element data
+ * @access protected
+ */
+ function breakData(&$parser, $data) {
+ $data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
+ foreach ( $data as $chunk ) {
+ $this->orig_obj->{$this->orig_method}($this, $chunk);
+ }
+ }
+}
+
+/**
+* Strips the HTML comment markers or CDATA sections from an escape.
+* If XML_OPTIONS_FULL_ESCAPES is on, this decorator is not used.<br />
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_Escape_Stripper {
+ /**
+ * Original handler object
+ * @var object
+ * @access private
+ */
+ private $orig_obj;
+ /**
+ * Original handler method
+ * @var string
+ * @access private
+ */
+ private $orig_method;
+ /**
+ * Constructs TSax3_Entities_Unparsed
+ * @param object handler object being decorated
+ * @param string original handler method
+ * @access protected
+ */
+ function __construct(&$orig_obj, $orig_method) {
+ $this->orig_obj =& $orig_obj;
+ $this->orig_method = $orig_method;
+ }
+ /**
+ * Breaks the data up by XML entities
+ * @param TSax3
+ * @param string element data
+ * @access protected
+ */
+ function strip(&$parser, $data) {
+ // Check for HTML comments first
+ if ( substr($data,0,2) == '--' ) {
+ $patterns = array(
+ '/^\-\-/', // Opening comment: --
+ '/\-\-$/', // Closing comment: --
+ );
+ $data = preg_replace($patterns,'',$data);
+
+ // Check for XML CDATA sections (note: don't do both!)
+ } else if ( substr($data,0,1) == '[' ) {
+ $patterns = array(
+ '/^\[.*CDATA.*\[/s', // Opening CDATA
+ '/\].*\]$/s', // Closing CDATA
+ );
+ $data = preg_replace($patterns,'',$data);
+ }
+
+ $this->orig_obj->{$this->orig_method}($this, $data);
+ }
+}
diff --git a/framework/Vendor/SafeHtml/HTMLSax3/States.php b/framework/Vendor/SafeHtml/HTMLSax3/States.php
new file mode 100644
index 00000000..5001bb76
--- /dev/null
+++ b/framework/Vendor/SafeHtml/HTMLSax3/States.php
@@ -0,0 +1,286 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4: */
+//
+// +----------------------------------------------------------------------+
+// | PHP Version 4 |
+// +----------------------------------------------------------------------+
+// | Copyright (c) 1997-2002 The PHP Group |
+// +----------------------------------------------------------------------+
+// | This source file is subject to version 2.02 of the PHP license, |
+// | that is bundled with this package in the file LICENSE, and is |
+// | available at through the world-wide-web at |
+// | http://www.php.net/license/3_0.txt. |
+// | If you did not receive a copy of the PHP license and are unable to |
+// | obtain it through the world-wide-web, please send a note to |
+// | license@php.net so we can mail you a copy immediately. |
+// +----------------------------------------------------------------------+
+// | Authors: Alexander Zhukov <alex@veresk.ru> Original port from Python |
+// | Authors: Harry Fuecks <hfuecks@phppatterns.com> Port to PEAR + more |
+// | Authors: Many @ Sitepointforums Advanced PHP Forums |
+// +----------------------------------------------------------------------+
+//
+// $Id: States.php 3188 2012-07-12 12:13:23Z ctrlaltca $
+//
+/**
+* Parsing states.
+* @package System.Security.SafeHtml
+*/
+/**
+* Define parser states
+*/
+/*define('TSAX3_STATE_STOP', 0);
+define('TSAX3_STATE_START', 1);
+define('TSAX3_STATE_TAG', 2);
+define('TSAX3_STATE_OPENING_TAG', 3);
+define('TSAX3_STATE_CLOSING_TAG', 4);
+define('TSAX3_STATE_ESCAPE', 6);
+define('TSAX3_STATE_JASP', 7);
+define('TSAX3_STATE_PI', 8);
+*/
+/**
+* StartingState searches for the start of any XML tag
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_StartingState {
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant TSAX3_STATE_TAG
+ * @access protected
+ */
+ function parse(&$context) {
+ $data = $context->scanUntilString('<');
+ if ($data != '') {
+ $context->handler_object_data->
+ {$context->handler_method_data}($context->htmlsax, $data);
+ }
+ $context->IgnoreCharacter();
+ return TSax3_StateParser::TSAX3_STATE_TAG;
+ }
+}
+/**
+* Decides which state to move one from after StartingState
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_TagState {
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant the next state to move into
+ * @access protected
+ */
+ function parse(&$context) {
+ switch($context->ScanCharacter()) {
+ case '/':
+ return TSax3_StateParser::TSAX3_STATE_CLOSING_TAG;
+ break;
+ case '?':
+ return TSax3_StateParser::TSAX3_STATE_PI;
+ break;
+ case '%':
+ return TSax3_StateParser::TSAX3_STATE_JASP;
+ break;
+ case '!':
+ return TSax3_StateParser::TSAX3_STATE_ESCAPE;
+ break;
+ default:
+ $context->unscanCharacter();
+ return TSax3_StateParser::TSAX3_STATE_OPENING_TAG;
+ }
+ }
+}
+/**
+* Dealing with closing XML tags
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_ClosingTagState {
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant TSAX3_STATE_START
+ * @access protected
+ */
+ function parse(&$context) {
+ $tag = $context->scanUntilCharacters('/>');
+ if ($tag != '') {
+ $char = $context->scanCharacter();
+ if ($char == '/') {
+ $char = $context->scanCharacter();
+ if ($char != '>') {
+ $context->unscanCharacter();
+ }
+ }
+ $context->handler_object_element->
+ {$context->handler_method_closing}($context->htmlsax, $tag, FALSE);
+ }
+ return TSax3_StateParser::TSAX3_STATE_START;
+ }
+}
+/**
+* Dealing with opening XML tags
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_OpeningTagState {
+ /**
+ * Handles attributes
+ * @param string attribute name
+ * @param string attribute value
+ * @return void
+ * @access protected
+ * @see TSax3_AttributeStartState
+ */
+ function parseAttributes(&$context) {
+ $Attributes = array();
+
+ $context->ignoreWhitespace();
+ $attributename = $context->scanUntilCharacters("=/> \n\r\t");
+ while ($attributename != '') {
+ $attributevalue = NULL;
+ $context->ignoreWhitespace();
+ $char = $context->scanCharacter();
+ if ($char == '=') {
+ $context->ignoreWhitespace();
+ $char = $context->ScanCharacter();
+ if ($char == '"') {
+ $attributevalue= $context->scanUntilString('"');
+ $context->IgnoreCharacter();
+ } else if ($char == "'") {
+ $attributevalue = $context->scanUntilString("'");
+ $context->IgnoreCharacter();
+ } else {
+ $context->unscanCharacter();
+ $attributevalue =
+ $context->scanUntilCharacters("> \n\r\t");
+ }
+ } else if ($char !== NULL) {
+ $attributevalue = NULL;
+ $context->unscanCharacter();
+ }
+ $Attributes[$attributename] = $attributevalue;
+
+ $context->ignoreWhitespace();
+ $attributename = $context->scanUntilCharacters("=/> \n\r\t");
+ }
+ return $Attributes;
+ }
+
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant TSAX3_STATE_START
+ * @access protected
+ */
+ function parse(&$context) {
+ $tag = $context->scanUntilCharacters("/> \n\r\t");
+ if ($tag != '') {
+ $this->attrs = array();
+ $Attributes = $this->parseAttributes($context);
+ $char = $context->scanCharacter();
+ if ($char == '/') {
+ $char = $context->scanCharacter();
+ if ($char != '>') {
+ $context->unscanCharacter();
+ }
+ $context->handler_object_element->
+ {$context->handler_method_opening}($context->htmlsax, $tag,
+ $Attributes, TRUE);
+ $context->handler_object_element->
+ {$context->handler_method_closing}($context->htmlsax, $tag,
+ TRUE);
+ } else {
+ $context->handler_object_element->
+ {$context->handler_method_opening}($context->htmlsax, $tag,
+ $Attributes, FALSE);
+ }
+ }
+ return TSax3_StateParser::TSAX3_STATE_START;
+ }
+}
+
+/**
+* Deals with XML escapes handling comments and CDATA correctly
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_EscapeState {
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant TSAX3_STATE_START
+ * @access protected
+ */
+ function parse(&$context) {
+ $char = $context->ScanCharacter();
+ if ($char == '-') {
+ $char = $context->ScanCharacter();
+ if ($char == '-') {
+ $context->unscanCharacter();
+ $context->unscanCharacter();
+ $text = $context->scanUntilString('-->');
+ $text .= $context->scanCharacter();
+ $text .= $context->scanCharacter();
+ } else {
+ $context->unscanCharacter();
+ $text = $context->scanUntilString('>');
+ }
+ } else if ( $char == '[') {
+ $context->unscanCharacter();
+ $text = $context->scanUntilString(']>');
+ $text.= $context->scanCharacter();
+ } else {
+ $context->unscanCharacter();
+ $text = $context->scanUntilString('>');
+ }
+
+ $context->IgnoreCharacter();
+ if ($text != '') {
+ $context->handler_object_escape->
+ {$context->handler_method_escape}($context->htmlsax, $text);
+ }
+ return TSax3_StateParser::TSAX3_STATE_START;
+ }
+}
+/**
+* Deals with JASP/ASP markup
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_JaspState {
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant TSAX3_STATE_START
+ * @access protected
+ */
+ function parse(&$context) {
+ $text = $context->scanUntilString('%>');
+ if ($text != '') {
+ $context->handler_object_jasp->
+ {$context->handler_method_jasp}($context->htmlsax, $text);
+ }
+ $context->IgnoreCharacter();
+ $context->IgnoreCharacter();
+ return TSax3_StateParser::TSAX3_STATE_START;
+ }
+}
+/**
+* Deals with XML processing instructions
+* @package System.Security.SafeHtml
+* @access protected
+*/
+class TSax3_PiState {
+ /**
+ * @param TSax3_StateParser subclass
+ * @return constant TSAX3_STATE_START
+ * @access protected
+ */
+ function parse(&$context) {
+ $target = $context->scanUntilCharacters(" \n\r\t");
+ $data = $context->scanUntilString('?>');
+ if ($data != '') {
+ $context->handler_object_pi->
+ {$context->handler_method_pi}($context->htmlsax, $target, $data);
+ }
+ $context->IgnoreCharacter();
+ $context->IgnoreCharacter();
+ return TSax3_StateParser::TSAX3_STATE_START;
+ }
+}
diff --git a/framework/Vendor/SafeHtml/TSafeHtmlParser.php b/framework/Vendor/SafeHtml/TSafeHtmlParser.php
new file mode 100644
index 00000000..2c01bde2
--- /dev/null
+++ b/framework/Vendor/SafeHtml/TSafeHtmlParser.php
@@ -0,0 +1,685 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * SafeHTML Parser
+ *
+ * PHP versions 4 and 5
+ *
+ * @category HTML
+ * @package System.Security
+ * @author Roman Ivanov <thingol@mail.ru>
+ * @copyright 2004-2005 Roman Ivanov
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version 1.3.7
+ * @link http://pixel-apes.com/safehtml/
+ */
+
+
+/**
+ * This package requires HTMLSax3 package
+ */
+Prado::using('System.Vendor.SafeHtml.HTMLSax3');
+
+
+/**
+ *
+ * TSafeHtmlParser
+ *
+ * This parser strips down all potentially dangerous content within HTML:
+ * <ul>
+ * <li>opening tag without its closing tag</li>
+ * <li>closing tag without its opening tag</li>
+ * <li>any of these tags: "base", "basefont", "head", "html", "body", "applet",
+ * "object", "iframe", "frame", "frameset", "script", "layer", "ilayer", "embed",
+ * "bgsound", "link", "meta", "style", "title", "blink", "xml" etc.</li>
+ * <li>any of these attributes: on*, data*, dynsrc</li>
+ * <li>javascript:/vbscript:/about: etc. protocols</li>
+ * <li>expression/behavior etc. in styles</li>
+ * <li>any other active content</li>
+ * </ul>
+ * It also tries to convert code to XHTML valid, but htmltidy is far better
+ * solution for this task.
+ *
+ * <b>Example:</b>
+ * <pre>
+ * $parser = Prado::createComponent('System.Vendor.SafeHtml.TSafeHtmlParser');
+ * $result = $parser->parse($doc);
+ * </pre>
+ *
+ * @category HTML
+ * @package System.Security
+ * @author Roman Ivanov <thingol@mail.ru>
+ * @copyright 1997-2005 Roman Ivanov
+ * @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
+ * @version Release: @package_version@
+ * @link http://pear.php.net/package/SafeHTML
+ */
+class TSafeHtmlParser
+{
+ /**
+ * Storage for resulting HTML output
+ *
+ * @var string
+ * @access private
+ */
+ private $_xhtml = '';
+
+ /**
+ * Array of counters for each tag
+ *
+ * @var array
+ * @access private
+ */
+ private $_counter = array();
+
+ /**
+ * Stack of unclosed tags
+ *
+ * @var array
+ * @access private
+ */
+ private $_stack = array();
+
+ /**
+ * Array of counters for tags that must be deleted with all content
+ *
+ * @var array
+ * @access private
+ */
+ private $_dcCounter = array();
+
+ /**
+ * Stack of unclosed tags that must be deleted with all content
+ *
+ * @var array
+ * @access private
+ */
+ private $_dcStack = array();
+
+ /**
+ * Stores level of list (ol/ul) nesting
+ *
+ * @var int
+ * @access private
+ */
+ private $_listScope = 0;
+
+ /**
+ * Stack of unclosed list tags
+ *
+ * @var array
+ * @access private
+ */
+ private $_liStack = array();
+
+ /**
+ * Array of prepared regular expressions for protocols (schemas) matching
+ *
+ * @var array
+ * @access private
+ */
+ private $_protoRegexps = array();
+
+ /**
+ * Array of prepared regular expressions for CSS matching
+ *
+ * @var array
+ * @access private
+ */
+ private $_cssRegexps = array();
+
+ /**
+ * List of single tags ("<tag />")
+ *
+ * @var array
+ * @access public
+ */
+ public $singleTags = array('area', 'br', 'img', 'input', 'hr', 'wbr', );
+
+ /**
+ * List of dangerous tags (such tags will be deleted)
+ *
+ * @var array
+ * @access public
+ */
+ public $deleteTags = array(
+ 'applet', 'base', 'basefont', 'bgsound', 'blink', 'body',
+ 'embed', 'frame', 'frameset', 'head', 'html', 'ilayer',
+ 'iframe', 'layer', 'link', 'meta', 'object', 'style',
+ 'title', 'script',
+ );
+
+ /**
+ * List of dangerous tags (such tags will be deleted, and all content
+ * inside this tags will be also removed)
+ *
+ * @var array
+ * @access public
+ */
+ public $deleteTagsContent = array('script', 'style', 'title', 'xml', );
+
+ /**
+ * Type of protocols filtering ('white' or 'black')
+ *
+ * @var string
+ * @access public
+ */
+ public $protocolFiltering = 'white';
+
+ /**
+ * List of "dangerous" protocols (used for blacklist-filtering)
+ *
+ * @var array
+ * @access public
+ */
+ public $blackProtocols = array(
+ 'about', 'chrome', 'data', 'disk', 'hcp',
+ 'help', 'javascript', 'livescript', 'lynxcgi', 'lynxexec',
+ 'ms-help', 'ms-its', 'mhtml', 'mocha', 'opera',
+ 'res', 'resource', 'shell', 'vbscript', 'view-source',
+ 'vnd.ms.radio', 'wysiwyg',
+ );
+
+ /**
+ * List of "safe" protocols (used for whitelist-filtering)
+ *
+ * @var array
+ * @access public
+ */
+ public $whiteProtocols = array(
+ 'ed2k', 'file', 'ftp', 'gopher', 'http', 'https',
+ 'irc', 'mailto', 'news', 'nntp', 'telnet', 'webcal',
+ 'xmpp', 'callto',
+ );
+
+ /**
+ * List of attributes that can contain protocols
+ *
+ * @var array
+ * @access public
+ */
+ public $protocolAttributes = array(
+ 'action', 'background', 'codebase', 'dynsrc', 'href', 'lowsrc', 'src',
+ );
+
+ /**
+ * List of dangerous CSS keywords
+ *
+ * Whole style="" attribute will be removed, if parser will find one of
+ * these keywords
+ *
+ * @var array
+ * @access public
+ */
+ public $cssKeywords = array(
+ 'absolute', 'behavior', 'behaviour', 'content', 'expression',
+ 'fixed', 'include-source', 'moz-binding',
+ );
+
+ /**
+ * List of tags that can have no "closing tag"
+ *
+ * @var array
+ * @access public
+ * @deprecated XHTML does not allow such tags
+ */
+ public $noClose = array();
+
+ /**
+ * List of block-level tags that terminates paragraph
+ *
+ * Paragraph will be closed when this tags opened
+ *
+ * @var array
+ * @access public
+ */
+ public $closeParagraph = array(
+ 'address', 'blockquote', 'center', 'dd', 'dir', 'div',
+ 'dl', 'dt', 'h1', 'h2', 'h3', 'h4',
+ 'h5', 'h6', 'hr', 'isindex', 'listing', 'marquee',
+ 'menu', 'multicol', 'ol', 'p', 'plaintext', 'pre',
+ 'table', 'ul', 'xmp',
+ );
+
+ /**
+ * List of table tags, all table tags outside a table will be removed
+ *
+ * @var array
+ * @access public
+ */
+ public $tableTags = array(
+ 'caption', 'col', 'colgroup', 'tbody', 'td', 'tfoot', 'th',
+ 'thead', 'tr',
+ );
+
+ /**
+ * List of list tags
+ *
+ * @var array
+ * @access public
+ */
+ public $listTags = array('dir', 'menu', 'ol', 'ul', 'dl', );
+
+ /**
+ * List of dangerous attributes
+ *
+ * @var array
+ * @access public
+ */
+ public $attributes = array('dynsrc');
+ //public $attributes = array('dynsrc', 'id', 'name', ); //id and name are dangerous?
+
+ /**
+ * List of allowed "namespaced" attributes
+ *
+ * @var array
+ * @access public
+ */
+ public $attributesNS = array('xml:lang', );
+
+ /**
+ * Constructs class
+ *
+ * @access public
+ */
+ public function __construct()
+ {
+ //making regular expressions based on Proto & CSS arrays
+ foreach ($this->blackProtocols as $proto) {
+ $preg = "/[\s\x01-\x1F]*";
+ for ($i=0; $i<strlen($proto); $i++) {
+ $preg .= $proto{$i} . "[\s\x01-\x1F]*";
+ }
+ $preg .= ":/i";
+ $this->_protoRegexps[] = $preg;
+ }
+
+ foreach ($this->cssKeywords as $css) {
+ $this->_cssRegexps[] = '/' . $css . '/i';
+ }
+ return true;
+ }
+
+ /**
+ * Handles the writing of attributes - called from $this->_openHandler()
+ *
+ * @param array $attrs array of attributes $name => $value
+ * @return boolean
+ * @access private
+ */
+ private function _writeAttrs ($attrs)
+ {
+ if (is_array($attrs)) {
+ foreach ($attrs as $name => $value) {
+
+ $name = strtolower($name);
+
+ if (strpos($name, 'on') === 0) {
+ continue;
+ }
+ if (strpos($name, 'data') === 0) {
+ continue;
+ }
+ if (in_array($name, $this->attributes)) {
+ continue;
+ }
+ if (!preg_match("/^[a-z0-9]+$/i", $name)) {
+ if (!in_array($name, $this->attributesNS))
+ {
+ continue;
+ }
+ }
+
+ if (($value === TRUE) || (is_null($value))) {
+ $value = $name;
+ }
+
+ if ($name == 'style') {
+
+ // removes insignificant backslahes
+ $value = str_replace("\\", '', $value);
+
+ // removes CSS comments
+ while (1)
+ {
+ $_value = preg_replace("!/\*.*?\*/!s", '', $value);
+ if ($_value == $value) break;
+ $value = $_value;
+ }
+
+ // replace all & to &amp;
+ $value = str_replace('&amp;', '&', $value);
+ $value = str_replace('&', '&amp;', $value);
+
+ foreach ($this->_cssRegexps as $css) {
+ if (preg_match($css, $value)) {
+ continue 2;
+ }
+ }
+ foreach ($this->_protoRegexps as $proto) {
+ if (preg_match($proto, $value)) {
+ continue 2;
+ }
+ }
+ }
+
+ $tempval = preg_replace_callback(
+ '/&#(\d+);?/m',
+ function ($matches) {
+ return chr($matches[0]);
+ },
+ $value
+ ); //"'
+
+ $tempval = preg_replace_callback(
+ '/&#x([0-9a-f]+);?/mi',
+ function ($matches) {
+ return chr(hexdec($matches[0]));
+ },
+ $tempval
+ );
+
+ if ((in_array($name, $this->protocolAttributes)) &&
+ (strpos($tempval, ':') !== false))
+ {
+ if ($this->protocolFiltering == 'black') {
+ foreach ($this->_protoRegexps as $proto) {
+ if (preg_match($proto, $tempval)) continue 2;
+ }
+ } else {
+ $_tempval = explode(':', $tempval);
+ $proto = $_tempval[0];
+ if (!in_array($proto, $this->whiteProtocols)) {
+ continue;
+ }
+ }
+ }
+
+ $value = str_replace("\"", "&quot;", $value);
+ $this->_xhtml .= ' ' . $name . '="' . $value . '"';
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Opening tag handler - called from HTMLSax
+ *
+ * @param object $parser HTML Parser
+ * @param string $name tag name
+ * @param array $attrs tag attributes
+ * @return boolean
+ * @access private
+ */
+ public function _openHandler(&$parser, $name, $attrs)
+ {
+ $name = strtolower($name);
+
+ if (in_array($name, $this->deleteTagsContent)) {
+ array_push($this->_dcStack, $name);
+ $this->_dcCounter[$name] = isset($this->_dcCounter[$name]) ? $this->_dcCounter[$name]+1 : 1;
+ }
+ if (count($this->_dcStack) != 0) {
+ return true;
+ }
+
+ if (in_array($name, $this->deleteTags)) {
+ return true;
+ }
+
+ if (!preg_match("/^[a-z0-9]+$/i", $name)) {
+ if (preg_match("!(?:\@|://)!i", $name)) {
+ $this->_xhtml .= '&lt;' . $name . '&gt;';
+ }
+ return true;
+ }
+
+ if (in_array($name, $this->singleTags)) {
+ $this->_xhtml .= '<' . $name;
+ $this->_writeAttrs($attrs);
+ $this->_xhtml .= ' />';
+ return true;
+ }
+
+ // TABLES: cannot open table elements when we are not inside table
+ if ((isset($this->_counter['table'])) && ($this->_counter['table'] <= 0)
+ && (in_array($name, $this->tableTags)))
+ {
+ return true;
+ }
+
+ // PARAGRAPHS: close paragraph when closeParagraph tags opening
+ if ((in_array($name, $this->closeParagraph)) && (in_array('p', $this->_stack))) {
+ $this->_closeHandler($parser, 'p');
+ }
+
+ // LISTS: we should close <li> if <li> of the same level opening
+ if ($name == 'li' && count($this->_liStack) &&
+ $this->_listScope == $this->_liStack[count($this->_liStack)-1])
+ {
+ $this->_closeHandler($parser, 'li');
+ }
+
+ // LISTS: we want to know on what nesting level of lists we are
+ if (in_array($name, $this->listTags)) {
+ $this->_listScope++;
+ }
+ if ($name == 'li') {
+ array_push($this->_liStack, $this->_listScope);
+ }
+
+ $this->_xhtml .= '<' . $name;
+ $this->_writeAttrs($attrs);
+ $this->_xhtml .= '>';
+ array_push($this->_stack,$name);
+ $this->_counter[$name] = isset($this->_counter[$name]) ? $this->_counter[$name]+1 : 1;
+ return true;
+ }
+
+ /**
+ * Closing tag handler - called from HTMLSax
+ *
+ * @param object $parsers HTML parser
+ * @param string $name tag name
+ * @return boolean
+ * @access private
+ */
+ public function _closeHandler(&$parser, $name)
+ {
+
+ $name = strtolower($name);
+
+ if (isset($this->_dcCounter[$name]) && ($this->_dcCounter[$name] > 0) &&
+ (in_array($name, $this->deleteTagsContent)))
+ {
+ while ($name != ($tag = array_pop($this->_dcStack))) {
+ $this->_dcCounter[$tag]--;
+ }
+
+ $this->_dcCounter[$name]--;
+ }
+
+ if (count($this->_dcStack) != 0) {
+ return true;
+ }
+
+ if ((isset($this->_counter[$name])) && ($this->_counter[$name] > 0)) {
+ while ($name != ($tag = array_pop($this->_stack))) {
+ $this->_closeTag($tag);
+ }
+
+ $this->_closeTag($name);
+ }
+ return true;
+ }
+
+ /**
+ * Closes tag
+ *
+ * @param string $tag tag name
+ * @return boolean
+ * @access private
+ */
+ public function _closeTag($tag)
+ {
+ if (!in_array($tag, $this->noClose)) {
+ $this->_xhtml .= '</' . $tag . '>';
+ }
+
+ $this->_counter[$tag]--;
+
+ if (in_array($tag, $this->listTags)) {
+ $this->_listScope--;
+ }
+
+ if ($tag == 'li') {
+ array_pop($this->_liStack);
+ }
+ return true;
+ }
+
+ /**
+ * Character data handler - called from HTMLSax
+ *
+ * @param object $parser HTML parser
+ * @param string $data textual data
+ * @return boolean
+ * @access private
+ */
+ public function _dataHandler(&$parser, $data)
+ {
+ if (count($this->_dcStack) == 0) {
+ $this->_xhtml .= $data;
+ }
+ return true;
+ }
+
+ /**
+ * Escape handler - called from HTMLSax
+ *
+ * @param object $parser HTML parser
+ * @param string $data comments or other type of data
+ * @return boolean
+ * @access private
+ */
+ public function _escapeHandler(&$parser, $data)
+ {
+ return true;
+ }
+
+ /**
+ * Returns the XHTML document
+ *
+ * @return string Processed (X)HTML document
+ * @access public
+ */
+ public function getXHTML ()
+ {
+ while ($tag = array_pop($this->_stack)) {
+ $this->_closeTag($tag);
+ }
+
+ return $this->_xhtml;
+ }
+
+ /**
+ * Clears current document data
+ *
+ * @return boolean
+ * @access public
+ */
+ public function clear()
+ {
+ $this->_xhtml = '';
+ return true;
+ }
+
+ /**
+ * Main parsing fuction
+ *
+ * @param string $doc HTML document for processing
+ * @return string Processed (X)HTML document
+ * @access public
+ */
+ public function parse($doc, $isUTF7=false)
+ {
+ $this->clear();
+
+ // Save all '<' symbols
+ $doc = preg_replace("/<(?=[^a-zA-Z\/\!\?\%])/", '&lt;', (string)$doc);
+
+ // Web documents shouldn't contains \x00 symbol
+ $doc = str_replace("\x00", '', $doc);
+
+ // Opera6 bug workaround
+ $doc = str_replace("\xC0\xBC", '&lt;', $doc);
+
+ // UTF-7 encoding ASCII decode
+ if($isUTF7)
+ $doc = $this->repackUTF7($doc);
+
+ // Instantiate the parser
+ $parser= new TSax3();
+
+ // Set up the parser
+ $parser->set_object($this);
+
+ $parser->set_element_handler('_openHandler','_closeHandler');
+ $parser->set_data_handler('_dataHandler');
+ $parser->set_escape_handler('_escapeHandler');
+
+ $parser->parse($doc);
+
+ return $this->getXHTML();
+
+ }
+
+
+ /**
+ * UTF-7 decoding fuction
+ *
+ * @param string $str HTML document for recode ASCII part of UTF-7 back to ASCII
+ * @return string Decoded document
+ * @access private
+ */
+ private function repackUTF7($str)
+ {
+ return preg_replace_callback('!\+([0-9a-zA-Z/]+)\-!', array($this, 'repackUTF7Callback'), $str);
+ }
+
+ /**
+ * Additional UTF-7 decoding fuction
+ *
+ * @param string $str String for recode ASCII part of UTF-7 back to ASCII
+ * @return string Recoded string
+ * @access private
+ */
+ private function repackUTF7Callback($str)
+ {
+ $str = base64_decode($str[1]);
+ $str = preg_replace_callback('/^((?:\x00.)*)((?:[^\x00].)+)/', array($this, 'repackUTF7Back'), $str);
+ return preg_replace('/\x00(.)/', '$1', $str);
+ }
+
+ /**
+ * Additional UTF-7 encoding fuction
+ *
+ * @param string $str String for recode ASCII part of UTF-7 back to ASCII
+ * @return string Recoded string
+ * @access private
+ */
+ private function repackUTF7Back($str)
+ {
+ return $str[1].'+'.rtrim(base64_encode($str[2]), '=').'-';
+ }
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/SafeHtml/license.txt b/framework/Vendor/SafeHtml/license.txt
new file mode 100644
index 00000000..21496aa2
--- /dev/null
+++ b/framework/Vendor/SafeHtml/license.txt
@@ -0,0 +1,26 @@
+(c) Roman Ivanov, 2004-2005
+(c) Pixel-Apes ( http://pixel-apes.com/ ), 2004-2005
+(c) JetStyle ( http://jetstyle.ru/ ), 2004-2005
+Maintainer -- Roman Ivanov <thingol@mail.ru>
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/framework/Vendor/SafeHtml/readme.txt b/framework/Vendor/SafeHtml/readme.txt
new file mode 100644
index 00000000..d525f92c
--- /dev/null
+++ b/framework/Vendor/SafeHtml/readme.txt
@@ -0,0 +1,81 @@
+SafeHTML
+--------
+Version 1.3.7.
+http://pixel-apes.com/safehtml/
+--------
+
+This parser strips down all potentially dangerous content within HTML:
+ * opening tag without its closing tag
+ * closing tag without its opening tag
+ * any of these tags: "base", "basefont", "head", "html", "body", "applet", "object",
+ "iframe", "frame", "frameset", "script", "layer", "ilayer", "embed", "bgsound",
+ "link", "meta", "style", "title", "blink", "xml" etc.
+ * any of these attributes: on*, data*, dynsrc
+ * javascript:/vbscript:/about: etc. protocols
+ * expression/behavior etc. in styles
+ * any other active content
+It also tries to convert code to XHTML valid, but htmltidy is far better solution for this task.
+
+If you found any bugs in this parser, please inform me -- ICQ:551593 or mailto:thingol@mail.ru
+
+Please, subscribe to http://pixel-apes.com/safehtml/feed/rss feed in order to receive notices
+when SAFEHTML will be updated.
+
+-- Roman Ivanov.
+-- Pixel-Apes ( http://pixel-apes.com ).
+-- JetStyle ( http://jetstyle.ru/ ).
+
+
+
+--------
+Version history:
+--------
+1.3.7.
+ * Added 'dl' to the list of 'lists' tags.
+ * Added 'callto' to the white list of protocols.
+ * Added white list of "namespaced" attributes.
+1.3.6.
+ * More accurate UTF-7 decoding.
+1.3.5.
+ * Two serious security flaws fixed: UTF-7 XSS and CSS comments handling.
+1.3.2.
+ * Security flaw (improper quotes handling in attributes' values) fixed. Big thanks to Nick Cleaton.
+1.3.1.
+ * Dumb bug fixed (some closing tags were ignored).
+1.3.0.
+ * Two holes (with decimal HTML entities and with \x00 symbol) fixed.
+ * Class rewritten under PEAR coding standarts.
+ * Class now uses unmodified HTMLSax3 from PEAR.
+ * To the list of table tags added: "caption", "col", "colgroup".
+1.2.1.
+ * It was possible to create XSS with hexadecimal HTML entities. Fixed. Big thanks to Christian Stocker.
+1.2.0.
+ * "id" and "name" attributes added to dangerous attributes list, because malefactor can broke legal javascript by spoofing ID or NAME of some element.
+ * New method parse() allows to do all parsing process in two lines of code. Examples also updated.
+ * New array, closeParagraph, contains list of block-level elements. When we open such elemet, we should close paragraph before. . It allows SafeHTML to produce more XHTML compliant code.
+ * Added "webcal" to white list of protocols for those who uses calendar programs (Mozilla/iCal/etc).
+ * Now SafeHTML strips down table elements when we are not inside table.
+ * Now SafeHTML correctly closes unclosed "li" tags: before opening "li" of the same nesting level.
+1.1.0.
+ * New "dangerous" protocols: hcp, ms-help, help, disk, vnd.ms.radio, opera, res, resource, chrome, mocha, livescript.
+ * <XML> tag was moved from "tags for deletion" to "tags for deletion with content".
+ * New "dangerous" CSS instruction "include-source" (NN4 specific).
+ * New array, Attributes, contains list of attributes for removal. If you need to remove "id" or "name" attribute,
+ just add it to this array.
+ * Now it is possible to choose between white-list and black-list filtering of protocols. Defaults are "white-list".
+ This list is: "http", "https", "ftp", "telnet", "news", "nntp", "gopher", "mailto", "file".
+ * For speed purposes, we now filter protocols only from these attributes: src, href, action, lowsrc, dynsrc,
+ background, codebase.
+ * Opera6 XSS bug ([\xC0][\xBC]script>alert(1)[\xC0][\xBC]/script> [UTF-8] workarounded.
+1.0.4.
+ New "dangerous" tag: plaintext.
+1.0.3.
+ Added array of elements that can have no closing tag.
+1.0.2.
+ Bug fix: <img src="&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;alert(1);"> attack.
+ Thanks to shmel.
+1.0.1.
+ Bug fix: safehtml hangs on <style></style></style> code.
+ Thanks to lj user=electrocat.
+1.0.0.
+ First public release
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter.php b/framework/Vendor/TextHighlighter/Text/Highlighter.php
new file mode 100644
index 00000000..f1743d8f
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter.php
@@ -0,0 +1,396 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * Highlighter base class
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: Highlighter.php,v 1.1 2007/06/03 02:35:28 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+// {{{ BC constants
+
+// BC trick : define constants related to default
+// renderer if needed
+if (!defined('HL_NUMBERS_LI')) {
+ /**#@+
+ * Constant for use with $options['numbers']
+ * @see Text_Highlighter_Renderer_Html::_init()
+ */
+ /**
+ * use numbered list
+ */
+ define ('HL_NUMBERS_LI' , 1);
+ /**
+ * Use 2-column table with line numbers in left column and code in right column.
+ * Forces $options['tag'] = HL_TAG_PRE
+ */
+ define ('HL_NUMBERS_TABLE' , 2);
+ /**#@-*/
+}
+
+// }}}
+// {{{ constants
+/**
+ * for our purpose, it is infinity
+ */
+define ('HL_INFINITY', 1000000000);
+
+// }}}
+
+/**
+ * Text highlighter base class
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+// {{{ Text_Highlighter
+
+/**
+ * Text highlighter base class
+ *
+ * This class implements all functions necessary for highlighting,
+ * but it does not contain highlighting rules. Actual highlighting is
+ * done using a descendent of this class.
+ *
+ * One is not supposed to manually create descendent classes.
+ * Instead, describe highlighting rules in XML format and
+ * use {@link Text_Highlighter_Generator} to create descendent class.
+ * Alternatively, an instance of a descendent class can be created
+ * directly.
+ *
+ * Use {@link Text_Highlighter::factory()} to create an
+ * object for particular language highlighter
+ *
+ * Usage example
+ * <code>
+ *require_once 'Text/Highlighter.php';
+ *$hlSQL =& Text_Highlighter::factory('SQL',array('numbers'=>true));
+ *echo $hlSQL->highlight('SELECT * FROM table a WHERE id = 12');
+ * </code>
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @package Text_Highlighter
+ * @access public
+ */
+
+class Text_Highlighter
+{
+ // {{{ members
+
+ /**
+ * Syntax highlighting rules.
+ * Auto-generated classes set this var
+ *
+ * @access protected
+ * @see _init
+ * @var array
+ */
+ var $_syntax;
+
+ /**
+ * Renderer object.
+ *
+ * @access private
+ * @var array
+ */
+ var $_renderer;
+
+ /**
+ * Options. Keeped for BC
+ *
+ * @access protected
+ * @var array
+ */
+ var $_options = array();
+
+ /**
+ * Conditionds
+ *
+ * @access protected
+ * @var array
+ */
+ var $_conditions = array();
+
+ /**
+ * Disabled keywords
+ *
+ * @access protected
+ * @var array
+ */
+ var $_disabled = array();
+
+ /**
+ * Language
+ *
+ * @access protected
+ * @var string
+ */
+ var $_language = '';
+
+ // }}}
+ // {{{ _checkDefines
+
+ /**
+ * Called by subclssses' constructors to enable/disable
+ * optional highlighter rules
+ *
+ * @param array $defines Conditional defines
+ *
+ * @access protected
+ */
+ function _checkDefines()
+ {
+ if (isset($this->_options['defines'])) {
+ $defines = $this->_options['defines'];
+ } else {
+ $defines = array();
+ }
+ foreach ($this->_conditions as $name => $actions) {
+ foreach($actions as $action) {
+ $present = in_array($name, $defines);
+ if (!$action[1]) {
+ $present = !$present;
+ }
+ if ($present) {
+ unset($this->_disabled[$action[0]]);
+ } else {
+ $this->_disabled[$action[0]] = true;
+ }
+ }
+ }
+ }
+
+ // }}}
+ // {{{ factory
+
+ /**
+ * Create a new Highlighter object for specified language
+ *
+ * @param string $lang language, for example "SQL"
+ * @param array $options Rendering options. This
+ * parameter is only keeped for BC reasons, use
+ * {@link Text_Highlighter::setRenderer()} instead
+ *
+ * @return mixed a newly created Highlighter object, or
+ * a PEAR error object on error
+ *
+ * @static
+ * @access public
+ */
+ public static function factory($lang, $options = array())
+ {
+ $lang = strtoupper($lang);
+ $langFile = dirname(__FILE__)."/Highlighter/$lang.php";
+ if (is_file($langFile))
+ include_once $langFile;
+ else
+ return false;
+
+ $classname = 'Text_Highlighter_' . $lang;
+
+ if (!class_exists($classname))
+ return false;
+
+ return new $classname($options);
+ }
+
+ // }}}
+ // {{{ setRenderer
+
+ /**
+ * Set renderer object
+ *
+ * @param object $renderer Text_Highlighter_Renderer
+ *
+ * @access public
+ */
+ function setRenderer($renderer)
+ {
+ $this->_renderer = $renderer;
+ }
+
+ // }}}
+
+ /**
+ * Helper function to find matching brackets
+ *
+ * @access private
+ */
+ function _matchingBrackets($str)
+ {
+ return strtr($str, '()<>[]{}', ')(><][}{');
+ }
+
+
+
+
+ function _getToken()
+ {
+ if (!empty($this->_tokenStack)) {
+ return array_pop($this->_tokenStack);
+ }
+ if ($this->_pos >= $this->_len) {
+ return NULL;
+ }
+
+ if ($this->_state != -1 && preg_match($this->_endpattern, $this->_str, $m, PREG_OFFSET_CAPTURE, $this->_pos)) {
+ $endpos = $m[0][1];
+ $endmatch = $m[0][0];
+ } else {
+ $endpos = -1;
+ }
+ preg_match ($this->_regs[$this->_state], $this->_str, $m, PREG_OFFSET_CAPTURE, $this->_pos);
+ $n = 1;
+
+
+ foreach ($this->_counts[$this->_state] as $i=>$count) {
+ if (!isset($m[$n])) {
+ break;
+ }
+ if ($m[$n][1]>-1 && ($endpos == -1 || $m[$n][1] < $endpos)) {
+ if ($this->_states[$this->_state][$i] != -1) {
+ $this->_tokenStack[] = array($this->_delim[$this->_state][$i], $m[$n][0]);
+ } else {
+ $inner = $this->_inner[$this->_state][$i];
+ if (isset($this->_parts[$this->_state][$i])) {
+ $parts = array();
+ $partpos = $m[$n][1];
+ for ($j=1; $j<=$count; $j++) {
+ if ($m[$j+$n][1] < 0) {
+ continue;
+ }
+ if (isset($this->_parts[$this->_state][$i][$j])) {
+ if ($m[$j+$n][1] > $partpos) {
+ array_unshift($parts, array($inner, substr($this->_str, $partpos, $m[$j+$n][1]-$partpos)));
+ }
+ array_unshift($parts, array($this->_parts[$this->_state][$i][$j], $m[$j+$n][0]));
+ }
+ $partpos = $m[$j+$n][1] + strlen($m[$j+$n][0]);
+ }
+ if ($partpos < $m[$n][1] + strlen($m[$n][0])) {
+ array_unshift($parts, array($inner, substr($this->_str, $partpos, $m[$n][1] - $partpos + strlen($m[$n][0]))));
+ }
+ $this->_tokenStack = array_merge($this->_tokenStack, $parts);
+ } else {
+ foreach ($this->_keywords[$this->_state][$i] as $g => $re) {
+ if (isset($this->_disabled[$g])) {
+ continue;
+ }
+ if (preg_match($re, $m[$n][0])) {
+ $inner = $this->_kwmap[$g];
+ break;
+ }
+ }
+ $this->_tokenStack[] = array($inner, $m[$n][0]);
+ }
+ }
+ if ($m[$n][1] > $this->_pos) {
+ $this->_tokenStack[] = array($this->_lastinner, substr($this->_str, $this->_pos, $m[$n][1]-$this->_pos));
+ }
+ $this->_pos = $m[$n][1] + strlen($m[$n][0]);
+ if ($this->_states[$this->_state][$i] != -1) {
+ $this->_stack[] = array($this->_state, $this->_lastdelim, $this->_lastinner, $this->_endpattern);
+ $this->_lastinner = $this->_inner[$this->_state][$i];
+ $this->_lastdelim = $this->_delim[$this->_state][$i];
+ $l = $this->_state;
+ $this->_state = $this->_states[$this->_state][$i];
+ $this->_endpattern = $this->_end[$this->_state];
+ if ($this->_subst[$l][$i]) {
+ for ($k=0; $k<=$this->_counts[$l][$i]; $k++) {
+ if (!isset($m[$i+$k])) {
+ break;
+ }
+ $quoted = preg_quote($m[$n+$k][0], '/');
+ $this->_endpattern = str_replace('%'.$k.'%', $quoted, $this->_endpattern);
+ $this->_endpattern = str_replace('%b'.$k.'%', $this->_matchingBrackets($quoted), $this->_endpattern);
+ }
+ }
+ }
+ return array_pop($this->_tokenStack);
+ }
+ $n += $count + 1;
+ }
+
+ if ($endpos > -1) {
+ $this->_tokenStack[] = array($this->_lastdelim, $endmatch);
+ if ($endpos > $this->_pos) {
+ $this->_tokenStack[] = array($this->_lastinner, substr($this->_str, $this->_pos, $endpos-$this->_pos));
+ }
+ list($this->_state, $this->_lastdelim, $this->_lastinner, $this->_endpattern) = array_pop($this->_stack);
+ $this->_pos = $endpos + strlen($endmatch);
+ return array_pop($this->_tokenStack);
+ }
+ $p = $this->_pos;
+ $this->_pos = HL_INFINITY;
+ return array($this->_lastinner, substr($this->_str, $p));
+ }
+
+
+
+
+ // {{{ highlight
+
+ /**
+ * Highlights code
+ *
+ * @param string $str Code to highlight
+ * @access public
+ * @return string Highlighted text
+ *
+ */
+
+ function highlight($str)
+ {
+ if (!($this->_renderer)) {
+ include_once('Text/Highlighter/Renderer/Html.php');
+ $this->_renderer = new Text_Highlighter_Renderer_Html($this->_options);
+ }
+ $this->_state = -1;
+ $this->_pos = 0;
+ $this->_stack = array();
+ $this->_tokenStack = array();
+ $this->_lastinner = $this->_defClass;
+ $this->_lastdelim = $this->_defClass;
+ $this->_endpattern = '';
+ $this->_renderer->reset();
+ $this->_renderer->setCurrentLanguage($this->_language);
+ $this->_str = $this->_renderer->preprocess($str);
+ $this->_len = strlen($this->_str);
+ while ($token = $this->_getToken()) {
+ $this->_renderer->acceptToken($token[0], $token[1]);
+ }
+ $this->_renderer->finalize();
+ return $this->_renderer->getOutput();
+ }
+
+ // }}}
+
+}
+
+// }}}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/ABAP.php b/framework/Vendor/TextHighlighter/Text/Highlighter/ABAP.php
new file mode 100644
index 00000000..153ce9fe
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/ABAP.php
@@ -0,0 +1,505 @@
+<?php
+/**
+ * Auto-generated class. ABAP syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : abap.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ *
+ */
+
+/**
+ * @ignore
+ */
+
+/**
+ * Auto-generated class. ABAP syntax highlighting
+ *
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_ABAP extends Text_Highlighter
+{
+ var $_language = 'abap';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)[a-z_\\-]\\w*)/',
+ 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)[a-z_\\-]\\w*)/',
+ 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)[a-z_\\-]\\w*)/',
+ 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)[a-z_\\-]\\w*)/',
+ 3 => '//',
+ 4 => '//',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 2,
+ 9 => 0,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 2,
+ 9 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 2,
+ 9 => 0,
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => '',
+ ),
+ 0 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ ),
+ 1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ ),
+ 2 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'identifier',
+ ),
+ 0 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'identifier',
+ ),
+ 1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'identifier',
+ ),
+ 2 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'identifier',
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\\}/',
+ 1 => '/(?i)\\)/',
+ 2 => '/(?i)\\]/',
+ 3 => '/(?mi)$/',
+ 4 => '/(?i)\'/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/',
+ 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/',
+ 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/',
+ ),
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/',
+ 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/',
+ 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/',
+ ),
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/',
+ 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/',
+ 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/',
+ ),
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/',
+ 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/',
+ 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/',
+ ),
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'sy' => 'reserved',
+ 'reserved' => 'reserved',
+ 'constants' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/CPP.php b/framework/Vendor/TextHighlighter/Text/Highlighter/CPP.php
new file mode 100644
index 00000000..761297ac
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/CPP.php
@@ -0,0 +1,840 @@
+<?php
+/**
+ * Auto-generated class. CPP syntax highlighting
+ *
+ *
+ * Thanks to Aaron Kalin for initial
+ * implementation of this highlighter
+ *
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : cpp.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Aaron Kalin
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. CPP syntax highlighting
+ *
+ * @author Aaron Kalin
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_CPP extends Text_Highlighter
+{
+ var $_language = 'cpp';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/',
+ 0 => '/((?i)\\\\)/',
+ 1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/',
+ 2 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/',
+ 3 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/',
+ 4 => '//',
+ 5 => '/((?i)")|((?i)<)/',
+ 6 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\/\\*)|((?i)\\/\\/.+)/',
+ 7 => '/((?i)\\$\\w+\\s*:.+\\$)/',
+ 8 => '/((?i)\\$\\w+\\s*:.+\\$)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 2,
+ 9 => 0,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 2,
+ 9 => 0,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 2,
+ 9 => 0,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 2,
+ 8 => 0,
+ 9 => 0,
+ ),
+ 7 =>
+ array (
+ 0 => 0,
+ ),
+ 8 =>
+ array (
+ 0 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => '',
+ 5 => 'prepro',
+ 6 => 'prepro',
+ 7 => '',
+ 8 => 'mlcomment',
+ 9 => 'comment',
+ ),
+ 0 =>
+ array (
+ 0 => '',
+ ),
+ 1 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => 'prepro',
+ 10 => 'prepro',
+ 11 => '',
+ 12 => 'mlcomment',
+ 13 => 'comment',
+ ),
+ 2 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => 'prepro',
+ 10 => 'prepro',
+ 11 => '',
+ 12 => 'mlcomment',
+ 13 => 'comment',
+ ),
+ 3 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => 'prepro',
+ 10 => 'prepro',
+ 11 => '',
+ 12 => 'mlcomment',
+ 13 => 'comment',
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'quotes',
+ ),
+ 6 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => '',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => 'mlcomment',
+ 9 => 'comment',
+ ),
+ 7 =>
+ array (
+ 0 => '',
+ ),
+ 8 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'string',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'identifier',
+ 5 => 'prepro',
+ 6 => 'code',
+ 7 => 'number',
+ 8 => 'mlcomment',
+ 9 => 'comment',
+ ),
+ 0 =>
+ array (
+ 0 => 'special',
+ ),
+ 1 =>
+ array (
+ 0 => 'string',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'identifier',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'prepro',
+ 10 => 'code',
+ 11 => 'number',
+ 12 => 'mlcomment',
+ 13 => 'comment',
+ ),
+ 2 =>
+ array (
+ 0 => 'string',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'identifier',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'prepro',
+ 10 => 'code',
+ 11 => 'number',
+ 12 => 'mlcomment',
+ 13 => 'comment',
+ ),
+ 3 =>
+ array (
+ 0 => 'string',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'identifier',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'prepro',
+ 10 => 'code',
+ 11 => 'number',
+ 12 => 'mlcomment',
+ 13 => 'comment',
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => 'string',
+ 1 => 'string',
+ ),
+ 6 =>
+ array (
+ 0 => 'string',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'identifier',
+ 4 => 'number',
+ 5 => 'number',
+ 6 => 'number',
+ 7 => 'number',
+ 8 => 'mlcomment',
+ 9 => 'comment',
+ ),
+ 7 =>
+ array (
+ 0 => 'inlinedoc',
+ ),
+ 8 =>
+ array (
+ 0 => 'inlinedoc',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)"/',
+ 1 => '/(?i)\\}/',
+ 2 => '/(?i)\\)/',
+ 3 => '/(?i)\\]/',
+ 4 => '/(?i)>/',
+ 5 => '/(?mi)(?<!\\\\)$/',
+ 6 => '/(?mi)(?<!\\\\)$/',
+ 7 => '/(?i)\\*\\//',
+ 8 => '/(?mi)$/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => -1,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => 7,
+ 9 => 8,
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => 5,
+ 10 => 6,
+ 11 => -1,
+ 12 => 7,
+ 13 => 8,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => 5,
+ 10 => 6,
+ 11 => -1,
+ 12 => 7,
+ 13 => 8,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => 5,
+ 10 => 6,
+ 11 => -1,
+ 12 => 7,
+ 13 => 8,
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 4,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => 7,
+ 9 => 8,
+ ),
+ 7 =>
+ array (
+ 0 => -1,
+ ),
+ 8 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 =>
+ array (
+ 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/',
+ 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/',
+ 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/',
+ ),
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ ),
+ 8 => -1,
+ 9 => -1,
+ ),
+ 0 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 =>
+ array (
+ 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/',
+ 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/',
+ 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/',
+ ),
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 => -1,
+ 10 => -1,
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 =>
+ array (
+ 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/',
+ 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/',
+ 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/',
+ ),
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 => -1,
+ 10 => -1,
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 =>
+ array (
+ 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/',
+ 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/',
+ 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/',
+ ),
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 => -1,
+ 10 => -1,
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 => -1,
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ ),
+ 6 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 =>
+ array (
+ 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/',
+ 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/',
+ 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/',
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 => -1,
+ 9 => -1,
+ ),
+ 7 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 8 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ ),
+ 6 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ ),
+ 7 =>
+ array (
+ 0 => NULL,
+ ),
+ 8 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ 1 => false,
+ ),
+ 6 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ ),
+ 7 =>
+ array (
+ 0 => false,
+ ),
+ 8 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'reserved' => 'reserved',
+ 'types' => 'types',
+ 'Common Macros' => 'prepro',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/CSS.php b/framework/Vendor/TextHighlighter/Text/Highlighter/CSS.php
new file mode 100644
index 00000000..28f92f34
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/CSS.php
@@ -0,0 +1,383 @@
+<?php
+/**
+ * Auto-generated class. CSS syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : css.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. CSS syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_CSS extends Text_Highlighter
+{
+ var $_language = 'css';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)(@[a-z\\d]+))|((?i)(((\\.|#)?[a-z]+[a-z\\d\\-]*(?![a-z\\d\\-]))|(\\*))(?!\\s*:\\s*[\\s\\{]))|((?i):[a-z][a-z\\d\\-]*)|((?i)\\[)|((?i)\\{)/',
+ 0 => '/((?i)\\d*\\.?\\d+(\\%|em|ex|pc|pt|px|in|mm|cm))|((?i)\\d*\\.?\\d+)|((?i)[a-z][a-z\\d\\-]*)|((?i)#([\\da-f]{6}|[\\da-f]{3})\\b)/',
+ 1 => '/((?i)\')|((?i)")|((?i)[\\w\\-\\:]+)/',
+ 2 => '/((?i)[a-z][a-z\\d\\-]*\\s*:)|((?i)(((\\.|#)?[a-z]+[a-z\\d\\-]*(?![a-z\\d\\-]))|(\\*))(?!\\s*:\\s*[\\s\\{]))|((?i)\\{)/',
+ 3 => '/((?i)\\\\[\\\\(\\\\)\\\\])/',
+ 4 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)/',
+ 5 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`|\\\\t|\\\\n|\\\\r)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 1,
+ 1 => 4,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ ),
+ 0 =>
+ array (
+ 0 => 1,
+ 1 => 0,
+ 2 => 0,
+ 3 => 1,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 4,
+ 2 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => 'brackets',
+ 4 => 'brackets',
+ ),
+ 0 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ ),
+ 1 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'quotes',
+ 2 => '',
+ ),
+ 2 =>
+ array (
+ 0 => 'reserved',
+ 1 => '',
+ 2 => 'brackets',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ 5 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'var',
+ 1 => 'identifier',
+ 2 => 'special',
+ 3 => 'code',
+ 4 => 'code',
+ ),
+ 0 =>
+ array (
+ 0 => 'number',
+ 1 => 'number',
+ 2 => 'code',
+ 3 => 'var',
+ ),
+ 1 =>
+ array (
+ 0 => 'string',
+ 1 => 'string',
+ 2 => 'var',
+ ),
+ 2 =>
+ array (
+ 0 => 'code',
+ 1 => 'identifier',
+ 2 => 'code',
+ ),
+ 3 =>
+ array (
+ 0 => 'string',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ 5 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)(?=;|\\})/',
+ 1 => '/(?i)\\]/',
+ 2 => '/(?i)\\}/',
+ 3 => '/(?i)\\)/',
+ 4 => '/(?i)\'/',
+ 5 => '/(?i)"/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => 1,
+ 4 => 2,
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => 4,
+ 1 => 5,
+ 2 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => -1,
+ 2 => 2,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 => -1,
+ 4 => -1,
+ ),
+ 0 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 'propertyValue' => '/^((?i)far-left|left|center-left|center-right|center|far-right|right-side|right|behind|leftwards|rightwards|inherit|scroll|fixed|transparent|none|repeat-x|repeat-y|repeat|no-repeat|collapse|separate|auto|top|bottom|both|open-quote|close-quote|no-open-quote|no-close-quote|crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|text|wait|help|ltr|rtl|inline|block|list-item|run-in|compact|marker|table|inline-table|table-row-group|table-header-group|table-footer-group|table-row|table-column-group|table-column|table-cell|table-caption|below|level|above|higher|lower|show|hide|caption|icon|menu|message-box|small-caption|status-bar|normal|wider|narrower|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|italic|oblique|small-caps|bold|bolder|lighter|inside|outside|disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-alpha|lower-latin|upper-alpha|upper-latin|hebrew|armenian|georgian|cjk-ideographic|hiragana|katakana|hiragana-iroha|katakana-iroha|crop|cross|invert|visible|hidden|always|avoid|x-low|low|medium|high|x-high|mix?|repeat?|static|relative|absolute|portrait|landscape|spell-out|once|digits|continuous|code|x-slow|slow|fast|x-fast|faster|slower|justify|underline|overline|line-through|blink|capitalize|uppercase|lowercase|embed|bidi-override|baseline|sub|super|text-top|middle|text-bottom|silent|x-soft|soft|loud|x-loud|pre|nowrap|serif|sans-serif|cursive|fantasy|monospace|empty|string|strict|loose|char|true|false|dotted|dashed|solid|double|groove|ridge|inset|outset|larger|smaller|xx-small|x-small|small|large|x-large|xx-large|all|newspaper|distribute|distribute-all-lines|distribute-center-last|inter-word|inter-ideograph|inter-cluster|kashida|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|keep-all|break-all|break-word|lr-tb|tb-rl|thin|thick|inline-block|w-resize|hand|distribute-letter|distribute-space|whitespace|male|female|child)$/',
+ 'namedcolor' => '/^((?i)aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow|activeborder|activecaption|appworkspace|background|buttonface|buttonhighlight|buttonshadow|buttontext|captiontext|graytext|highlight|highlighttext|inactiveborder|inactivecaption|inactivecaptiontext|infobackground|infotext|menu|menutext|scrollbar|threeddarkshadow|threedface|threedhighlight|threedlightshadow|threedshadow|window|windowframe|windowtext)$/',
+ ),
+ 3 =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 =>
+ array (
+ ),
+ 2 => -1,
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 =>
+ array (
+ 1 => 'string',
+ ),
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'propertyValue' => 'string',
+ 'namedcolor' => 'var',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/DIFF.php b/framework/Vendor/TextHighlighter/Text/Highlighter/DIFF.php
new file mode 100644
index 00000000..21e97087
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/DIFF.php
@@ -0,0 +1,366 @@
+<?php
+/**
+ * Auto-generated class. DIFF syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : diff.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. DIFF syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_DIFF extends Text_Highlighter
+{
+ var $_language = 'diff';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?m)^\\\\\\sNo\\snewline.+$)|((?m)^\\-\\-\\-$)|((?m)^(diff\\s+\\-|Only\\s+|Index).*$)|((?m)^(\\-\\-\\-|\\+\\+\\+)\\s.+$)|((?m)^\\*.*$)|((?m)^\\+.*$)|((?m)^!.*$)|((?m)^\\<\\s.*$)|((?m)^\\>\\s.*$)|((?m)^\\d+(\\,\\d+)?[acd]\\d+(,\\d+)?$)|((?m)^\\-.*$)|((?m)^\\+.*$)|((?m)^@@.+@@$)|((?m)^d\\d+\\s\\d+$)|((?m)^a\\d+\\s\\d+$)|((?m)^(\\d+)(,\\d+)?(a)$)|((?m)^(\\d+)(,\\d+)?(c)$)|((?m)^(\\d+)(,\\d+)?(d)$)|((?m)^a(\\d+)(\\s\\d+)?$)|((?m)^c(\\d+)(\\s\\d+)?$)|((?m)^d(\\d+)(\\s\\d+)?$)/',
+ 0 => '//',
+ 1 => '//',
+ 2 => '//',
+ 3 => '//',
+ 4 => '//',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 1,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 2,
+ 10 => 0,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 3,
+ 16 => 3,
+ 17 => 3,
+ 18 => 2,
+ 19 => 2,
+ 20 => 2,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => 'code',
+ 15 => 'code',
+ 16 => 'code',
+ 17 => '',
+ 18 => 'code',
+ 19 => 'code',
+ 20 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'special',
+ 1 => 'code',
+ 2 => 'var',
+ 3 => 'reserved',
+ 4 => 'quotes',
+ 5 => 'string',
+ 6 => 'inlinedoc',
+ 7 => 'quotes',
+ 8 => 'string',
+ 9 => 'code',
+ 10 => 'quotes',
+ 11 => 'string',
+ 12 => 'code',
+ 13 => 'code',
+ 14 => 'var',
+ 15 => 'string',
+ 16 => 'inlinedoc',
+ 17 => 'code',
+ 18 => 'string',
+ 19 => 'inlinedoc',
+ 20 => 'code',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?m)(?=^[ad]\\d+\\s\\d+)/',
+ 1 => '/(?m)^(\\.)$/',
+ 2 => '/(?m)^(\\.)$/',
+ 3 => '/(?m)^(\\.)$/',
+ 4 => '/(?m)^(\\.)$/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => 0,
+ 15 => 1,
+ 16 => 2,
+ 17 => -1,
+ 18 => 3,
+ 19 => 4,
+ 20 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ 17 =>
+ array (
+ ),
+ 18 => -1,
+ 19 => -1,
+ 20 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ 18 => false,
+ 19 => false,
+ 20 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ );
+ $this->_defClass = 'default';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/DTD.php b/framework/Vendor/TextHighlighter/Text/Highlighter/DTD.php
new file mode 100644
index 00000000..1d4a403e
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/DTD.php
@@ -0,0 +1,408 @@
+<?php
+/**
+ * Auto-generated class. DTD syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : dtd.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. DTD syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_DTD extends Text_Highlighter
+{
+ var $_language = 'dtd';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/(\\<!--)|(\\<\\!\\[)|((\\&|\\%)[\\w\\-\\.]+;)/',
+ 0 => '//',
+ 1 => '/(\\<!--)|(\\<)|(#PCDATA\\b)|((\\&|\\%)[\\w\\-\\.]+;)|((?i)[a-z][a-z\\d\\-\\,:]+)/',
+ 2 => '/(\\<!--)|(\\()|(\')|(")|((?<=\\<)!(ENTITY|ATTLIST|ELEMENT|NOTATION)\\b)|(\\s(#(IMPLIED|REQUIRED|FIXED))|CDATA|ENTITY|NOTATION|NMTOKENS?|PUBLIC|SYSTEM\\b)|(#PCDATA\\b)|((\\&|\\%)[\\w\\-\\.]+;)|((?i)[a-z][a-z\\d\\-\\,:]+)/',
+ 3 => '/(\\()|((\\&|\\%)[\\w\\-\\.]+;)|((?i)[a-z][a-z\\d\\-\\,:]+)/',
+ 4 => '/((\\&|\\%)[\\w\\-\\.]+;)/',
+ 5 => '/((\\&|\\%)[\\w\\-\\.]+;)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 1,
+ 4 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 1,
+ 5 => 2,
+ 6 => 0,
+ 7 => 1,
+ 8 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 1,
+ ),
+ 5 =>
+ array (
+ 0 => 1,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'brackets',
+ 2 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'brackets',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ ),
+ 2 =>
+ array (
+ 0 => 'comment',
+ 1 => 'brackets',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => '',
+ 5 => '',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ ),
+ 3 =>
+ array (
+ 0 => 'brackets',
+ 1 => '',
+ 2 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ 5 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'code',
+ 2 => 'special',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'code',
+ 2 => 'reserved',
+ 3 => 'special',
+ 4 => 'identifier',
+ ),
+ 2 =>
+ array (
+ 0 => 'comment',
+ 1 => 'code',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'var',
+ 5 => 'reserved',
+ 6 => 'reserved',
+ 7 => 'special',
+ 8 => 'identifier',
+ ),
+ 3 =>
+ array (
+ 0 => 'code',
+ 1 => 'special',
+ 2 => 'identifier',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ 5 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/--\\>/',
+ 1 => '/\\]\\]\\>/',
+ 2 => '/\\>/',
+ 3 => '/\\)/',
+ 4 => '/\'/',
+ 5 => '/"/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 2,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 3,
+ 2 => 4,
+ 3 => 5,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => 3,
+ 1 => -1,
+ 2 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 =>
+ array (
+ ),
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Generator.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Generator.php
new file mode 100644
index 00000000..862c3233
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Generator.php
@@ -0,0 +1,1253 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+* Syntax highlighter class generator
+*
+* To simplify the process of creating new syntax highlighters
+* for different languages, {@link Text_Highlighter_Generator} class is
+* provided. It takes highlighting rules from XML file and generates
+* a code of a class inherited from {@link Text_Highlighter}.
+*
+* PHP versions 4 and 5
+*
+* LICENSE: This source file is subject to version 3.0 of the PHP license
+* that is available through the world-wide-web at the following URI:
+* http://www.php.net/license/3_0.txt. If you did not receive a copy of
+* the PHP License and are unable to obtain it through the web, please
+* send a note to license@php.net so we can mail you a copy immediately.
+*
+* @category Text
+* @package Text_Highlighter
+* @author Andrey Demenev <demenev@gmail.com>
+* @copyright 2004-2006 Andrey Demenev
+* @license http://www.php.net/license/3_0.txt PHP License
+* @version CVS: $Id: Generator.php,v 1.1 2007/06/03 02:36:35 ssttoo Exp $
+* @link http://pear.php.net/package/Text_Highlighter
+*/
+
+// {{{ error codes
+
+define ('TEXT_HIGHLIGHTER_EMPTY_RE', 1);
+define ('TEXT_HIGHLIGHTER_INVALID_RE', 2);
+define ('TEXT_HIGHLIGHTER_EMPTY_OR_MISSING', 3);
+define ('TEXT_HIGHLIGHTER_EMPTY', 4);
+define ('TEXT_HIGHLIGHTER_REGION_REGION', 5);
+define ('TEXT_HIGHLIGHTER_REGION_BLOCK', 6);
+define ('TEXT_HIGHLIGHTER_BLOCK_REGION', 7);
+define ('TEXT_HIGHLIGHTER_KEYWORD_BLOCK', 8);
+define ('TEXT_HIGHLIGHTER_KEYWORD_INHERITS', 9);
+define ('TEXT_HIGHLIGHTER_PARSE', 10);
+define ('TEXT_HIGHLIGHTER_FILE_WRITE', 11);
+define ('TEXT_HIGHLIGHTER_FILE_READ', 12);
+// }}}
+
+/**
+* Syntax highliter class generator class
+*
+* This class is used to generate PHP classes
+* from XML files with highlighting rules
+*
+* Usage example
+* <code>
+*require_once 'Text/Highlighter/Generator.php';
+*$generator =& new Text_Highlighter_Generator('php.xml');
+*$generator->generate();
+*$generator->saveCode('PHP.php');
+* </code>
+*
+* A command line script <b>generate</b> is provided for
+* class generation (installs in scripts/Text/Highlighter).
+*
+* @author Andrey Demenev <demenev@gmail.com>
+* @copyright 2004-2006 Andrey Demenev
+* @license http://www.php.net/license/3_0.txt PHP License
+* @version Release: 0.7.0
+* @link http://pear.php.net/package/Text_Highlighter
+*/
+
+class Text_Highlighter_Generator extends XML_Parser
+{
+ // {{{ properties
+ /**
+ * Whether to do case folding.
+ * We have to declare it here, because XML_Parser
+ * sets case folding in constructor
+ *
+ * @var boolean
+ */
+ var $folding = false;
+
+ /**
+ * Holds name of file with highlighting rules
+ *
+ * @var string
+ * @access private
+ */
+ var $_syntaxFile;
+
+ /**
+ * Current element being processed
+ *
+ * @var array
+ * @access private
+ */
+ var $_element;
+
+ /**
+ * List of regions
+ *
+ * @var array
+ * @access private
+ */
+ var $_regions = array();
+
+ /**
+ * List of blocks
+ *
+ * @var array
+ * @access private
+ */
+ var $_blocks = array();
+
+ /**
+ * List of keyword groups
+ *
+ * @var array
+ * @access private
+ */
+ var $_keywords = array();
+
+ /**
+ * List of authors
+ *
+ * @var array
+ * @access private
+ */
+ var $_authors = array();
+
+ /**
+ * Name of language
+ *
+ * @var string
+ * @access public
+ */
+ var $language = '';
+
+ /**
+ * Generated code
+ *
+ * @var string
+ * @access private
+ */
+ var $_code = '';
+
+ /**
+ * Default class
+ *
+ * @var string
+ * @access private
+ */
+ var $_defClass = 'default';
+
+ /**
+ * Comment
+ *
+ * @var string
+ * @access private
+ */
+ var $_comment = '';
+
+ /**
+ * Flag for comment processing
+ *
+ * @var boolean
+ * @access private
+ */
+ var $_inComment = false;
+
+ /**
+ * Sorting order of current block/region
+ *
+ * @var integer
+ * @access private
+ */
+ var $_blockOrder = 0;
+
+ /**
+ * Generation errors
+ *
+ * @var array
+ * @access private
+ */
+ var $_errors;
+
+ // }}}
+ // {{{ constructor
+
+ /**
+ * Constructor
+ *
+ * @param string $syntaxFile Name of XML file
+ * with syntax highlighting rules
+ *
+ * @access public
+ */
+
+ function __construct($syntaxFile = '')
+ {
+ XML_Parser::XML_Parser(null, 'func');
+ $this->_errors = array();
+ $this->_declareErrorMessages();
+ if ($syntaxFile) {
+ $this->setInputFile($syntaxFile);
+ }
+ }
+
+ // }}}
+ // {{{ _formatError
+
+ /**
+ * Format error message
+ *
+ * @param int $code error code
+ * @param string $params parameters
+ * @param string $fileName file name
+ * @param int $lineNo line number
+ * @return array
+ * @access public
+ */
+ function _formatError($code, $params, $fileName, $lineNo)
+ {
+ $template = $this->_templates[$code];
+ $ret = call_user_func_array('sprintf', array_merge(array($template), $params));
+ if ($fileName) {
+ $ret = '[' . $fileName . '] ' . $ret;
+ }
+ if ($lineNo) {
+ $ret .= ' (line ' . $lineNo . ')';
+ }
+ return $ret;
+ }
+
+ // }}}
+ // {{{ declareErrorMessages
+
+ /**
+ * Set up error message templates
+ *
+ * @access private
+ */
+ function _declareErrorMessages()
+ {
+ $this->_templates = array (
+ TEXT_HIGHLIGHTER_EMPTY_RE => 'Empty regular expression',
+ TEXT_HIGHLIGHTER_INVALID_RE => 'Invalid regular expression : %s',
+ TEXT_HIGHLIGHTER_EMPTY_OR_MISSING => 'Empty or missing %s',
+ TEXT_HIGHLIGHTER_EMPTY => 'Empty %s',
+ TEXT_HIGHLIGHTER_REGION_REGION => 'Region %s refers undefined region %s',
+ TEXT_HIGHLIGHTER_REGION_BLOCK => 'Region %s refers undefined block %s',
+ TEXT_HIGHLIGHTER_BLOCK_REGION => 'Block %s refers undefined region %s',
+ TEXT_HIGHLIGHTER_KEYWORD_BLOCK => 'Keyword group %s refers undefined block %s',
+ TEXT_HIGHLIGHTER_KEYWORD_INHERITS => 'Keyword group %s inherits undefined block %s',
+ TEXT_HIGHLIGHTER_PARSE => '%s',
+ TEXT_HIGHLIGHTER_FILE_WRITE => 'Error writing file %s',
+ TEXT_HIGHLIGHTER_FILE_READ => '%s'
+ );
+ }
+
+ // }}}
+ // {{{ setInputFile
+
+ /**
+ * Sets the input xml file to be parsed
+ *
+ * @param string Filename (full path)
+ * @return boolean
+ * @access public
+ */
+ function setInputFile($file)
+ {
+ $this->_syntaxFile = $file;
+ $ret = parent::setInputFile($file);
+ if (PEAR::isError($ret)) {
+ $this->_error(TEXT_HIGHLIGHTER_FILE_READ, $ret->message);
+ return false;
+ }
+ return true;
+ }
+
+ // }}}
+ // {{{ generate
+
+ /**
+ * Generates class code
+ *
+ * @access public
+ */
+
+ function generate()
+ {
+ $this->_regions = array();
+ $this->_blocks = array();
+ $this->_keywords = array();
+ $this->language = '';
+ $this->_code = '';
+ $this->_defClass = 'default';
+ $this->_comment = '';
+ $this->_inComment = false;
+ $this->_authors = array();
+ $this->_blockOrder = 0;
+ $this->_errors = array();
+
+ $ret = $this->parse();
+ if (PEAR::isError($ret)) {
+ $this->_error(TEXT_HIGHLIGHTER_PARSE, $ret->message);
+ return false;
+ }
+ return true;
+ }
+
+ // }}}
+ // {{{ getCode
+
+ /**
+ * Returns generated code as a string.
+ *
+ * @return string Generated code
+ * @access public
+ */
+
+ function getCode()
+ {
+ return $this->_code;
+ }
+
+ // }}}
+ // {{{ saveCode
+
+ /**
+ * Saves generated class to file. Note that {@link Text_Highlighter::factory()}
+ * assumes that filename is uppercase (SQL.php, DTD.php, etc), and file
+ * is located in Text/Highlighter
+ *
+ * @param string $filename Name of file to write the code to
+ * @return boolean true on success, false on failure
+ * @access public
+ */
+
+ function saveCode($filename)
+ {
+ $f = @fopen($filename, 'wb');
+ if (!$f) {
+ $this->_error(TEXT_HIGHLIGHTER_FILE_WRITE, array('outfile'=>$filename));
+ return false;
+ }
+ fwrite ($f, $this->_code);
+ fclose($f);
+ return true;
+ }
+
+ // }}}
+ // {{{ hasErrors
+
+ /**
+ * Reports if there were errors
+ *
+ * @return boolean
+ * @access public
+ */
+
+ function hasErrors()
+ {
+ return count($this->_errors) > 0;
+ }
+
+ // }}}
+ // {{{ getErrors
+
+ /**
+ * Returns errors
+ *
+ * @return array
+ * @access public
+ */
+
+ function getErrors()
+ {
+ return $this->_errors;
+ }
+
+ // }}}
+ // {{{ _sortBlocks
+
+ /**
+ * Sorts blocks
+ *
+ * @access private
+ */
+
+ function _sortBlocks($b1, $b2) {
+ return $b1['order'] - $b2['order'];
+ }
+
+ // }}}
+ // {{{ _sortLookFor
+ /**
+ * Sort 'look for' list
+ * @return int
+ * @param string $b1
+ * @param string $b2
+ */
+ function _sortLookFor($b1, $b2) {
+ $o1 = isset($this->_blocks[$b1]) ? $this->_blocks[$b1]['order'] : $this->_regions[$b1]['order'];
+ $o2 = isset($this->_blocks[$b2]) ? $this->_blocks[$b2]['order'] : $this->_regions[$b2]['order'];
+ return $o1 - $o2;
+ }
+
+ // }}}
+ // {{{ _makeRE
+
+ /**
+ * Adds delimiters and modifiers to regular expression if necessary
+ *
+ * @param string $text Original RE
+ * @return string Final RE
+ * @access private
+ */
+ function _makeRE($text, $case = false)
+ {
+ if (!strlen($text)) {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_RE);
+ }
+ if (!strlen($text) || $text{0} != '/') {
+ $text = '/' . $text . '/';
+ }
+ if (!$case) {
+ $text .= 'i';
+ }
+ $php_errormsg = '';
+ @preg_match($text, '');
+ if ($php_errormsg) {
+ $this->_error(TEXT_HIGHLIGHTER_INVALID_RE, $php_errormsg);
+ }
+ preg_match ('#^/(.+)/(.*)$#', $text, $m);
+ if (@$m[2]) {
+ $text = '(?' . $m[2] . ')' . $m[1];
+ } else {
+ $text = $m[1];
+ }
+ return $text;
+ }
+
+ // }}}
+ // {{{ _exportArray
+
+ /**
+ * Exports array as PHP code
+ *
+ * @param array $array
+ * @return string Code
+ * @access private
+ */
+ function _exportArray($array)
+ {
+ $array = var_export($array, true);
+ return trim(preg_replace('~^(\s*)~m',' \1\1',$array));
+ }
+
+ // }}}
+ // {{{ _countSubpatterns
+ /**
+ * Find number of capturing suppaterns in regular expression
+ * @return int
+ * @param string $re Regular expression (without delimiters)
+ */
+ function _countSubpatterns($re)
+ {
+ preg_match_all('/' . $re . '/', '', $m);
+ return count($m)-1;
+ }
+
+ // }}}
+
+ /**#@+
+ * @access private
+ * @param resource $xp XML parser resource
+ * @param string $elem XML element name
+ * @param array $attribs XML element attributes
+ */
+
+ // {{{ xmltag_Default
+
+ /**
+ * start handler for <default> element
+ */
+ function xmltag_Default($xp, $elem, $attribs)
+ {
+ $this->_aliasAttributes($attribs);
+ if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup');
+ }
+ $this->_defClass = @$attribs['innerGroup'];
+ }
+
+ // }}}
+ // {{{ xmltag_Region
+
+ /**
+ * start handler for <region> element
+ */
+ function xmltag_Region($xp, $elem, $attribs)
+ {
+ $this->_aliasAttributes($attribs);
+ if (!isset($attribs['name']) || $attribs['name'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'region name');
+ }
+ if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup');
+ }
+ $this->_element = array('name' => $attribs['name']);
+ $this->_element['line'] = xml_get_current_line_number($this->parser);
+ if (isset($attribs['case'])) {
+ $this->_element['case'] = $attribs['case'] == 'yes';
+ } else {
+ $this->_element['case'] = $this->_case;
+ }
+ $this->_element['innerGroup'] = $attribs['innerGroup'];
+ $this->_element['delimGroup'] = isset($attribs['delimGroup']) ?
+ $attribs['delimGroup'] :
+ $attribs['innerGroup'];
+ $this->_element['start'] = $this->_makeRE(@$attribs['start'], $this->_element['case']);
+ $this->_element['end'] = $this->_makeRE(@$attribs['end'], $this->_element['case']);
+ $this->_element['contained'] = @$attribs['contained'] == 'yes';
+ $this->_element['never-contained'] = @$attribs['never-contained'] == 'yes';
+ $this->_element['remember'] = @$attribs['remember'] == 'yes';
+ if (isset($attribs['startBOL']) && $attribs['startBOL'] == 'yes') {
+ $this->_element['startBOL'] = true;
+ }
+ if (isset($attribs['endBOL']) && $attribs['endBOL'] == 'yes') {
+ $this->_element['endBOL'] = true;
+ }
+ if (isset($attribs['neverAfter'])) {
+ $this->_element['neverafter'] = $this->_makeRE($attribs['neverAfter']);
+ }
+ }
+
+ // }}}
+ // {{{ xmltag_Block
+
+ /**
+ * start handler for <block> element
+ */
+ function xmltag_Block($xp, $elem, $attribs)
+ {
+ $this->_aliasAttributes($attribs);
+ if (!isset($attribs['name']) || $attribs['name'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'block name');
+ }
+ if (isset($attribs['innerGroup']) && $attribs['innerGroup'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY, 'innerGroup');
+ }
+ $this->_element = array('name' => $attribs['name']);
+ $this->_element['line'] = xml_get_current_line_number($this->parser);
+ if (isset($attribs['case'])) {
+ $this->_element['case'] = $attribs['case'] == 'yes';
+ } else {
+ $this->_element['case'] = $this->_case;
+ }
+ if (isset($attribs['innerGroup'])) {
+ $this->_element['innerGroup'] = @$attribs['innerGroup'];
+ }
+ $this->_element['match'] = $this->_makeRE($attribs['match'], $this->_element['case']);
+ $this->_element['contained'] = @$attribs['contained'] == 'yes';
+ $this->_element['multiline'] = @$attribs['multiline'] == 'yes';
+ if (isset($attribs['BOL']) && $attribs['BOL'] == 'yes') {
+ $this->_element['BOL'] = true;
+ }
+ if (isset($attribs['neverAfter'])) {
+ $this->_element['neverafter'] = $this->_makeRE($attribs['neverAfter']);
+ }
+ }
+
+ // }}}
+ // {{{ cdataHandler
+
+ /**
+ * Character data handler. Used for comment
+ */
+ function cdataHandler($xp, $cdata)
+ {
+ if ($this->_inComment) {
+ $this->_comment .= $cdata;
+ }
+ }
+
+ // }}}
+ // {{{ xmltag_Comment
+
+ /**
+ * start handler for <comment> element
+ */
+ function xmltag_Comment($xp, $elem, $attribs)
+ {
+ $this->_comment = '';
+ $this->_inComment = true;
+ }
+
+ // }}}
+ // {{{ xmltag_PartGroup
+
+ /**
+ * start handler for <partgroup> element
+ */
+ function xmltag_PartGroup($xp, $elem, $attribs)
+ {
+ $this->_aliasAttributes($attribs);
+ if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup');
+ }
+ $this->_element['partClass'][$attribs['index']] = @$attribs['innerGroup'];
+ }
+
+ // }}}
+ // {{{ xmltag_PartClass
+
+ /**
+ * start handler for <partclass> element
+ */
+ function xmltag_PartClass($xp, $elem, $attribs)
+ {
+ $this->xmltag_PartGroup($xp, $elem, $attribs);
+ }
+
+ // }}}
+ // {{{ xmltag_Keywords
+
+ /**
+ * start handler for <keywords> element
+ */
+ function xmltag_Keywords($xp, $elem, $attribs)
+ {
+ $this->_aliasAttributes($attribs);
+ if (!isset($attribs['name']) || $attribs['name'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'keyword group name');
+ }
+ if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup');
+ }
+ if (!isset($attribs['inherits']) || $attribs['inherits'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'inherits');
+ }
+ $this->_element = array('name'=>@$attribs['name']);
+ $this->_element['line'] = xml_get_current_line_number($this->parser);
+ $this->_element['innerGroup'] = @$attribs['innerGroup'];
+ if (isset($attribs['case'])) {
+ $this->_element['case'] = $attribs['case'] == 'yes';
+ } else {
+ $this->_element['case'] = $this->_case;
+ }
+ $this->_element['inherits'] = @$attribs['inherits'];
+ if (isset($attribs['otherwise'])) {
+ $this->_element['otherwise'] = $attribs['otherwise'];
+ }
+ if (isset($attribs['ifdef'])) {
+ $this->_element['ifdef'] = $attribs['ifdef'];
+ }
+ if (isset($attribs['ifndef'])) {
+ $this->_element['ifndef'] = $attribs['ifndef'];
+ }
+ }
+
+ // }}}
+ // {{{ xmltag_Keyword
+
+ /**
+ * start handler for <keyword> element
+ */
+ function xmltag_Keyword($xp, $elem, $attribs)
+ {
+ if (!isset($attribs['match']) || $attribs['match'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'match');
+ }
+ $keyword = @$attribs['match'];
+ if (!$this->_element['case']) {
+ $keyword = strtolower($keyword);
+ }
+ $this->_element['match'][$keyword] = true;
+ }
+
+ // }}}
+ // {{{ xmltag_Contains
+
+ /**
+ * start handler for <contains> element
+ */
+ function xmltag_Contains($xp, $elem, $attribs)
+ {
+ $this->_element['contains-all'] = @$attribs['all'] == 'yes';
+ if (isset($attribs['region'])) {
+ $this->_element['contains']['region'][$attribs['region']] =
+ xml_get_current_line_number($this->parser);
+ }
+ if (isset($attribs['block'])) {
+ $this->_element['contains']['block'][$attribs['block']] =
+ xml_get_current_line_number($this->parser);
+ }
+ }
+
+ // }}}
+ // {{{ xmltag_But
+
+ /**
+ * start handler for <but> element
+ */
+ function xmltag_But($xp, $elem, $attribs)
+ {
+ if (isset($attribs['region'])) {
+ $this->_element['not-contains']['region'][$attribs['region']] = true;
+ }
+ if (isset($attribs['block'])) {
+ $this->_element['not-contains']['block'][$attribs['block']] = true;
+ }
+ }
+
+ // }}}
+ // {{{ xmltag_Onlyin
+
+ /**
+ * start handler for <onlyin> element
+ */
+ function xmltag_Onlyin($xp, $elem, $attribs)
+ {
+ if (!isset($attribs['region']) || $attribs['region'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'region');
+ }
+ $this->_element['onlyin'][$attribs['region']] = xml_get_current_line_number($this->parser);
+ }
+
+ // }}}
+ // {{{ xmltag_Author
+
+ /**
+ * start handler for <author> element
+ */
+ function xmltag_Author($xp, $elem, $attribs)
+ {
+ if (!isset($attribs['name']) || $attribs['name'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'author name');
+ }
+ $this->_authors[] = array(
+ 'name' => @$attribs['name'],
+ 'email' => (string)@$attribs['email']
+ );
+ }
+
+ // }}}
+ // {{{ xmltag_Highlight
+
+ /**
+ * start handler for <highlight> element
+ */
+ function xmltag_Highlight($xp, $elem, $attribs)
+ {
+ if (!isset($attribs['lang']) || $attribs['lang'] === '') {
+ $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'language name');
+ }
+ $this->_code = '';
+ $this->language = strtoupper(@$attribs['lang']);
+ $this->_case = @$attribs['case'] == 'yes';
+ }
+
+ // }}}
+
+ /**#@-*/
+
+ // {{{ _error
+
+ /**
+ * Add an error message
+ *
+ * @param integer $code Error code
+ * @param mixed $message Error message or array with error message parameters
+ * @param integer $lineNo Source code line number
+ * @access private
+ */
+ function _error($code, $params = array(), $lineNo = 0)
+ {
+ if (!$lineNo && !empty($this->parser)) {
+ $lineNo = xml_get_current_line_number($this->parser);
+ }
+ $this->_errors[] = $this->_formatError($code, $params, $this->_syntaxFile, $lineNo);
+ }
+
+ // }}}
+ // {{{ _aliasAttributes
+
+ /**
+ * BC trick
+ *
+ * @param array $attrs attributes
+ */
+ function _aliasAttributes(&$attrs)
+ {
+ if (isset($attrs['innerClass']) && !isset($attrs['innerGroup'])) {
+ $attrs['innerGroup'] = $attrs['innerClass'];
+ }
+ if (isset($attrs['delimClass']) && !isset($attrs['delimGroup'])) {
+ $attrs['delimGroup'] = $attrs['delimClass'];
+ }
+ if (isset($attrs['partClass']) && !isset($attrs['partGroup'])) {
+ $attrs['partGroup'] = $attrs['partClass'];
+ }
+ }
+
+ // }}}
+
+ /**#@+
+ * @access private
+ * @param resource $xp XML parser resource
+ * @param string $elem XML element name
+ */
+
+ // {{{ xmltag_Comment_
+
+ /**
+ * end handler for <comment> element
+ */
+ function xmltag_Comment_($xp, $elem)
+ {
+ $this->_inComment = false;
+ }
+
+ // }}}
+ // {{{ xmltag_Region_
+
+ /**
+ * end handler for <region> element
+ */
+ function xmltag_Region_($xp, $elem)
+ {
+ $this->_element['type'] = 'region';
+ $this->_element['order'] = $this->_blockOrder ++;
+ $this->_regions[$this->_element['name']] = $this->_element;
+ }
+
+ // }}}
+ // {{{ xmltag_Keywords_
+
+ /**
+ * end handler for <keywords> element
+ */
+ function xmltag_Keywords_($xp, $elem)
+ {
+ $this->_keywords[$this->_element['name']] = $this->_element;
+ }
+
+ // }}}
+ // {{{ xmltag_Block_
+
+ /**
+ * end handler for <block> element
+ */
+ function xmltag_Block_($xp, $elem)
+ {
+ $this->_element['type'] = 'block';
+ $this->_element['order'] = $this->_blockOrder ++;
+ $this->_blocks[$this->_element['name']] = $this->_element;
+ }
+
+ // }}}
+ // {{{ xmltag_Highlight_
+
+ /**
+ * end handler for <highlight> element
+ */
+ function xmltag_Highlight_($xp, $elem)
+ {
+ $conditions = array();
+ $toplevel = array();
+ foreach ($this->_blocks as $i => $current) {
+ if (!$current['contained'] && !isset($current['onlyin'])) {
+ $toplevel[] = $i;
+ }
+ foreach ((array)@$current['onlyin'] as $region => $lineNo) {
+ if (!isset($this->_regions[$region])) {
+ $this->_error(TEXT_HIGHLIGHTER_BLOCK_REGION,
+ array(
+ 'block' => $current['name'],
+ 'region' => $region
+ ));
+ }
+ }
+ }
+ foreach ($this->_regions as $i=>$current) {
+ if (!$current['contained'] && !isset($current['onlyin'])) {
+ $toplevel[] = $i;
+ }
+ foreach ((array)@$current['contains']['region'] as $region => $lineNo) {
+ if (!isset($this->_regions[$region])) {
+ $this->_error(TEXT_HIGHLIGHTER_REGION_REGION,
+ array(
+ 'region1' => $current['name'],
+ 'region2' => $region
+ ));
+ }
+ }
+ foreach ((array)@$current['contains']['block'] as $region => $lineNo) {
+ if (!isset($this->_blocks[$region])) {
+ $this->_error(TEXT_HIGHLIGHTER_REGION_BLOCK,
+ array(
+ 'block' => $current['name'],
+ 'region' => $region
+ ));
+ }
+ }
+ foreach ((array)@$current['onlyin'] as $region => $lineNo) {
+ if (!isset($this->_regions[$region])) {
+ $this->_error(TEXT_HIGHLIGHTER_REGION_REGION,
+ array(
+ 'region1' => $current['name'],
+ 'region2' => $region
+ ));
+ }
+ }
+ foreach ($this->_regions as $j => $region) {
+ if (isset($region['onlyin'])) {
+ $suits = isset($region['onlyin'][$current['name']]);
+ } elseif (isset($current['not-contains']['region'][$region['name']])) {
+ $suits = false;
+ } elseif (isset($current['contains']['region'][$region['name']])) {
+ $suits = true;
+ } else {
+ $suits = @$current['contains-all'] && @!$region['never-contained'];
+ }
+ if ($suits) {
+ $this->_regions[$i]['lookfor'][] = $j;
+ }
+ }
+ foreach ($this->_blocks as $j=>$region) {
+ if (isset($region['onlyin'])) {
+ $suits = isset($region['onlyin'][$current['name']]);
+ } elseif (isset($current['not-contains']['block'][$region['name']])) {
+ $suits = false;
+ } elseif (isset($current['contains']['block'][$region['name']])) {
+ $suits = true;
+ } else {
+ $suits = @$current['contains-all'] && @!$region['never-contained'];
+ }
+ if ($suits) {
+ $this->_regions[$i]['lookfor'][] = $j;
+ }
+ }
+ }
+ foreach ($this->_blocks as $i=>$current) {
+ unset ($this->_blocks[$i]['never-contained']);
+ unset ($this->_blocks[$i]['contained']);
+ unset ($this->_blocks[$i]['contains-all']);
+ unset ($this->_blocks[$i]['contains']);
+ unset ($this->_blocks[$i]['onlyin']);
+ unset ($this->_blocks[$i]['line']);
+ }
+
+ foreach ($this->_regions as $i=>$current) {
+ unset ($this->_regions[$i]['never-contained']);
+ unset ($this->_regions[$i]['contained']);
+ unset ($this->_regions[$i]['contains-all']);
+ unset ($this->_regions[$i]['contains']);
+ unset ($this->_regions[$i]['onlyin']);
+ unset ($this->_regions[$i]['line']);
+ }
+
+ foreach ($this->_keywords as $name => $keyword) {
+ if (isset($keyword['ifdef'])) {
+ $conditions[$keyword['ifdef']][] = array($name, true);
+ }
+ if (isset($keyword['ifndef'])) {
+ $conditions[$keyword['ifndef']][] = array($name, false);
+ }
+ unset($this->_keywords[$name]['line']);
+ if (!isset($this->_blocks[$keyword['inherits']])) {
+ $this->_error(TEXT_HIGHLIGHTER_KEYWORD_INHERITS,
+ array(
+ 'keyword' => $keyword['name'],
+ 'block' => $keyword['inherits']
+ ));
+ }
+ if (isset($keyword['otherwise']) && !isset($this->_blocks[$keyword['otherwise']]) ) {
+ $this->_error(TEXT_HIGHLIGHTER_KEYWORD_BLOCK,
+ array(
+ 'keyword' => $keyword['name'],
+ 'block' => $keyword['inherits']
+ ));
+ }
+ }
+
+ $syntax=array(
+ 'keywords' => $this->_keywords,
+ 'blocks' => array_merge($this->_blocks, $this->_regions),
+ 'toplevel' => $toplevel,
+ );
+ uasort($syntax['blocks'], array(&$this, '_sortBlocks'));
+ foreach ($syntax['blocks'] as $name => $block) {
+ if ($block['type'] == 'block') {
+ continue;
+ }
+ if (is_array(@$syntax['blocks'][$name]['lookfor'])) {
+ usort($syntax['blocks'][$name]['lookfor'], array(&$this, '_sortLookFor'));
+ }
+ }
+ usort($syntax['toplevel'], array(&$this, '_sortLookFor'));
+ $syntax['case'] = $this->_case;
+ $this->_code = <<<CODE
+<?php
+/**
+ * Auto-generated class. {$this->language} syntax highlighting
+CODE;
+
+ if ($this->_comment) {
+ $comment = preg_replace('~^~m',' * ',$this->_comment);
+ $this->_code .= "\n * \n" . $comment;
+ }
+
+ $this->_code .= <<<CODE
+
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: $this->_syntaxFile
+
+CODE;
+
+ foreach ($this->_authors as $author) {
+ $this->_code .= ' * @author ' . $author['name'];
+ if ($author['email']) {
+ $this->_code .= ' <' . $author['email'] . '>';
+ }
+ $this->_code .= "\n";
+ }
+
+ $this->_code .= <<<CODE
+ *
+ */
+
+/**
+ * Auto-generated class. {$this->language} syntax highlighting
+ *
+
+CODE;
+ foreach ($this->_authors as $author) {
+ $this->_code .= ' * @author ' . $author['name'];
+ if ($author['email']) {
+ $this->_code .= ' <' . $author['email']. '>';
+ }
+ $this->_code .= "\n";
+ }
+
+
+ $this->_code .= <<<CODE
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_{$this->language} extends Text_Highlighter
+{
+
+CODE;
+ $this->_code .= 'var $_language = \'' . strtolower($this->language) . "';\n\n";
+ $array = var_export($syntax, true);
+ $array = trim(preg_replace('~^(\s*)~m',' \1\1',$array));
+ // \$this->_syntax = $array;
+ $this->_code .= <<<CODE
+
+ /**
+ * Constructor
+ *
+ * @param array \$options
+ * @access public
+ */
+ function __construct(\$options=array())
+ {
+
+CODE;
+ $this->_code .= <<<CODE
+
+ \$this->_options = \$options;
+CODE;
+ $states = array();
+ $i = 0;
+ foreach ($syntax['blocks'] as $name => $block) {
+ if ($block['type'] == 'region') {
+ $states[$name] = $i++;
+ }
+ }
+ $regs = array();
+ $counts = array();
+ $delim = array();
+ $inner = array();
+ $end = array();
+ $stat = array();
+ $keywords = array();
+ $parts = array();
+ $kwmap = array();
+ $subst = array();
+ $re = array();
+ $ce = array();
+ $rd = array();
+ $in = array();
+ $st = array();
+ $kw = array();
+ $sb = array();
+ foreach ($syntax['toplevel'] as $name) {
+ $block = $syntax['blocks'][$name];
+ if ($block['type'] == 'block') {
+ $kwm = array();
+ $re[] = '(' . $block['match'] . ')';
+ $ce[] = $this->_countSubpatterns($block['match']);
+ $rd[] = '';
+ $sb[] = false;;
+ $st[] = -1;
+ foreach ($syntax['keywords'] as $kwname => $kwgroup) {
+ if ($kwgroup['inherits'] != $name) {
+ continue;
+ }
+ $gre = implode('|', array_keys($kwgroup['match']));
+ if (!$kwgroup['case']) {
+ $gre = '(?i)' . $gre;
+ }
+ $kwm[$kwname][] = $gre;
+ $kwmap[$kwname] = $kwgroup['innerGroup'];
+ }
+ foreach ($kwm as $g => $ma) {
+ $kwm[$g] = '/^(' . implode(')|(', $ma) . ')$/';
+ }
+ $kw[] = $kwm;
+ } else {
+ $kw[] = -1;
+ $re[] = '(' . $block['start'] . ')';
+ $ce[] = $this->_countSubpatterns($block['start']);
+ $rd[] = $block['delimGroup'];
+ $st[] = $states[$name];
+ $sb[] = $block['remember'];
+ }
+ $in[] = $block['innerGroup'];
+ }
+ $re = implode('|', $re);
+ $regs[-1] = '/' . $re . '/';
+ $counts[-1] = $ce;
+ $delim[-1] = $rd;
+ $inner[-1] = $in;
+ $stat[-1] = $st;
+ $keywords[-1] = $kw;
+ $subst[-1] = $sb;
+
+ foreach ($syntax['blocks'] as $ablock) {
+ if ($ablock['type'] != 'region') {
+ continue;
+ }
+ $end[] = '/' . $ablock['end'] . '/';
+ $re = array();
+ $ce = array();
+ $rd = array();
+ $in = array();
+ $st = array();
+ $kw = array();
+ $pc = array();
+ $sb = array();
+ foreach ((array)@$ablock['lookfor'] as $name) {
+ $block = $syntax['blocks'][$name];
+ if (isset($block['partClass'])) {
+ $pc[] = $block['partClass'];
+ } else {
+ $pc[] = null;
+ }
+ if ($block['type'] == 'block') {
+ $kwm = array();;
+ $re[] = '(' . $block['match'] . ')';
+ $ce[] = $this->_countSubpatterns($block['match']);
+ $rd[] = '';
+ $sb[] = false;
+ $st[] = -1;
+ foreach ($syntax['keywords'] as $kwname => $kwgroup) {
+ if ($kwgroup['inherits'] != $name) {
+ continue;
+ }
+ $gre = implode('|', array_keys($kwgroup['match']));
+ if (!$kwgroup['case']) {
+ $gre = '(?i)' . $gre;
+ }
+ $kwm[$kwname][] = $gre;
+ $kwmap[$kwname] = $kwgroup['innerGroup'];
+ }
+ foreach ($kwm as $g => $ma) {
+ $kwm[$g] = '/^(' . implode(')|(', $ma) . ')$/';
+ }
+ $kw[] = $kwm;
+ } else {
+ $sb[] = $block['remember'];
+ $kw[] = -1;
+ $re[] = '(' . $block['start'] . ')';
+ $ce[] = $this->_countSubpatterns($block['start']);
+ $rd[] = $block['delimGroup'];
+ $st[] = $states[$name];
+ }
+ $in[] = $block['innerGroup'];
+ }
+ $re = implode('|', $re);
+ $regs[] = '/' . $re . '/';
+ $counts[] = $ce;
+ $delim[] = $rd;
+ $inner[] = $in;
+ $stat[] = $st;
+ $keywords[] = $kw;
+ $parts[] = $pc;
+ $subst[] = $sb;
+ }
+
+
+ $this->_code .= "\n \$this->_regs = " . $this->_exportArray($regs);
+ $this->_code .= ";\n \$this->_counts = " .$this->_exportArray($counts);
+ $this->_code .= ";\n \$this->_delim = " .$this->_exportArray($delim);
+ $this->_code .= ";\n \$this->_inner = " .$this->_exportArray($inner);
+ $this->_code .= ";\n \$this->_end = " .$this->_exportArray($end);
+ $this->_code .= ";\n \$this->_states = " .$this->_exportArray($stat);
+ $this->_code .= ";\n \$this->_keywords = " .$this->_exportArray($keywords);
+ $this->_code .= ";\n \$this->_parts = " .$this->_exportArray($parts);
+ $this->_code .= ";\n \$this->_subst = " .$this->_exportArray($subst);
+ $this->_code .= ";\n \$this->_conditions = " .$this->_exportArray($conditions);
+ $this->_code .= ";\n \$this->_kwmap = " .$this->_exportArray($kwmap);
+ $this->_code .= ";\n \$this->_defClass = '" .$this->_defClass . '\'';
+ $this->_code .= <<<CODE
+;
+ \$this->_checkDefines();
+ }
+
+}
+CODE;
+}
+
+// }}}
+}
+
+
+/*
+* Local variables:
+* tab-width: 4
+* c-basic-offset: 4
+* c-hanging-comment-ender-p: nil
+* End:
+*/
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/HTML.php b/framework/Vendor/TextHighlighter/Text/Highlighter/HTML.php
new file mode 100644
index 00000000..eaf001e2
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/HTML.php
@@ -0,0 +1,220 @@
+<?php
+/**
+ * Auto-generated class. HTML syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : html.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * @ignore
+ */
+
+/**
+ * Auto-generated class. HTML syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_HTML extends Text_Highlighter
+{
+ var $_language = 'html';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\\<!--)|((?i)\\<[\\?\\/]?)|((?i)(&)[\\w\\-\\.]+;)/',
+ 0 => '//',
+ 1 => '/((?i)(?<=[\\<\\/?])[\\w\\-\\:]+)|((?i)[\\w\\-\\:]+)|((?i)")/',
+ 2 => '/((?i)(&)[\\w\\-\\.]+;)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 1,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'brackets',
+ 2 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => 'quotes',
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'code',
+ 2 => 'special',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 'reserved',
+ 1 => 'var',
+ 2 => 'string',
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)--\\>/',
+ 1 => '/(?i)[\\/\\?]?\\>/',
+ 2 => '/(?i)"/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => 2,
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 => -1,
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/JAVA.php b/framework/Vendor/TextHighlighter/Text/Highlighter/JAVA.php
new file mode 100644
index 00000000..53c02680
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/JAVA.php
@@ -0,0 +1,784 @@
+<?php
+/**
+ * Auto-generated class. JAVA syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : java.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. JAVA syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_JAVA extends Text_Highlighter
+{
+ var $_language = 'java';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 3 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/',
+ 4 => '/((?i)\\\\[\\\\"\'`tnr\\$\\{])/',
+ 5 => '/((?i)\\\\.)/',
+ 6 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 0,
+ 11 => 2,
+ 12 => 5,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 0,
+ 11 => 2,
+ 12 => 5,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 0,
+ 11 => 2,
+ 12 => 5,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 0,
+ 11 => 2,
+ 12 => 5,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 3,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ 1 => 3,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ ),
+ 0 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ ),
+ 1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ ),
+ 2 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ 5 =>
+ array (
+ 0 => '',
+ ),
+ 6 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ ),
+ 0 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ ),
+ 1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ ),
+ 2 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ ),
+ 3 =>
+ array (
+ 0 => 'inlinedoc',
+ 1 => 'url',
+ 2 => 'url',
+ 3 => 'inlinedoc',
+ 4 => 'inlinedoc',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ 5 =>
+ array (
+ 0 => 'special',
+ ),
+ 6 =>
+ array (
+ 0 => 'inlinedoc',
+ 1 => 'url',
+ 2 => 'url',
+ 3 => 'inlinedoc',
+ 4 => 'inlinedoc',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\\}/',
+ 1 => '/(?i)\\)/',
+ 2 => '/(?i)\\]/',
+ 3 => '/(?i)\\*\\//',
+ 4 => '/(?i)"/',
+ 5 => '/(?i)\'/',
+ 6 => '/(?mi)$/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ ),
+ 6 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/',
+ 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/',
+ 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/',
+ 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/',
+ 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/',
+ 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/',
+ 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/',
+ 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/',
+ 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 6 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ ),
+ 6 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ ),
+ 6 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ );
+ $this->_conditions = array (
+ 'java.builtins' =>
+ array (
+ 0 =>
+ array (
+ 0 => 'builtin',
+ 1 => true,
+ ),
+ ),
+ );
+ $this->_kwmap = array (
+ 'types' => 'types',
+ 'reserved' => 'reserved',
+ 'builtin' => 'builtin',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/JAVASCRIPT.php b/framework/Vendor/TextHighlighter/Text/Highlighter/JAVASCRIPT.php
new file mode 100644
index 00000000..2055c94e
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/JAVASCRIPT.php
@@ -0,0 +1,613 @@
+<?php
+/**
+ * Auto-generated class. JAVASCRIPT syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : javascript.xml,v 1.2 2007/06/05 21:57:21 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. JAVASCRIPT syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_JAVASCRIPT extends Text_Highlighter
+{
+ var $_language = 'javascript';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)\\d*\\.?\\d+)/',
+ 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)\\d*\\.?\\d+)/',
+ 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)\\d*\\.?\\d+)/',
+ 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)\\d*\\.?\\d+)/',
+ 3 => '/((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\b(note|fixme):)|((?i)\\$\\w+:.+\\$)/',
+ 4 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`|\\\\t|\\\\n|\\\\r)/',
+ 5 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)/',
+ 6 => '/((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\b(note|fixme):)|((?i)\\$\\w+:.+\\$)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 3,
+ 1 => 1,
+ 2 => 1,
+ 3 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ ),
+ 6 =>
+ array (
+ 0 => 3,
+ 1 => 1,
+ 2 => 1,
+ 3 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ ),
+ 0 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ ),
+ 1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ ),
+ 2 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'comment',
+ 7 => '',
+ 8 => '',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ 5 =>
+ array (
+ 0 => '',
+ ),
+ 6 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ ),
+ 0 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ ),
+ 1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ ),
+ 2 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'comment',
+ 7 => 'identifier',
+ 8 => 'number',
+ ),
+ 3 =>
+ array (
+ 0 => 'url',
+ 1 => 'url',
+ 2 => 'inlinedoc',
+ 3 => 'inlinedoc',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ 5 =>
+ array (
+ 0 => 'special',
+ ),
+ 6 =>
+ array (
+ 0 => 'url',
+ 1 => 'url',
+ 2 => 'inlinedoc',
+ 3 => 'inlinedoc',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\\}/',
+ 1 => '/(?i)\\)/',
+ 2 => '/(?i)\\]/',
+ 3 => '/(?i)\\*\\//',
+ 4 => '/(?i)"/',
+ 5 => '/(?i)\'/',
+ 6 => '/(?mi)$/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => 6,
+ 7 => -1,
+ 8 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ ),
+ 6 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/',
+ 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/',
+ 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/',
+ 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/',
+ 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 6 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ ),
+ 6 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ ),
+ 6 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'builtin' => 'builtin',
+ 'reserved' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/MYSQL.php b/framework/Vendor/TextHighlighter/Text/Highlighter/MYSQL.php
new file mode 100644
index 00000000..ba240512
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/MYSQL.php
@@ -0,0 +1,416 @@
+<?php
+/**
+ * Auto-generated class. MYSQL syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : mysql.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. MYSQL syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_MYSQL extends Text_Highlighter
+{
+ var $_language = 'mysql';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/',
+ 0 => '//',
+ 1 => '//',
+ 2 => '/((?i)\\\\.)/',
+ 3 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/',
+ 4 => '/((?i)\\\\.)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 5,
+ 9 => 2,
+ 10 => 0,
+ 11 => 0,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 5,
+ 9 => 2,
+ 10 => 0,
+ 11 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'comment',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => 'quotes',
+ 6 => 'brackets',
+ 7 => 'quotes',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ ),
+ 3 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'comment',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ 5 => 'quotes',
+ 6 => 'brackets',
+ 7 => 'quotes',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'identifier',
+ 1 => 'comment',
+ 2 => 'comment',
+ 3 => 'identifier',
+ 4 => 'identifier',
+ 5 => 'string',
+ 6 => 'code',
+ 7 => 'string',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ ),
+ 3 =>
+ array (
+ 0 => 'identifier',
+ 1 => 'comment',
+ 2 => 'comment',
+ 3 => 'identifier',
+ 4 => 'identifier',
+ 5 => 'string',
+ 6 => 'code',
+ 7 => 'string',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)`/',
+ 1 => '/(?i)\\*\\//',
+ 2 => '/(?i)"/',
+ 3 => '/(?i)\\)/',
+ 4 => '/(?i)\'/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => 2,
+ 6 => 3,
+ 7 => 4,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => 2,
+ 6 => 3,
+ 7 => 4,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ 'function' => '/^((?i)abs|acos|adddate|ascii|asin|atan|atan2|avg|benchmark|bin|ceiling|char|coalesce|concat|conv|cos|cot|count|curdate|curtime|database|dayname|dayofmonth|dayofweek|dayofyear|decode|degrees|elt|encode|encrypt|exp|extract|field|floor|format|greatest|hex|hour|if|ifnull|insert|instr|interval|isnull|lcase|least|left|length|locate|log|log10|lower|lpad|ltrim|max|md5|mid|min|minute|mod|month|monthname|now|nullif|oct|ord|password|pi|position|pow|power|prepare|quarter|radians|rand|repeat|replace|reverse|right|round|rpad|rtrim|second|sign|sin|soundex|space|sqrt|std|stddev|strcmp|subdate|substring|sum|sysdate|tan|trim|truncate|ucase|upper|user|version|week|weekday|year)$/',
+ ),
+ 4 =>
+ array (
+ 'reserved' => '/^((?i)action|add|aggregate|all|alter|after|and|as|asc|avg|avg_row_length|auto_increment|between|bigint|bit|binary|blob|bool|both|by|cascade|case|char|character|change|check|checksum|column|columns|comment|constraint|create|cross|current_date|current_time|current_timestamp|data|database|databases|date|datetime|day|day_hour|day_minute|day_second|dayofmonth|dayofweek|dayofyear|dec|decimal|default|delayed|delay_key_write|delete|desc|describe|distinct|distinctrow|double|drop|end|else|escape|escaped|enclosed|enum|explain|exists|fields|file|first|float|float4|float8|flush|foreign|from|for|full|function|global|grant|grants|group|having|heap|high_priority|hour|hour_minute|hour_second|hosts|identified|ignore|in|index|infile|inner|insert|insert_id|int|integer|interval|int1|int2|int3|int4|int8|into|if|is|isam|join|key|keys|kill|last_insert_id|leading|left|length|like|lines|limit|load|local|lock|logs|long|longblob|longtext|low_priority|max|max_rows|match|mediumblob|mediumtext|mediumint|middleint|min_rows|minute|minute_second|modify|month|monthname|myisam|natural|numeric|no|not|null|on|optimize|option|optionally|or|order|outer|outfile|pack_keys|partial|password|precision|primary|procedure|process|processlist|privileges|read|real|references|reload|regexp|rename|replace|restrict|returns|revoke|rlike|row|rows|second|select|set|show|shutdown|smallint|soname|sql_big_tables|sql_big_selects|sql_low_priority_updates|sql_log_off|sql_log_update|sql_select_limit|sql_small_result|sql_big_result|sql_warnings|straight_join|starting|status|string|table|tables|temporary|terminated|text|then|time|timestamp|tinyblob|tinytext|tinyint|trailing|to|type|use|using|unique|unlock|unsigned|update|usage|values|varchar|variables|varying|varbinary|with|write|when|where|year|year_month|zerofill)$/',
+ ),
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ 'function' => '/^((?i)abs|acos|adddate|ascii|asin|atan|atan2|avg|benchmark|bin|ceiling|char|coalesce|concat|conv|cos|cot|count|curdate|curtime|database|dayname|dayofmonth|dayofweek|dayofyear|decode|degrees|elt|encode|encrypt|exp|extract|field|floor|format|greatest|hex|hour|if|ifnull|insert|instr|interval|isnull|lcase|least|left|length|locate|log|log10|lower|lpad|ltrim|max|md5|mid|min|minute|mod|month|monthname|now|nullif|oct|ord|password|pi|position|pow|power|prepare|quarter|radians|rand|repeat|replace|reverse|right|round|rpad|rtrim|second|sign|sin|soundex|space|sqrt|std|stddev|strcmp|subdate|substring|sum|sysdate|tan|trim|truncate|ucase|upper|user|version|week|weekday|year)$/',
+ ),
+ 4 =>
+ array (
+ 'reserved' => '/^((?i)action|add|aggregate|all|alter|after|and|as|asc|avg|avg_row_length|auto_increment|between|bigint|bit|binary|blob|bool|both|by|cascade|case|char|character|change|check|checksum|column|columns|comment|constraint|create|cross|current_date|current_time|current_timestamp|data|database|databases|date|datetime|day|day_hour|day_minute|day_second|dayofmonth|dayofweek|dayofyear|dec|decimal|default|delayed|delay_key_write|delete|desc|describe|distinct|distinctrow|double|drop|end|else|escape|escaped|enclosed|enum|explain|exists|fields|file|first|float|float4|float8|flush|foreign|from|for|full|function|global|grant|grants|group|having|heap|high_priority|hour|hour_minute|hour_second|hosts|identified|ignore|in|index|infile|inner|insert|insert_id|int|integer|interval|int1|int2|int3|int4|int8|into|if|is|isam|join|key|keys|kill|last_insert_id|leading|left|length|like|lines|limit|load|local|lock|logs|long|longblob|longtext|low_priority|max|max_rows|match|mediumblob|mediumtext|mediumint|middleint|min_rows|minute|minute_second|modify|month|monthname|myisam|natural|numeric|no|not|null|on|optimize|option|optionally|or|order|outer|outfile|pack_keys|partial|password|precision|primary|procedure|process|processlist|privileges|read|real|references|reload|regexp|rename|replace|restrict|returns|revoke|rlike|row|rows|second|select|set|show|shutdown|smallint|soname|sql_big_tables|sql_big_selects|sql_low_priority_updates|sql_log_off|sql_log_update|sql_select_limit|sql_small_result|sql_big_result|sql_warnings|straight_join|starting|status|string|table|tables|temporary|terminated|text|then|time|timestamp|tinyblob|tinytext|tinyint|trailing|to|type|use|using|unique|unlock|unsigned|update|usage|values|varchar|variables|varying|varbinary|with|write|when|where|year|year_month|zerofill)$/',
+ ),
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'function' => 'reserved',
+ 'reserved' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/PERL.php b/framework/Vendor/TextHighlighter/Text/Highlighter/PERL.php
new file mode 100644
index 00000000..9e8bd752
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/PERL.php
@@ -0,0 +1,1334 @@
+<?php
+/**
+ * Auto-generated class. PERL syntax highlighting
+ *
+ * This highlighter is EXPERIMENTAL, so that it may work incorrectly.
+ * Most rules were created by Mariusz Jakubowski, and extended by me.
+ * My knowledge of Perl is poor, and Perl syntax seems too
+ * complicated to me.
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : perl.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Mariusz 'kg' Jakubowski <kg@alternatywa.info>
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. PERL syntax highlighting
+ *
+ * @author Mariusz 'kg' Jakubowski <kg@alternatywa.info>
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_PERL extends Text_Highlighter
+{
+ var $_language = 'perl';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/',
+ 0 => '//',
+ 1 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/',
+ 2 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|((?i)([a-z1-9_]+)(\\s*=>))|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/',
+ 3 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/',
+ 4 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\[\\\\"\'`tnr\\$\\{@])/',
+ 5 => '/(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/',
+ 6 => '/(\\\\\\/)/',
+ 7 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/',
+ 8 => '/(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/',
+ 9 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\[\\\\"\'`tnr\\$\\{@])/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 2,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 2,
+ 6 => 1,
+ 7 => 9,
+ 8 => 9,
+ 9 => 0,
+ 10 => 8,
+ 11 => 5,
+ 12 => 0,
+ 13 => 0,
+ 14 => 3,
+ 15 => 1,
+ 16 => 1,
+ 17 => 3,
+ 18 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 22 => 0,
+ 23 => 0,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 2,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 2,
+ 6 => 1,
+ 7 => 9,
+ 8 => 9,
+ 9 => 0,
+ 10 => 8,
+ 11 => 5,
+ 12 => 0,
+ 13 => 0,
+ 14 => 3,
+ 15 => 1,
+ 16 => 1,
+ 17 => 3,
+ 18 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 22 => 0,
+ 23 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 2,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 2,
+ 6 => 1,
+ 7 => 9,
+ 8 => 9,
+ 9 => 0,
+ 10 => 8,
+ 11 => 5,
+ 12 => 0,
+ 13 => 2,
+ 14 => 0,
+ 15 => 3,
+ 16 => 1,
+ 17 => 1,
+ 18 => 3,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 22 => 0,
+ 23 => 0,
+ 24 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 2,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 2,
+ 6 => 1,
+ 7 => 9,
+ 8 => 9,
+ 9 => 0,
+ 10 => 8,
+ 11 => 5,
+ 12 => 0,
+ 13 => 0,
+ 14 => 3,
+ 15 => 1,
+ 16 => 1,
+ 17 => 3,
+ 18 => 0,
+ 19 => 0,
+ 20 => 0,
+ 21 => 0,
+ 22 => 0,
+ 23 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 0,
+ 3 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ ),
+ 7 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 0,
+ 3 => 0,
+ ),
+ 8 =>
+ array (
+ 0 => 0,
+ ),
+ 9 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 0,
+ 3 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => '',
+ 1 => 'comment',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => 'brackets',
+ 5 => '',
+ 6 => '',
+ 7 => 'quotes',
+ 8 => 'quotes',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => 'quotes',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ 17 => '',
+ 18 => '',
+ 19 => 'quotes',
+ 20 => 'quotes',
+ 21 => 'quotes',
+ 22 => '',
+ 23 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => '',
+ 1 => 'comment',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => 'brackets',
+ 5 => '',
+ 6 => '',
+ 7 => 'quotes',
+ 8 => 'quotes',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => 'quotes',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ 17 => '',
+ 18 => '',
+ 19 => 'quotes',
+ 20 => 'quotes',
+ 21 => 'quotes',
+ 22 => '',
+ 23 => '',
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ 1 => 'comment',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => 'brackets',
+ 5 => '',
+ 6 => '',
+ 7 => 'quotes',
+ 8 => 'quotes',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => 'quotes',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ 17 => '',
+ 18 => '',
+ 19 => '',
+ 20 => 'quotes',
+ 21 => 'quotes',
+ 22 => 'quotes',
+ 23 => '',
+ 24 => '',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ 1 => 'comment',
+ 2 => 'brackets',
+ 3 => 'brackets',
+ 4 => 'brackets',
+ 5 => '',
+ 6 => '',
+ 7 => 'quotes',
+ 8 => 'quotes',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => 'quotes',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ 17 => '',
+ 18 => '',
+ 19 => 'quotes',
+ 20 => 'quotes',
+ 21 => 'quotes',
+ 22 => '',
+ 23 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ ),
+ 5 =>
+ array (
+ 0 => '',
+ ),
+ 6 =>
+ array (
+ 0 => '',
+ ),
+ 7 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ ),
+ 8 =>
+ array (
+ 0 => '',
+ ),
+ 9 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'special',
+ 1 => 'comment',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'code',
+ 5 => 'special',
+ 6 => 'special',
+ 7 => 'string',
+ 8 => 'string',
+ 9 => 'comment',
+ 10 => 'string',
+ 11 => 'string',
+ 12 => 'string',
+ 13 => 'var',
+ 14 => 'var',
+ 15 => 'var',
+ 16 => 'var',
+ 17 => 'var',
+ 18 => 'var',
+ 19 => 'string',
+ 20 => 'string',
+ 21 => 'string',
+ 22 => 'identifier',
+ 23 => 'number',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 'special',
+ 1 => 'comment',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'code',
+ 5 => 'special',
+ 6 => 'special',
+ 7 => 'string',
+ 8 => 'string',
+ 9 => 'comment',
+ 10 => 'string',
+ 11 => 'string',
+ 12 => 'string',
+ 13 => 'var',
+ 14 => 'var',
+ 15 => 'var',
+ 16 => 'var',
+ 17 => 'var',
+ 18 => 'var',
+ 19 => 'string',
+ 20 => 'string',
+ 21 => 'string',
+ 22 => 'identifier',
+ 23 => 'number',
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ 1 => 'comment',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'code',
+ 5 => 'special',
+ 6 => 'special',
+ 7 => 'string',
+ 8 => 'string',
+ 9 => 'comment',
+ 10 => 'string',
+ 11 => 'string',
+ 12 => 'string',
+ 13 => 'string',
+ 14 => 'var',
+ 15 => 'var',
+ 16 => 'var',
+ 17 => 'var',
+ 18 => 'var',
+ 19 => 'var',
+ 20 => 'string',
+ 21 => 'string',
+ 22 => 'string',
+ 23 => 'identifier',
+ 24 => 'number',
+ ),
+ 3 =>
+ array (
+ 0 => 'special',
+ 1 => 'comment',
+ 2 => 'code',
+ 3 => 'code',
+ 4 => 'code',
+ 5 => 'special',
+ 6 => 'special',
+ 7 => 'string',
+ 8 => 'string',
+ 9 => 'comment',
+ 10 => 'string',
+ 11 => 'string',
+ 12 => 'string',
+ 13 => 'var',
+ 14 => 'var',
+ 15 => 'var',
+ 16 => 'var',
+ 17 => 'var',
+ 18 => 'var',
+ 19 => 'string',
+ 20 => 'string',
+ 21 => 'string',
+ 22 => 'identifier',
+ 23 => 'number',
+ ),
+ 4 =>
+ array (
+ 0 => 'var',
+ 1 => 'var',
+ 2 => 'var',
+ 3 => 'special',
+ ),
+ 5 =>
+ array (
+ 0 => 'special',
+ ),
+ 6 =>
+ array (
+ 0 => 'string',
+ ),
+ 7 =>
+ array (
+ 0 => 'var',
+ 1 => 'var',
+ 2 => 'var',
+ 3 => 'special',
+ ),
+ 8 =>
+ array (
+ 0 => 'special',
+ ),
+ 9 =>
+ array (
+ 0 => 'var',
+ 1 => 'var',
+ 2 => 'var',
+ 3 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?m)^=cut[^\\n]*/',
+ 1 => '/\\}/',
+ 2 => '/\\)/',
+ 3 => '/\\]/',
+ 4 => '/%b2%/',
+ 5 => '/%b2%/',
+ 6 => '/\\/[cgimosx]*/',
+ 7 => '/`/',
+ 8 => '/\'/',
+ 9 => '/"/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => 0,
+ 2 => 1,
+ 3 => 2,
+ 4 => 3,
+ 5 => -1,
+ 6 => -1,
+ 7 => 4,
+ 8 => 5,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => 6,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ 18 => -1,
+ 19 => 7,
+ 20 => 8,
+ 21 => 9,
+ 22 => -1,
+ 23 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => 0,
+ 2 => 1,
+ 3 => 2,
+ 4 => 3,
+ 5 => -1,
+ 6 => -1,
+ 7 => 4,
+ 8 => 5,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => 6,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ 18 => -1,
+ 19 => 7,
+ 20 => 8,
+ 21 => 9,
+ 22 => -1,
+ 23 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => 0,
+ 2 => 1,
+ 3 => 2,
+ 4 => 3,
+ 5 => -1,
+ 6 => -1,
+ 7 => 4,
+ 8 => 5,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => 6,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ 18 => -1,
+ 19 => -1,
+ 20 => 7,
+ 21 => 8,
+ 22 => 9,
+ 23 => -1,
+ 24 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => 0,
+ 2 => 1,
+ 3 => 2,
+ 4 => 3,
+ 5 => -1,
+ 6 => -1,
+ 7 => 4,
+ 8 => 5,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => 6,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ 18 => -1,
+ 19 => 7,
+ 20 => 8,
+ 21 => 9,
+ 22 => -1,
+ 23 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ ),
+ 6 =>
+ array (
+ 0 => -1,
+ ),
+ 7 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ ),
+ 8 =>
+ array (
+ 0 => -1,
+ ),
+ 9 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ 17 =>
+ array (
+ ),
+ 18 =>
+ array (
+ ),
+ 19 => -1,
+ 20 => -1,
+ 21 => -1,
+ 22 =>
+ array (
+ 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/',
+ 'missingreserved' => '/^(new)$/',
+ 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/',
+ ),
+ 23 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ 17 =>
+ array (
+ ),
+ 18 =>
+ array (
+ ),
+ 19 => -1,
+ 20 => -1,
+ 21 => -1,
+ 22 =>
+ array (
+ 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/',
+ 'missingreserved' => '/^(new)$/',
+ 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/',
+ ),
+ 23 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ 17 =>
+ array (
+ ),
+ 18 =>
+ array (
+ ),
+ 19 =>
+ array (
+ ),
+ 20 => -1,
+ 21 => -1,
+ 22 => -1,
+ 23 =>
+ array (
+ 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/',
+ 'missingreserved' => '/^(new)$/',
+ 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/',
+ ),
+ 24 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 => -1,
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ 17 =>
+ array (
+ ),
+ 18 =>
+ array (
+ ),
+ 19 => -1,
+ 20 => -1,
+ 21 => -1,
+ 22 =>
+ array (
+ 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/',
+ 'missingreserved' => '/^(new)$/',
+ 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/',
+ ),
+ 23 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 6 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 7 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ ),
+ 8 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 9 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 =>
+ array (
+ 1 => 'special',
+ 2 => 'string',
+ ),
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 =>
+ array (
+ 1 => 'reserved',
+ 2 => 'special',
+ ),
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 =>
+ array (
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'string',
+ 5 => 'quotes',
+ 6 => 'string',
+ 8 => 'quotes',
+ ),
+ 11 =>
+ array (
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'string',
+ 5 => 'quotes',
+ ),
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ 17 =>
+ array (
+ 1 => 'brackets',
+ 2 => 'var',
+ 3 => 'brackets',
+ ),
+ 18 => NULL,
+ 19 => NULL,
+ 20 => NULL,
+ 21 => NULL,
+ 22 => NULL,
+ 23 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ 1 => 'special',
+ 2 => 'string',
+ ),
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 =>
+ array (
+ 1 => 'reserved',
+ 2 => 'special',
+ ),
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 =>
+ array (
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'string',
+ 5 => 'quotes',
+ 6 => 'string',
+ 8 => 'quotes',
+ ),
+ 11 =>
+ array (
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'string',
+ 5 => 'quotes',
+ ),
+ 12 => NULL,
+ 13 =>
+ array (
+ 1 => 'string',
+ 2 => 'code',
+ ),
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ 17 => NULL,
+ 18 =>
+ array (
+ 1 => 'brackets',
+ 2 => 'var',
+ 3 => 'brackets',
+ ),
+ 19 => NULL,
+ 20 => NULL,
+ 21 => NULL,
+ 22 => NULL,
+ 23 => NULL,
+ 24 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ 1 => 'special',
+ 2 => 'string',
+ ),
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 =>
+ array (
+ 1 => 'reserved',
+ 2 => 'special',
+ ),
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 =>
+ array (
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'string',
+ 5 => 'quotes',
+ 6 => 'string',
+ 8 => 'quotes',
+ ),
+ 11 =>
+ array (
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'string',
+ 5 => 'quotes',
+ ),
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ 17 =>
+ array (
+ 1 => 'brackets',
+ 2 => 'var',
+ 3 => 'brackets',
+ ),
+ 18 => NULL,
+ 19 => NULL,
+ 20 => NULL,
+ 21 => NULL,
+ 22 => NULL,
+ 23 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ ),
+ 6 =>
+ array (
+ 0 => NULL,
+ ),
+ 7 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ 8 =>
+ array (
+ 0 => NULL,
+ ),
+ 9 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => true,
+ 8 => true,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ 18 => false,
+ 19 => false,
+ 20 => false,
+ 21 => false,
+ 22 => false,
+ 23 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => true,
+ 8 => true,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ 18 => false,
+ 19 => false,
+ 20 => false,
+ 21 => false,
+ 22 => false,
+ 23 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => true,
+ 8 => true,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ 18 => false,
+ 19 => false,
+ 20 => false,
+ 21 => false,
+ 22 => false,
+ 23 => false,
+ 24 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => true,
+ 8 => true,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ 18 => false,
+ 19 => false,
+ 20 => false,
+ 21 => false,
+ 22 => false,
+ 23 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ ),
+ 6 =>
+ array (
+ 0 => false,
+ ),
+ 7 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 8 =>
+ array (
+ 0 => false,
+ ),
+ 9 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'reserved' => 'reserved',
+ 'missingreserved' => 'reserved',
+ 'flowcontrol' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/PHP.php b/framework/Vendor/TextHighlighter/Text/Highlighter/PHP.php
new file mode 100644
index 00000000..be504b65
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/PHP.php
@@ -0,0 +1,1089 @@
+<?php
+/**
+ * Auto-generated class. PHP syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: Text/php.xml
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. PHP syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_PHP extends Text_Highlighter
+{
+ var $_language = 'php';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)(\\<\\?(php|=)?)?)/',
+ 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)\\?\\>)|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 3 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/',
+ 4 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/',
+ 5 => '/((?i)\\\\[\\\\"\'`tnr\\$\\{])|((?i)\\{\\$[a-z_].*\\})|((?i)\\$[a-z_]\\w*)/',
+ 6 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)|((?i)\\{\\$[a-z_].*\\})|((?i)\\$[a-z_]\\w*)/',
+ 7 => '/((?i)\\\\[\\\\"\'`tnr\\$\\{])|((?i)\\{\\$[a-z_].*\\})|((?i)\\$[a-z_]\\w*)/',
+ 8 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)/',
+ 9 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/',
+ 10 => '//',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 2,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 1,
+ 7 => 0,
+ 8 => 1,
+ 9 => 0,
+ 10 => 1,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 2,
+ 16 => 5,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 1,
+ 7 => 0,
+ 8 => 1,
+ 9 => 0,
+ 10 => 1,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 0,
+ 16 => 2,
+ 17 => 5,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 1,
+ 7 => 0,
+ 8 => 1,
+ 9 => 0,
+ 10 => 1,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 2,
+ 16 => 5,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 1,
+ 7 => 0,
+ 8 => 1,
+ 9 => 0,
+ 10 => 1,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 2,
+ 16 => 5,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ 1 => 3,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ ),
+ 7 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ ),
+ 8 =>
+ array (
+ 0 => 0,
+ ),
+ 9 =>
+ array (
+ 0 => 0,
+ 1 => 3,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'inlinetags',
+ ),
+ 0 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'quotes',
+ 7 => 'quotes',
+ 8 => 'comment',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ ),
+ 1 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'quotes',
+ 7 => 'quotes',
+ 8 => 'comment',
+ 9 => '',
+ 10 => '',
+ 11 => 'inlinetags',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ 17 => '',
+ ),
+ 2 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'quotes',
+ 7 => 'quotes',
+ 8 => 'comment',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ ),
+ 3 =>
+ array (
+ 0 => 'brackets',
+ 1 => 'brackets',
+ 2 => 'brackets',
+ 3 => 'comment',
+ 4 => 'quotes',
+ 5 => 'quotes',
+ 6 => 'quotes',
+ 7 => 'quotes',
+ 8 => 'comment',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => '',
+ 16 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ ),
+ 5 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ ),
+ 6 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ ),
+ 7 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ ),
+ 8 =>
+ array (
+ 0 => '',
+ ),
+ 9 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => '',
+ 4 => '',
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'code',
+ ),
+ 0 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'string',
+ 7 => 'string',
+ 8 => 'comment',
+ 9 => 'identifier',
+ 10 => 'reserved',
+ 11 => 'number',
+ 12 => 'var',
+ 13 => 'number',
+ 14 => 'number',
+ 15 => 'number',
+ 16 => 'number',
+ ),
+ 1 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'string',
+ 7 => 'string',
+ 8 => 'comment',
+ 9 => 'identifier',
+ 10 => 'reserved',
+ 11 => 'default',
+ 12 => 'number',
+ 13 => 'var',
+ 14 => 'number',
+ 15 => 'number',
+ 16 => 'number',
+ 17 => 'number',
+ ),
+ 2 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'string',
+ 7 => 'string',
+ 8 => 'comment',
+ 9 => 'identifier',
+ 10 => 'reserved',
+ 11 => 'number',
+ 12 => 'var',
+ 13 => 'number',
+ 14 => 'number',
+ 15 => 'number',
+ 16 => 'number',
+ ),
+ 3 =>
+ array (
+ 0 => 'code',
+ 1 => 'code',
+ 2 => 'code',
+ 3 => 'comment',
+ 4 => 'string',
+ 5 => 'string',
+ 6 => 'string',
+ 7 => 'string',
+ 8 => 'comment',
+ 9 => 'identifier',
+ 10 => 'reserved',
+ 11 => 'number',
+ 12 => 'var',
+ 13 => 'number',
+ 14 => 'number',
+ 15 => 'number',
+ 16 => 'number',
+ ),
+ 4 =>
+ array (
+ 0 => 'inlinedoc',
+ 1 => 'url',
+ 2 => 'url',
+ 3 => 'inlinedoc',
+ 4 => 'inlinedoc',
+ ),
+ 5 =>
+ array (
+ 0 => 'special',
+ 1 => 'var',
+ 2 => 'var',
+ ),
+ 6 =>
+ array (
+ 0 => 'special',
+ 1 => 'var',
+ 2 => 'var',
+ ),
+ 7 =>
+ array (
+ 0 => 'special',
+ 1 => 'var',
+ 2 => 'var',
+ ),
+ 8 =>
+ array (
+ 0 => 'special',
+ ),
+ 9 =>
+ array (
+ 0 => 'inlinedoc',
+ 1 => 'url',
+ 2 => 'url',
+ 3 => 'inlinedoc',
+ 4 => 'inlinedoc',
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\\?\\>/',
+ 1 => '/(?i)\\}/',
+ 2 => '/(?i)\\)/',
+ 3 => '/(?i)\\]/',
+ 4 => '/(?i)\\*\\//',
+ 5 => '/(?i)"/',
+ 6 => '/(?i)`/',
+ 7 => '/(?mi)^%1%;?$/',
+ 8 => '/(?i)\'/',
+ 9 => '/(?mi)$|(?=\\?\\>)/',
+ 10 => '/(?i)\\<\\?(php|=)?/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ ),
+ 0 =>
+ array (
+ 0 => 1,
+ 1 => 2,
+ 2 => 3,
+ 3 => 4,
+ 4 => 5,
+ 5 => 6,
+ 6 => 7,
+ 7 => 8,
+ 8 => 9,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => 1,
+ 1 => 2,
+ 2 => 3,
+ 3 => 4,
+ 4 => 5,
+ 5 => 6,
+ 6 => 7,
+ 7 => 8,
+ 8 => 9,
+ 9 => -1,
+ 10 => -1,
+ 11 => 10,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => 1,
+ 1 => 2,
+ 2 => 3,
+ 3 => 4,
+ 4 => 5,
+ 5 => 6,
+ 6 => 7,
+ 7 => 8,
+ 8 => 9,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => 1,
+ 1 => 2,
+ 2 => 3,
+ 3 => 4,
+ 4 => 5,
+ 5 => 6,
+ 6 => 7,
+ 7 => 8,
+ 8 => 9,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => -1,
+ 16 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ ),
+ 6 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ ),
+ 7 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ ),
+ 8 =>
+ array (
+ 0 => -1,
+ ),
+ 9 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/',
+ 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/',
+ 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 => -1,
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ 17 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/',
+ 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/',
+ 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 =>
+ array (
+ ),
+ 16 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ ),
+ 6 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ ),
+ 7 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ ),
+ 8 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 9 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ ),
+ 4 =>
+ array (
+ ),
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ 17 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 6 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 7 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 8 =>
+ array (
+ 0 => NULL,
+ ),
+ 9 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => true,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => true,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => true,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => true,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 6 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 7 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 8 =>
+ array (
+ 0 => false,
+ ),
+ 9 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ ),
+ 10 =>
+ array (
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'constants' => 'reserved',
+ 'reserved' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/PRADO.php b/framework/Vendor/TextHighlighter/Text/Highlighter/PRADO.php
new file mode 100644
index 00000000..dab4a4bc
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/PRADO.php
@@ -0,0 +1,254 @@
+<?php
+/**
+ * Auto-generated class. PRADO syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: Text/prado.xml
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. PRADO syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_PRADO extends Text_Highlighter
+{
+ var $_language = 'prado';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\\<\\!\\[CDATA\\[)|((?i)\\<!--)|((?i)\\<[\\?\\/]?)|((?i)(&|%)[\\w\\-\\.]+;)/',
+ 0 => '//',
+ 1 => '//',
+ 2 => '/((?i)(?<=[\\<\\/?])com:\\w+)|((?i)(?<=[\\<\\/?])[\\w\\-\\:]+)|((?i)[\\w\\-\\:]+)|((?i)")/',
+ 3 => '/((?i)(&|%)[\\w\\-\\.]+;)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 1,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'comment',
+ 2 => 'brackets',
+ 3 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => '',
+ 3 => 'quotes',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'comment',
+ 2 => 'code',
+ 3 => 'special',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ 1 => 'reserved',
+ 2 => 'var',
+ 3 => 'string',
+ ),
+ 3 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\\]\\]\\>/',
+ 1 => '/(?i)--\\>/',
+ 2 => '/(?i)[\\/\\?]?\\>/',
+ 3 => '/(?i)"/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => 3,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ ),
+ 3 => -1,
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/PYTHON.php b/framework/Vendor/TextHighlighter/Text/Highlighter/PYTHON.php
new file mode 100644
index 00000000..a1f381cb
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/PYTHON.php
@@ -0,0 +1,629 @@
+<?php
+/**
+ * Auto-generated class. PYTHON syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : python.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. PYTHON syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_PYTHON extends Text_Highlighter
+{
+ var $_language = 'python';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\'\'\')|((?i)""")|((?i)")|((?i)\')|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)((\\d*\\.\\d+)|(\\d+\\.\\d*)|(\\d+))j)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)|((?i)0[0-7]+l?)|((?i)#.+)/',
+ 0 => '/((?i)\\\\.)/',
+ 1 => '/((?i)\\\\.)/',
+ 2 => '/((?i)\\\\.)/',
+ 3 => '/((?i)\\\\.)/',
+ 4 => '/((?i)\'\'\')|((?i)""")|((?i)")|((?i)\')|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)((\\d*\\.\\d+)|(\\d+\\.\\d*)|(\\d+))j)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)|((?i)0[0-7]+l?)|((?i)#.+)/',
+ 5 => '/((?i)\'\'\')|((?i)""")|((?i)")|((?i)\')|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)((\\d*\\.\\d+)|(\\d+\\.\\d*)|(\\d+))j)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)|((?i)0[0-7]+l?)|((?i)#.+)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 5,
+ 9 => 4,
+ 10 => 2,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ ),
+ 0 =>
+ array (
+ 0 => 0,
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 5,
+ 9 => 4,
+ 10 => 2,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 0,
+ 8 => 5,
+ 9 => 4,
+ 10 => 2,
+ 11 => 0,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => 'brackets',
+ 5 => 'brackets',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ ),
+ 0 =>
+ array (
+ 0 => '',
+ ),
+ 1 =>
+ array (
+ 0 => '',
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ ),
+ 4 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => 'brackets',
+ 5 => 'brackets',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ ),
+ 5 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => 'brackets',
+ 5 => 'brackets',
+ 6 => '',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'string',
+ 1 => 'string',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'code',
+ 5 => 'code',
+ 6 => 'identifier',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ 13 => 'number',
+ 14 => 'comment',
+ ),
+ 0 =>
+ array (
+ 0 => 'special',
+ ),
+ 1 =>
+ array (
+ 0 => 'special',
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ ),
+ 3 =>
+ array (
+ 0 => 'special',
+ ),
+ 4 =>
+ array (
+ 0 => 'string',
+ 1 => 'string',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'code',
+ 5 => 'code',
+ 6 => 'identifier',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ 13 => 'number',
+ 14 => 'comment',
+ ),
+ 5 =>
+ array (
+ 0 => 'string',
+ 1 => 'string',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'code',
+ 5 => 'code',
+ 6 => 'identifier',
+ 7 => 'identifier',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ 13 => 'number',
+ 14 => 'comment',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\'\'\'/',
+ 1 => '/(?i)"""/',
+ 2 => '/(?i)"/',
+ 3 => '/(?i)\'/',
+ 4 => '/(?i)\\)/',
+ 5 => '/(?i)\\]/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ ),
+ 0 =>
+ array (
+ 0 => -1,
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => 5,
+ 6 => -1,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 =>
+ array (
+ 'builtin' => '/^(__import__|abs|apply|basestring|bool|buffer|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|min|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|round|setattr|slice|staticmethod|sum|super|str|tuple|type|unichr|unicode|vars|xrange|zip)$/',
+ ),
+ 7 =>
+ array (
+ 'reserved' => '/^(and|del|for|is|raise|assert|elif|from|lambda|return|break|else|global|not|try|class|except|if|or|while|continue|exec|import|pass|yield|def|finally|in|print|False|True|None|NotImplemented|Ellipsis|Exception|SystemExit|StopIteration|StandardError|KeyboardInterrupt|ImportError|EnvironmentError|IOError|OSError|WindowsError|EOFError|RuntimeError|NotImplementedError|NameError|UnboundLocalError|AttributeError|SyntaxError|IndentationError|TabError|TypeError|AssertionError|LookupError|IndexError|KeyError|ArithmeticError|OverflowError|ZeroDivisionError|FloatingPointError|ValueError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ReferenceError|SystemError|MemoryError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|OverflowWarning|RuntimeWarning|FutureWarning)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 =>
+ array (
+ 'builtin' => '/^(__import__|abs|apply|basestring|bool|buffer|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|min|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|round|setattr|slice|staticmethod|sum|super|str|tuple|type|unichr|unicode|vars|xrange|zip)$/',
+ ),
+ 7 =>
+ array (
+ 'reserved' => '/^(and|del|for|is|raise|assert|elif|from|lambda|return|break|else|global|not|try|class|except|if|or|while|continue|exec|import|pass|yield|def|finally|in|print|False|True|None|NotImplemented|Ellipsis|Exception|SystemExit|StopIteration|StandardError|KeyboardInterrupt|ImportError|EnvironmentError|IOError|OSError|WindowsError|EOFError|RuntimeError|NotImplementedError|NameError|UnboundLocalError|AttributeError|SyntaxError|IndentationError|TabError|TypeError|AssertionError|LookupError|IndexError|KeyError|ArithmeticError|OverflowError|ZeroDivisionError|FloatingPointError|ValueError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ReferenceError|SystemError|MemoryError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|OverflowWarning|RuntimeWarning|FutureWarning)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 => -1,
+ 6 =>
+ array (
+ 'builtin' => '/^(__import__|abs|apply|basestring|bool|buffer|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|min|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|round|setattr|slice|staticmethod|sum|super|str|tuple|type|unichr|unicode|vars|xrange|zip)$/',
+ ),
+ 7 =>
+ array (
+ 'reserved' => '/^(and|del|for|is|raise|assert|elif|from|lambda|return|break|else|global|not|try|class|except|if|or|while|continue|exec|import|pass|yield|def|finally|in|print|False|True|None|NotImplemented|Ellipsis|Exception|SystemExit|StopIteration|StandardError|KeyboardInterrupt|ImportError|EnvironmentError|IOError|OSError|WindowsError|EOFError|RuntimeError|NotImplementedError|NameError|UnboundLocalError|AttributeError|SyntaxError|IndentationError|TabError|TypeError|AssertionError|LookupError|IndexError|KeyError|ArithmeticError|OverflowError|ZeroDivisionError|FloatingPointError|ValueError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ReferenceError|SystemError|MemoryError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|OverflowWarning|RuntimeWarning|FutureWarning)$/',
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ 0 => NULL,
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ ),
+ 0 =>
+ array (
+ 0 => false,
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'builtin' => 'builtin',
+ 'reserved' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/RUBY.php b/framework/Vendor/TextHighlighter/Text/Highlighter/RUBY.php
new file mode 100644
index 00000000..3deaa376
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/RUBY.php
@@ -0,0 +1,807 @@
+<?php
+/**
+ * Auto-generated class. RUBY syntax highlighting
+ *
+ *
+ * FIXME: While this construction : s.split /z/i
+ * is valid, regular expression is not recognized as such
+ * (/ folowing an identifier or number is not recognized as
+ * start of RE), making highlighting improper
+ *
+ * %q(a (nested) string) does not get highlighted correctly
+ *
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : ruby.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. RUBY syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_RUBY extends Text_Highlighter
+{
+ var $_language = 'ruby';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?mi)^__END__$)|((?i)")|((?i)%[Qx]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\')|((?i)%[wq]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\\$(\\W|\\w+))|((?ii)@@?[_a-z][\\d_a-z]*)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)0[xX][\\da-f]+l?)|((?i)\\d+l?|\\b0l?\\b)|((?i)0[0-7]+l?)|((?mi)^=begin$)|((?i)#)|((?i)\\s*\\/)/',
+ 0 => '//',
+ 1 => '/((?i)\\\\.)/',
+ 2 => '/((?i)\\\\.)/',
+ 3 => '/((?i)\\\\.)/',
+ 4 => '/((?i)\\\\.)/',
+ 5 => '/((?mi)^__END__$)|((?i)")|((?i)%[Qx]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\')|((?i)%[wq]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\\$(\\W|\\w+))|((?ii)@@?[_a-z][\\d_a-z]*)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)0[xX][\\da-f]+l?)|((?i)\\d+l?|\\b0l?\\b)|((?i)0[0-7]+l?)|((?mi)^=begin$)|((?i)#)|((?i)\\s*\\/)/',
+ 6 => '/((?mi)^__END__$)|((?i)")|((?i)%[Qx]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\')|((?i)%[wq]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\\$(\\W|\\w+))|((?ii)@@?[_a-z][\\d_a-z]*)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)0[xX][\\da-f]+l?)|((?i)\\d+l?|\\b0l?\\b)|((?i)0[0-7]+l?)|((?mi)^=begin$)|((?i)#)|((?i)\\s*\\/)/',
+ 7 => '/((?i)\\$\\w+\\s*:.+\\$)/',
+ 8 => '/((?i)\\$\\w+\\s*:.+\\$)/',
+ 9 => '/((?i)\\\\.)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 1,
+ 5 => 1,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 5,
+ 11 => 2,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 0,
+ 16 => 0,
+ 17 => 0,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 0,
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 1,
+ 5 => 1,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 5,
+ 11 => 2,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 0,
+ 16 => 0,
+ 17 => 0,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 1,
+ 5 => 1,
+ 6 => 0,
+ 7 => 0,
+ 8 => 0,
+ 9 => 0,
+ 10 => 5,
+ 11 => 2,
+ 12 => 0,
+ 13 => 0,
+ 14 => 0,
+ 15 => 0,
+ 16 => 0,
+ 17 => 0,
+ ),
+ 7 =>
+ array (
+ 0 => 0,
+ ),
+ 8 =>
+ array (
+ 0 => 0,
+ ),
+ 9 =>
+ array (
+ 0 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'reserved',
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => 'quotes',
+ 5 => '',
+ 6 => '',
+ 7 => 'brackets',
+ 8 => 'brackets',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => 'comment',
+ 16 => 'comment',
+ 17 => 'quotes',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => '',
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ 5 =>
+ array (
+ 0 => 'reserved',
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => 'quotes',
+ 5 => '',
+ 6 => '',
+ 7 => 'brackets',
+ 8 => 'brackets',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => 'comment',
+ 16 => 'comment',
+ 17 => 'quotes',
+ ),
+ 6 =>
+ array (
+ 0 => 'reserved',
+ 1 => 'quotes',
+ 2 => 'quotes',
+ 3 => 'quotes',
+ 4 => 'quotes',
+ 5 => '',
+ 6 => '',
+ 7 => 'brackets',
+ 8 => 'brackets',
+ 9 => '',
+ 10 => '',
+ 11 => '',
+ 12 => '',
+ 13 => '',
+ 14 => '',
+ 15 => 'comment',
+ 16 => 'comment',
+ 17 => 'quotes',
+ ),
+ 7 =>
+ array (
+ 0 => '',
+ ),
+ 8 =>
+ array (
+ 0 => '',
+ ),
+ 9 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'string',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'string',
+ 5 => 'var',
+ 6 => 'var',
+ 7 => 'code',
+ 8 => 'code',
+ 9 => 'identifier',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ 13 => 'number',
+ 14 => 'number',
+ 15 => 'comment',
+ 16 => 'comment',
+ 17 => 'string',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => 'special',
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ ),
+ 3 =>
+ array (
+ 0 => 'special',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ 5 =>
+ array (
+ 0 => 'comment',
+ 1 => 'string',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'string',
+ 5 => 'var',
+ 6 => 'var',
+ 7 => 'code',
+ 8 => 'code',
+ 9 => 'identifier',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ 13 => 'number',
+ 14 => 'number',
+ 15 => 'comment',
+ 16 => 'comment',
+ 17 => 'string',
+ ),
+ 6 =>
+ array (
+ 0 => 'comment',
+ 1 => 'string',
+ 2 => 'string',
+ 3 => 'string',
+ 4 => 'string',
+ 5 => 'var',
+ 6 => 'var',
+ 7 => 'code',
+ 8 => 'code',
+ 9 => 'identifier',
+ 10 => 'number',
+ 11 => 'number',
+ 12 => 'number',
+ 13 => 'number',
+ 14 => 'number',
+ 15 => 'comment',
+ 16 => 'comment',
+ 17 => 'string',
+ ),
+ 7 =>
+ array (
+ 0 => 'inlinedoc',
+ ),
+ 8 =>
+ array (
+ 0 => 'inlinedoc',
+ ),
+ 9 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)$/',
+ 1 => '/(?i)"/',
+ 2 => '/(?i)%b1%/',
+ 3 => '/(?i)\'/',
+ 4 => '/(?i)%b1%/',
+ 5 => '/(?i)\\)/',
+ 6 => '/(?i)\\]/',
+ 7 => '/(?mi)^=end$/',
+ 8 => '/(?mi)$/',
+ 9 => '/(?i)\\/[iomx]*/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ 6 => -1,
+ 7 => 5,
+ 8 => 6,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => 7,
+ 16 => 8,
+ 17 => 9,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => -1,
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ 5 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ 6 => -1,
+ 7 => 5,
+ 8 => 6,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => 7,
+ 16 => 8,
+ 17 => 9,
+ ),
+ 6 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => 3,
+ 4 => 4,
+ 5 => -1,
+ 6 => -1,
+ 7 => 5,
+ 8 => 6,
+ 9 => -1,
+ 10 => -1,
+ 11 => -1,
+ 12 => -1,
+ 13 => -1,
+ 14 => -1,
+ 15 => 7,
+ 16 => 8,
+ 17 => 9,
+ ),
+ 7 =>
+ array (
+ 0 => -1,
+ ),
+ 8 =>
+ array (
+ 0 => -1,
+ ),
+ 9 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'reserved' => '/^(__FILE__|require|and|def|end|in|or|self|unless|__LINE__|begin|defined?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|module_function|private|public|protected|attr_reader|attr_writer|attr_accessor|class|elsif|if|not|return|undef|yield)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 5 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'reserved' => '/^(__FILE__|require|and|def|end|in|or|self|unless|__LINE__|begin|defined?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|module_function|private|public|protected|attr_reader|attr_writer|attr_accessor|class|elsif|if|not|return|undef|yield)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ ),
+ 6 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 => -1,
+ 4 => -1,
+ 5 =>
+ array (
+ ),
+ 6 =>
+ array (
+ ),
+ 7 => -1,
+ 8 => -1,
+ 9 =>
+ array (
+ 'reserved' => '/^(__FILE__|require|and|def|end|in|or|self|unless|__LINE__|begin|defined?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|module_function|private|public|protected|attr_reader|attr_writer|attr_accessor|class|elsif|if|not|return|undef|yield)$/',
+ ),
+ 10 =>
+ array (
+ ),
+ 11 =>
+ array (
+ ),
+ 12 =>
+ array (
+ ),
+ 13 =>
+ array (
+ ),
+ 14 =>
+ array (
+ ),
+ 15 => -1,
+ 16 => -1,
+ 17 => -1,
+ ),
+ 7 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 8 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 9 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => NULL,
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ 5 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ 17 => NULL,
+ ),
+ 6 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ 11 => NULL,
+ 12 => NULL,
+ 13 => NULL,
+ 14 => NULL,
+ 15 => NULL,
+ 16 => NULL,
+ 17 => NULL,
+ ),
+ 7 =>
+ array (
+ 0 => NULL,
+ ),
+ 8 =>
+ array (
+ 0 => NULL,
+ ),
+ 9 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => true,
+ 3 => false,
+ 4 => true,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ 0 => false,
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ 5 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => true,
+ 3 => false,
+ 4 => true,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ ),
+ 6 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => true,
+ 3 => false,
+ 4 => true,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ 11 => false,
+ 12 => false,
+ 13 => false,
+ 14 => false,
+ 15 => false,
+ 16 => false,
+ 17 => false,
+ ),
+ 7 =>
+ array (
+ 0 => false,
+ ),
+ 8 =>
+ array (
+ 0 => false,
+ ),
+ 9 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'reserved' => 'reserved',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer.php
new file mode 100644
index 00000000..7abb4a5a
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer.php
@@ -0,0 +1,151 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * Abstract base class for Highlighter renderers
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: Renderer.php,v 1.1 2007/06/03 02:36:35 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * Abstract base class for Highlighter renderers
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @abstract
+ */
+
+class Text_Highlighter_Renderer
+{
+ /**
+ * Renderer options
+ *
+ * @var array
+ * @access protected
+ */
+ public $_options = array();
+
+ /**
+ * Current language
+ *
+ * @var string
+ * @access protected
+ */
+ public $_language = '';
+
+ /**
+ * Constructor
+ *
+ * @access public
+ *
+ * @param array $options Rendering options. Renderer-specific.
+ */
+ function __construct($options = array())
+ {
+ $this->_options = $options;
+ }
+
+ /**
+ * Resets renderer state
+ *
+ * @access public
+ *
+ * @param array $options Rendering options. Renderer-specific.
+ */
+ function reset()
+ {
+ return;
+ }
+
+ /**
+ * Preprocesses code
+ *
+ * @access public
+ *
+ * @param string $str Code to preprocess
+ * @return string Preprocessed code
+ */
+ function preprocess($str)
+ {
+ return $str;
+ }
+
+ /**
+ * Accepts next token
+ *
+ * @abstract
+ * @access public
+ *
+ * @param string $class Token class
+ * @param string $content Token content
+ */
+ function acceptToken($class, $content)
+ {
+ return;
+ }
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @access public
+ *
+ */
+ function finalize()
+ {
+ return;
+ }
+
+ /**
+ * Get generated output
+ *
+ * @abstract
+ * @return mixed Renderer-specific
+ * @access public
+ *
+ */
+ function getOutput()
+ {
+ return;
+ }
+
+ /**
+ * Set current language
+ *
+ * @abstract
+ * @return void
+ * @access public
+ *
+ */
+ function setCurrentLanguage($lang)
+ {
+ $this->_language = $lang;
+ }
+
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Array.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Array.php
new file mode 100644
index 00000000..56fcda7a
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Array.php
@@ -0,0 +1,198 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * Array renderer.
+ *
+ * Produces an array that contains class names and content pairs.
+ * The array can be enumerated or associative. Associative means
+ * <code>class =&gt; content</code> pairs.
+ * Based on the HTML renderer by Andrey Demenev.
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @copyright 2006 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: Array.php,v 1.1 2007/06/03 02:37:08 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+
+/**
+ * Array renderer, based on Andrey Demenev's HTML renderer.
+ *
+ * In addition to the options supported by the HTML renderer,
+ * the following options were also introduced:
+ * <ul><li>htmlspecialchars - whether or not htmlspecialchars() will
+ * be called on the content, default TRUE</li>
+ * <li>enumerated - type of array produced, default FALSE,
+ * meaning associative array</li>
+ * </ul>
+ *
+ *
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2006 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.5.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_Array extends Text_Highlighter_Renderer
+{
+
+ /**#@+
+ * @access private
+ */
+
+ /**
+ * Tab size
+ *
+ * @var integer
+ */
+ var $_tabsize = 4;
+
+ /**
+ * Should htmlentities() will be called
+ *
+ * @var boolean
+ */
+ var $_htmlspecialchars = true;
+
+ /**
+ * Enumerated or associative array
+ *
+ * @var integer
+ */
+ var $_enumerated = false;
+
+ /**
+ * Array containing highlighting rules
+ *
+ * @var array
+ */
+ var $_output = array();
+
+ /**#@-*/
+
+ /**
+ * Preprocesses code
+ *
+ * @access public
+ *
+ * @param string $str Code to preprocess
+ * @return string Preprocessed code
+ */
+ function preprocess($str)
+ {
+ // normalize whitespace and tabs
+ $str = str_replace("\r\n","\n", $str);
+ // some browsers refuse to display empty lines
+ $str = preg_replace('~^$~m'," ", $str);
+ $str = str_replace("\t",str_repeat(' ', $this->_tabsize), $str);
+ return rtrim($str);
+ }
+
+
+ /**
+ * Resets renderer state
+ *
+ * Descendents of Text_Highlighter call this method from the constructor,
+ * passing $options they get as parameter.
+ *
+ * @access protected
+ */
+ function reset()
+ {
+ $this->_output = array();
+ $this->_lastClass = 'default';
+ if (isset($this->_options['tabsize'])) {
+ $this->_tabsize = $this->_options['tabsize'];
+ }
+ if (isset($this->_options['htmlspecialchars'])) {
+ $this->_htmlspecialchars = $this->_options['htmlspecialchars'];
+ }
+ if (isset($this->_options['enumerated'])) {
+ $this->_enumerated = $this->_options['enumerated'];
+ }
+ }
+
+
+
+ /**
+ * Accepts next token
+ *
+ * @abstract
+ * @access public
+ * @param string $class Token class
+ * @param string $content Token content
+ */
+ function acceptToken($class, $content)
+ {
+
+
+ $theClass = $this->_getFullClassName($class);
+ if ($this->_htmlspecialchars) {
+ $content = htmlspecialchars($content);
+ }
+ if ($this->_enumerated) {
+ $this->_output[] = array($class, $content);
+ } else {
+ $this->_output[][$class] = $content;
+ }
+ $this->_lastClass = $class;
+
+ }
+
+
+ /**
+ * Given a CSS class name, returns the class name
+ * with language name prepended, if necessary
+ *
+ * @access private
+ *
+ * @param string $class Token class
+ */
+ function _getFullClassName($class)
+ {
+ if (!empty($this->_options['use_language'])) {
+ $theClass = $this->_language . '-' . $class;
+ } else {
+ $theClass = $class;
+ }
+ return $theClass;
+ }
+
+ /**
+ * Get generated output
+ *
+ * @abstract
+ * @return array Highlighted code as an array
+ * @access public
+ */
+ function getOutput()
+ {
+ return $this->_output;
+ }
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/BB.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/BB.php
new file mode 100644
index 00000000..eae45f44
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/BB.php
@@ -0,0 +1,237 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * BB code renderer.
+ *
+ * This BB renderer produces BB code, ready to be pasted in bulletin boards and
+ * other applications that accept BB code. Based on the HTML renderer by Andrey Demenev.
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @copyright 2005 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: BB.php,v 1.1 2007/06/03 02:37:08 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+
+/**
+ * BB code renderer, based on Andrey Demenev's HTML renderer.
+ *
+ * Elements of $options argument of constructor (each being optional):
+ *
+ * - 'numbers' - Line numbering TRUE or FALSE
+ * - 'tabsize' - Tab size, default is 4
+ * - 'bb_tags' - An array containing three BB tags, see below
+ * - 'tag_brackets' - An array that conains opening and closing tags, [ and ]
+ * - 'colors' - An array with all the colors to be used for highlighting
+ *
+ * The default BB tags are:
+ * - 'color' => 'color'
+ * - 'list' => 'list'
+ * - 'list_item' => '*'
+ *
+ * The default colors for the highlighter are:
+ * - 'default' => 'Black',
+ * - 'code' => 'Gray',
+ * - 'brackets' => 'Olive',
+ * - 'comment' => 'Orange',
+ * - 'mlcomment' => 'Orange',
+ * - 'quotes' => 'Darkred',
+ * - 'string' => 'Red',
+ * - 'identifier' => 'Blue',
+ * - 'builtin' => 'Teal',
+ * - 'reserved' => 'Green',
+ * - 'inlinedoc' => 'Blue',
+ * - 'var' => 'Darkblue',
+ * - 'url' => 'Blue',
+ * - 'special' => 'Navy',
+ * - 'number' => 'Maroon',
+ * - 'inlinetags' => 'Blue',
+ *
+ *
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 20045 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.5.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_BB extends Text_Highlighter_Renderer_Array
+{
+
+ /**#@+
+ * @access private
+ */
+
+ /**
+ * Line numbering - will use the specified BB tag for listings
+ *
+ * @var boolean
+ */
+ var $_numbers = false;
+
+ /**
+ * BB tags to be used
+ *
+ * @var array
+ */
+ var $_bb_tags = array (
+ 'color' => 'color',
+ 'list' => 'list',
+ 'list_item' => '*',
+ 'code' => 'code',
+ );
+
+ /**
+ * BB brackets - [ and ]
+ *
+ * @var array
+ */
+ var $_tag_brackets = array ('start' => '[', 'end' => ']');
+
+ /**
+ * Colors map
+ *
+ * @var boolean
+ */
+ var $_colors = array(
+ 'default' => 'Black',
+ 'code' => 'Gray',
+ 'brackets' => 'Olive',
+ 'comment' => 'Orange',
+ 'mlcomment' => 'Orange',
+ 'quotes' => 'Darkred',
+ 'string' => 'Red',
+ 'identifier' => 'Blue',
+ 'builtin' => 'Teal',
+ 'reserved' => 'Green',
+ 'inlinedoc' => 'Blue',
+ 'var' => 'Darkblue',
+ 'url' => 'Blue',
+ 'special' => 'Navy',
+ 'number' => 'Maroon',
+ 'inlinetags' => 'Blue',
+ );
+
+ /**#@-*/
+
+ /**
+ * Resets renderer state
+ *
+ * @access protected
+ *
+ *
+ * Descendents of Text_Highlighter call this method from the constructor,
+ * passing $options they get as parameter.
+ */
+ function reset()
+ {
+ parent::reset();
+ if (isset($this->_options['numbers'])) {
+ $this->_numbers = $this->_options['numbers'];
+ }
+ if (isset($this->_options['bb_tags'])) {
+ $this->_bb_tags = array_merge($this->_bb_tags, $this->_options['bb_tags']);
+ }
+ if (isset($this->_options['tag_brackets'])) {
+ $this->_tag_brackets = array_merge($this->_tag_brackets, $this->_options['tag_brackets']);
+ }
+ if (isset($this->_options['colors'])) {
+ $this->_colors = array_merge($this->_colors, $this->_options['colors']);
+ }
+ }
+
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @abstract
+ * @access public
+ *
+ */
+ function finalize()
+ {
+
+ // get parent's output
+ parent::finalize();
+ $output = parent::getOutput();
+
+ $bb_output = '';
+
+ $color_start = $this->_tag_brackets['start'] . $this->_bb_tags['color'] . '=%s' . $this->_tag_brackets['end'];
+ $color_end = $this->_tag_brackets['start'] . '/' . $this->_bb_tags['color'] . $this->_tag_brackets['end'];
+
+ // loop through each class=>content pair
+ foreach ($output AS $token) {
+
+ if ($this->_enumerated) {
+ $class = $token[0];
+ $content = $token[1];
+ } else {
+ $key = key($token);
+ $class = $key;
+ $content = $token[$key];
+ }
+
+ $iswhitespace = ctype_space($content);
+ if (!$iswhitespace && !empty($this->_colors[$class])) {
+ $bb_output .= sprintf($color_start, $this->_colors[$class]);
+ $bb_output .= $content;
+ $bb_output .= $color_end;
+ } else {
+ $bb_output .= $content;
+ }
+ }
+
+ if ($this->_numbers) {
+
+ $item_tag = $this->_tag_brackets['start'] .
+ $this->_bb_tags['list_item'] .
+ $this->_tag_brackets['end'];
+ $this->_output = $item_tag . str_replace("\n", "\n". $item_tag .' ', $bb_output);
+ $this->_output = $this->_tag_brackets['start'] .
+ $this->_bb_tags['list'] .
+ $this->_tag_brackets['end'] .
+ $this->_output .
+ $this->_tag_brackets['start'] .
+ '/'.
+ $this->_bb_tags['list'] .
+ $this->_tag_brackets['end']
+ ;
+ } else {
+ $this->_output = $this->_tag_brackets['start'] .
+ $this->_bb_tags['code'] .
+ $this->_tag_brackets['end'] .
+ $bb_output .
+ $this->_tag_brackets['start'] .
+ '/' .
+ $this->_bb_tags['code'] .
+ $this->_tag_brackets['end'];
+ }
+ }
+
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Console.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Console.php
new file mode 100644
index 00000000..88d13761
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Console.php
@@ -0,0 +1,207 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * Console renderer
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: Console.php,v 1.1 2007/06/03 02:37:08 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+
+define ('HL_CONSOLE_DEFCOLOR', "\033[0m");
+
+/**
+ * Console renderer
+ *
+ * Suitable for displaying text on color-capable terminals, directly
+ * or trough less -r
+ *
+ * Elements of $options argument of constructor (each being optional):
+ *
+ * - 'numbers' - whether to add line numbers
+ * - 'tabsize' - Tab size
+ * - 'colors' - additional colors
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_Console extends Text_Highlighter_Renderer
+{
+
+ /**#@+
+ * @access private
+ */
+
+ /**
+ * class of last outputted text chunk
+ *
+ * @var string
+ */
+ var $_lastClass;
+
+ /**
+ * Line numbering
+ *
+ * @var boolean
+ */
+ var $_numbers = false;
+
+ /**
+ * Tab size
+ *
+ * @var integer
+ */
+ var $_tabsize = 4;
+
+ /**
+ * Highlighted code
+ *
+ * @var string
+ */
+ var $_output = '';
+
+ /**#@-*/
+
+ var $_colors = array();
+
+ var $_defColors = array(
+ 'default' => "\033[0m",
+ 'inlinetags' => "\033[31m",
+ 'brackets' => "\033[36m",
+ 'quotes' => "\033[34m",
+ 'inlinedoc' => "\033[34m",
+ 'var' => "\033[1m",
+ 'types' => "\033[32m",
+ 'number' => "\033[32m",
+ 'string' => "\033[31m",
+ 'reserved' => "\033[35m",
+ 'comment' => "\033[33m",
+ 'mlcomment' => "\033[33m",
+ );
+
+ function preprocess($str)
+ {
+ // normalize whitespace and tabs
+ $str = str_replace("\r\n","\n", $str);
+ $str = str_replace("\t",str_repeat(' ', $this->_tabsize), $str);
+ return rtrim($str);
+ }
+
+
+ /**
+ * Resets renderer state
+ *
+ * @access protected
+ *
+ *
+ * Descendents of Text_Highlighter call this method from the constructor,
+ * passing $options they get as parameter.
+ */
+ function reset()
+ {
+ $this->_lastClass = '';
+ if (isset($this->_options['numbers'])) {
+ $this->_numbers = (bool)$this->_options['numbers'];
+ } else {
+ $this->_numbers = false;
+ }
+ if (isset($this->_options['tabsize'])) {
+ $this->_tabsize = $this->_options['tabsize'];
+ } else {
+ $this->_tabsize = 4;
+ }
+ if (isset($this->_options['colors'])) {
+ $this->_colors = array_merge($this->_defColors, $this->_options['colors']);
+ } else {
+ $this->_colors = $this->_defColors;
+ }
+ $this->_output = '';
+ }
+
+
+
+ /**
+ * Accepts next token
+ *
+ * @access public
+ *
+ * @param string $class Token class
+ * @param string $content Token content
+ */
+ function acceptToken($class, $content)
+ {
+ if (isset($this->_colors[$class])) {
+ $color = $this->_colors[$class];
+ } else {
+ $color = $this->_colors['default'];
+ }
+ if ($this->_lastClass != $class) {
+ $this->_output .= $color;
+ }
+ $content = str_replace("\n", $this->_colors['default'] . "\n" . $color, $content);
+ $content .= $this->_colors['default'];
+ $this->_output .= $content;
+ }
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @access public
+ *
+ */
+ function finalize()
+ {
+ if ($this->_numbers) {
+ $nlines = substr_count($this->_output, "\n") + 1;
+ $len = strlen($nlines);
+ $i = 1;
+ $this->_output = preg_replace('~^~em', '" " . str_pad($i++, $len, " ", STR_PAD_LEFT) . ": "', $this->_output);
+ }
+ $this->_output .= HL_CONSOLE_DEFCOLOR . "\n";
+ }
+
+ /**
+ * Get generated output
+ *
+ * @return string Highlighted code
+ * @access public
+ *
+ */
+ function getOutput()
+ {
+ return $this->_output;
+ }
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Html.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Html.php
new file mode 100644
index 00000000..d7e55a25
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/Html.php
@@ -0,0 +1,445 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * HTML renderer
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: Html.php,v 1.1 2007/06/03 02:37:09 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+require_once dirname(__FILE__).'/../Renderer/Array.php';
+
+// BC trick : only define constants if Text/Highlighter.php
+// is not yet included
+if (!defined('HL_NUMBERS_LI')) {
+ /**#@+
+ * Constant for use with $options['numbers']
+ */
+ /**
+ * use numbered list, deprecated, use HL_NUMBERS_OL instaed
+ * @deprecated
+ */
+ define ('HL_NUMBERS_LI' , 1);
+ /**
+ * Use 2-column table with line numbers in left column and code in right column.
+ */
+ define ('HL_NUMBERS_TABLE' , 2);
+ /**#@-*/
+}
+
+
+/**#@+
+ * Constant for use with $options['numbers']
+ */
+/**
+ * Use numbered list
+ */
+define ('HL_NUMBERS_OL', 1);
+/**
+ * Use non-numbered list
+ */
+define ('HL_NUMBERS_UL', 3);
+/**#@-*/
+
+
+/**
+ * HTML renderer
+ *
+ * Elements of $options argument of constructor (each being optional):
+ *
+ * - 'numbers' - Line numbering style 0 or {@link HL_NUMBERS_TABLE}
+ * or {@link HL_NUMBERS_UL} or {@link HL_NUMBERS_OL}
+ * - 'numbers_start' - starting number for numbered lines
+ * - 'tabsize' - Tab size
+ * - 'style_map' - Mapping of keywords to formatting rules using inline styles
+ * - 'class_map' - Mapping of keywords to formatting rules using class names
+ * - 'doclinks' - array that has keys "url", "target" and "elements", used for
+ * generating links to online documentation
+ * - 'use_language' - class names will be prefixed with language, like "php-reserved" or "css-code"
+ *
+ * Example of setting documentation links:
+ * $options['doclinks'] = array(
+ * 'url' => 'http://php.net/%s',
+ * 'target' => '_blank',
+ * 'elements' => array('reserved', 'identifier')
+ * );
+ *
+ * Example of setting class names map:
+ * $options['class_map'] = array(
+ * 'main' => 'my-main',
+ * 'table' => 'my-table',
+ * 'gutter' => 'my-gutter',
+ * 'brackets' => 'my-brackets',
+ * 'builtin' => 'my-builtin',
+ * 'code' => 'my-code',
+ * 'comment' => 'my-comment',
+ * 'default' => 'my-default',
+ * 'identifier' => 'my-identifier',
+ * 'inlinedoc' => 'my-inlinedoc',
+ * 'inlinetags' => 'my-inlinetags',
+ * 'mlcomment' => 'my-mlcomment',
+ * 'number' => 'my-number',
+ * 'quotes' => 'my-quotes',
+ * 'reserved' => 'my-reserved',
+ * 'special' => 'my-special',
+ * 'string' => 'my-string',
+ * 'url' => 'my-url',
+ * 'var' => 'my-var',
+ * );
+ *
+ * Example of setting styles mapping:
+ * $options['style_map'] = array(
+ * 'main' => 'color: black',
+ * 'table' => 'border: 1px solid black',
+ * 'gutter' => 'background-color: yellow',
+ * 'brackets' => 'color: blue',
+ * 'builtin' => 'color: red',
+ * 'code' => 'color: green',
+ * 'comment' => 'color: orange',
+ * // ....
+ * );
+ *
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_Html extends Text_Highlighter_Renderer_Array
+{
+
+ /**#@+
+ * @access private
+ */
+
+ /**
+ * Line numbering style
+ *
+ * @var integer
+ */
+ var $_numbers = 0;
+
+ /**
+ * For numberered lines - where to start
+ *
+ * @var integer
+ */
+ var $_numbers_start = 0;
+
+ /**
+ * Tab size
+ *
+ * @var integer
+ */
+ var $_tabsize = 4;
+
+ /**
+ * Highlighted code
+ *
+ * @var string
+ */
+ var $_output = '';
+
+ /**
+ * Mapping of keywords to formatting rules using inline styles
+ *
+ * @var array
+ */
+ var $_style_map = array();
+
+ /**
+ * Mapping of keywords to formatting rules using class names
+ *
+ * @var array
+ */
+ var $_class_map = array(
+ 'main' => 'hl-main',
+ 'table' => 'hl-table',
+ 'gutter' => 'hl-gutter',
+ 'brackets' => 'hl-brackets',
+ 'builtin' => 'hl-builtin',
+ 'code' => 'hl-code',
+ 'comment' => 'hl-comment',
+ 'default' => 'hl-default',
+ 'identifier' => 'hl-identifier',
+ 'inlinedoc' => 'hl-inlinedoc',
+ 'inlinetags' => 'hl-inlinetags',
+ 'mlcomment' => 'hl-mlcomment',
+ 'number' => 'hl-number',
+ 'quotes' => 'hl-quotes',
+ 'reserved' => 'hl-reserved',
+ 'special' => 'hl-special',
+ 'string' => 'hl-string',
+ 'url' => 'hl-url',
+ 'var' => 'hl-var',
+ );
+
+ /**
+ * Setup for links to online documentation
+ *
+ * This is an array with keys:
+ * - url, ex. http://php.net/%s
+ * - target, ex. _blank, default - no target
+ * - elements, default is <code>array('reserved', 'identifier')</code>
+ *
+ * @var array
+ */
+ var $_doclinks = array();
+
+ /**#@-*/
+
+ /**
+ * Resets renderer state
+ *
+ * @access protected
+ *
+ *
+ * Descendents of Text_Highlighter call this method from the constructor,
+ * passing $options they get as parameter.
+ */
+ function reset()
+ {
+ $this->_output = '';
+ if (isset($this->_options['numbers'])) {
+ $this->_numbers = (int)$this->_options['numbers'];
+ if ($this->_numbers != HL_NUMBERS_LI
+ && $this->_numbers != HL_NUMBERS_UL
+ && $this->_numbers != HL_NUMBERS_OL
+ && $this->_numbers != HL_NUMBERS_TABLE
+ ) {
+ $this->_numbers = 0;
+ }
+ }
+ if (isset($this->_options['tabsize'])) {
+ $this->_tabsize = $this->_options['tabsize'];
+ }
+ if (isset($this->_options['numbers_start'])) {
+ $this->_numbers_start = intval($this->_options['numbers_start']);
+ }
+ if (isset($this->_options['doclinks']) &&
+ is_array($this->_options['doclinks']) &&
+ !empty($this->_options['doclinks']['url'])
+ ) {
+
+ $this->_doclinks = $this->_options['doclinks']; // keys: url, target, elements array
+
+ if (empty($this->_options['doclinks']['elements'])) {
+ $this->_doclinks['elements'] = array('reserved', 'identifier');
+ }
+ }
+ if (isset($this->_options['style_map'])) {
+ $this->_style_map = $this->_options['style_map'];
+ }
+ if (isset($this->_options['class_map'])) {
+ $this->_class_map = array_merge($this->_class_map, $this->_options['class_map']);
+ }
+ $this->_htmlspecialchars = true;
+
+ }
+
+
+ /**
+ * Given a CSS class name, returns the class name
+ * with language name prepended, if necessary
+ *
+ * @access private
+ *
+ * @param string $class Token class
+ */
+ function _getFullClassName($class)
+ {
+ if (!empty($this->_options['use_language'])) {
+ $the_class = $this->_language . '-' . $class;
+ } else {
+ $the_class = $class;
+ }
+ return $the_class;
+ }
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @access public
+ */
+ function finalize()
+ {
+
+ // get parent's output
+ parent::finalize();
+ $output = parent::getOutput();
+ if(empty($output))
+ return;
+
+ $html_output = '';
+ // loop through each class=>content pair
+ foreach ($output AS $token) {
+
+ if ($this->_enumerated) {
+ $the_class = $token[0];
+ $content = $token[1];
+ } else {
+ $key = key($token);
+ $the_class = $key;
+ $content = $token[$key];
+ }
+
+ $span = $this->_getStyling($the_class);
+ $decorated_output = $this->_decorate($content, $key);
+ //print "<pre> token = ".var_export($token, true)." -- span = " . htmlentities($span). "-- deco = ".$decorated_output."</pre>\n";
+ $html_output .= sprintf($span, $decorated_output);
+ }
+
+ // format lists
+ if (!empty($this->_numbers) &&
+ (
+ $this->_numbers == HL_NUMBERS_LI ||
+ $this->_numbers == HL_NUMBERS_UL ||
+ $this->_numbers == HL_NUMBERS_OL
+ )
+ ) {
+ //$html_output = "<pre>".$html_output."</pre>";
+ // additional whitespace for browsers that do not display
+ // empty list items correctly
+ $this->_output = '<li><pre>&nbsp;' . str_replace("\n", "</pre></li>\n<li><pre>&nbsp;", $html_output) . '</pre></li>';
+
+
+ $start = '';
+ if ($this->_numbers == HL_NUMBERS_OL && intval($this->_numbers_start) > 0) {
+ $start = ' start="' . $this->_numbers_start . '"';
+ }
+
+ $list_tag = 'ol';
+ if ($this->_numbers == HL_NUMBERS_UL) {
+ $list_tag = 'ul';
+ }
+
+
+ $this->_output = '<' . $list_tag . $start
+ . ' ' . $this->_getStyling('main', false) . '>'
+ . $this->_output . '</'. $list_tag .'>';
+
+ // render a table
+ } else if ($this->_numbers == HL_NUMBERS_TABLE) {
+
+
+ $start_number = 0;
+ if (intval($this->_numbers_start)) {
+ $start_number = $this->_numbers_start - 1;
+ }
+
+ $numbers = '';
+
+ $nlines = substr_count($html_output,"\n")+1;
+ for ($i=1; $i <= $nlines; $i++) {
+ $numbers .= ($start_number + $i) . "\n";
+ }
+ $this->_output = '<table ' . $this->_getStyling('table', false) . ' width="100%"><tr>' .
+ '<td '. $this->_getStyling('gutter', false) .' align="right" valign="top">' .
+ '<pre>' . $numbers . '</pre></td><td '. $this->_getStyling('main', false) .
+ ' valign="top"><pre>' .
+ $html_output . '</pre></td></tr></table>';
+ }
+ if (!$this->_numbers) {
+ $this->_output = '<pre>' . $html_output . '</pre>';
+ }
+ $this->_output = '<div ' . $this->_getStyling('main', false) . '>' . $this->_output . '</div>';
+ }
+
+
+ /**
+ * Provides additional formatting to a keyword
+ *
+ * @param string $content Keyword
+ * @return string Keyword with additional formatting
+ * @access public
+ *
+ */
+ function _decorate($content, $key)
+ {
+ // links to online documentation
+ if (!empty($this->_doclinks) &&
+ !empty($this->_doclinks['url']) &&
+ in_array($key, $this->_doclinks['elements'])
+ ) {
+
+ $link = '<a href="'. sprintf($this->_doclinks['url'], $content) . '"';
+ if (!empty($this->_doclinks['target'])) {
+ $link.= ' target="' . $this->_doclinks['target'] . '"';
+ }
+ $link .= '>';
+ $link.= $content;
+ $link.= '</a>';
+
+ $content = $link;
+
+ }
+
+ return $content;
+ }
+
+ /**
+ * Returns <code>class</code> and/or <code>style</code> attribute,
+ * optionally enclosed in a <code>span</code> tag
+ *
+ * @param string $class Class name
+ * @paran boolean $span_tag Whether or not to return styling attributes in a <code>&gt;span&lt;</code> tag
+ * @return string <code>span</code> tag or just a <code>class</code> and/or <code>style</code> attributes
+ * @access private
+ */
+ function _getStyling($class, $span_tag = true)
+ {
+ $attrib = '';
+ if (!empty($this->_style_map) &&
+ !empty($this->_style_map[$class])
+ ) {
+ $attrib = 'style="'. $this->_style_map[$class] .'"';
+ }
+ if (!empty($this->_class_map) &&
+ !empty($this->_class_map[$class])
+ ) {
+ if ($attrib) {
+ $attrib .= ' ';
+ }
+ $attrib .= 'class="'. $this->_getFullClassName($this->_class_map[$class]) .'"';
+ }
+
+ if ($span_tag) {
+ $span = '<span ' . $attrib . '>%s</span>';
+ return $span;
+ } else {
+ return $attrib;
+ }
+
+ }
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php
new file mode 100644
index 00000000..00b33b96
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/HtmlTags.php
@@ -0,0 +1,186 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * HTML renderer that uses only basic html tags
+ *
+ * PHP versions 4 and 5. Based on the "normal" HTML renderer by Andrey Demenev.
+ * It's designed to work with user agents that support only a limited number of
+ * HTML tags. Like the iPod which supports only b, i, u and a.
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @copyright 2005 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: HtmlTags.php,v 1.1 2007/06/03 02:37:09 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+require_once dirname(__FILE__).'/../Renderer/Array.php';
+
+/**
+ * HTML basic tags renderer, based on Andrey Demenev's HTML renderer.
+ *
+ * Elements of $options argument of constructor (each being optional):
+ *
+ * - 'numbers' - Line numbering TRUE or FALSE. Default is FALSE.
+ * - 'tabsize' - Tab size, default is 4.
+ * - 'tags' - Array, containing the tags to be used for highlighting
+ *
+ * Here's the listing of the default tags:
+ * - 'default' => '',
+ * - 'code' => '',
+ * - 'brackets' => 'b',
+ * - 'comment' => 'i',
+ * - 'mlcomment' => 'i',
+ * - 'quotes' => '',
+ * - 'string' => 'i',
+ * - 'identifier' => 'b',
+ * - 'builtin' => 'b',
+ * - 'reserved' => 'u',
+ * - 'inlinedoc' => 'i',
+ * - 'var' => 'b',
+ * - 'url' => 'i',
+ * - 'special' => '',
+ * - 'number' => '',
+ * - 'inlinetags' => ''
+ *
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2005 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.5.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_HtmlTags extends Text_Highlighter_Renderer_Array
+{
+
+ /**#@+
+ * @access private
+ */
+
+ /**
+ * Line numbering - will use 'ol' tag
+ *
+ * @var boolean
+ */
+ var $_numbers = false;
+
+ /**
+ * HTML tags map
+ *
+ * @var array
+ */
+ var $_hilite_tags = array(
+ 'default' => '',
+ 'code' => '',
+ 'brackets' => 'b',
+ 'comment' => 'i',
+ 'mlcomment' => 'i',
+ 'quotes' => '',
+ 'string' => 'i',
+ 'identifier' => 'b',
+ 'builtin' => 'b',
+ 'reserved' => 'u',
+ 'inlinedoc' => 'i',
+ 'var' => 'b',
+ 'url' => 'i',
+ 'special' => '',
+ 'number' => '',
+ 'inlinetags' => '',
+ );
+
+ /**#@-*/
+
+ /**
+ * Resets renderer state
+ *
+ * @access protected
+ *
+ *
+ * Descendents of Text_Highlighter call this method from the constructor,
+ * passing $options they get as parameter.
+ */
+ function reset()
+ {
+ parent::reset();
+ if (isset($this->_options['numbers'])) {
+ $this->_numbers = $this->_options['numbers'];
+ }
+ if (isset($this->_options['tags'])) {
+ $this->_hilite_tags = array_merge($this->_tags, $this->_options['tags']);
+ }
+ }
+
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @abstract
+ * @access public
+ *
+ */
+ function finalize()
+ {
+
+ // get parent's output
+ parent::finalize();
+ $output = parent::getOutput();
+
+ $html_output = '';
+
+ // loop through each class=>content pair
+ foreach ($output AS $token) {
+
+ if ($this->_enumerated) {
+ $class = $token[0];
+ $content = $token[1];
+ } else {
+ $key = key($token);
+ $class = $key;
+ $content = $token[$key];
+ }
+
+ $iswhitespace = ctype_space($content);
+ if (!$iswhitespace && !empty($this->_hilite_tags[$class])) {
+ $html_output .= '<'. $this->_hilite_tags[$class] . '>' . $content . '</'. $this->_hilite_tags[$class] . '>';
+ } else {
+ $html_output .= $content;
+ }
+ }
+
+
+ if ($this->_numbers) {
+ /* additional whitespace for browsers that do not display
+ empty list items correctly */
+ $html_output = '<li>&nbsp;' . str_replace("\n", "</li>\n<li>&nbsp;", $html_output) . '</li>';
+ $this->_output = '<ol>' . str_replace(' ', '&nbsp;', $html_output) . '</ol>';
+ } else {
+ $this->_output = '<pre>' . $html_output . '</pre>';
+ }
+ }
+
+
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/JSON.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/JSON.php
new file mode 100644
index 00000000..91f6c674
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/JSON.php
@@ -0,0 +1,85 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * JSON renderer.
+ *
+ * Based on the HTML renderer by Andrey Demenev.
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @copyright 2006 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: JSON.php,v 1.1 2007/06/03 02:37:09 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+require_once dirname(__FILE__).'/../Renderer/Array.php';
+
+/**
+ * JSON renderer, based on Andrey Demenev's HTML renderer.
+ *
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2006 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.5.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_JSON extends Text_Highlighter_Renderer_Array
+{
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @abstract
+ * @access public
+ */
+ function finalize()
+ {
+
+ parent::finalize();
+ $output = parent::getOutput();
+
+ $json_array = array();
+
+ foreach ($output AS $token) {
+
+ if ($this->_enumerated) {
+ $json_array[] = '["' . $token[0] . '","' . $token[1] . '"]';
+ } else {
+ $key = key($token);
+ $json_array[] = '{"class": "' . $key . '","content":"' . $token[$key] . '"}';
+ }
+
+ }
+
+ $this->_output = '['. implode(',', $json_array) .']';
+ $this->_output = str_replace("\n", '\n', $this->_output);
+
+ }
+
+
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/XML.php b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/XML.php
new file mode 100644
index 00000000..36c78d85
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/Renderer/XML.php
@@ -0,0 +1,102 @@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * XML renderer.
+ *
+ * Based on the HTML renderer by Andrey Demenev.
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @copyright 2006 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: XML.php,v 1.1 2007/06/03 02:37:09 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+/**
+ * @ignore
+ */
+
+require_once dirname(__FILE__).'/../Renderer.php';
+require_once dirname(__FILE__).'/../Renderer/Array.php';
+
+/**
+ * XML renderer, based on Andrey Demenev's HTML renderer.
+ *
+ * @author Stoyan Stefanov <ssttoo@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2006 Stoyan Stefanov
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.5.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+class Text_Highlighter_Renderer_XML extends Text_Highlighter_Renderer_Array
+{
+
+
+ /**
+ * Options for XML_Serializer
+ *
+ * @access private
+ * @var array
+ */
+ var $_serializer_options = array();
+
+
+ /**
+ * Resets renderer state
+ *
+ * Descendents of Text_Highlighter call this method from the constructor,
+ * passing $options they get as parameter.
+ *
+ * @access protected
+ */
+ function reset()
+ {
+ parent::reset();
+ if (isset($this->_options['xml_serializer'])) {
+ $this->_serializer_options = $this->_options['xml_serializer'];
+ }
+ }
+
+
+ /**
+ * Signals that no more tokens are available
+ *
+ * @abstract
+ * @access public
+ */
+ function finalize()
+ {
+
+ // call parent's finalize(), then serialize array into XML
+ parent::finalize();
+ $output = parent::getOutput();
+
+ $serializer = new XML_Serializer($this->_serializer_options);
+ $result = $serializer->serialize($output);
+ if ($result === true) {
+ $this->_output = $serializer->getSerializedData();
+ }
+ }
+
+
+}
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * c-hanging-comment-ender-p: nil
+ * End:
+ */
+
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/SQL.php b/framework/Vendor/TextHighlighter/Text/Highlighter/SQL.php
new file mode 100644
index 00000000..6b0b4b7c
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/SQL.php
@@ -0,0 +1,401 @@
+<?php
+/**
+ * Auto-generated class. SQL syntax highlighting
+ *
+ * Based on SQL-99
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : sql.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. SQL syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_SQL extends Text_Highlighter
+{
+ var $_language = 'sql';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/',
+ 0 => '//',
+ 1 => '//',
+ 2 => '/((?i)\\\\.)/',
+ 3 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/',
+ 4 => '/((?i)\\\\.)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 5,
+ 8 => 2,
+ 9 => 0,
+ 10 => 0,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 1,
+ 3 => 0,
+ 4 => 0,
+ 5 => 0,
+ 6 => 0,
+ 7 => 5,
+ 8 => 2,
+ 9 => 0,
+ 10 => 0,
+ ),
+ 4 =>
+ array (
+ 0 => 0,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'comment',
+ 2 => '',
+ 3 => '',
+ 4 => 'quotes',
+ 5 => 'brackets',
+ 6 => 'quotes',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ ),
+ 3 =>
+ array (
+ 0 => 'quotes',
+ 1 => 'comment',
+ 2 => '',
+ 3 => '',
+ 4 => 'quotes',
+ 5 => 'brackets',
+ 6 => 'quotes',
+ 7 => '',
+ 8 => '',
+ 9 => '',
+ 10 => '',
+ ),
+ 4 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'identifier',
+ 1 => 'comment',
+ 2 => 'comment',
+ 3 => 'identifier',
+ 4 => 'string',
+ 5 => 'code',
+ 6 => 'string',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 'special',
+ ),
+ 3 =>
+ array (
+ 0 => 'identifier',
+ 1 => 'comment',
+ 2 => 'comment',
+ 3 => 'identifier',
+ 4 => 'string',
+ 5 => 'code',
+ 6 => 'string',
+ 7 => 'number',
+ 8 => 'number',
+ 9 => 'number',
+ 10 => 'number',
+ ),
+ 4 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)`/',
+ 1 => '/(?i)\\*\\//',
+ 2 => '/(?i)"/',
+ 3 => '/(?i)\\)/',
+ 4 => '/(?i)\'/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => -1,
+ 3 => -1,
+ 4 => 2,
+ 5 => 3,
+ 6 => 4,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ ),
+ 3 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => -1,
+ 3 => -1,
+ 4 => 2,
+ 5 => 3,
+ 6 => 4,
+ 7 => -1,
+ 8 => -1,
+ 9 => -1,
+ 10 => -1,
+ ),
+ 4 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ 'reserved' => '/^((?i)absolute|action|add|admin|after|aggregate|alias|all|allocate|alter|and|any|are|array|as|asc|assertion|at|authorization|before|begin|binary|bit|blob|boolean|both|breadth|by|call|cascade|cascaded|case|cast|catalog|char|character|check|class|clob|close|collate|collation|column|commit|completion|connect|connection|constraint|constraints|constructor|continue|corresponding|create|cross|cube|current|current_date|current_path|current_role|current_time|current_timestamp|current_user|cursor|cycle|data|date|day|deallocate|dec|decimal|declare|default|deferrable|deferred|delete|depth|deref|desc|describe|descriptor|destroy|destructor|deterministic|diagnostics|dictionary|disconnect|distinct|domain|double|drop|dynamic|each|else|end|end-exec|equals|escape|every|except|exception|exec|execute|external|false|fetch|first|float|for|foreign|found|free|from|full|function|general|get|global|go|goto|grant|group|grouping|having|host|hour|identity|ignore|immediate|in|indicator|initialize|initially|inner|inout|input|insert|int|integer|intersect|interval|into|is|isolation|iterate|join|key|language|large|last|lateral|leading|left|less|level|like|limit|local|localtime|localtimestamp|locator|map|match|minute|modifies|modify|module|month|names|national|natural|nchar|nclob|new|next|no|none|not|null|numeric|object|of|off|old|on|only|open|operation|option|or|order|ordinality|out|outer|output|pad|parameter|parameters|partial|path|postfix|precision|prefix|preorder|prepare|preserve|primary|prior|privileges|procedure|public|read|reads|real|recursive|ref|references|referencing|relative|restrict|result|return|returns|revoke|right|role|rollback|rollup|routine|row|rows|savepoint|schema|scope|scroll|search|second|section|select|sequence|session|session_user|set|sets|size|smallint|some|space|specific|specifictype|sql|sqlexception|sqlstate|sqlwarning|start|state|statement|static|structure|system_user|table|temporary|terminate|than|then|time|timestamp|timezone_hour|timezone_minute|to|trailing|transaction|translation|treat|trigger|true|under|union|unique|unknown|unnest|update|usage|user|using|value|values|varchar|variable|varying|view|when|whenever|where|with|without|work|write|year|zone)$/',
+ 'keyword' => '/^((?i)abs|ada|asensitive|assignment|asymmetric|atomic|avg|between|bitvar|bit_length|c|called|cardinality|catalog_name|chain|character_length|character_set_catalog|character_set_name|character_set_schema|char_length|checked|class_origin|coalesce|cobol|collation_catalog|collation_name|collation_schema|column_name|command_function|command_function_code|committed|condition_number|connection_name|constraint_catalog|constraint_name|constraint_schema|contains|convert|count|cursor_name|datetime_interval_code|datetime_interval_precision|defined|definer|dispatch|dynamic_function|dynamic_function_code|existing|exists|extract|final|fortran|g|generated|granted|hierarchy|hold|implementation|infix|insensitive|instance|instantiable|invoker|k|key_member|key_type|length|lower|m|max|message_length|message_octet_length|message_text|method|min|mod|more|mumps|name|nullable|nullif|number|octet_length|options|overlaps|overlay|overriding|parameter_mode|parameter_name|parameter_ordinal_position|parameter_specific_catalog|parameter_specific_name|parameter_specific_schema|pascal|pli|position|repeatable|returned_length|returned_octet_length|returned_sqlstate|routine_catalog|routine_name|routine_schema|row_count|scale|schema_name|security|self|sensitive|serializable|server_name|similar|simple|source|specific_name|style|subclass_origin|sublist|substring|sum|symmetric|system|table_name|transactions_committed|transactions_rolled_back|transaction_active|transform|transforms|translate|trigger_catalog|trigger_name|trigger_schema|trim|type|uncommitted|unnamed|upper|user_defined_type_catalog|user_defined_type_name|user_defined_type_schema)$/',
+ ),
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 =>
+ array (
+ ),
+ 3 =>
+ array (
+ 'reserved' => '/^((?i)absolute|action|add|admin|after|aggregate|alias|all|allocate|alter|and|any|are|array|as|asc|assertion|at|authorization|before|begin|binary|bit|blob|boolean|both|breadth|by|call|cascade|cascaded|case|cast|catalog|char|character|check|class|clob|close|collate|collation|column|commit|completion|connect|connection|constraint|constraints|constructor|continue|corresponding|create|cross|cube|current|current_date|current_path|current_role|current_time|current_timestamp|current_user|cursor|cycle|data|date|day|deallocate|dec|decimal|declare|default|deferrable|deferred|delete|depth|deref|desc|describe|descriptor|destroy|destructor|deterministic|diagnostics|dictionary|disconnect|distinct|domain|double|drop|dynamic|each|else|end|end-exec|equals|escape|every|except|exception|exec|execute|external|false|fetch|first|float|for|foreign|found|free|from|full|function|general|get|global|go|goto|grant|group|grouping|having|host|hour|identity|ignore|immediate|in|indicator|initialize|initially|inner|inout|input|insert|int|integer|intersect|interval|into|is|isolation|iterate|join|key|language|large|last|lateral|leading|left|less|level|like|limit|local|localtime|localtimestamp|locator|map|match|minute|modifies|modify|module|month|names|national|natural|nchar|nclob|new|next|no|none|not|null|numeric|object|of|off|old|on|only|open|operation|option|or|order|ordinality|out|outer|output|pad|parameter|parameters|partial|path|postfix|precision|prefix|preorder|prepare|preserve|primary|prior|privileges|procedure|public|read|reads|real|recursive|ref|references|referencing|relative|restrict|result|return|returns|revoke|right|role|rollback|rollup|routine|row|rows|savepoint|schema|scope|scroll|search|second|section|select|sequence|session|session_user|set|sets|size|smallint|some|space|specific|specifictype|sql|sqlexception|sqlstate|sqlwarning|start|state|statement|static|structure|system_user|table|temporary|terminate|than|then|time|timestamp|timezone_hour|timezone_minute|to|trailing|transaction|translation|treat|trigger|true|under|union|unique|unknown|unnest|update|usage|user|using|value|values|varchar|variable|varying|view|when|whenever|where|with|without|work|write|year|zone)$/',
+ 'keyword' => '/^((?i)abs|ada|asensitive|assignment|asymmetric|atomic|avg|between|bitvar|bit_length|c|called|cardinality|catalog_name|chain|character_length|character_set_catalog|character_set_name|character_set_schema|char_length|checked|class_origin|coalesce|cobol|collation_catalog|collation_name|collation_schema|column_name|command_function|command_function_code|committed|condition_number|connection_name|constraint_catalog|constraint_name|constraint_schema|contains|convert|count|cursor_name|datetime_interval_code|datetime_interval_precision|defined|definer|dispatch|dynamic_function|dynamic_function_code|existing|exists|extract|final|fortran|g|generated|granted|hierarchy|hold|implementation|infix|insensitive|instance|instantiable|invoker|k|key_member|key_type|length|lower|m|max|message_length|message_octet_length|message_text|method|min|mod|more|mumps|name|nullable|nullif|number|octet_length|options|overlaps|overlay|overriding|parameter_mode|parameter_name|parameter_ordinal_position|parameter_specific_catalog|parameter_specific_name|parameter_specific_schema|pascal|pli|position|repeatable|returned_length|returned_octet_length|returned_sqlstate|routine_catalog|routine_name|routine_schema|row_count|scale|schema_name|security|self|sensitive|serializable|server_name|similar|simple|source|specific_name|style|subclass_origin|sublist|substring|sum|symmetric|system|table_name|transactions_committed|transactions_rolled_back|transaction_active|transform|transforms|translate|trigger_catalog|trigger_name|trigger_schema|trim|type|uncommitted|unnamed|upper|user_defined_type_catalog|user_defined_type_name|user_defined_type_schema)$/',
+ ),
+ 4 => -1,
+ 5 => -1,
+ 6 => -1,
+ 7 =>
+ array (
+ ),
+ 8 =>
+ array (
+ ),
+ 9 =>
+ array (
+ ),
+ 10 =>
+ array (
+ ),
+ ),
+ 4 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ 3 => NULL,
+ 4 => NULL,
+ 5 => NULL,
+ 6 => NULL,
+ 7 => NULL,
+ 8 => NULL,
+ 9 => NULL,
+ 10 => NULL,
+ ),
+ 4 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ 4 => false,
+ 5 => false,
+ 6 => false,
+ 7 => false,
+ 8 => false,
+ 9 => false,
+ 10 => false,
+ ),
+ 4 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ 'reserved' => 'reserved',
+ 'keyword' => 'var',
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/Highlighter/XML.php b/framework/Vendor/TextHighlighter/Text/Highlighter/XML.php
new file mode 100644
index 00000000..3c454c77
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/Highlighter/XML.php
@@ -0,0 +1,245 @@
+<?php
+/**
+ * Auto-generated class. XML syntax highlighting
+ *
+ * PHP version 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @link http://pear.php.net/package/Text_Highlighter
+ * @category Text
+ * @package Text_Highlighter
+ * @version generated from: : xml.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp
+ * @author Andrey Demenev <demenev@gmail.com>
+ *
+ */
+
+/**
+ * Auto-generated class. XML syntax highlighting
+ *
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @category Text
+ * @package Text_Highlighter
+ * @copyright 2004-2006 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version Release: 0.7.0
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+class Text_Highlighter_XML extends Text_Highlighter
+{
+ var $_language = 'xml';
+
+ /**
+ * Constructor
+ *
+ * @param array $options
+ * @access public
+ */
+ function __construct($options=array())
+ {
+
+ $this->_options = $options;
+ $this->_regs = array (
+ -1 => '/((?i)\\<\\!\\[CDATA\\[)|((?i)\\<!--)|((?i)\\<[\\?\\/]?)|((?i)(&|%)[\\w\\-\\.]+;)/',
+ 0 => '//',
+ 1 => '//',
+ 2 => '/((?i)(?<=[\\<\\/?])[\\w\\-\\:]+)|((?i)[\\w\\-\\:]+)|((?i)")/',
+ 3 => '/((?i)(&|%)[\\w\\-\\.]+;)/',
+ );
+ $this->_counts = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ 3 => 1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 0,
+ 1 => 0,
+ 2 => 0,
+ ),
+ 3 =>
+ array (
+ 0 => 1,
+ ),
+ );
+ $this->_delim = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'comment',
+ 2 => 'brackets',
+ 3 => '',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => '',
+ 1 => '',
+ 2 => 'quotes',
+ ),
+ 3 =>
+ array (
+ 0 => '',
+ ),
+ );
+ $this->_inner = array (
+ -1 =>
+ array (
+ 0 => 'comment',
+ 1 => 'comment',
+ 2 => 'code',
+ 3 => 'special',
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => 'reserved',
+ 1 => 'var',
+ 2 => 'string',
+ ),
+ 3 =>
+ array (
+ 0 => 'special',
+ ),
+ );
+ $this->_end = array (
+ 0 => '/(?i)\\]\\]\\>/',
+ 1 => '/(?i)--\\>/',
+ 2 => '/(?i)[\\/\\?]?\\>/',
+ 3 => '/(?i)"/',
+ );
+ $this->_states = array (
+ -1 =>
+ array (
+ 0 => 0,
+ 1 => 1,
+ 2 => 2,
+ 3 => -1,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => 3,
+ ),
+ 3 =>
+ array (
+ 0 => -1,
+ ),
+ );
+ $this->_keywords = array (
+ -1 =>
+ array (
+ 0 => -1,
+ 1 => -1,
+ 2 => -1,
+ 3 =>
+ array (
+ ),
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 => -1,
+ ),
+ 3 =>
+ array (
+ 0 =>
+ array (
+ ),
+ ),
+ );
+ $this->_parts = array (
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => NULL,
+ 1 => NULL,
+ 2 => NULL,
+ ),
+ 3 =>
+ array (
+ 0 => NULL,
+ ),
+ );
+ $this->_subst = array (
+ -1 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ 3 => false,
+ ),
+ 0 =>
+ array (
+ ),
+ 1 =>
+ array (
+ ),
+ 2 =>
+ array (
+ 0 => false,
+ 1 => false,
+ 2 => false,
+ ),
+ 3 =>
+ array (
+ 0 => false,
+ ),
+ );
+ $this->_conditions = array (
+ );
+ $this->_kwmap = array (
+ );
+ $this->_defClass = 'code';
+ $this->_checkDefines();
+ }
+
+} \ No newline at end of file
diff --git a/framework/Vendor/TextHighlighter/Text/README b/framework/Vendor/TextHighlighter/Text/README
new file mode 100644
index 00000000..b6f22450
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/README
@@ -0,0 +1,455 @@
+# $Id: README,v 1.1 2007/06/03 02:35:28 ssttoo Exp $
+
+Introduction
+============
+
+Text_Highlighter is a class for syntax highlighting. The main idea is to
+simplify creation of subclasses implementing syntax highlighting for
+particular language. Subclasses do not implement any new functioanality, they
+just provide syntax highlighting rules. The rules sources are in XML format.
+To create a highlighter for a language, there is no need to code a new class
+manually. Simply describe the rules in XML file and use Text_Highlighter_Generator
+to create a new class.
+
+
+This document does not contain a formal description of API - it is very
+simple, and I believe providing some examples of code is sufficient.
+
+
+Highlighter XML source
+======================
+
+Basics
+------
+
+Creating a new syntax highlighter begins with describing the highlighting
+rules. There are two basic elements: block and region. A block is just a
+portion of text matching a regular expression and highlighted with a single
+color. Keyword is an example of a block. A region is defined by two regular
+expressions: one for start of region, and another for the end. The main
+difference from a block is that a region can contain blocks and regions
+(including same-named regions). An example of a region is a group of
+statements enclosed in curly brackets (this is used in many languages, for
+example PHP and C). Also, characters matching start and end of a region may be
+highlighted with their own color, and region contents with another.
+
+Blocks and regions may be declared as contained. Contained blocks and regions
+can only appear inside regions. If a region or a block is not declared as
+contained, it can appear both on top level and inside regions. Block or region
+declared as not-contained can only appear on top level.
+
+For any region, a list of blocks and regions that can appear inside this
+region can be specified.
+
+In this document, the term "color group" is used. Chunks of text assigned to
+same color group will be highlighted with same color. Note that in versions
+prior 0.5.0 color goups were refered as CSS classes, but since 0.5.0 not only
+HTML output is supported, so "color group" is more appropriate term.
+
+Elements
+--------
+
+The toplevel element is <highlight>. Attribute lang is required and denotes
+the name of the language. Its value is used as a part of generated class name,
+and must only contain letters, digits and underscores. Optional attribute
+case, when given value yes, makes the language case sensitive (default is case
+insensitive). Allowed subelements are:
+
+ * <authors>: Information about the authors of the file.
+ <author>: Information about a single author of the file. (May be used
+ multiple times, one per author.)
+ - name="...": Author's name. Required.
+ - email="...": Author's email address. Optional.
+
+ * <default>: Default color group.
+ - innerGroup="...": color group name. Required.
+
+ * <region>: Region definition
+ - name="...": Region name. Required.
+ - innerGroup="...": Default color group of region contents. Required.
+ - delimGroup="...": color group of start and end of region. Optional,
+ defaults to value of innerGroup attribute.
+ - start="...", end="...": Regular expression matching start and end
+ of region. Required. Regular expression delimiters are optional, but
+ if you need to specify delimiter, use /. The only case when the
+ delimiters are needed, is specifying regular expression modifiers,
+ such as m or U. Examples: \/\* or /$/m.
+ - contained="yes": Marks region as contained.
+ - never-contained="yes": Marks region as not-contained.
+ - <contains>: Elements allowed inside this region.
+ - all="yes" Region can contain any other region or block
+ (except not-contained). May be used multiple times.
+ - <but> Do not allow certain regions or blocks.
+ - region="..." Name of region not allowed within
+ current region.
+ - block="..." Name of block not allowed within
+ current region.
+ - region="..." Name of region allowed within current region.
+ - block="..." Name of block allowed within current region.
+ - <onlyin> Only allow this region within certain regions. May be
+ used multiple times.
+ - block="..." Name of parent region
+
+ * <block>: Block definition
+ - name="...": Block name. Required.
+ - innerGroup="...": color group of block contents. Optional. If not
+ specified, color group of parent region or default color group will be
+ used. One would only want to omit this attribute if there are
+ keyword groups (see below) inherited from this block, and no special
+ highlighting should apply when the block does not match the keyword.
+ - match="..." Regular expression matching the block. Required.
+ Regular expression delimiters are optional, but if you need to
+ specify delimiter, use /. The only case when the delimiters are
+ needed, is specifying regular expression modifiers, such as m or U.
+ Examples: #|\/\/ or /$/m.
+ - contained="yes": Marks block as contained.
+ - never-contained="yes": Marks block as not-contained.
+ - <onlyin> Only allow this block within certain regions. May be used
+ multiple times.
+ - block="..." Name of parent region
+ - multiline="yes": Marks block as multi-line. By default, whole
+ blocks are assumed to reside in a single line. This make the things
+ faster. If you need to declare a multi-line block, use this
+ attribute.
+ - <partgroup>: Assigns another color group to a part of the block that
+ matched a subpattern.
+ - index="n": Subpattern index. Required.
+ - innerGroup="...": color group name. Required.
+
+ This is an example from CSS highlighter: the measure is matched as
+ a whole, but the measurement units are highlighted with different
+ color.
+
+ <block name="measure" match="\d*\.?\d+(\%|em|ex|pc|pt|px|in|mm|cm)"
+ innerGroup="number" contained="yes">
+ <onlyin region="property"/>
+ <partGroup index="1" innerGroup="string" />
+ </block>
+
+ * <keywords>: Keyword group definition. Keyword groups are useful when you
+ want to highlight some words that match a condition for a block with a
+ different color. Keywords are defined with literal match, not regular
+ expressions. For example, you have a block named identifier matching a
+ general identifier, and want to highlight reserved words (which match
+ this block as well) with different color. You inherit a keyword group
+ "reserved" from "identifier" block.
+ - name="...": Keyword group. Required.
+ - ifdef="...", ifndef="..." : Conditional declaration. See
+ "Conditions" below.
+ - inherits="...": Inherited block name. Required.
+ - innerGroup="...": color group of keyword group. Required.
+ - case="yes|no": Overrides case-sensitivity of the language.
+ Optional, defaults to global value.
+ - <keyword>: Single keyword definition.
+ - match="..." The keyword. Note: this is not a regular
+ expression, but literal match (possibly case insensitive).
+
+Note that for BC reasons element partClass is alias for partGroup, and
+attributes innerClass and delimClass are aliases of innerGroup and
+delimGroup, respectively.
+
+
+Conditions
+----------
+
+Conditional declarations allow enabling or disabling certain highlighting
+rules at runtime. For example, Java highlighter has a very big list of
+keywords matching Java standard classes. Finding a match in this list can take
+much time. For that reason, corresponding keyword group is declared with
+"ifdef" attribute :
+
+ <keywords name="builtin" inherits="identifier" innerClass="builtin"
+ case="yes" ifdef="java.builtins">
+ <keyword match="AbstractAction" />
+ <keyword match="AbstractBorder" />
+ <keyword match="AbstractButton" />
+ ...
+ ...
+ <keyword match="_Remote_Stub" />
+ <keyword match="_ServantActivatorStub" />
+ <keyword match="_ServantLocatorStub" />
+ </keywords>
+
+This keyword group will be only enabled when "java.builtins" is passed as an
+element of "defines" option:
+
+ $options = array(
+ 'defines' => array(
+ 'java.builtins',
+ ),
+ 'numbers' => HL_NUMBERS_TABLE,
+ );
+ $highlighter =& Text_Highlighter::factory('java', $options);
+
+"ifndef" attribute has reverse meaning.
+
+Currently, "ifdef" and "ifndef" attributes are only supported for <keywords>
+tag.
+
+
+
+Class generation
+================
+
+Creating XML description of highlighting rules is the most complicated part of
+the process. To generate the class, you need just few lines of code:
+
+ <?php
+ require_once 'Text/Highlighter/Generator.php';
+ $generator =& new Text_Highlighter_Generator('php.xml');
+ $generator->generate();
+ $generator->saveCode('PHP.php');
+ ?>
+
+
+
+Command-line class generation tool
+==================================
+
+Example from previous section looks pretty simple, but it does not handle any
+errors which may occur during parsing of XML source. The package provides a
+command-line script to make generation of classes even more simple, and takes
+care of possible errors. It is called generate (on Unix/Linux) or generate.bat
+(on Windows). This script is able to process multiple files in one run, and
+also to process XML from standard input and write generated code to standard
+output.
+
+ Usage:
+ generate options
+
+ Options:
+ -x filename, --xml=filename
+ source XML file. Multiple input files can be specified, in which
+ case each -x option must be followed by -p unless -d is specified
+ Defaults to stdin
+ -p filename, --php=filename
+ destination PHP file. Defaults to stdout. If specied multiple times,
+ each -p must follow -x
+ -d dirname, --dir=dirname
+ Default destination directory. File names will be taken from XML input
+ ("lang" attribute of <highlight> tag)
+ -h, --help
+ This help
+
+Examples
+
+ Read from php.xml, write to PHP.php
+
+ generate -x php.xml -p PHP.php
+
+ Read from php.xml, write to standard output
+
+ generate -x php.xml
+
+ Read from php.xml, write to PHP.php, read from xml.xml, write to XML.php
+
+ generate -x php.xml -p PHP.php -x xml.xml -p XML.php
+
+ Read from php.xml, write to /some/dir/PHP.php, read from xml.xml, write to
+ /some/dir/XML.php (assuming that xml.xml contains <highlight lang="xml">, and
+ php.xml contains <highlight lang="php">)
+
+ generate -x php.xml -x xml.xml -d /some/dir/
+
+
+
+Renderers
+=========
+
+Introduction
+------------
+
+Text_Highlighter supports renderes. Using renderers, you can get output in
+different formats. Two renderers are included in the package:
+
+ - HTML renderer. Generates HTML output. A style sheet should be linked to
+ the document to display colored text
+
+ - Console renderer. Can be used to output highlighted text to
+ color-capable terminals, either directly or trough less -r
+
+
+Renderers API
+-------------
+
+Renderers are subclasses of Text_Highlighter_Renderer. Renderer should
+override at least two methods - acceptToken and getOutput. Overriding other
+methods is optional, depending on the nature of renderer's output and details
+of implementation.
+
+ string reset()
+ resets renderer state. This method is called every time before a new
+ source file is highlighted.
+
+ string preprocess(string $code)
+ preprocesses code. Can be used, for example, to normalize whitespace
+ before highlighting. Returns preprocessed string.
+
+ void acceptToken(string $group, string $content)
+ the core method of the renderer. Highlighter passes chunks of text to
+ this method in $content, and color group in $group
+
+ void finalize()
+ signals the renderer that no more tokens are available.
+
+ mixed getOutput()
+ returns generated output.
+
+
+Setting renderer options
+--------------------------------
+
+Renderers accept an optional argument to their constructor - options array.
+Elements of this array are renderer-specific.
+
+HTML renderer
+-------------
+
+HTML renderer produces HTML output with optional line numbering. The renderer
+itself does not provide information about actual colors of highlighted text.
+Instead, <span class="hl-XXX"> is used, where XXX is replaced with color group
+name (hl-var, hl-string, etc.). It is up to you to create a CSS stylesheet.
+If 'use_language' option with value evaluating to true was passed, class names
+will be formatted as "hl-LANG-XXX", where LANG is language name as defined in
+highlighter XML source ("lang" attribute of <highlight> tag) in lower case.
+
+There are 3 special CSS classes:
+
+ hl-main - this class applies to whole output or right table column,
+ depending on 'numbers' option
+ hl-gutter - applies to left column in table
+ hl-table - applies to whole table
+
+HTML renderer accepts following options (each being optional):
+
+ * numbers - line numbering style.
+ 0 - no numbering (default)
+ HL_NUMBERS_LI - use <ol></ol> for line numbering
+ HL_NUMBERS_TABLE - create a 2-column table, with line numbers in left
+ column and highlighted text in right column
+
+ * tabsize - tabulation size. Defaults to 4
+
+ Example:
+
+ require_once 'Text/Highlighter/Renderer/Html.php';
+ $options = array(
+ 'numbers' => HL_NUMBERS_LI,
+ 'tabsize' => 8,
+ );
+ $renderer =& new Text_Highlighter_Renderer_HTML($options);
+
+Console renderer
+----------------
+
+Console renderer produces output for displaying on a color-capable terminal,
+either directly or through less -r, using ANSI escape sequences. By default,
+this renderer only highlights most common color groups. Additional colors
+can be specified using 'colors' option. This renderer also accepts 'numbers'
+option - a boolean value, and 'tabsize' option.
+
+ Example :
+
+ require_once 'Text/Highlighter/Renderer/Console.php';
+ $colors = array(
+ 'prepro' => "\033[35m",
+ 'types' => "\033[32m",
+ );
+ $options = array(
+ 'numbers' => true,
+ 'tabsize' => 8,
+ 'colors' => $colors,
+ );
+ $renderer =& new Text_Highlighter_Renderer_Console($options);
+
+
+ANSI color escape sequences have the following format:
+
+ ESC[#;#;....;#m
+
+where ESC is character with ASCII code 27 (033 octal, 0x1B hexadecimal). # is
+one of the following:
+
+ 0 for normal display
+ 1 for bold on
+ 4 underline (mono only)
+ 5 blink on
+ 7 reverse video on
+ 8 nondisplayed (invisible)
+ 30 black foreground
+ 31 red foreground
+ 32 green foreground
+ 33 yellow foreground
+ 34 blue foreground
+ 35 magenta foreground
+ 36 cyan foreground
+ 37 white foreground
+ 40 black background
+ 41 red background
+ 42 green background
+ 43 yellow background
+ 44 blue background
+ 45 magenta background
+ 46 cyan background
+ 47 white background
+
+
+How to use Text_Highlighter class
+=================================
+
+Creating a highlighter object
+-----------------------------
+
+To create a highlighter for a certain language, use Text_Highlighter::factory()
+static method:
+
+ require_once 'Text/Highlighter.php';
+ $hl =& Text_Highlighter::factory('php');
+
+
+Setting a renderer
+------------------
+
+Actual output is produced by a renderer.
+
+ require_once 'Text/Highlighter.php';
+ require_once 'Text/Highlighter/Renderer/Html.php';
+ $options = array(
+ 'numbers' => HL_NUMBERS_LI,
+ 'tabsize' => 8,
+ );
+ $renderer =& new Text_Highlighter_Renderer_HTML($options);
+ $hl =& Text_Highlighter::factory('php');
+ $hl->setRenderer($renderer);
+
+Note that for BC reasons, it is possible to use highlighter without setting a
+renderer. If no renderer is set, HTML renderer will be used by default. In
+this case, you should pass options as second parameter to factory method. The
+following example works exactly as previous one:
+
+ require_once 'Text/Highlighter.php';
+ $options = array(
+ 'numbers' => HL_NUMBERS_LI,
+ 'tabsize' => 8,
+ );
+ $hl =& Text_Highlighter::factory('php', $options);
+
+
+Getting output
+--------------
+
+And finally, do the highlighting and get the output:
+
+ require_once 'Text/Highlighter.php';
+ require_once 'Text/Highlighter/Renderer/Html.php';
+ $options = array(
+ 'numbers' => HL_NUMBERS_LI,
+ 'tabsize' => 8,
+ );
+ $renderer =& new Text_Highlighter_Renderer_HTML($options);
+ $hl =& Text_Highlighter::factory('php');
+ $hl->setRenderer($renderer);
+ $html = $hl->highlight(file_get_contents('example.php'));
+
+# vim: set autoindent tabstop=4 shiftwidth=4 softtabstop=4 tw=78: */
+
diff --git a/framework/Vendor/TextHighlighter/Text/TODO b/framework/Vendor/TextHighlighter/Text/TODO
new file mode 100644
index 00000000..67fa21df
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/TODO
@@ -0,0 +1,12 @@
+# $Id: TODO,v 1.1 2007/06/03 02:35:28 ssttoo Exp $
+
+Major issues to solve (but I currently have no idea how) :
+
+- speedup highlighting process
+
+- switching between highlighters depending on context, for example :
+ PHP code -> HTML -> (JavaScript|CSS)
+
+
+# vim: set autoindent tabstop=4 shiftwidth=4 softtabstop=4 tw=78: */
+
diff --git a/framework/Vendor/TextHighlighter/Text/abap.xml b/framework/Vendor/TextHighlighter/Text/abap.xml
new file mode 100644
index 00000000..79a32c95
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/abap.xml
@@ -0,0 +1,802 @@
+<?xml version="1.0"?>
+<!-- $Id: abap.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="abap" case = "no">
+
+ <authors>
+ <author name="Stoyan Stefanov" email ="ssttoo@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+
+ <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
+ <contains all="yes"/>
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
+ <contains all="yes"/>
+ </region>
+
+ <region name="comment" start="^\*|&quot;" end="/$/m" innerClass="comment">
+ <contains all="no"/>
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" />
+
+ <block name="identifier" match="[a-zA-Z_]\w*" innerClass="identifier" contained="yes"/>
+
+ <block name="hexinteger" match="0[xX][\da-f]+" innerClass="number" contained="yes"/>
+
+ <block name="integer" match="\d\d*|\b0\b" innerClass="number" contained="yes"/>
+
+ <block name="octinteger" match="0[0-7]+" innerClass="number" contained="yes"/>
+
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number" contained="yes"/>
+
+
+ <block name="identifier" match="[a-z_\-]\w*" innerClass="identifier" case="no"/>
+
+ <keywords name="sy" inherits="identifier" innerClass="reserved">
+ <keyword match="SCREEN-NAME"/>
+ <keyword match="SCREEN-GROUP1"/>
+ <keyword match="SCREEN-GROUP2"/>
+ <keyword match="SCREEN-GROUP3"/>
+ <keyword match="SCREEN-GROUP4"/>
+ <keyword match="SCREEN-REQUIRED"/>
+ <keyword match="SCREEN-INPUT"/>
+ <keyword match="SCREEN-OUTPUT"/>
+ <keyword match="SCREEN-INTENSIFIED"/>
+ <keyword match="SCREEN-INVISIBLE"/>
+ <keyword match="SCREEN-LENGTH"/>
+ <keyword match="SCREEN-ACTIVE"/>
+ <keyword match="SY-INDEX"/>
+ <keyword match="SY-PAGNO"/>
+ <keyword match="SY-TABIX"/>
+ <keyword match="SY-TFILL"/>
+ <keyword match="SY-TLOPC"/>
+ <keyword match="SY-TMAXL"/>
+ <keyword match="SY-TOCCU"/>
+ <keyword match="SY-TTABC"/>
+ <keyword match="SY-TSTIS"/>
+ <keyword match="SY-TTABI"/>
+ <keyword match="SY-DBCNT"/>
+ <keyword match="SY-FDPOS"/>
+ <keyword match="SY-COLNO"/>
+ <keyword match="SY-LINCT"/>
+ <keyword match="SY-LINNO"/>
+ <keyword match="SY-LINSZ"/>
+ <keyword match="SY-PAGCT"/>
+ <keyword match="SY-MACOL"/>
+ <keyword match="SY-MAROW"/>
+ <keyword match="SY-TLENG"/>
+ <keyword match="SY-SFOFF"/>
+ <keyword match="SY-WILLI"/>
+ <keyword match="SY-LILLI"/>
+ <keyword match="SY-SUBRC"/>
+ <keyword match="SY-FLENG"/>
+ <keyword match="SY-CUCOL"/>
+ <keyword match="SY-CUROW"/>
+ <keyword match="SY-LSIND"/>
+ <keyword match="SY-LISTI"/>
+ <keyword match="SY-STEPL"/>
+ <keyword match="SY-TPAGI"/>
+ <keyword match="SY-WINX1"/>
+ <keyword match="SY-WINY1"/>
+ <keyword match="SY-WINX2"/>
+ <keyword match="SY-WINY2"/>
+ <keyword match="SY-WINCO"/>
+ <keyword match="SY-WINRO"/>
+ <keyword match="SY-WINDI"/>
+ <keyword match="SY-SROWS"/>
+ <keyword match="SY-SCOLS"/>
+ <keyword match="SY-LOOPC"/>
+ <keyword match="SY-FOLEN"/>
+ <keyword match="SY-FODEC"/>
+ <keyword match="SY-TZONE"/>
+ <keyword match="SY-DAYST"/>
+ <keyword match="SY-FTYPE"/>
+ <keyword match="SY-APPLI"/>
+ <keyword match="SY-FDAYW"/>
+ <keyword match="SY-CCURS"/>
+ <keyword match="SY-CCURT"/>
+ <keyword match="SY-DEBUG"/>
+ <keyword match="SY-CTYPE"/>
+ <keyword match="SY-INPUT"/>
+ <keyword match="SY-LANGU"/>
+ <keyword match="SY-MODNO"/>
+ <keyword match="SY-BATCH"/>
+ <keyword match="SY-BINPT"/>
+ <keyword match="SY-CALLD"/>
+ <keyword match="SY-DYNNR"/>
+ <keyword match="SY-DYNGR"/>
+ <keyword match="SY-NEWPA"/>
+ <keyword match="SY-PRI40"/>
+ <keyword match="SY-RSTRT"/>
+ <keyword match="SY-WTITL"/>
+ <keyword match="SY-CPAGE"/>
+ <keyword match="SY-DBNAM"/>
+ <keyword match="SY-MANDT"/>
+ <keyword match="SY-PREFX"/>
+ <keyword match="SY-FMKEY"/>
+ <keyword match="SY-PEXPI"/>
+ <keyword match="SY-PRINI"/>
+ <keyword match="SY-PRIMM"/>
+ <keyword match="SY-PRREL"/>
+ <keyword match="SY-PLAYO"/>
+ <keyword match="SY-PRBIG"/>
+ <keyword match="SY-PLAYP"/>
+ <keyword match="SY-PRNEW"/>
+ <keyword match="SY-PRLOG"/>
+ <keyword match="SY-PDEST"/>
+ <keyword match="SY-PLIST"/>
+ <keyword match="SY-PAUTH"/>
+ <keyword match="SY-PRDSN"/>
+ <keyword match="SY-PNWPA"/>
+ <keyword match="SY-CALLR"/>
+ <keyword match="SY-REPI2"/>
+ <keyword match="SY-RTITL"/>
+ <keyword match="SY-PRREC"/>
+ <keyword match="SY-PRTXT"/>
+ <keyword match="SY-PRABT"/>
+ <keyword match="SY-LPASS"/>
+ <keyword match="SY-NRPAG"/>
+ <keyword match="SY-PAART"/>
+ <keyword match="SY-PRCOP"/>
+ <keyword match="SY-BATZS"/>
+ <keyword match="SY-BSPLD"/>
+ <keyword match="SY-BREP4"/>
+ <keyword match="SY-BATZO"/>
+ <keyword match="SY-BATZD"/>
+ <keyword match="SY-BATZW"/>
+ <keyword match="SY-BATZM"/>
+ <keyword match="SY-CTABL"/>
+ <keyword match="SY-DBSYS"/>
+ <keyword match="SY-DCSYS"/>
+ <keyword match="SY-MACDB"/>
+ <keyword match="SY-SYSID"/>
+ <keyword match="SY-OPSYS"/>
+ <keyword match="SY-PFKEY"/>
+ <keyword match="SY-SAPRL"/>
+ <keyword match="SY-TCODE"/>
+ <keyword match="SY-UCOMM"/>
+ <keyword match="SY-CFWAE"/>
+ <keyword match="SY-CHWAE"/>
+ <keyword match="SY-SPONO"/>
+ <keyword match="SY-SPONR"/>
+ <keyword match="SY-WAERS"/>
+ <keyword match="SY-CDATE"/>
+ <keyword match="SY-DATUM"/>
+ <keyword match="SY-SLSET"/>
+ <keyword match="SY-SUBTY"/>
+ <keyword match="SY-SUBCS"/>
+ <keyword match="SY-GROUP"/>
+ <keyword match="SY-FFILE"/>
+ <keyword match="SY-UZEIT"/>
+ <keyword match="SY-DSNAM"/>
+ <keyword match="SY-REPID"/>
+ <keyword match="SY-TABID"/>
+ <keyword match="SY-TFDSN"/>
+ <keyword match="SY-UNAME"/>
+ <keyword match="SY-LSTAT"/>
+ <keyword match="SY-ABCDE"/>
+ <keyword match="SY-MARKY"/>
+ <keyword match="SY-SFNAM"/>
+ <keyword match="SY-TNAME"/>
+ <keyword match="SY-MSGLI"/>
+ <keyword match="SY-TITLE"/>
+ <keyword match="SY-ENTRY"/>
+ <keyword match="SY-LISEL"/>
+ <keyword match="SY-ULINE"/>
+ <keyword match="SY-XCODE"/>
+ <keyword match="SY-CPROG"/>
+ <keyword match="SY-XPROG"/>
+ <keyword match="SY-XFORM"/>
+ <keyword match="SY-LDBPG"/>
+ <keyword match="SY-TVAR0"/>
+ <keyword match="SY-TVAR1"/>
+ <keyword match="SY-TVAR2"/>
+ <keyword match="SY-TVAR3"/>
+ <keyword match="SY-TVAR4"/>
+ <keyword match="SY-TVAR5"/>
+ <keyword match="SY-TVAR6"/>
+ <keyword match="SY-TVAR7"/>
+ <keyword match="SY-TVAR8"/>
+ <keyword match="SY-TVAR9"/>
+ <keyword match="SY-MSGID"/>
+ <keyword match="SY-MSGTY"/>
+ <keyword match="SY-MSGNO"/>
+ <keyword match="SY-MSGV1"/>
+ <keyword match="SY-MSGV2"/>
+ <keyword match="SY-MSGV3"/>
+ <keyword match="SY-MSGV4"/>
+ <keyword match="SY-ONCOM"/>
+ <keyword match="SY-VLINE"/>
+ <keyword match="SY-WINSL"/>
+ <keyword match="SY-STACO"/>
+ <keyword match="SY-STARO"/>
+ <keyword match="SY-DATAR"/>
+ <keyword match="SY-HOST"/>
+ <keyword match="SY-LOCDB"/>
+ <keyword match="SY-LOCOP"/>
+ <keyword match="SY-DATLO"/>
+ <keyword match="SY-TIMLO"/>
+ <keyword match="SY-ZONLO"/>
+ <keyword match="SYST-INDEX"/>
+ <keyword match="SYST-PAGNO"/>
+ <keyword match="SYST-TABIX"/>
+ <keyword match="SYST-TFILL"/>
+ <keyword match="SYST-TLOPC"/>
+ <keyword match="SYST-TMAXL"/>
+ <keyword match="SYST-TOCCU"/>
+ <keyword match="SYST-TTABC"/>
+ <keyword match="SYST-TSTIS"/>
+ <keyword match="SYST-TTABI"/>
+ <keyword match="SYST-DBCNT"/>
+ <keyword match="SYST-FDPOS"/>
+ <keyword match="SYST-COLNO"/>
+ <keyword match="SYST-LINCT"/>
+ <keyword match="SYST-LINNO"/>
+ <keyword match="SYST-LINSZ"/>
+ <keyword match="SYST-PAGCT"/>
+ <keyword match="SYST-MACOL"/>
+ <keyword match="SYST-MAROW"/>
+ <keyword match="SYST-TLENG"/>
+ <keyword match="SYST-SFOFF"/>
+ <keyword match="SYST-WILLI"/>
+ <keyword match="SYST-LILLI"/>
+ <keyword match="SYST-SUBRC"/>
+ <keyword match="SYST-FLENG"/>
+ <keyword match="SYST-CUCOL"/>
+ <keyword match="SYST-CUROW"/>
+ <keyword match="SYST-LSIND"/>
+ <keyword match="SYST-LISTI"/>
+ <keyword match="SYST-STEPL"/>
+ <keyword match="SYST-TPAGI"/>
+ <keyword match="SYST-WINX1"/>
+ <keyword match="SYST-WINY1"/>
+ <keyword match="SYST-WINX2"/>
+ <keyword match="SYST-WINY2"/>
+ <keyword match="SYST-WINCO"/>
+ <keyword match="SYST-WINRO"/>
+ <keyword match="SYST-WINDI"/>
+ <keyword match="SYST-SROWS"/>
+ <keyword match="SYST-SCOLS"/>
+ <keyword match="SYST-LOOPC"/>
+ <keyword match="SYST-FOLEN"/>
+ <keyword match="SYST-FODEC"/>
+ <keyword match="SYST-TZONE"/>
+ <keyword match="SYST-DAYST"/>
+ <keyword match="SYST-FTYPE"/>
+ <keyword match="SYST-APPLI"/>
+ <keyword match="SYST-FDAYW"/>
+ <keyword match="SYST-CCURS"/>
+ <keyword match="SYST-CCURT"/>
+ <keyword match="SYST-DEBUG"/>
+ <keyword match="SYST-CTYPE"/>
+ <keyword match="SYST-INPUT"/>
+ <keyword match="SYST-LANGU"/>
+ <keyword match="SYST-MODNO"/>
+ <keyword match="SYST-BATCH"/>
+ <keyword match="SYST-BINPT"/>
+ <keyword match="SYST-CALLD"/>
+ <keyword match="SYST-DYNNR"/>
+ <keyword match="SYST-DYNGR"/>
+ <keyword match="SYST-NEWPA"/>
+ <keyword match="SYST-PRI40"/>
+ <keyword match="SYST-RSTRT"/>
+ <keyword match="SYST-WTITL"/>
+ <keyword match="SYST-CPAGE"/>
+ <keyword match="SYST-DBNAM"/>
+ <keyword match="SYST-MANDT"/>
+ <keyword match="SYST-PREFX"/>
+ <keyword match="SYST-FMKEY"/>
+ <keyword match="SYST-PEXPI"/>
+ <keyword match="SYST-PRINI"/>
+ <keyword match="SYST-PRIMM"/>
+ <keyword match="SYST-PRREL"/>
+ <keyword match="SYST-PLAYO"/>
+ <keyword match="SYST-PRBIG"/>
+ <keyword match="SYST-PLAYP"/>
+ <keyword match="SYST-PRNEW"/>
+ <keyword match="SYST-PRLOG"/>
+ <keyword match="SYST-PDEST"/>
+ <keyword match="SYST-PLIST"/>
+ <keyword match="SYST-PAUTH"/>
+ <keyword match="SYST-PRDSN"/>
+ <keyword match="SYST-PNWPA"/>
+ <keyword match="SYST-CALLR"/>
+ <keyword match="SYST-REPI2"/>
+ <keyword match="SYST-RTITL"/>
+ <keyword match="SYST-PRREC"/>
+ <keyword match="SYST-PRTXT"/>
+ <keyword match="SYST-PRABT"/>
+ <keyword match="SYST-LPASS"/>
+ <keyword match="SYST-NRPAG"/>
+ <keyword match="SYST-PAART"/>
+ <keyword match="SYST-PRCOP"/>
+ <keyword match="SYST-BATZS"/>
+ <keyword match="SYST-BSPLD"/>
+ <keyword match="SYST-BREP4"/>
+ <keyword match="SYST-BATZO"/>
+ <keyword match="SYST-BATZD"/>
+ <keyword match="SYST-BATZW"/>
+ <keyword match="SYST-BATZM"/>
+ <keyword match="SYST-CTABL"/>
+ <keyword match="SYST-DBSYS"/>
+ <keyword match="SYST-DCSYS"/>
+ <keyword match="SYST-MACDB"/>
+ <keyword match="SYST-SYSID"/>
+ <keyword match="SYST-OPSYS"/>
+ <keyword match="SYST-PFKEY"/>
+ <keyword match="SYST-SAPRL"/>
+ <keyword match="SYST-TCODE"/>
+ <keyword match="SYST-UCOMM"/>
+ <keyword match="SYST-CFWAE"/>
+ <keyword match="SYST-CHWAE"/>
+ <keyword match="SYST-SPONO"/>
+ <keyword match="SYST-SPONR"/>
+ <keyword match="SYST-WAERS"/>
+ <keyword match="SYST-CDATE"/>
+ <keyword match="SYST-DATUM"/>
+ <keyword match="SYST-SLSET"/>
+ <keyword match="SYST-SUBTY"/>
+ <keyword match="SYST-SUBCS"/>
+ <keyword match="SYST-GROUP"/>
+ <keyword match="SYST-FFILE"/>
+ <keyword match="SYST-UZEIT"/>
+ <keyword match="SYST-DSNAM"/>
+ <keyword match="SYST-REPID"/>
+ <keyword match="SYST-TABID"/>
+ <keyword match="SYST-TFDSN"/>
+ <keyword match="SYST-UNAME"/>
+ <keyword match="SYST-LSTAT"/>
+ <keyword match="SYST-ABCDE"/>
+ <keyword match="SYST-MARKY"/>
+ <keyword match="SYST-SFNAM"/>
+ <keyword match="SYST-TNAME"/>
+ <keyword match="SYST-MSGLI"/>
+ <keyword match="SYST-TITLE"/>
+ <keyword match="SYST-ENTRY"/>
+ <keyword match="SYST-LISEL"/>
+ <keyword match="SYST-ULINE"/>
+ <keyword match="SYST-XCODE"/>
+ <keyword match="SYST-CPROG"/>
+ <keyword match="SYST-XPROG"/>
+ <keyword match="SYST-XFORM"/>
+ <keyword match="SYST-LDBPG"/>
+ <keyword match="SYST-TVAR0"/>
+ <keyword match="SYST-TVAR1"/>
+ <keyword match="SYST-TVAR2"/>
+ <keyword match="SYST-TVAR3"/>
+ <keyword match="SYST-TVAR4"/>
+ <keyword match="SYST-TVAR5"/>
+ <keyword match="SYST-TVAR6"/>
+ <keyword match="SYST-TVAR7"/>
+ <keyword match="SYST-TVAR8"/>
+ <keyword match="SYST-TVAR9"/>
+ <keyword match="SYST-MSGID"/>
+ <keyword match="SYST-MSGTY"/>
+ <keyword match="SYST-MSGNO"/>
+ <keyword match="SYST-MSGV1"/>
+ <keyword match="SYST-MSGV2"/>
+ <keyword match="SYST-MSGV3"/>
+ <keyword match="SYST-MSGV4"/>
+ <keyword match="SYST-ONCOM"/>
+ <keyword match="SYST-VLINE"/>
+ <keyword match="SYST-WINSL"/>
+ <keyword match="SYST-STACO"/>
+ <keyword match="SYST-STARO"/>
+ <keyword match="SYST-DATAR"/>
+ <keyword match="SYST-HOST"/>
+ <keyword match="SYST-LOCDB"/>
+ <keyword match="SYST-LOCOP"/>
+ <keyword match="SYST-DATLO"/>
+ <keyword match="SYST-TIMLO"/>
+ <keyword match="SYST-ZONLO"/>
+ </keywords>
+
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved">
+ <keyword match="ABS"/>
+ <keyword match="ACOS"/>
+ <keyword match="ADD"/>
+ <keyword match="ADD-CORRESPONDING"/>
+ <keyword match="ADJACENT"/>
+ <keyword match="AFTER"/>
+ <keyword match="ALIASES"/>
+ <keyword match="ALL"/>
+ <keyword match="ANALYZER"/>
+ <keyword match="AND"/>
+ <keyword match="ANY"/>
+ <keyword match="APPEND"/>
+ <keyword match="AS"/>
+ <keyword match="ASCENDING"/>
+ <keyword match="ASIN"/>
+ <keyword match="ASSIGN"/>
+ <keyword match="ASSIGNED"/>
+ <keyword match="ASSIGNING"/>
+ <keyword match="AT"/>
+ <keyword match="ATAN"/>
+ <keyword match="AUTHORITY-CHECK"/>
+ <keyword match="AVG"/>
+ <keyword match="BACK"/>
+ <keyword match="BEFORE"/>
+ <keyword match="BEGIN"/>
+ <keyword match="BINARY"/>
+ <keyword match="BIT"/>
+ <keyword match="BIT-AND"/>
+ <keyword match="BIT-NOT"/>
+ <keyword match="BIT-OR"/>
+ <keyword match="BIT-XOR"/>
+ <keyword match="BLANK"/>
+ <keyword match="BLOCK"/>
+ <keyword match="BREAK-POINT"/>
+ <keyword match="BUFFER"/>
+ <keyword match="BY"/>
+ <keyword match="C"/>
+ <keyword match="CALL"/>
+ <keyword match="CASE"/>
+ <keyword match="CATCH"/>
+ <keyword match="CEIL"/>
+ <keyword match="CENTERED"/>
+ <keyword match="CHAIN"/>
+ <keyword match="CHANGE"/>
+ <keyword match="CHANGING"/>
+ <keyword match="CHECK"/>
+ <keyword match="CHECKBOX"/>
+ <keyword match="CLASS"/>
+ <keyword match="CLASS-DATA"/>
+ <keyword match="CLASS-EVENTS"/>
+ <keyword match="CLASS-METHODS"/>
+ <keyword match="CLASS-POOL"/>
+ <keyword match="CLEAR"/>
+ <keyword match="CLIENT"/>
+ <keyword match="CLOSE"/>
+ <keyword match="CNT"/>
+ <keyword match="CODE"/>
+ <keyword match="COLLECT"/>
+ <keyword match="COLOR"/>
+ <keyword match="COMMENT"/>
+ <keyword match="COMMIT"/>
+ <keyword match="COMMUNICATION"/>
+ <keyword match="COMPUTE"/>
+ <keyword match="CONCATENATE"/>
+ <keyword match="CONDENSE"/>
+ <keyword match="CONSTANTS"/>
+ <keyword match="CONTEXT"/>
+ <keyword match="CONTEXTS"/>
+ <keyword match="CONTINUE"/>
+ <keyword match="CONTROL"/>
+ <keyword match="CONTROLS"/>
+ <keyword match="CONVERT"/>
+ <keyword match="COPY"/>
+ <keyword match="CORRESPONDING"/>
+ <keyword match="COS"/>
+ <keyword match="COSH"/>
+ <keyword match="COUNT"/>
+ <keyword match="COUNTRY"/>
+ <keyword match="CREATE"/>
+ <keyword match="CURRENCY"/>
+ <keyword match="CURSOR"/>
+ <keyword match="CUSTOMER-FUNCTION"/>
+ <keyword match="DATA"/>
+ <keyword match="DATABASE"/>
+ <keyword match="DATASET"/>
+ <keyword match="DELETE"/>
+ <keyword match="DECIMALS"/>
+ <keyword match="DEFAULT"/>
+ <keyword match="DEFINE"/>
+ <keyword match="DELETE"/>
+ <keyword match="DEMAND"/>
+ <keyword match="DESCENDING"/>
+ <keyword match="DESCRIBE"/>
+ <keyword match="DIALOG"/>
+ <keyword match="DISTINCT"/>
+ <keyword match="DIV"/>
+ <keyword match="DIVIDE"/>
+ <keyword match="DIVIDE-CORRESPONDING"/>
+ <keyword match="DO"/>
+ <keyword match="DUPLICATES"/>
+ <keyword match="DYNPRO"/>
+ <keyword match="EDIT"/>
+ <keyword match="EDITOR-CALL"/>
+ <keyword match="ELSE"/>
+ <keyword match="ELSEIF"/>
+ <keyword match="END"/>
+ <keyword match="END-OF-DEFINITION"/>
+ <keyword match="END-OF-PAGE"/>
+ <keyword match="END-OF-SELECTION"/>
+ <keyword match="ENDAT"/>
+ <keyword match="ENDCASE"/>
+ <keyword match="ENDCATCH"/>
+ <keyword match="ENDCHAIN"/>
+ <keyword match="ENDCLASS"/>
+ <keyword match="ENDDO"/>
+ <keyword match="ENDEXEC"/>
+ <keyword match="ENDFORM"/>
+ <keyword match="ENDFUNCTION"/>
+ <keyword match="ENDIF"/>
+ <keyword match="ENDINTERFACE"/>
+ <keyword match="ENDLOOP"/>
+ <keyword match="ENDMETHOD"/>
+ <keyword match="ENDMODULE"/>
+ <keyword match="ENDON"/>
+ <keyword match="ENDPROVIDE"/>
+ <keyword match="ENDSELECT"/>
+ <keyword match="ENDWHILE"/>
+ <keyword match="ENTRIES"/>
+ <keyword match="EVENTS"/>
+ <keyword match="EXEC"/>
+ <keyword match="EXIT"/>
+ <keyword match="EXIT-COMMAND"/>
+ <keyword match="EXP"/>
+ <keyword match="EXPONENT"/>
+ <keyword match="EXPORT"/>
+ <keyword match="EXPORTING"/>
+ <keyword match="EXCEPTIONS"/>
+ <keyword match="EXTENDED"/>
+ <keyword match="EXTRACT"/>
+ <keyword match="FETCH"/>
+ <keyword match="FIELD"/>
+ <keyword match="FIELD-GROUPS"/>
+ <keyword match="FIELD-SYMBOLS"/>
+ <keyword match="FIELDS"/>
+ <keyword match="FLOOR"/>
+ <keyword match="FOR"/>
+ <keyword match="FORM"/>
+ <keyword match="FORMAT"/>
+ <keyword match="FRAC"/>
+ <keyword match="FRAME"/>
+ <keyword match="FREE"/>
+ <keyword match="FROM"/>
+ <keyword match="FUNCTION"/>
+ <keyword match="FUNCTION-POOL"/>
+ <keyword match="GENERATE"/>
+ <keyword match="GET"/>
+ <keyword match="GROUP"/>
+ <keyword match="HASHED"/>
+ <keyword match="HEADER"/>
+ <keyword match="HELP-ID"/>
+ <keyword match="HELP-REQUEST"/>
+ <keyword match="HIDE"/>
+ <keyword match="HOTSPOT"/>
+ <keyword match="ICON"/>
+ <keyword match="ID"/>
+ <keyword match="IF"/>
+ <keyword match="IMPORT"/>
+ <keyword match="IMPORTING"/>
+ <keyword match="INCLUDE"/>
+ <keyword match="INDEX"/>
+ <keyword match="INFOTYPES"/>
+ <keyword match="INITIALIZATION"/>
+ <keyword match="INNER"/>
+ <keyword match="INPUT"/>
+ <keyword match="INSERT"/>
+ <keyword match="INTENSIFIED"/>
+ <keyword match="INTERFACE"/>
+ <keyword match="INTERFACE-POOL"/>
+ <keyword match="INTERFACES"/>
+ <keyword match="INTO"/>
+ <keyword match="INVERSE"/>
+ <keyword match="JOIN"/>
+ <keyword match="KEY"/>
+ <keyword match="LANGUAGE"/>
+ <keyword match="LAST"/>
+ <keyword match="LEAVE"/>
+ <keyword match="LEFT"/>
+ <keyword match="LEFT-JUSTIFIED"/>
+ <keyword match="LIKE"/>
+ <keyword match="LINE"/>
+ <keyword match="LINE-COUNT"/>
+ <keyword match="LINE-SELECTION"/>
+ <keyword match="LINE-SIZE"/>
+ <keyword match="LINES"/>
+ <keyword match="LIST-PROCESSING"/>
+ <keyword match="LOAD"/>
+ <keyword match="LOAD-OF-PROGRAM"/>
+ <keyword match="LOCAL"/>
+ <keyword match="LOCALE"/>
+ <keyword match="LOG"/>
+ <keyword match="LOG10"/>
+ <keyword match="LOOP"/>
+ <keyword match="M"/>
+ <keyword match="MARGIN"/>
+ <keyword match="MASK"/>
+ <keyword match="MATCHCODE"/>
+ <keyword match="MAX"/>
+ <keyword match="MEMORY"/>
+ <keyword match="MESSAGE"/>
+ <keyword match="MESSAGE-ID"/>
+ <keyword match="MESSAGES"/>
+ <keyword match="METHOD"/>
+ <keyword match="METHODS"/>
+ <keyword match="MIN"/>
+ <keyword match="MOD"/>
+ <keyword match="MODE"/>
+ <keyword match="MODIF"/>
+ <keyword match="MODIFY"/>
+ <keyword match="MODULE"/>
+ <keyword match="MOVE"/>
+ <keyword match="MOVE-CORRESPONDING"/>
+ <keyword match="MULTIPLY"/>
+ <keyword match="MULTIPLY-CORRESPONDING"/>
+ <keyword match="NEW"/>
+ <keyword match="NEW-LINE"/>
+ <keyword match="NEW-PAGE"/>
+ <keyword match="NEXT"/>
+ <keyword match="NO"/>
+ <keyword match="NO-GAP"/>
+ <keyword match="NO-GAPS"/>
+ <keyword match="NO-HEADING"/>
+ <keyword match="NO-SCROLLING"/>
+ <keyword match="NO-SIGN"/>
+ <keyword match="NO-TITLE"/>
+ <keyword match="NO-ZERO"/>
+ <keyword match="NODES"/>
+ <keyword match="NON-UNIQUE"/>
+ <keyword match="O"/>
+ <keyword match="OBJECT"/>
+ <keyword match="OBLIGATORY"/>
+ <keyword match="OCCURS"/>
+ <keyword match="OF"/>
+ <keyword match="OFF"/>
+ <keyword match="ON"/>
+ <keyword match="OPEN"/>
+ <keyword match="OR"/>
+ <keyword match="ORDER"/>
+ <keyword match="OTHERS"/>
+ <keyword match="OUTER"/>
+ <keyword match="OUTPUT"/>
+ <keyword match="OVERLAY"/>
+ <keyword match="PACK"/>
+ <keyword match="PAGE"/>
+ <keyword match="PARAMETER"/>
+ <keyword match="PARAMETERS"/>
+ <keyword match="PERFORM"/>
+ <keyword match="PF-STATUS"/>
+ <keyword match="POSITION"/>
+ <keyword match="PRINT"/>
+ <keyword match="PRINT-CONTROL"/>
+ <keyword match="PRIVATE"/>
+ <keyword match="PROCESS"/>
+ <keyword match="PROGRAM"/>
+ <keyword match="PROPERTY"/>
+ <keyword match="PROTECTED"/>
+ <keyword match="PROVIDE"/>
+ <keyword match="PUBLIC"/>
+ <keyword match="PUT"/>
+ <keyword match="RADIOBUTTON"/>
+ <keyword match="RAISE"/>
+ <keyword match="RAISING"/>
+ <keyword match="RANGE"/>
+ <keyword match="RANGES"/>
+ <keyword match="READ"/>
+ <keyword match="RECEIVE"/>
+ <keyword match="REFRESH"/>
+ <keyword match="REJECT"/>
+ <keyword match="REPLACE"/>
+ <keyword match="REPORT"/>
+ <keyword match="REQUESTED"/>
+ <keyword match="RESERVE"/>
+ <keyword match="RESET"/>
+ <keyword match="RIGHT-JUSTIFIED"/>
+ <keyword match="ROLLBACK"/>
+ <keyword match="ROUND"/>
+ <keyword match="ROWS"/>
+ <keyword match="RTTI"/>
+ <keyword match="RUN"/>
+ <keyword match="SCAN"/>
+ <keyword match="SCREEN"/>
+ <keyword match="SEARCH"/>
+ <keyword match="SEPARATED"/>
+ <keyword match="SCROLL"/>
+ <keyword match="SCROLL-BOUNDARY"/>
+ <keyword match="SEARCH"/>
+ <keyword match="SELECT"/>
+ <keyword match="SELECT-OPTIONS"/>
+ <keyword match="SELECTION-SCREEN"/>
+ <keyword match="SELECTION-TABLE"/>
+ <keyword match="SET"/>
+ <keyword match="SHARED"/>
+ <keyword match="SHIFT"/>
+ <keyword match="SIGN"/>
+ <keyword match="SIN"/>
+ <keyword match="SINGLE"/>
+ <keyword match="SINH"/>
+ <keyword match="SIZE"/>
+ <keyword match="SKIP"/>
+ <keyword match="SORT"/>
+ <keyword match="SORTED"/>
+ <keyword match="SPLIT"/>
+ <keyword match="SQL"/>
+ <keyword match="SQRT"/>
+ <keyword match="STAMP"/>
+ <keyword match="STANDARD"/>
+ <keyword match="START-OF-SELECTION"/>
+ <keyword match="STATICS"/>
+ <keyword match="STOP"/>
+ <keyword match="STRING"/>
+ <keyword match="STRLEN"/>
+ <keyword match="STRUCTURE"/>
+ <keyword match="SUBMIT"/>
+ <keyword match="SUBTRACT"/>
+ <keyword match="SUBTRACT-CORRESPONDING"/>
+ <keyword match="SUM"/>
+ <keyword match="SUPPLY"/>
+ <keyword match="SUPPRESS"/>
+ <keyword match="SYMBOL"/>
+ <keyword match="SYNTAX-CHECK"/>
+ <keyword match="SYNTAX-TRACE"/>
+ <keyword match="SYSTEM-CALL"/>
+ <keyword match="SYSTEM-EXCEPTIONS"/>
+ <keyword match="TABLE"/>
+ <keyword match="TABLE_LINE"/>
+ <keyword match="TABLES"/>
+ <keyword match="TAN"/>
+ <keyword match="TANH"/>
+ <keyword match="TEXT"/>
+ <keyword match="TEXTPOOL"/>
+ <keyword match="TIME"/>
+ <keyword match="TIMES"/>
+ <keyword match="TITLE"/>
+ <keyword match="TITLEBAR"/>
+ <keyword match="TO"/>
+ <keyword match="TOP-OF-PAGE"/>
+ <keyword match="TRANSACTION"/>
+ <keyword match="TRANSFER"/>
+ <keyword match="TRANSLATE"/>
+ <keyword match="TRANSPORTING"/>
+ <keyword match="TRUNC"/>
+ <keyword match="TYPE"/>
+ <keyword match="TYPE-POOL"/>
+ <keyword match="TYPE-POOLS"/>
+ <keyword match="TYPES"/>
+ <keyword match="ULINE"/>
+ <keyword match="UNDER"/>
+ <keyword match="UNIQUE"/>
+ <keyword match="UNIT"/>
+ <keyword match="UNPACK"/>
+ <keyword match="UP"/>
+ <keyword match="UPDATE"/>
+ <keyword match="USER-COMMAND"/>
+ <keyword match="USING"/>
+ <keyword match="VALUE"/>
+ <keyword match="VALUE-REQUEST"/>
+ <keyword match="VALUES"/>
+ <keyword match="VARY"/>
+ <keyword match="WHEN"/>
+ <keyword match="WHERE"/>
+ <keyword match="WHILE"/>
+ <keyword match="WINDOW"/>
+ <keyword match="WITH"/>
+ <keyword match="WITH-TITLE"/>
+ <keyword match="WORK"/>
+ <keyword match="WRITE"/>
+ <keyword match="X"/>
+ <keyword match="XSTRING"/>
+ <keyword match="Z"/>
+ <keyword match="ZONE"/>
+ </keywords>
+
+
+ <keywords name="constants" inherits="identifier" innerClass="reserved">
+ <keyword match="INITIAL"/>
+ <keyword match="NULL"/>
+ <keyword match="SPACE"/>
+ <keyword match="COL_BACKGROUND"/>
+ <keyword match="COL_HEADING"/>
+ <keyword match="COL_NORMAL"/>
+ <keyword match="COL_TOTAL"/>
+ <keyword match="COL_KEY"/>
+ <keyword match="COL_POSITIVE"/>
+ <keyword match="COL_NEGATIVE"/>
+ <keyword match="COL_GROUP"/>
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/cpp.xml b/framework/Vendor/TextHighlighter/Text/cpp.xml
new file mode 100644
index 00000000..81f0328e
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/cpp.xml
@@ -0,0 +1,201 @@
+<?xml version="1.0"?>
+<!-- $Id: cpp.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="CPP" case="no">
+
+ <authors>
+ <author name="Aaron Kalin"/>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+ <comment>
+Thanks to Aaron Kalin for initial
+implementation of this highlighter
+ </comment>
+
+ <default innerClass="code" />
+
+ <block name="escaped" match="\\" innerClass="special" contained="yes">
+ <onlyin region="strdouble"/>
+ </block>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;"/>
+
+ <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
+ <contains all="yes"/>
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
+ <contains all="yes"/>
+ </region>
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/>
+
+ <block name="hexinteger" match="\b0[xX][\da-f]+" innerClass="number" contained="yes"/>
+ <block name="integer" match="\b\d\d*|\b0\b" innerClass="number" contained="yes"/>
+ <block name="octinteger" match="\b0[0-7]+" innerClass="number" contained="yes"/>
+ <block name="float" match="\b(\d*\.\d+)|(\d+\.\d*)" innerClass="number" contained="yes"/>
+
+
+ <region name="strincl" delimClass="quotes" innerClass="string" start="&lt;" end="&gt;">
+ <onlyin region="include" />
+ </region>
+
+ <!-- <block name="preprocessor" match="^#[azAZ_]\w*" innerClass="prepro"/> -->
+ <region name="include" innerClass="prepro" start="/^[ \t]*#include/m" end="/(?&lt;!\\)$/m">
+ <contains region="strdouble"/>
+ <contains region="strincl"/>
+ </region>
+
+ <region name="preprocessor" delimClass="prepro" innerClass="code" start="/^[ \t]*#[ \t]*[a-z]+/mi" end="/(?&lt;!\\)$/m">
+ <contains region="comment"/>
+ <contains region="mlcomment"/>
+ <contains region="strdouble"/>
+ <contains region="brackets"/>
+ <contains region="block"/>
+ <contains block="identifier"/>
+ <contains block="integer"/>
+ <contains block="hexinteger"/>
+ <contains block="octinteger"/>
+ <contains block="float"/>
+
+ </region>
+
+ <block name="number" match="\d*\.?\d+" innerClass="number"/>
+
+
+ <region name="mlcomment" innerClass="mlcomment" start="\/\*" end="\*\/" >
+ <contains block="cvstag"/>
+ </region>
+
+ <block name="cvstag" match="\$\w+\s*:.+\$" innerClass="inlinedoc">
+
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <region name="comment" start="\/\/.+" end="/$/m" innerClass="comment" delimClass="comment">
+ <contains block="cvstag"/>
+ </region>
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes">
+ <keyword match="and" />
+ <keyword match="and_eq" />
+ <keyword match="asm" />
+
+ <keyword match="bitand" />
+ <keyword match="bitor" />
+ <keyword match="break" />
+ <keyword match="case" />
+ <keyword match="catch" />
+ <keyword match="compl" />
+
+ <keyword match="const_cast" />
+ <keyword match="continue" />
+ <keyword match="default" />
+ <keyword match="delete" />
+ <keyword match="do" />
+ <keyword match="dynamic_cast" />
+
+ <keyword match="else" />
+ <keyword match="for" />
+ <keyword match="fortran" />
+ <keyword match="friend" />
+ <keyword match="goto" />
+ <keyword match="if" />
+
+ <keyword match="new" />
+ <keyword match="not" />
+ <keyword match="not_eq" />
+ <keyword match="operator" />
+ <keyword match="or" />
+ <keyword match="or_eq" />
+
+ <keyword match="private" />
+ <keyword match="protected" />
+ <keyword match="public" />
+ <keyword match="reinterpret_cast" />
+ <keyword match="return" />
+ <keyword match="sizeof" />
+
+ <keyword match="static_cast" />
+ <keyword match="switch" />
+ <keyword match="this" />
+ <keyword match="throw" />
+ <keyword match="try" />
+ <keyword match="typeid" />
+
+ <keyword match="using" />
+ <keyword match="while" />
+ <keyword match="xor" />
+ <keyword match="xor_eq" />
+
+ <keyword match="false" />
+ <keyword match="true" />
+ </keywords>
+
+ <keywords name="types" inherits="identifier" innerClass="types" case="yes">
+
+ <keyword match="auto" />
+ <keyword match="bool" />
+ <keyword match="char" />
+ <keyword match="class" />
+ <keyword match="const" />
+ <keyword match="double" />
+
+ <keyword match="enum" />
+ <keyword match="explicit" />
+ <keyword match="export" />
+ <keyword match="extern" />
+ <keyword match="float" />
+ <keyword match="inline" />
+
+ <keyword match="int" />
+ <keyword match="long" />
+ <keyword match="mutable" />
+ <keyword match="namespace" />
+ <keyword match="register" />
+ <keyword match="short" />
+
+ <keyword match="signed" />
+ <keyword match="static" />
+ <keyword match="struct" />
+ <keyword match="template" />
+ <keyword match="typedef" />
+ <keyword match="typename" />
+
+ <keyword match="union" />
+ <keyword match="unsigned" />
+ <keyword match="virtual" />
+ <keyword match="void" />
+ <keyword match="volatile" />
+ <keyword match="wchar_t" />
+
+ </keywords>
+
+ <keywords name="Common Macros" inherits="identifier" innerClass="prepro" case="yes">
+ <keyword match="NULL" />
+ <keyword match="TRUE" />
+ <keyword match="FALSE" />
+ <keyword match="MAX" />
+
+ <keyword match="MIN" />
+ <keyword match="__LINE__" />
+ <keyword match="__DATA__" />
+ <keyword match="__FILE__" />
+ <keyword match="__TIME__" />
+ <keyword match="__STDC__" />
+
+ </keywords>
+
+
+ <!--
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes">
+ -->
+
+</highlight>
+
diff --git a/framework/Vendor/TextHighlighter/Text/css.xml b/framework/Vendor/TextHighlighter/Text/css.xml
new file mode 100644
index 00000000..4ca4ee99
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/css.xml
@@ -0,0 +1,361 @@
+<?xml version="1.0"?>
+<!-- $Id: css.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="css" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <block name="atrule" match="(@[a-z\d]+)"
+ innerClass="var" never-contained="yes"/>
+
+ <region name="property" start="[a-z][a-z\d\-]*\s*:" end="(?=;|\})"
+ innerClass="code" delimClass="reserved" contained="yes"/>
+
+ <block name="selector" match="(((\.|#)?[a-z]+[a-z\d\-]*(?![a-z\d\-]))|(\*))(?!\s*:\s*[\s\{])"
+ innerClass="identifier" >
+ </block>
+
+ <block name="pseudo" match=":[a-z][a-z\d\-]*"
+ innerClass="special" />
+
+ <block name="bescaped" match="\\[\\(\\)\\]"
+ innerClass="string" contained="yes"/>
+
+
+ <region name="paramselector" start="\[" end="\]" innerClass="code"
+ delimClass="brackets" >
+ <contains block="paramname" />
+ <not-contains block="identifier" />
+ <contains region="strdouble" />
+ <contains region="strsingle" />
+ </region>
+
+ <region name="block" start="\{" end="\}" innerClass="code"
+ delimClass="brackets" >
+ <contains region="block" />
+ <contains region="property" />
+ <contains block="selector" />
+ </region>
+
+ <region name="brackets" start="\(" end="\)" innerClass="string"
+ delimClass="brackets" contained="yes">
+ <contains block="bescaped"/>
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" contained="yes"/>
+
+ <block name="escaped" match="\\\\|\\&quot;|\\'|\\`" innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ </block>
+
+ <block name="descaped" match="\\\\|\\&quot;|\\'|\\`|\\t|\\n|\\r" innerClass="special" contained="yes">
+ <onlyin region="strdouble"/>
+ </block>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string"
+ start="&quot;" end="&quot;" contained="yes" />
+
+ <block name="measure" match="\d*\.?\d+(\%|em|ex|pc|pt|px|in|mm|cm)"
+ innerClass="number" contained="yes">
+ <onlyin region="property"/>
+ <partClass index="1" innerClass="string" />
+ </block>
+
+ <block name="number" match="\d*\.?\d+" innerClass="number" contained="yes" >
+ <onlyin region="property"/>
+ </block>
+
+ <block name="identifier" match="[a-z][a-z\d\-]*"
+ innerClass="code" contained="yes">
+ <onlyin region="property"/>
+ </block>
+
+ <block name="hexcolor" match="#([\da-f]{6}|[\da-f]{3})\b" innerClass="var" contained="yes">
+ <onlyin region="property"/>
+ </block>
+
+ <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes">
+ <onlyin region="paramselector"/>
+ </block>
+
+ <keywords name="propertyValue" inherits="identifier" innerClass="string" case = "no">
+ <word name="left-side"/>
+ <keyword match="far-left"/>
+ <keyword match="left"/>
+ <keyword match="center-left"/>
+ <keyword match="center-right"/>
+ <keyword match="center"/>
+ <keyword match="far-right"/>
+ <keyword match="right-side"/>
+ <keyword match="right"/>
+ <keyword match="behind"/>
+ <keyword match="leftwards"/>
+ <keyword match="rightwards"/>
+ <keyword match="inherit"/>
+ <keyword match="scroll"/>
+ <keyword match="fixed"/>
+ <keyword match="transparent"/>
+ <keyword match="none"/>
+ <keyword match="repeat-x"/>
+ <keyword match="repeat-y"/>
+ <keyword match="repeat"/>
+ <keyword match="no-repeat"/>
+ <keyword match="collapse"/>
+ <keyword match="separate"/>
+ <keyword match="auto"/>
+ <keyword match="top"/>
+ <keyword match="bottom"/>
+ <keyword match="both"/>
+ <keyword match="open-quote"/>
+ <keyword match="close-quote"/>
+ <keyword match="no-open-quote"/>
+ <keyword match="no-close-quote"/>
+ <keyword match="crosshair"/>
+ <keyword match="default"/>
+ <keyword match="pointer"/>
+ <keyword match="move"/>
+ <keyword match="e-resize"/>
+ <keyword match="ne-resize"/>
+ <keyword match="nw-resize"/>
+ <keyword match="n-resize"/>
+ <keyword match="se-resize"/>
+ <keyword match="sw-resize"/>
+ <keyword match="s-resize"/>
+ <keyword match="text"/>
+ <keyword match="wait"/>
+ <keyword match="help"/>
+ <keyword match="ltr"/>
+ <keyword match="rtl"/>
+ <keyword match="inline"/>
+ <keyword match="block"/>
+ <keyword match="list-item"/>
+ <keyword match="run-in"/>
+ <keyword match="compact"/>
+ <keyword match="marker"/>
+ <keyword match="table"/>
+ <keyword match="inline-table"/>
+ <keyword match="table-row-group"/>
+ <keyword match="table-header-group"/>
+ <keyword match="table-footer-group"/>
+ <keyword match="table-row"/>
+ <keyword match="table-column-group"/>
+ <keyword match="table-column"/>
+ <keyword match="table-cell"/>
+ <keyword match="table-caption"/>
+ <keyword match="below"/>
+ <keyword match="level"/>
+ <keyword match="above"/>
+ <keyword match="higher"/>
+ <keyword match="lower"/>
+ <keyword match="show"/>
+ <keyword match="hide"/>
+ <keyword match="caption"/>
+ <keyword match="icon"/>
+ <keyword match="menu"/>
+ <keyword match="message-box"/>
+ <keyword match="small-caption"/>
+ <keyword match="status-bar"/>
+ <keyword match="normal"/>
+ <keyword match="wider"/>
+ <keyword match="narrower"/>
+ <keyword match="ultra-condensed"/>
+ <keyword match="extra-condensed"/>
+ <keyword match="condensed"/>
+ <keyword match="semi-condensed"/>
+ <keyword match="semi-expanded"/>
+ <keyword match="expanded"/>
+ <keyword match="extra-expanded"/>
+ <keyword match="ultra-expanded"/>
+ <keyword match="italic"/>
+ <keyword match="oblique"/>
+ <keyword match="small-caps"/>
+ <keyword match="bold"/>
+ <keyword match="bolder"/>
+ <keyword match="lighter"/>
+ <keyword match="inside"/>
+ <keyword match="outside"/>
+ <keyword match="disc"/>
+ <keyword match="circle"/>
+ <keyword match="square"/>
+ <keyword match="decimal"/>
+ <keyword match="decimal-leading-zero"/>
+ <keyword match="lower-roman"/>
+ <keyword match="upper-roman"/>
+ <keyword match="lower-greek"/>
+ <keyword match="lower-alpha"/>
+ <keyword match="lower-latin"/>
+ <keyword match="upper-alpha"/>
+ <keyword match="upper-latin"/>
+ <keyword match="hebrew"/>
+ <keyword match="armenian"/>
+ <keyword match="georgian"/>
+ <keyword match="cjk-ideographic"/>
+ <keyword match="hiragana"/>
+ <keyword match="katakana"/>
+ <keyword match="hiragana-iroha"/>
+ <keyword match="katakana-iroha"/>
+ <keyword match="crop"/>
+ <keyword match="cross"/>
+ <keyword match="invert"/>
+ <keyword match="visible"/>
+ <keyword match="hidden"/>
+ <keyword match="always"/>
+ <keyword match="avoid"/>
+ <keyword match="x-low"/>
+ <keyword match="low"/>
+ <keyword match="medium"/>
+ <keyword match="high"/>
+ <keyword match="x-high"/>
+ <keyword match="mix?"/>
+ <keyword match="repeat?"/>
+ <keyword match="static"/>
+ <keyword match="relative"/>
+ <keyword match="absolute"/>
+ <keyword match="portrait"/>
+ <keyword match="landscape"/>
+ <keyword match="spell-out"/>
+ <keyword match="once"/>
+ <keyword match="digits"/>
+ <keyword match="continuous"/>
+ <keyword match="code"/>
+ <keyword match="x-slow"/>
+ <keyword match="slow"/>
+ <keyword match="fast"/>
+ <keyword match="x-fast"/>
+ <keyword match="faster"/>
+ <keyword match="slower"/>
+ <keyword match="justify"/>
+ <keyword match="underline"/>
+ <keyword match="overline"/>
+ <keyword match="line-through"/>
+ <keyword match="blink"/>
+ <keyword match="capitalize"/>
+ <keyword match="uppercase"/>
+ <keyword match="lowercase"/>
+ <keyword match="embed"/>
+ <keyword match="bidi-override"/>
+ <keyword match="baseline"/>
+ <keyword match="sub"/>
+ <keyword match="super"/>
+ <keyword match="text-top"/>
+ <keyword match="middle"/>
+ <keyword match="text-bottom"/>
+ <keyword match="silent"/>
+ <keyword match="x-soft"/>
+ <keyword match="soft"/>
+ <keyword match="loud"/>
+ <keyword match="x-loud"/>
+ <keyword match="pre"/>
+ <keyword match="nowrap"/>
+ <keyword match="serif"/>
+ <keyword match="sans-serif"/>
+ <keyword match="cursive"/>
+ <keyword match="fantasy"/>
+ <keyword match="monospace"/>
+ <keyword match="empty"/>
+ <keyword match="string"/>
+ <keyword match="strict"/>
+ <keyword match="loose"/>
+ <keyword match="char"/>
+ <keyword match="true"/>
+ <keyword match="false"/>
+ <keyword match="dotted"/>
+ <keyword match="dashed"/>
+ <keyword match="solid"/>
+ <keyword match="double"/>
+ <keyword match="groove"/>
+ <keyword match="ridge"/>
+ <keyword match="inset"/>
+ <keyword match="outset"/>
+ <keyword match="larger"/>
+ <keyword match="smaller"/>
+ <keyword match="xx-small"/>
+ <keyword match="x-small"/>
+ <keyword match="small"/>
+ <keyword match="large"/>
+ <keyword match="x-large"/>
+ <keyword match="xx-large"/>
+ <keyword match="all"/>
+ <keyword match="newspaper"/>
+ <keyword match="distribute"/>
+ <keyword match="distribute-all-lines"/>
+ <keyword match="distribute-center-last"/>
+ <keyword match="inter-word"/>
+ <keyword match="inter-ideograph"/>
+ <keyword match="inter-cluster"/>
+ <keyword match="kashida"/>
+ <keyword match="ideograph-alpha"/>
+ <keyword match="ideograph-numeric"/>
+ <keyword match="ideograph-parenthesis"/>
+ <keyword match="ideograph-space"/>
+ <keyword match="keep-all"/>
+ <keyword match="break-all"/>
+ <keyword match="break-word"/>
+ <keyword match="lr-tb"/>
+ <keyword match="tb-rl"/>
+ <keyword match="thin"/>
+ <keyword match="thick"/>
+ <keyword match="inline-block"/>
+ <keyword match="w-resize"/>
+ <keyword match="hand"/>
+ <keyword match="distribute-letter"/>
+ <keyword match="distribute-space"/>
+ <keyword match="whitespace"/>
+ <keyword match="male"/>
+ <keyword match="female"/>
+ <keyword match="child"/>
+ </keywords>
+
+
+ <keywords name="namedcolor" inherits="identifier" innerClass="var" case = "no">
+ <keyword match="aqua"/>
+ <keyword match="black"/>
+ <keyword match="blue"/>
+ <keyword match="fuchsia"/>
+ <keyword match="gray"/>
+ <keyword match="green"/>
+ <keyword match="lime"/>
+ <keyword match="maroon"/>
+ <keyword match="navy"/>
+ <keyword match="olive"/>
+ <keyword match="purple"/>
+ <keyword match="red"/>
+ <keyword match="silver"/>
+ <keyword match="teal"/>
+ <keyword match="white"/>
+ <keyword match="yellow"/>
+ <keyword match="ActiveBorder"/>
+ <keyword match="ActiveCaption"/>
+ <keyword match="AppWorkspace"/>
+ <keyword match="Background"/>
+ <keyword match="ButtonFace"/>
+ <keyword match="ButtonHighlight"/>
+ <keyword match="ButtonShadow"/>
+ <keyword match="ButtonText"/>
+ <keyword match="CaptionText"/>
+ <keyword match="GrayText"/>
+ <keyword match="Highlight"/>
+ <keyword match="HighlightText"/>
+ <keyword match="InactiveBorder"/>
+ <keyword match="InactiveCaption"/>
+ <keyword match="InactiveCaptionText"/>
+ <keyword match="InfoBackground"/>
+ <keyword match="InfoText"/>
+ <keyword match="Menu"/>
+ <keyword match="MenuText"/>
+ <keyword match="Scrollbar"/>
+ <keyword match="ThreeDDarkShadow"/>
+ <keyword match="ThreeDFace"/>
+ <keyword match="ThreeDHighlight"/>
+ <keyword match="ThreeDLightShadow"/>
+ <keyword match="ThreeDShadow"/>
+ <keyword match="Window"/>
+ <keyword match="WindowFrame"/>
+ <keyword match="WindowText"/>
+ </keywords>
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/diff.xml b/framework/Vendor/TextHighlighter/Text/diff.xml
new file mode 100644
index 00000000..d369a272
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/diff.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!-- $Id: diff.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="diff" case="yes">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="default" />
+
+ <block name="noNewLine" match="/^\\\sNo\snewline.+$/m" innerClass="special"/>
+
+ <block name="diffSeparator" match="/^\-\-\-$/m" innerClass="code"/>
+
+ <block name="diffCmdLine" match="/^(diff\s+\-|Only\s+|Index).*$/m" innerClass="var"/>
+ <block name="diffFiles" match="/^(\-\-\-|\+\+\+)\s.+$/m" innerClass="reserved"/>
+
+ <block name="contextOrg" match="/^\*.*$/m" innerClass="quotes"/>
+ <block name="contextNew" match="/^\+.*$/m" innerClass="string"/>
+ <block name="contextChg" match="/^!.*$/m" innerClass="inlinedoc"/>
+
+ <block name="defOrg" match="/^\&lt;\s.*$/m" innerClass="quotes"/>
+ <block name="defNew" match="/^\&gt;\s.*$/m" innerClass="string"/>
+ <block name="defChg" match="/^\d+(\,\d+)?[acd]\d+(,\d+)?$/m" innerClass="code"/>
+
+ <block name="uniOrg" match="/^\-.*$/m" innerClass="quotes"/>
+ <block name="uniNew" match="/^\+.*$/m" innerClass="string"/>
+ <block name="uniChg" match="/^@@.+@@$/m" innerClass="code"/>
+
+ <block name="normOrg" match="/^d\d+\s\d+$/m" innerClass="code"/>
+ <region name="normNew" start="/^a\d+\s\d+$/m" end="/(?=^[ad]\d+\s\d+)/m" innerClass="var" delimClass="code"/>
+
+ <region name="edNew" start="/^(\d+)(,\d+)?(a)$/m" end="/^(\.)$/m" innerClass="string" delimClass="code"/>
+ <region name="edChg" start="/^(\d+)(,\d+)?(c)$/m" end="/^(\.)$/m" innerClass="inlinedoc" delimClass="code"/>
+ <block name="edDel" match="/^(\d+)(,\d+)?(d)$/m" innerClass="code"/>
+
+ <region name="fedNew" start="/^a(\d+)(\s\d+)?$/m" end="/^(\.)$/m" innerClass="string" delimClass="code"/>
+ <region name="fedChg" start="/^c(\d+)(\s\d+)?$/m" end="/^(\.)$/m" innerClass="inlinedoc" delimClass="code"/>
+ <block name="fedDel" match="/^d(\d+)(\s\d+)?$/m"
+ innerClass="code"/>
+
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/dtd.xml b/framework/Vendor/TextHighlighter/Text/dtd.xml
new file mode 100644
index 00000000..8e795313
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/dtd.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<!-- $Id: dtd.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="dtd" case="yes">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <region name="comment" delimClass="comment" innerClass="comment"
+ start="\&lt;!--" end="--\&gt;">
+ </region>
+
+ <region name="redecl" start="\&lt;\!\[" end="\]\]\&gt;" delimClass="brackets"
+ innerClass="code" never-contained="yes">
+ <contains all="yes" />
+ </region>
+
+ <region name="tag" start="\&lt;" end="\&gt;" delimClass="brackets"
+ innerClass="code" >
+ <contains all="yes" />
+ <onlyin region="redecl"/>
+ </region>
+
+ <region name="brackets" start="\(" end="\)" delimClass="brackets"
+ innerClass="code" contained="yes">
+ <onlyin region="tag"/>
+ <onlyin region="brackets"/>
+ <contains block="entity" />
+ <contains block="identifier" />
+ </region>
+
+ <region name="strsingle" start="'" end="'" delimClass="quotes"
+ innerClass="string" contained="yes">
+ <onlyin region="tag"/>
+ <contains block="entity" />
+ </region>
+
+ <region name="strdouble" start="&quot;" end="&quot;" delimClass="quotes"
+ innerClass="string" contained="yes">
+ <onlyin region="tag"/>
+ <contains block="entity" />
+ </region>
+
+ <block name="tagname" match="(?&lt;=\&lt;)!(ENTITY|ATTLIST|ELEMENT|NOTATION)\b"
+ innerClass="var" contained="yes">
+ <onlyin region="tag"/>
+ </block>
+
+ <block name="reserved" match="\s(#(IMPLIED|REQUIRED|FIXED))|CDATA|ENTITY|NOTATION|NMTOKENS?|PUBLIC|SYSTEM\b"
+ innerClass="reserved" contained="yes">
+ <onlyin region="tag"/>
+ </block>
+
+ <block name="pcdata" match="#PCDATA\b"
+ innerClass="reserved" contained="yes" />
+
+ <block name="entity" match="(\&amp;|\%)[\w\-\.]+;" innerClass="special" />
+
+ <block name="identifier" match="[a-z][a-z\d\-\,:]+"
+ innerClass="identifier" contained="yes" case="no"/>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/generate b/framework/Vendor/TextHighlighter/Text/generate
new file mode 100644
index 00000000..41048d91
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/generate
@@ -0,0 +1,171 @@
+#!@php_bin@
+<?php
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+/**
+ * Console highlighter class generator
+ *
+ * PHP versions 4 and 5
+ *
+ * LICENSE: This source file is subject to version 3.0 of the PHP license
+ * that is available through the world-wide-web at the following URI:
+ * http://www.php.net/license/3_0.txt. If you did not receive a copy of
+ * the PHP License and are unable to obtain it through the web, please
+ * send a note to license@php.net so we can mail you a copy immediately.
+ *
+ * @category Text
+ * @package Text_Highlighter
+ * @author Andrey Demenev <demenev@gmail.com>
+ * @copyright 2004 Andrey Demenev
+ * @license http://www.php.net/license/3_0.txt PHP License
+ * @version CVS: $Id: generate,v 1.1 2007/06/03 02:35:28 ssttoo Exp $
+ * @link http://pear.php.net/package/Text_Highlighter
+ */
+
+require_once 'Text/Highlighter/Generator.php';
+require_once 'Console/Getopt.php';
+
+$options = Console_Getopt::getopt($argv, 'x:p:d:h', array('xml=', 'php=','dir=', 'help'));
+
+if (PEAR::isError($options)) {
+ $message = str_replace('Console_Getopt: ','',$options->message);
+ usage($message);
+}
+
+$source = array();
+$dest = array();
+$dir = '';
+
+$expectp = false;
+$expectx = false;
+$unexpectedx = false;
+$unexpectedp = false;
+$si = $di = 0;
+
+foreach ($options[0] as $option) {
+ switch ($option[0]) {
+ case 'x':
+ case '--xml':
+ $source[$si] = $option[1];
+ if ($si) {
+ $di++;
+ }
+ $si++;
+ if ($expectp) {
+ $unexpectedx = true;
+ }
+ $expectp = true;
+ $expectx = false;
+ break;
+
+ case 'p':
+ case '--php':
+ if ($expectx) {
+ $unexpectedp = true;
+ }
+ $dest[$di] = $option[1];
+ $expectp = false;
+ $expectx = true;
+ break;
+
+ case 'd':
+ case '--dir':
+ $dir = $option[1];
+ break;
+
+ case 'h':
+ case '--help':
+ usage();
+ break;
+ }
+}
+
+
+if ($unexpectedx && !$dir) {
+ usage('Unexpected -x or --xml', STDERR);
+}
+
+if ($unexpectedp) {
+ usage('Unexpected -p or --php', STDERR);
+}
+
+$nsource = count($source);
+$ndest = count($dest);
+
+if (!$nsource && !$ndest) {
+ $source[]='php://stdin';
+ if (!$dir) {
+ $dest[]='php://stdout';
+ } else {
+ $dest[] = null;
+ }
+} elseif ($expectp && !$dir && $nsource > 1) {
+ usage('-x or --xml without following -p or --php', STDERR);
+} elseif ($nsource == 1 && !$ndest && !$dir) {
+ $dest[]='php://stdout';
+}
+
+if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) {
+ $dir .= DIRECTORY_SEPARATOR;
+}
+
+
+foreach ($source as $i => $xmlfile)
+{
+ $gen =& new Text_Highlighter_Generator;
+ $gen->setInputFile($xmlfile);
+ if ($gen->hasErrors()) {
+ break;
+ }
+ $gen->generate();
+ if ($gen->hasErrors()) {
+ break;
+ }
+ if (isset($dest[$i])) {
+ $phpfile = $dest[$i];
+ } else {
+ $phpfile = $dir . $gen->language . '.php';
+ }
+ $gen->saveCode($phpfile);
+ if ($gen->hasErrors()) {
+ break;
+ }
+}
+if ($gen->hasErrors()) {
+ $errors = $gen->getErrors();
+ foreach ($errors as $error) {
+ fwrite (STDERR, $error . "\n");
+ }
+ exit(1);
+}
+
+function usage($message='', $file=STDOUT)
+{
+ $code = 0;
+ if ($message) {
+ $message .= "\n\n";
+ $code = 1;
+ }
+ $message .= <<<MSG
+Generates a highlighter class from XML source
+Usage:
+generate options
+
+Options:
+ -x filename, --xml=filename
+ source XML file. Multiple input files can be specified, in which
+ case each -x option must be followed by -p unless -d is specified
+ Defaults to stdin
+ -p filename, --php=filename
+ destination PHP file. Defaults to stdout. If specied multiple times,
+ each -p must follow -x
+ -d dirname, --dir=dirname
+ Default destination directory. File names will be taken from XML input
+ ("lang" attribute of <highlight> tag)
+ -h, --help
+ This help
+MSG;
+ fwrite ($file, $message);
+ exit($code);
+}
+?>
+
diff --git a/framework/Vendor/TextHighlighter/Text/generate.bat b/framework/Vendor/TextHighlighter/Text/generate.bat
new file mode 100644
index 00000000..3170190e
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/generate.bat
@@ -0,0 +1,188 @@
+@echo off
+rem vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4:
+
+rem Console highlighter class generator
+
+rem PHP versions 4 and 5
+
+rem LICENSE: This source file is subject to version 3.0 of the PHP license
+rem that is available through the world-wide-web at the following URI:
+rem http://www.php.net/license/3_0.txt. If you did not receive a copy of
+rem the PHP License and are unable to obtain it through the web, please
+rem send a note to license@php.net so we can mail you a copy immediately.
+
+rem @category Text
+rem @package Text_Highlighter
+rem @author Andrey Demenev <demenev@gmail.com>
+rem @copyright 2004 Andrey Demenev
+rem @license http://www.php.net/license/3_0.txt PHP License
+rem @version CVS: $Id: generate.bat,v 1.1 2007/06/03 02:35:28 ssttoo Exp $
+rem @link http://pear.php.net/package/Text_Highlighter
+
+set "MHL_PARAMS="
+:doshift
+set "MHL_PARAMS=%MHL_PARAMS% %1"
+shift
+if -%1- == -- GOTO noshift
+GOTO doshift
+:noshift
+@php_bin@ -q -d output_buffering=1 -d include_path="@php_dir@" @bin_dir@/Text/Highlighter/generate.bat %MHL_PARAMS%
+
+GOTO finish
+<?php
+ob_end_clean();
+
+if (!defined('STDOUT')) {
+ define('STDOUT', fopen('php://stdout', 'wb'));
+ define('STDERR', fopen('php://stderr', 'wb'));
+}
+require_once 'Text/Highlighter/Generator.php';
+require_once 'Console/Getopt.php';
+
+$options = Console_Getopt::getopt($argv, 'x:p:d:h', array('xml=', 'php=','dir=', 'help'));
+
+if (PEAR::isError($options)) {
+ $message = str_replace('Console_Getopt: ','',$options->message);
+ usage($message);
+}
+
+$source = array();
+$dest = array();
+$dir = '';
+
+$expectp = false;
+$expectx = false;
+$unexpectedx = false;
+$unexpectedp = false;
+$si = $di = 0;
+
+foreach ($options[0] as $option) {
+ switch ($option[0]) {
+ case 'x':
+ case '--xml':
+ $source[$si] = $option[1];
+ if ($si) {
+ $di++;
+ }
+ $si++;
+ if ($expectp) {
+ $unexpectedx = true;
+ }
+ $expectp = true;
+ $expectx = false;
+ break;
+
+ case 'p':
+ case '--php':
+ if ($expectx) {
+ $unexpectedp = true;
+ }
+ $dest[$di] = $option[1];
+ $expectp = false;
+ $expectx = true;
+ break;
+
+ case 'd':
+ case '--dir':
+ $dir = $option[1];
+ break;
+
+ case 'h':
+ case '--help':
+ usage();
+ break;
+ }
+}
+
+
+if ($unexpectedx && !$dir) {
+ usage('Unexpected -x or --xml', STDERR);
+}
+
+if ($unexpectedp) {
+ usage('Unexpected -p or --php', STDERR);
+}
+
+$nsource = count($source);
+$ndest = count($dest);
+
+if (!$nsource && !$ndest) {
+ $source[]='php://stdin';
+ if (!$dir) {
+ $dest[]='php://stdout';
+ } else {
+ $dest[] = null;
+ }
+} elseif ($expectp && !$dir && $nsource > 1) {
+ usage('-x or --xml without following -p or --php', STDERR);
+} elseif ($nsource == 1 && !$ndest && !$dir) {
+ $dest[]='php://stdout';
+}
+
+if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) {
+ $dir .= DIRECTORY_SEPARATOR;
+}
+
+
+foreach ($source as $i => $xmlfile)
+{
+ $gen =& new Text_Highlighter_Generator;
+ $gen->setInputFile($xmlfile);
+ if ($gen->hasErrors()) {
+ break;
+ }
+ $gen->generate();
+ if ($gen->hasErrors()) {
+ break;
+ }
+ if (isset($dest[$i])) {
+ $phpfile = $dest[$i];
+ } else {
+ $phpfile = $dir . $gen->language . '.php';
+ }
+ $gen->saveCode($phpfile);
+ if ($gen->hasErrors()) {
+ break;
+ }
+}
+if ($gen->hasErrors()) {
+ $errors = $gen->getErrors();
+ foreach ($errors as $error) {
+ fwrite (STDERR, $error . "\n");
+ }
+ exit(1);
+}
+
+exit(0);
+
+function usage($message='', $file=STDOUT)
+{
+ $code = 0;
+ if ($message) {
+ $message .= "\n\n";
+ $code = 1;
+ }
+ $message .= <<<MSG
+Generates a highlighter class from XML source
+Usage:
+generate options
+
+Options:
+ -x filename, --xml=filename
+ source XML file. Multiple input files can be specified, in which
+ case each -x option must be followed by -p unless -d is specified
+ Defaults to stdin
+ -p filename, --php=filename
+ destination PHP file. Defaults to stdout. If specied multiple times,
+ each -p must follow -x
+ -d dirname, --dir=dirname
+ Default destination directory. File names will be taken from XML input
+ ("lang" attribute of <highlight> tag)
+ -h, --help
+ This help
+MSG;
+ fwrite ($file, $message);
+ exit($code);
+}
+?>
+:finish
diff --git a/framework/Vendor/TextHighlighter/Text/html.xml b/framework/Vendor/TextHighlighter/Text/html.xml
new file mode 100644
index 00000000..c25a3ec5
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/html.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!-- $Id: html.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="html" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <region name="comment" delimClass="comment" innerClass="comment"
+ start="\&lt;!--" end="--\&gt;">
+ </region>
+
+ <region name="tag" delimClass="brackets" innerClass="code" start="\&lt;[\?\/]?" end="[\/\?]?\&gt;">
+ <contains block="tagname"/>
+ <contains region="param"/>
+ <contains block="paramname"/>
+ </region>
+
+ <block name="tagname" match="(?&lt;=[\&lt;\/?])[\w\-\:]+" innerClass="reserved" contained="yes"/>
+
+ <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes"/>
+
+ <block name="entity" match="(&amp;)[\w\-\.]+;" innerClass="special" />
+
+ <region name="param" start="&quot;" end="&quot;" delimClass="quotes" innerClass="string" contained="yes">
+ <contains block="entity"/>
+ </region>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/java.xml b/framework/Vendor/TextHighlighter/Text/java.xml
new file mode 100644
index 00000000..cafbec05
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/java.xml
@@ -0,0 +1,2824 @@
+<?xml version="1.0"?>
+<!-- $Id: java.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="java">
+
+ <authors>
+ <author name="Andrey Demenev" email ="demenev@gmail.com"/>
+ </authors>
+
+ <default innerClass="code" />
+
+ <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
+ <contains all="yes"/>
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" >
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
+ <contains all="yes"/>
+ </region>
+
+
+ <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/">
+ <contains block="javadoc"/>
+ <contains block="cvstag"/>
+ </region>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;" />
+
+ <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/>
+
+ <block name="escaped" match="\\." innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ </block>
+
+ <block name="descaped" match="\\[\\&quot;'`tnr\$\{]" innerClass="special" contained="yes">
+ <onlyin region="strdouble"/>
+ </block>
+
+
+ <region name="comment" start="\/\/" end="/$/m" innerClass="comment">
+ <contains block="cvstag"/>
+ </region>
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" />
+
+ <block name="hexinteger" match="0[xX][\da-f]+" innerClass="number" />
+ <block name="integer" match="\d\d*|\b0\b" innerClass="number" />
+ <block name="octinteger" match="0[0-7]+" innerClass="number" />
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number" />
+ <block name="exponent"
+ match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)"
+ innerClass="number" />
+
+ <block name="javadoc" match="\s@\w+\s" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&amp;=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&amp;=\/%+]*" innerClass="url" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="note" match="\bnote:" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+
+ <block name="cvstag" match="\$\w+\s*:.*\$" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <keywords name="types" inherits="identifier" innerClass="types" case = "yes">
+ <keyword match="boolean" />
+ <keyword match="byte" />
+ <keyword match="char" />
+ <keyword match="const" />
+ <keyword match="double" />
+ <keyword match="final" />
+ <keyword match="float" />
+ <keyword match="int" />
+ <keyword match="long" />
+ <keyword match="short" />
+ <keyword match="static" />
+ <keyword match="void" />
+ </keywords>
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes">
+ <keyword match="import"/>
+ <keyword match="package"/>
+ <keyword match="abstract" />
+ <keyword match="break" />
+ <keyword match="case" />
+ <keyword match="catch" />
+ <keyword match="class" />
+ <keyword match="continue" />
+ <keyword match="default" />
+ <keyword match="do" />
+ <keyword match="else" />
+ <keyword match="extends" />
+ <keyword match="false" />
+ <keyword match="finally" />
+ <keyword match="for" />
+ <keyword match="goto" />
+ <keyword match="if" />
+ <keyword match="implements" />
+ <keyword match="instanceof" />
+ <keyword match="interface" />
+ <keyword match="native" />
+ <keyword match="new" />
+ <keyword match="null" />
+ <keyword match="private" />
+ <keyword match="protected" />
+ <keyword match="public" />
+ <keyword match="return" />
+ <keyword match="super" />
+ <keyword match="strictfp" />
+ <keyword match="switch" />
+ <keyword match="synchronized" />
+ <keyword match="this" />
+ <keyword match="throws" />
+ <keyword match="throw" />
+ <keyword match="transient" />
+ <keyword match="true" />
+ <keyword match="try" />
+ <keyword match="volatile" />
+ <keyword match="while" />
+ </keywords>
+
+ <keywords name="builtin" inherits="identifier" innerClass="builtin" case = "yes" ifdef="java.builtins">
+ <keyword match="AbstractAction" />
+ <keyword match="AbstractBorder" />
+ <keyword match="AbstractButton" />
+ <keyword match="AbstractCellEditor" />
+ <keyword match="AbstractCollection" />
+ <keyword match="AbstractColorChooserPanel" />
+ <keyword match="AbstractDocument" />
+ <keyword match="AbstractInterruptibleChannel" />
+ <keyword match="AbstractLayoutCache" />
+ <keyword match="AbstractList" />
+ <keyword match="AbstractListModel" />
+ <keyword match="AbstractMap" />
+ <keyword match="AbstractMethodError" />
+ <keyword match="AbstractPreferences" />
+ <keyword match="AbstractSelectableChannel" />
+ <keyword match="AbstractSelectionKey" />
+ <keyword match="AbstractSelector" />
+ <keyword match="AbstractSequentialList" />
+ <keyword match="AbstractSet" />
+ <keyword match="AbstractSpinnerModel" />
+ <keyword match="AbstractTableModel" />
+ <keyword match="AbstractUndoableEdit" />
+ <keyword match="AbstractWriter" />
+ <keyword match="AccessControlContext" />
+ <keyword match="AccessControlException" />
+ <keyword match="AccessController" />
+ <keyword match="AccessException" />
+ <keyword match="Accessible" />
+ <keyword match="AccessibleAction" />
+ <keyword match="AccessibleBundle" />
+ <keyword match="AccessibleComponent" />
+ <keyword match="AccessibleContext" />
+ <keyword match="AccessibleEditableText" />
+ <keyword match="AccessibleExtendedComponent" />
+ <keyword match="AccessibleExtendedTable" />
+ <keyword match="AccessibleHyperlink" />
+ <keyword match="AccessibleHypertext" />
+ <keyword match="AccessibleIcon" />
+ <keyword match="AccessibleKeyBinding" />
+ <keyword match="AccessibleObject" />
+ <keyword match="AccessibleRelation" />
+ <keyword match="AccessibleRelationSet" />
+ <keyword match="AccessibleResourceBundle" />
+ <keyword match="AccessibleRole" />
+ <keyword match="AccessibleSelection" />
+ <keyword match="AccessibleState" />
+ <keyword match="AccessibleStateSet" />
+ <keyword match="AccessibleTable" />
+ <keyword match="AccessibleTableModelChange" />
+ <keyword match="AccessibleText" />
+ <keyword match="AccessibleValue" />
+ <keyword match="AccountExpiredException" />
+ <keyword match="Acl" />
+ <keyword match="AclEntry" />
+ <keyword match="AclNotFoundException" />
+ <keyword match="Action" />
+ <keyword match="ActionEvent" />
+ <keyword match="ActionListener" />
+ <keyword match="ActionMap" />
+ <keyword match="ActionMapUIResource" />
+ <keyword match="Activatable" />
+ <keyword match="ActivateFailedException" />
+ <keyword match="ActivationDesc" />
+ <keyword match="ActivationException" />
+ <keyword match="ActivationGroup" />
+ <keyword match="ActivationGroup_Stub" />
+ <keyword match="ActivationGroupDesc" />
+ <keyword match="ActivationGroupID" />
+ <keyword match="ActivationID" />
+ <keyword match="ActivationInstantiator" />
+ <keyword match="ActivationMonitor" />
+ <keyword match="ActivationSystem" />
+ <keyword match="Activator" />
+ <keyword match="ActiveEvent" />
+ <keyword match="AdapterActivator" />
+ <keyword match="AdapterActivatorOperations" />
+ <keyword match="AdapterAlreadyExists" />
+ <keyword match="AdapterAlreadyExistsHelper" />
+ <keyword match="AdapterInactive" />
+ <keyword match="AdapterInactiveHelper" />
+ <keyword match="AdapterNonExistent" />
+ <keyword match="AdapterNonExistentHelper" />
+ <keyword match="AddressHelper" />
+ <keyword match="Adjustable" />
+ <keyword match="AdjustmentEvent" />
+ <keyword match="AdjustmentListener" />
+ <keyword match="Adler32" />
+ <keyword match="AffineTransform" />
+ <keyword match="AffineTransformOp" />
+ <keyword match="AlgorithmParameterGenerator" />
+ <keyword match="AlgorithmParameterGeneratorSpi" />
+ <keyword match="AlgorithmParameters" />
+ <keyword match="AlgorithmParameterSpec" />
+ <keyword match="AlgorithmParametersSpi" />
+ <keyword match="AllPermission" />
+ <keyword match="AlphaComposite" />
+ <keyword match="AlreadyBound" />
+ <keyword match="AlreadyBoundException" />
+ <keyword match="AlreadyBoundHelper" />
+ <keyword match="AlreadyBoundHolder" />
+ <keyword match="AlreadyConnectedException" />
+ <keyword match="AncestorEvent" />
+ <keyword match="AncestorListener" />
+ <keyword match="Annotation" />
+ <keyword match="Any" />
+ <keyword match="AnyHolder" />
+ <keyword match="AnySeqHelper" />
+ <keyword match="AnySeqHelper" />
+ <keyword match="AnySeqHolder" />
+ <keyword match="AppConfigurationEntry" />
+ <keyword match="Applet" />
+ <keyword match="AppletContext" />
+ <keyword match="AppletInitializer" />
+ <keyword match="AppletStub" />
+ <keyword match="ApplicationException" />
+ <keyword match="Arc2D" />
+ <keyword match="Area" />
+ <keyword match="AreaAveragingScaleFilter" />
+ <keyword match="ARG_IN" />
+ <keyword match="ARG_INOUT" />
+ <keyword match="ARG_OUT" />
+ <keyword match="ArithmeticException" />
+ <keyword match="Array" />
+ <keyword match="Array" />
+ <keyword match="ArrayIndexOutOfBoundsException" />
+ <keyword match="ArrayList" />
+ <keyword match="Arrays" />
+ <keyword match="ArrayStoreException" />
+ <keyword match="AssertionError" />
+ <keyword match="AsyncBoxView" />
+ <keyword match="AsynchronousCloseException" />
+ <keyword match="Attr" />
+ <keyword match="Attribute" />
+ <keyword match="Attribute" />
+ <keyword match="AttributedCharacterIterator" />
+ <keyword match="AttributedString" />
+ <keyword match="AttributeException" />
+ <keyword match="AttributeInUseException" />
+ <keyword match="AttributeList" />
+ <keyword match="AttributeList" />
+ <keyword match="AttributeListImpl" />
+ <keyword match="AttributeModificationException" />
+ <keyword match="Attributes" />
+ <keyword match="Attributes" />
+ <keyword match="Attributes" />
+ <keyword match="AttributeSet" />
+ <keyword match="AttributeSet" />
+ <keyword match="AttributeSetUtilities" />
+ <keyword match="AttributesImpl" />
+ <keyword match="AudioClip" />
+ <keyword match="AudioFileFormat" />
+ <keyword match="AudioFileReader" />
+ <keyword match="AudioFileWriter" />
+ <keyword match="AudioFormat" />
+ <keyword match="AudioInputStream" />
+ <keyword match="AudioPermission" />
+ <keyword match="AudioSystem" />
+ <keyword match="AuthenticationException" />
+ <keyword match="AuthenticationNotSupportedException" />
+ <keyword match="Authenticator" />
+ <keyword match="AuthPermission" />
+ <keyword match="Autoscroll" />
+ <keyword match="AWTError" />
+ <keyword match="AWTEvent" />
+ <keyword match="AWTEventListener" />
+ <keyword match="AWTEventListenerProxy" />
+ <keyword match="AWTEventMulticaster" />
+ <keyword match="AWTException" />
+ <keyword match="AWTKeyStroke" />
+ <keyword match="AWTPermission" />
+ <keyword match="BackingStoreException" />
+ <keyword match="BAD_CONTEXT" />
+ <keyword match="BAD_INV_ORDER" />
+ <keyword match="BAD_OPERATION" />
+ <keyword match="BAD_PARAM" />
+ <keyword match="BAD_POLICY" />
+ <keyword match="BAD_POLICY_TYPE" />
+ <keyword match="BAD_POLICY_VALUE" />
+ <keyword match="BAD_TYPECODE" />
+ <keyword match="BadKind" />
+ <keyword match="BadLocationException" />
+ <keyword match="BadPaddingException" />
+ <keyword match="BandCombineOp" />
+ <keyword match="BandedSampleModel" />
+ <keyword match="BasicArrowButton" />
+ <keyword match="BasicAttribute" />
+ <keyword match="BasicAttributes" />
+ <keyword match="BasicBorders" />
+ <keyword match="BasicButtonListener" />
+ <keyword match="BasicButtonUI" />
+ <keyword match="BasicCheckBoxMenuItemUI" />
+ <keyword match="BasicCheckBoxUI" />
+ <keyword match="BasicColorChooserUI" />
+ <keyword match="BasicComboBoxEditor" />
+ <keyword match="BasicComboBoxRenderer" />
+ <keyword match="BasicComboBoxUI" />
+ <keyword match="BasicComboPopup" />
+ <keyword match="BasicDesktopIconUI" />
+ <keyword match="BasicDesktopPaneUI" />
+ <keyword match="BasicDirectoryModel" />
+ <keyword match="BasicEditorPaneUI" />
+ <keyword match="BasicFileChooserUI" />
+ <keyword match="BasicFormattedTextFieldUI" />
+ <keyword match="BasicGraphicsUtils" />
+ <keyword match="BasicHTML" />
+ <keyword match="BasicIconFactory" />
+ <keyword match="BasicInternalFrameTitlePane" />
+ <keyword match="BasicInternalFrameUI" />
+ <keyword match="BasicLabelUI" />
+ <keyword match="BasicListUI" />
+ <keyword match="BasicLookAndFeel" />
+ <keyword match="BasicMenuBarUI" />
+ <keyword match="BasicMenuItemUI" />
+ <keyword match="BasicMenuUI" />
+ <keyword match="BasicOptionPaneUI" />
+ <keyword match="BasicPanelUI" />
+ <keyword match="BasicPasswordFieldUI" />
+ <keyword match="BasicPermission" />
+ <keyword match="BasicPopupMenuSeparatorUI" />
+ <keyword match="BasicPopupMenuUI" />
+ <keyword match="BasicProgressBarUI" />
+ <keyword match="BasicRadioButtonMenuItemUI" />
+ <keyword match="BasicRadioButtonUI" />
+ <keyword match="BasicRootPaneUI" />
+ <keyword match="BasicScrollBarUI" />
+ <keyword match="BasicScrollPaneUI" />
+ <keyword match="BasicSeparatorUI" />
+ <keyword match="BasicSliderUI" />
+ <keyword match="BasicSpinnerUI" />
+ <keyword match="BasicSplitPaneDivider" />
+ <keyword match="BasicSplitPaneUI" />
+ <keyword match="BasicStroke" />
+ <keyword match="BasicTabbedPaneUI" />
+ <keyword match="BasicTableHeaderUI" />
+ <keyword match="BasicTableUI" />
+ <keyword match="BasicTextAreaUI" />
+ <keyword match="BasicTextFieldUI" />
+ <keyword match="BasicTextPaneUI" />
+ <keyword match="BasicTextUI" />
+ <keyword match="BasicToggleButtonUI" />
+ <keyword match="BasicToolBarSeparatorUI" />
+ <keyword match="BasicToolBarUI" />
+ <keyword match="BasicToolTipUI" />
+ <keyword match="BasicTreeUI" />
+ <keyword match="BasicViewportUI" />
+ <keyword match="BatchUpdateException" />
+ <keyword match="BeanContext" />
+ <keyword match="BeanContextChild" />
+ <keyword match="BeanContextChildComponentProxy" />
+ <keyword match="BeanContextChildSupport" />
+ <keyword match="BeanContextContainerProxy" />
+ <keyword match="BeanContextEvent" />
+ <keyword match="BeanContextMembershipEvent" />
+ <keyword match="BeanContextMembershipListener" />
+ <keyword match="BeanContextProxy" />
+ <keyword match="BeanContextServiceAvailableEvent" />
+ <keyword match="BeanContextServiceProvider" />
+ <keyword match="BeanContextServiceProviderBeanInfo" />
+ <keyword match="BeanContextServiceRevokedEvent" />
+ <keyword match="BeanContextServiceRevokedListener" />
+ <keyword match="BeanContextServices" />
+ <keyword match="BeanContextServicesListener" />
+ <keyword match="BeanContextServicesSupport" />
+ <keyword match="BeanContextSupport" />
+ <keyword match="BeanDescriptor" />
+ <keyword match="BeanInfo" />
+ <keyword match="Beans" />
+ <keyword match="BevelBorder" />
+ <keyword match="Bidi" />
+ <keyword match="BigDecimal" />
+ <keyword match="BigInteger" />
+ <keyword match="BinaryRefAddr" />
+ <keyword match="BindException" />
+ <keyword match="Binding" />
+ <keyword match="Binding" />
+ <keyword match="BindingHelper" />
+ <keyword match="BindingHolder" />
+ <keyword match="BindingIterator" />
+ <keyword match="BindingIteratorHelper" />
+ <keyword match="BindingIteratorHolder" />
+ <keyword match="BindingIteratorOperations" />
+ <keyword match="BindingIteratorPOA" />
+ <keyword match="BindingListHelper" />
+ <keyword match="BindingListHolder" />
+ <keyword match="BindingType" />
+ <keyword match="BindingTypeHelper" />
+ <keyword match="BindingTypeHolder" />
+ <keyword match="BitSet" />
+ <keyword match="Blob" />
+ <keyword match="BlockView" />
+ <keyword match="Book" />
+ <keyword match="Boolean" />
+ <keyword match="BooleanControl" />
+ <keyword match="BooleanHolder" />
+ <keyword match="BooleanSeqHelper" />
+ <keyword match="BooleanSeqHolder" />
+ <keyword match="Border" />
+ <keyword match="BorderFactory" />
+ <keyword match="BorderLayout" />
+ <keyword match="BorderUIResource" />
+ <keyword match="BoundedRangeModel" />
+ <keyword match="Bounds" />
+ <keyword match="Bounds" />
+ <keyword match="Box" />
+ <keyword match="BoxedValueHelper" />
+ <keyword match="BoxLayout" />
+ <keyword match="BoxView" />
+ <keyword match="BreakIterator" />
+ <keyword match="Buffer" />
+ <keyword match="BufferCapabilities" />
+ <keyword match="BufferedImage" />
+ <keyword match="BufferedImageFilter" />
+ <keyword match="BufferedImageOp" />
+ <keyword match="BufferedInputStream" />
+ <keyword match="BufferedOutputStream" />
+ <keyword match="BufferedReader" />
+ <keyword match="BufferedWriter" />
+ <keyword match="BufferOverflowException" />
+ <keyword match="BufferStrategy" />
+ <keyword match="BufferUnderflowException" />
+ <keyword match="Button" />
+ <keyword match="ButtonGroup" />
+ <keyword match="ButtonModel" />
+ <keyword match="ButtonUI" />
+ <keyword match="Byte" />
+ <keyword match="ByteArrayInputStream" />
+ <keyword match="ByteArrayOutputStream" />
+ <keyword match="ByteBuffer" />
+ <keyword match="ByteChannel" />
+ <keyword match="ByteHolder" />
+ <keyword match="ByteLookupTable" />
+ <keyword match="ByteOrder" />
+ <keyword match="Calendar" />
+ <keyword match="CallableStatement" />
+ <keyword match="Callback" />
+ <keyword match="CallbackHandler" />
+ <keyword match="CancelablePrintJob" />
+ <keyword match="CancelledKeyException" />
+ <keyword match="CannotProceed" />
+ <keyword match="CannotProceedException" />
+ <keyword match="CannotProceedHelper" />
+ <keyword match="CannotProceedHolder" />
+ <keyword match="CannotRedoException" />
+ <keyword match="CannotUndoException" />
+ <keyword match="Canvas" />
+ <keyword match="CardLayout" />
+ <keyword match="Caret" />
+ <keyword match="CaretEvent" />
+ <keyword match="CaretListener" />
+ <keyword match="CDATASection" />
+ <keyword match="CellEditor" />
+ <keyword match="CellEditorListener" />
+ <keyword match="CellRendererPane" />
+ <keyword match="Certificate" />
+ <keyword match="Certificate" />
+ <keyword match="Certificate" />
+
+ <keyword match="CertificateEncodingException" />
+ <keyword match="CertificateEncodingException" />
+ <keyword match="CertificateException" />
+ <keyword match="CertificateException" />
+ <keyword match="CertificateExpiredException" />
+ <keyword match="CertificateExpiredException" />
+ <keyword match="CertificateFactory" />
+ <keyword match="CertificateFactorySpi" />
+ <keyword match="CertificateNotYetValidException" />
+ <keyword match="CertificateNotYetValidException" />
+ <keyword match="CertificateParsingException" />
+ <keyword match="CertificateParsingException" />
+ <keyword match="CertPath" />
+
+ <keyword match="CertPathBuilder" />
+ <keyword match="CertPathBuilderException" />
+ <keyword match="CertPathBuilderResult" />
+ <keyword match="CertPathBuilderSpi" />
+ <keyword match="CertPathParameters" />
+ <keyword match="CertPathValidator" />
+ <keyword match="CertPathValidatorException" />
+ <keyword match="CertPathValidatorResult" />
+ <keyword match="CertPathValidatorSpi" />
+ <keyword match="CertSelector" />
+ <keyword match="CertStore" />
+ <keyword match="CertStoreException" />
+ <keyword match="CertStoreParameters" />
+ <keyword match="CertStoreSpi" />
+ <keyword match="ChangedCharSetException" />
+ <keyword match="ChangeEvent" />
+ <keyword match="ChangeListener" />
+ <keyword match="Channel" />
+ <keyword match="ChannelBinding" />
+ <keyword match="Channels" />
+ <keyword match="Character" />
+
+
+ <keyword match="CharacterCodingException" />
+ <keyword match="CharacterData" />
+ <keyword match="CharacterIterator" />
+ <keyword match="CharArrayReader" />
+ <keyword match="CharArrayWriter" />
+ <keyword match="CharBuffer" />
+ <keyword match="CharConversionException" />
+ <keyword match="CharHolder" />
+ <keyword match="CharSeqHelper" />
+ <keyword match="CharSeqHolder" />
+ <keyword match="CharSequence" />
+ <keyword match="Charset" />
+ <keyword match="CharsetDecoder" />
+ <keyword match="CharsetEncoder" />
+ <keyword match="CharsetProvider" />
+ <keyword match="Checkbox" />
+ <keyword match="CheckboxGroup" />
+ <keyword match="CheckboxMenuItem" />
+ <keyword match="CheckedInputStream" />
+ <keyword match="CheckedOutputStream" />
+ <keyword match="Checksum" />
+ <keyword match="Choice" />
+ <keyword match="ChoiceCallback" />
+ <keyword match="ChoiceFormat" />
+ <keyword match="Chromaticity" />
+ <keyword match="Cipher" />
+ <keyword match="CipherInputStream" />
+ <keyword match="CipherOutputStream" />
+ <keyword match="CipherSpi" />
+ <keyword match="Class" />
+ <keyword match="ClassCastException" />
+ <keyword match="ClassCircularityError" />
+ <keyword match="ClassDesc" />
+ <keyword match="ClassFormatError" />
+ <keyword match="ClassLoader" />
+ <keyword match="ClassNotFoundException" />
+ <keyword match="ClientRequestInfo" />
+ <keyword match="ClientRequestInfoOperations" />
+ <keyword match="ClientRequestInterceptor" />
+ <keyword match="ClientRequestInterceptorOperations" />
+ <keyword match="Clip" />
+ <keyword match="Clipboard" />
+ <keyword match="ClipboardOwner" />
+ <keyword match="Clob" />
+ <keyword match="Cloneable" />
+ <keyword match="CloneNotSupportedException" />
+ <keyword match="ClosedByInterruptException" />
+ <keyword match="ClosedChannelException" />
+ <keyword match="ClosedSelectorException" />
+ <keyword match="CMMException" />
+ <keyword match="Codec" />
+ <keyword match="CodecFactory" />
+ <keyword match="CodecFactoryHelper" />
+ <keyword match="CodecFactoryOperations" />
+ <keyword match="CodecOperations" />
+ <keyword match="CoderMalfunctionError" />
+ <keyword match="CoderResult" />
+ <keyword match="CodeSets" />
+ <keyword match="CodeSource" />
+ <keyword match="CodingErrorAction" />
+ <keyword match="CollationElementIterator" />
+ <keyword match="CollationKey" />
+ <keyword match="Collator" />
+ <keyword match="Collection" />
+ <keyword match="CollectionCertStoreParameters" />
+ <keyword match="Collections" />
+ <keyword match="Color" />
+ <keyword match="ColorChooserComponentFactory" />
+ <keyword match="ColorChooserUI" />
+ <keyword match="ColorConvertOp" />
+ <keyword match="ColorModel" />
+ <keyword match="ColorSelectionModel" />
+ <keyword match="ColorSpace" />
+ <keyword match="ColorSupported" />
+ <keyword match="ColorUIResource" />
+ <keyword match="ComboBoxEditor" />
+ <keyword match="ComboBoxModel" />
+ <keyword match="ComboBoxUI" />
+ <keyword match="ComboPopup" />
+ <keyword match="COMM_FAILURE" />
+ <keyword match="Comment" />
+ <keyword match="CommunicationException" />
+ <keyword match="Comparable" />
+ <keyword match="Comparator" />
+ <keyword match="Compiler" />
+ <keyword match="CompletionStatus" />
+ <keyword match="CompletionStatusHelper" />
+ <keyword match="Component" />
+ <keyword match="ComponentAdapter" />
+ <keyword match="ComponentColorModel" />
+ <keyword match="ComponentEvent" />
+ <keyword match="ComponentIdHelper" />
+ <keyword match="ComponentInputMap" />
+ <keyword match="ComponentInputMapUIResource" />
+ <keyword match="ComponentListener" />
+ <keyword match="ComponentOrientation" />
+ <keyword match="ComponentSampleModel" />
+ <keyword match="ComponentUI" />
+ <keyword match="ComponentView" />
+ <keyword match="Composite" />
+ <keyword match="CompositeContext" />
+ <keyword match="CompositeName" />
+ <keyword match="CompositeView" />
+ <keyword match="CompoundBorder" />
+ <keyword match="CompoundControl" />
+
+ <keyword match="CompoundEdit" />
+ <keyword match="CompoundName" />
+ <keyword match="Compression" />
+ <keyword match="ConcurrentModificationException" />
+ <keyword match="Configuration" />
+ <keyword match="ConfigurationException" />
+ <keyword match="ConfirmationCallback" />
+ <keyword match="ConnectException" />
+ <keyword match="ConnectException" />
+ <keyword match="ConnectIOException" />
+ <keyword match="Connection" />
+ <keyword match="ConnectionEvent" />
+ <keyword match="ConnectionEventListener" />
+ <keyword match="ConnectionPendingException" />
+ <keyword match="ConnectionPoolDataSource" />
+ <keyword match="ConsoleHandler" />
+ <keyword match="Constructor" />
+ <keyword match="Container" />
+ <keyword match="ContainerAdapter" />
+ <keyword match="ContainerEvent" />
+ <keyword match="ContainerListener" />
+ <keyword match="ContainerOrderFocusTraversalPolicy" />
+ <keyword match="ContentHandler" />
+ <keyword match="ContentHandler" />
+ <keyword match="ContentHandlerFactory" />
+ <keyword match="ContentModel" />
+ <keyword match="Context" />
+ <keyword match="Context" />
+ <keyword match="ContextList" />
+ <keyword match="ContextNotEmptyException" />
+ <keyword match="ContextualRenderedImageFactory" />
+ <keyword match="Control" />
+ <keyword match="Control" />
+
+ <keyword match="ControlFactory" />
+ <keyword match="ControllerEventListener" />
+ <keyword match="ConvolveOp" />
+ <keyword match="CookieHolder" />
+ <keyword match="Copies" />
+ <keyword match="CopiesSupported" />
+ <keyword match="CRC32" />
+ <keyword match="CredentialExpiredException" />
+ <keyword match="CRL" />
+ <keyword match="CRLException" />
+ <keyword match="CRLSelector" />
+ <keyword match="CropImageFilter" />
+ <keyword match="CSS" />
+
+ <keyword match="CTX_RESTRICT_SCOPE" />
+ <keyword match="CubicCurve2D" />
+
+
+ <keyword match="Currency" />
+ <keyword match="Current" />
+ <keyword match="Current" />
+ <keyword match="Current" />
+ <keyword match="CurrentHelper" />
+ <keyword match="CurrentHelper" />
+ <keyword match="CurrentHelper" />
+ <keyword match="CurrentHolder" />
+ <keyword match="CurrentOperations" />
+ <keyword match="CurrentOperations" />
+ <keyword match="CurrentOperations" />
+ <keyword match="Cursor" />
+ <keyword match="Customizer" />
+ <keyword match="CustomMarshal" />
+ <keyword match="CustomValue" />
+ <keyword match="DATA_CONVERSION" />
+ <keyword match="DatabaseMetaData" />
+ <keyword match="DataBuffer" />
+ <keyword match="DataBufferByte" />
+ <keyword match="DataBufferDouble" />
+ <keyword match="DataBufferFloat" />
+ <keyword match="DataBufferInt" />
+ <keyword match="DataBufferShort" />
+ <keyword match="DataBufferUShort" />
+ <keyword match="DataFlavor" />
+ <keyword match="DataFormatException" />
+ <keyword match="DatagramChannel" />
+ <keyword match="DatagramPacket" />
+ <keyword match="DatagramSocket" />
+ <keyword match="DatagramSocketImpl" />
+ <keyword match="DatagramSocketImplFactory" />
+ <keyword match="DataInput" />
+ <keyword match="DataInputStream" />
+ <keyword match="DataInputStream" />
+ <keyword match="DataLine" />
+
+ <keyword match="DataOutput" />
+ <keyword match="DataOutputStream" />
+ <keyword match="DataOutputStream" />
+ <keyword match="DataSource" />
+ <keyword match="DataTruncation" />
+ <keyword match="Date" />
+ <keyword match="Date" />
+ <keyword match="DateFormat" />
+
+ <keyword match="DateFormatSymbols" />
+ <keyword match="DateFormatter" />
+ <keyword match="DateTimeAtCompleted" />
+ <keyword match="DateTimeAtCreation" />
+ <keyword match="DateTimeAtProcessing" />
+ <keyword match="DateTimeSyntax" />
+ <keyword match="DebugGraphics" />
+ <keyword match="DecimalFormat" />
+ <keyword match="DecimalFormatSymbols" />
+ <keyword match="DeclHandler" />
+ <keyword match="DefaultBoundedRangeModel" />
+ <keyword match="DefaultButtonModel" />
+ <keyword match="DefaultCaret" />
+ <keyword match="DefaultCellEditor" />
+ <keyword match="DefaultColorSelectionModel" />
+ <keyword match="DefaultComboBoxModel" />
+ <keyword match="DefaultDesktopManager" />
+ <keyword match="DefaultEditorKit" />
+
+
+
+
+
+
+
+
+ <keyword match="DefaultFocusManager" />
+ <keyword match="DefaultFocusTraversalPolicy" />
+ <keyword match="DefaultFormatter" />
+ <keyword match="DefaultFormatterFactory" />
+ <keyword match="DefaultHandler" />
+ <keyword match="DefaultHighlighter" />
+
+ <keyword match="DefaultKeyboardFocusManager" />
+ <keyword match="DefaultListCellRenderer" />
+
+ <keyword match="DefaultListModel" />
+ <keyword match="DefaultListSelectionModel" />
+ <keyword match="DefaultMenuLayout" />
+ <keyword match="DefaultMetalTheme" />
+ <keyword match="DefaultMutableTreeNode" />
+ <keyword match="DefaultPersistenceDelegate" />
+ <keyword match="DefaultSingleSelectionModel" />
+ <keyword match="DefaultStyledDocument" />
+
+
+ <keyword match="DefaultTableCellRenderer" />
+
+ <keyword match="DefaultTableColumnModel" />
+ <keyword match="DefaultTableModel" />
+ <keyword match="DefaultTextUI" />
+ <keyword match="DefaultTreeCellEditor" />
+ <keyword match="DefaultTreeCellRenderer" />
+ <keyword match="DefaultTreeModel" />
+ <keyword match="DefaultTreeSelectionModel" />
+ <keyword match="DefinitionKind" />
+ <keyword match="DefinitionKindHelper" />
+ <keyword match="Deflater" />
+ <keyword match="DeflaterOutputStream" />
+ <keyword match="Delegate" />
+ <keyword match="Delegate" />
+ <keyword match="Delegate" />
+ <keyword match="DelegationPermission" />
+ <keyword match="DESedeKeySpec" />
+ <keyword match="DesignMode" />
+ <keyword match="DESKeySpec" />
+ <keyword match="DesktopIconUI" />
+ <keyword match="DesktopManager" />
+ <keyword match="DesktopPaneUI" />
+ <keyword match="Destination" />
+ <keyword match="Destroyable" />
+ <keyword match="DestroyFailedException" />
+ <keyword match="DGC" />
+ <keyword match="DHGenParameterSpec" />
+ <keyword match="DHKey" />
+ <keyword match="DHParameterSpec" />
+ <keyword match="DHPrivateKey" />
+ <keyword match="DHPrivateKeySpec" />
+ <keyword match="DHPublicKey" />
+ <keyword match="DHPublicKeySpec" />
+ <keyword match="Dialog" />
+ <keyword match="Dictionary" />
+ <keyword match="DigestException" />
+ <keyword match="DigestInputStream" />
+ <keyword match="DigestOutputStream" />
+ <keyword match="Dimension" />
+ <keyword match="Dimension2D" />
+ <keyword match="DimensionUIResource" />
+ <keyword match="DirContext" />
+ <keyword match="DirectColorModel" />
+ <keyword match="DirectoryManager" />
+ <keyword match="DirObjectFactory" />
+ <keyword match="DirStateFactory" />
+
+ <keyword match="DisplayMode" />
+ <keyword match="DnDConstants" />
+ <keyword match="Doc" />
+ <keyword match="DocAttribute" />
+ <keyword match="DocAttributeSet" />
+ <keyword match="DocFlavor" />
+
+
+
+
+
+
+
+ <keyword match="DocPrintJob" />
+ <keyword match="Document" />
+ <keyword match="Document" />
+ <keyword match="DocumentBuilder" />
+ <keyword match="DocumentBuilderFactory" />
+ <keyword match="DocumentEvent" />
+
+
+ <keyword match="DocumentFilter" />
+
+ <keyword match="DocumentFragment" />
+ <keyword match="DocumentHandler" />
+ <keyword match="DocumentListener" />
+ <keyword match="DocumentName" />
+ <keyword match="DocumentParser" />
+ <keyword match="DocumentType" />
+ <keyword match="DomainCombiner" />
+ <keyword match="DomainManager" />
+ <keyword match="DomainManagerOperations" />
+ <keyword match="DOMException" />
+ <keyword match="DOMImplementation" />
+ <keyword match="DOMLocator" />
+ <keyword match="DOMResult" />
+ <keyword match="DOMSource" />
+ <keyword match="Double" />
+ <keyword match="DoubleBuffer" />
+ <keyword match="DoubleHolder" />
+ <keyword match="DoubleSeqHelper" />
+ <keyword match="DoubleSeqHolder" />
+ <keyword match="DragGestureEvent" />
+ <keyword match="DragGestureListener" />
+ <keyword match="DragGestureRecognizer" />
+ <keyword match="DragSource" />
+ <keyword match="DragSourceAdapter" />
+ <keyword match="DragSourceContext" />
+ <keyword match="DragSourceDragEvent" />
+ <keyword match="DragSourceDropEvent" />
+ <keyword match="DragSourceEvent" />
+ <keyword match="DragSourceListener" />
+ <keyword match="DragSourceMotionListener" />
+ <keyword match="Driver" />
+ <keyword match="DriverManager" />
+ <keyword match="DriverPropertyInfo" />
+ <keyword match="DropTarget" />
+
+ <keyword match="DropTargetAdapter" />
+ <keyword match="DropTargetContext" />
+ <keyword match="DropTargetDragEvent" />
+ <keyword match="DropTargetDropEvent" />
+ <keyword match="DropTargetEvent" />
+ <keyword match="DropTargetListener" />
+ <keyword match="DSAKey" />
+ <keyword match="DSAKeyPairGenerator" />
+ <keyword match="DSAParameterSpec" />
+ <keyword match="DSAParams" />
+ <keyword match="DSAPrivateKey" />
+ <keyword match="DSAPrivateKeySpec" />
+ <keyword match="DSAPublicKey" />
+ <keyword match="DSAPublicKeySpec" />
+ <keyword match="DTD" />
+ <keyword match="DTDConstants" />
+ <keyword match="DTDHandler" />
+ <keyword match="DuplicateName" />
+ <keyword match="DuplicateNameHelper" />
+ <keyword match="DynamicImplementation" />
+ <keyword match="DynamicImplementation" />
+ <keyword match="DynAny" />
+ <keyword match="DynAny" />
+ <keyword match="DynAnyFactory" />
+ <keyword match="DynAnyFactoryHelper" />
+ <keyword match="DynAnyFactoryOperations" />
+ <keyword match="DynAnyHelper" />
+ <keyword match="DynAnyOperations" />
+ <keyword match="DynAnySeqHelper" />
+ <keyword match="DynArray" />
+ <keyword match="DynArray" />
+ <keyword match="DynArrayHelper" />
+ <keyword match="DynArrayOperations" />
+ <keyword match="DynEnum" />
+ <keyword match="DynEnum" />
+ <keyword match="DynEnumHelper" />
+ <keyword match="DynEnumOperations" />
+ <keyword match="DynFixed" />
+ <keyword match="DynFixed" />
+ <keyword match="DynFixedHelper" />
+ <keyword match="DynFixedOperations" />
+ <keyword match="DynSequence" />
+ <keyword match="DynSequence" />
+ <keyword match="DynSequenceHelper" />
+ <keyword match="DynSequenceOperations" />
+ <keyword match="DynStruct" />
+ <keyword match="DynStruct" />
+ <keyword match="DynStructHelper" />
+ <keyword match="DynStructOperations" />
+ <keyword match="DynUnion" />
+ <keyword match="DynUnion" />
+ <keyword match="DynUnionHelper" />
+ <keyword match="DynUnionOperations" />
+ <keyword match="DynValue" />
+ <keyword match="DynValue" />
+ <keyword match="DynValueBox" />
+ <keyword match="DynValueBoxOperations" />
+ <keyword match="DynValueCommon" />
+ <keyword match="DynValueCommonOperations" />
+ <keyword match="DynValueHelper" />
+ <keyword match="DynValueOperations" />
+ <keyword match="EditorKit" />
+ <keyword match="Element" />
+ <keyword match="Element" />
+ <keyword match="Element" />
+ <keyword match="ElementIterator" />
+ <keyword match="Ellipse2D" />
+
+
+ <keyword match="EmptyBorder" />
+ <keyword match="EmptyStackException" />
+ <keyword match="EncodedKeySpec" />
+ <keyword match="Encoder" />
+ <keyword match="Encoding" />
+ <keyword match="ENCODING_CDR_ENCAPS" />
+ <keyword match="EncryptedPrivateKeyInfo" />
+ <keyword match="Entity" />
+ <keyword match="Entity" />
+ <keyword match="EntityReference" />
+ <keyword match="EntityResolver" />
+ <keyword match="EnumControl" />
+
+ <keyword match="Enumeration" />
+ <keyword match="EnumSyntax" />
+ <keyword match="Environment" />
+ <keyword match="EOFException" />
+ <keyword match="Error" />
+ <keyword match="ErrorHandler" />
+ <keyword match="ErrorListener" />
+ <keyword match="ErrorManager" />
+ <keyword match="EtchedBorder" />
+ <keyword match="Event" />
+ <keyword match="EventContext" />
+ <keyword match="EventDirContext" />
+ <keyword match="EventHandler" />
+ <keyword match="EventListener" />
+ <keyword match="EventListenerList" />
+ <keyword match="EventListenerProxy" />
+ <keyword match="EventObject" />
+ <keyword match="EventQueue" />
+ <keyword match="EventSetDescriptor" />
+ <keyword match="Exception" />
+ <keyword match="ExceptionInInitializerError" />
+ <keyword match="ExceptionList" />
+ <keyword match="ExceptionListener" />
+ <keyword match="ExemptionMechanism" />
+ <keyword match="ExemptionMechanismException" />
+ <keyword match="ExemptionMechanismSpi" />
+ <keyword match="ExpandVetoException" />
+ <keyword match="ExportException" />
+ <keyword match="Expression" />
+ <keyword match="ExtendedRequest" />
+ <keyword match="ExtendedResponse" />
+ <keyword match="Externalizable" />
+ <keyword match="FactoryConfigurationError" />
+ <keyword match="FailedLoginException" />
+ <keyword match="FeatureDescriptor" />
+ <keyword match="Fidelity" />
+ <keyword match="Field" />
+ <keyword match="FieldNameHelper" />
+ <keyword match="FieldNameHelper" />
+ <keyword match="FieldPosition" />
+ <keyword match="FieldView" />
+ <keyword match="File" />
+ <keyword match="FileCacheImageInputStream" />
+ <keyword match="FileCacheImageOutputStream" />
+ <keyword match="FileChannel" />
+
+ <keyword match="FileChooserUI" />
+ <keyword match="FileDescriptor" />
+ <keyword match="FileDialog" />
+ <keyword match="FileFilter" />
+ <keyword match="FileFilter" />
+ <keyword match="FileHandler" />
+ <keyword match="FileImageInputStream" />
+ <keyword match="FileImageOutputStream" />
+ <keyword match="FileInputStream" />
+ <keyword match="FileLock" />
+ <keyword match="FileLockInterruptionException" />
+ <keyword match="FilenameFilter" />
+ <keyword match="FileNameMap" />
+ <keyword match="FileNotFoundException" />
+ <keyword match="FileOutputStream" />
+ <keyword match="FilePermission" />
+ <keyword match="FileReader" />
+ <keyword match="FileSystemView" />
+ <keyword match="FileView" />
+ <keyword match="FileWriter" />
+ <keyword match="Filter" />
+ <keyword match="FilteredImageSource" />
+ <keyword match="FilterInputStream" />
+ <keyword match="FilterOutputStream" />
+ <keyword match="FilterReader" />
+ <keyword match="FilterWriter" />
+ <keyword match="Finishings" />
+ <keyword match="FixedHeightLayoutCache" />
+ <keyword match="FixedHolder" />
+ <keyword match="FlatteningPathIterator" />
+ <keyword match="FlavorException" />
+ <keyword match="FlavorMap" />
+ <keyword match="FlavorTable" />
+ <keyword match="Float" />
+ <keyword match="FloatBuffer" />
+ <keyword match="FloatControl" />
+
+ <keyword match="FloatHolder" />
+ <keyword match="FloatSeqHelper" />
+ <keyword match="FloatSeqHolder" />
+ <keyword match="FlowLayout" />
+ <keyword match="FlowView" />
+
+ <keyword match="FocusAdapter" />
+ <keyword match="FocusEvent" />
+ <keyword match="FocusListener" />
+ <keyword match="FocusManager" />
+ <keyword match="FocusTraversalPolicy" />
+ <keyword match="Font" />
+ <keyword match="FontFormatException" />
+ <keyword match="FontMetrics" />
+ <keyword match="FontRenderContext" />
+ <keyword match="FontUIResource" />
+ <keyword match="Format" />
+
+ <keyword match="FormatConversionProvider" />
+ <keyword match="FormatMismatch" />
+ <keyword match="FormatMismatchHelper" />
+ <keyword match="Formatter" />
+ <keyword match="FormView" />
+ <keyword match="ForwardRequest" />
+ <keyword match="ForwardRequest" />
+ <keyword match="ForwardRequestHelper" />
+ <keyword match="ForwardRequestHelper" />
+ <keyword match="Frame" />
+ <keyword match="FREE_MEM" />
+ <keyword match="GapContent" />
+ <keyword match="GatheringByteChannel" />
+ <keyword match="GeneralPath" />
+ <keyword match="GeneralSecurityException" />
+ <keyword match="GlyphJustificationInfo" />
+ <keyword match="GlyphMetrics" />
+ <keyword match="GlyphVector" />
+ <keyword match="GlyphView" />
+
+ <keyword match="GradientPaint" />
+ <keyword match="GraphicAttribute" />
+ <keyword match="Graphics" />
+ <keyword match="Graphics2D" />
+ <keyword match="GraphicsConfigTemplate" />
+ <keyword match="GraphicsConfiguration" />
+ <keyword match="GraphicsDevice" />
+ <keyword match="GraphicsEnvironment" />
+ <keyword match="GrayFilter" />
+ <keyword match="GregorianCalendar" />
+ <keyword match="GridBagConstraints" />
+ <keyword match="GridBagLayout" />
+ <keyword match="GridLayout" />
+ <keyword match="Group" />
+ <keyword match="GSSContext" />
+ <keyword match="GSSCredential" />
+ <keyword match="GSSException" />
+ <keyword match="GSSManager" />
+ <keyword match="GSSName" />
+ <keyword match="Guard" />
+ <keyword match="GuardedObject" />
+ <keyword match="GZIPInputStream" />
+ <keyword match="GZIPOutputStream" />
+ <keyword match="Handler" />
+ <keyword match="HandlerBase" />
+ <keyword match="HandshakeCompletedEvent" />
+ <keyword match="HandshakeCompletedListener" />
+ <keyword match="HasControls" />
+ <keyword match="HashAttributeSet" />
+ <keyword match="HashDocAttributeSet" />
+ <keyword match="HashMap" />
+ <keyword match="HashPrintJobAttributeSet" />
+ <keyword match="HashPrintRequestAttributeSet" />
+ <keyword match="HashPrintServiceAttributeSet" />
+ <keyword match="HashSet" />
+ <keyword match="Hashtable" />
+ <keyword match="HeadlessException" />
+ <keyword match="HierarchyBoundsAdapter" />
+ <keyword match="HierarchyBoundsListener" />
+ <keyword match="HierarchyEvent" />
+ <keyword match="HierarchyListener" />
+ <keyword match="Highlighter" />
+
+
+ <keyword match="HostnameVerifier" />
+ <keyword match="HTML" />
+
+
+
+ <keyword match="HTMLDocument" />
+
+ <keyword match="HTMLEditorKit" />
+
+
+
+
+
+
+ <keyword match="HTMLFrameHyperlinkEvent" />
+ <keyword match="HTMLWriter" />
+ <keyword match="HttpsURLConnection" />
+ <keyword match="HttpURLConnection" />
+ <keyword match="HyperlinkEvent" />
+
+ <keyword match="HyperlinkListener" />
+ <keyword match="ICC_ColorSpace" />
+ <keyword match="ICC_Profile" />
+ <keyword match="ICC_ProfileGray" />
+ <keyword match="ICC_ProfileRGB" />
+ <keyword match="Icon" />
+ <keyword match="IconUIResource" />
+ <keyword match="IconView" />
+ <keyword match="ID_ASSIGNMENT_POLICY_ID" />
+ <keyword match="ID_UNIQUENESS_POLICY_ID" />
+ <keyword match="IdAssignmentPolicy" />
+ <keyword match="IdAssignmentPolicyOperations" />
+ <keyword match="IdAssignmentPolicyValue" />
+ <keyword match="IdentifierHelper" />
+ <keyword match="Identity" />
+ <keyword match="IdentityHashMap" />
+ <keyword match="IdentityScope" />
+ <keyword match="IDLEntity" />
+ <keyword match="IDLType" />
+ <keyword match="IDLTypeHelper" />
+ <keyword match="IDLTypeOperations" />
+ <keyword match="IdUniquenessPolicy" />
+ <keyword match="IdUniquenessPolicyOperations" />
+ <keyword match="IdUniquenessPolicyValue" />
+ <keyword match="IIOByteBuffer" />
+ <keyword match="IIOException" />
+ <keyword match="IIOImage" />
+ <keyword match="IIOInvalidTreeException" />
+ <keyword match="IIOMetadata" />
+ <keyword match="IIOMetadataController" />
+ <keyword match="IIOMetadataFormat" />
+ <keyword match="IIOMetadataFormatImpl" />
+ <keyword match="IIOMetadataNode" />
+ <keyword match="IIOParam" />
+ <keyword match="IIOParamController" />
+ <keyword match="IIOReadProgressListener" />
+ <keyword match="IIOReadUpdateListener" />
+ <keyword match="IIOReadWarningListener" />
+ <keyword match="IIORegistry" />
+ <keyword match="IIOServiceProvider" />
+ <keyword match="IIOWriteProgressListener" />
+ <keyword match="IIOWriteWarningListener" />
+ <keyword match="IllegalAccessError" />
+ <keyword match="IllegalAccessException" />
+ <keyword match="IllegalArgumentException" />
+ <keyword match="IllegalBlockingModeException" />
+ <keyword match="IllegalBlockSizeException" />
+ <keyword match="IllegalCharsetNameException" />
+ <keyword match="IllegalComponentStateException" />
+ <keyword match="IllegalMonitorStateException" />
+ <keyword match="IllegalPathStateException" />
+ <keyword match="IllegalSelectorException" />
+ <keyword match="IllegalStateException" />
+ <keyword match="IllegalThreadStateException" />
+ <keyword match="Image" />
+ <keyword match="ImageCapabilities" />
+ <keyword match="ImageConsumer" />
+ <keyword match="ImageFilter" />
+ <keyword match="ImageGraphicAttribute" />
+ <keyword match="ImageIcon" />
+ <keyword match="ImageInputStream" />
+ <keyword match="ImageInputStreamImpl" />
+ <keyword match="ImageInputStreamSpi" />
+ <keyword match="ImageIO" />
+ <keyword match="ImageObserver" />
+ <keyword match="ImageOutputStream" />
+ <keyword match="ImageOutputStreamImpl" />
+ <keyword match="ImageOutputStreamSpi" />
+ <keyword match="ImageProducer" />
+ <keyword match="ImageReader" />
+ <keyword match="ImageReaderSpi" />
+ <keyword match="ImageReaderWriterSpi" />
+ <keyword match="ImageReadParam" />
+ <keyword match="ImageTranscoder" />
+ <keyword match="ImageTranscoderSpi" />
+ <keyword match="ImageTypeSpecifier" />
+ <keyword match="ImageView" />
+ <keyword match="ImageWriteParam" />
+ <keyword match="ImageWriter" />
+ <keyword match="ImageWriterSpi" />
+ <keyword match="ImagingOpException" />
+ <keyword match="IMP_LIMIT" />
+ <keyword match="IMPLICIT_ACTIVATION_POLICY_ID" />
+ <keyword match="ImplicitActivationPolicy" />
+ <keyword match="ImplicitActivationPolicyOperations" />
+ <keyword match="ImplicitActivationPolicyValue" />
+ <keyword match="IncompatibleClassChangeError" />
+ <keyword match="InconsistentTypeCode" />
+ <keyword match="InconsistentTypeCode" />
+ <keyword match="InconsistentTypeCodeHelper" />
+ <keyword match="IndexColorModel" />
+ <keyword match="IndexedPropertyDescriptor" />
+ <keyword match="IndexOutOfBoundsException" />
+ <keyword match="IndirectionException" />
+ <keyword match="Inet4Address" />
+ <keyword match="Inet6Address" />
+ <keyword match="InetAddress" />
+ <keyword match="InetSocketAddress" />
+ <keyword match="Inflater" />
+ <keyword match="InflaterInputStream" />
+ <keyword match="InheritableThreadLocal" />
+ <keyword match="InitialContext" />
+ <keyword match="InitialContextFactory" />
+ <keyword match="InitialContextFactoryBuilder" />
+ <keyword match="InitialDirContext" />
+ <keyword match="INITIALIZE" />
+ <keyword match="InitialLdapContext" />
+ <keyword match="InlineView" />
+ <keyword match="InputContext" />
+ <keyword match="InputEvent" />
+ <keyword match="InputMap" />
+ <keyword match="InputMapUIResource" />
+ <keyword match="InputMethod" />
+ <keyword match="InputMethodContext" />
+ <keyword match="InputMethodDescriptor" />
+ <keyword match="InputMethodEvent" />
+ <keyword match="InputMethodHighlight" />
+ <keyword match="InputMethodListener" />
+ <keyword match="InputMethodRequests" />
+ <keyword match="InputSource" />
+ <keyword match="InputStream" />
+ <keyword match="InputStream" />
+ <keyword match="InputStream" />
+ <keyword match="InputStreamReader" />
+ <keyword match="InputSubset" />
+ <keyword match="InputVerifier" />
+ <keyword match="Insets" />
+ <keyword match="InsetsUIResource" />
+ <keyword match="InstantiationError" />
+ <keyword match="InstantiationException" />
+ <keyword match="Instrument" />
+ <keyword match="InsufficientResourcesException" />
+ <keyword match="IntBuffer" />
+ <keyword match="Integer" />
+ <keyword match="IntegerSyntax" />
+ <keyword match="Interceptor" />
+ <keyword match="InterceptorOperations" />
+ <keyword match="INTERNAL" />
+ <keyword match="InternalError" />
+ <keyword match="InternalFrameAdapter" />
+ <keyword match="InternalFrameEvent" />
+ <keyword match="InternalFrameFocusTraversalPolicy" />
+ <keyword match="InternalFrameListener" />
+ <keyword match="InternalFrameUI" />
+ <keyword match="InternationalFormatter" />
+ <keyword match="InterruptedException" />
+ <keyword match="InterruptedIOException" />
+ <keyword match="InterruptedNamingException" />
+ <keyword match="InterruptibleChannel" />
+ <keyword match="INTF_REPOS" />
+ <keyword match="IntHolder" />
+ <keyword match="IntrospectionException" />
+ <keyword match="Introspector" />
+ <keyword match="INV_FLAG" />
+ <keyword match="INV_IDENT" />
+ <keyword match="INV_OBJREF" />
+ <keyword match="INV_POLICY" />
+ <keyword match="Invalid" />
+ <keyword match="INVALID_TRANSACTION" />
+ <keyword match="InvalidAddress" />
+ <keyword match="InvalidAddressHelper" />
+ <keyword match="InvalidAddressHolder" />
+ <keyword match="InvalidAlgorithmParameterException" />
+ <keyword match="InvalidAttributeIdentifierException" />
+ <keyword match="InvalidAttributesException" />
+ <keyword match="InvalidAttributeValueException" />
+ <keyword match="InvalidClassException" />
+ <keyword match="InvalidDnDOperationException" />
+ <keyword match="InvalidKeyException" />
+ <keyword match="InvalidKeySpecException" />
+ <keyword match="InvalidMarkException" />
+ <keyword match="InvalidMidiDataException" />
+ <keyword match="InvalidName" />
+ <keyword match="InvalidName" />
+ <keyword match="InvalidName" />
+ <keyword match="InvalidNameException" />
+ <keyword match="InvalidNameHelper" />
+ <keyword match="InvalidNameHelper" />
+ <keyword match="InvalidNameHolder" />
+ <keyword match="InvalidObjectException" />
+ <keyword match="InvalidParameterException" />
+ <keyword match="InvalidParameterSpecException" />
+ <keyword match="InvalidPolicy" />
+ <keyword match="InvalidPolicyHelper" />
+ <keyword match="InvalidPreferencesFormatException" />
+ <keyword match="InvalidSearchControlsException" />
+ <keyword match="InvalidSearchFilterException" />
+ <keyword match="InvalidSeq" />
+ <keyword match="InvalidSlot" />
+ <keyword match="InvalidSlotHelper" />
+ <keyword match="InvalidTransactionException" />
+ <keyword match="InvalidTypeForEncoding" />
+ <keyword match="InvalidTypeForEncodingHelper" />
+ <keyword match="InvalidValue" />
+ <keyword match="InvalidValue" />
+ <keyword match="InvalidValueHelper" />
+ <keyword match="InvocationEvent" />
+ <keyword match="InvocationHandler" />
+ <keyword match="InvocationTargetException" />
+ <keyword match="InvokeHandler" />
+ <keyword match="IOException" />
+ <keyword match="IOR" />
+ <keyword match="IORHelper" />
+ <keyword match="IORHolder" />
+ <keyword match="IORInfo" />
+ <keyword match="IORInfoOperations" />
+ <keyword match="IORInterceptor" />
+ <keyword match="IORInterceptorOperations" />
+ <keyword match="IRObject" />
+ <keyword match="IRObjectOperations" />
+ <keyword match="IstringHelper" />
+ <keyword match="ItemEvent" />
+ <keyword match="ItemListener" />
+ <keyword match="ItemSelectable" />
+ <keyword match="Iterator" />
+ <keyword match="IvParameterSpec" />
+ <keyword match="JApplet" />
+ <keyword match="JarEntry" />
+ <keyword match="JarException" />
+ <keyword match="JarFile" />
+ <keyword match="JarInputStream" />
+ <keyword match="JarOutputStream" />
+ <keyword match="JarURLConnection" />
+ <keyword match="JButton" />
+ <keyword match="JCheckBox" />
+ <keyword match="JCheckBoxMenuItem" />
+ <keyword match="JColorChooser" />
+ <keyword match="JComboBox" />
+
+ <keyword match="JComponent" />
+ <keyword match="JDesktopPane" />
+ <keyword match="JDialog" />
+ <keyword match="JEditorPane" />
+ <keyword match="JFileChooser" />
+ <keyword match="JFormattedTextField" />
+
+
+ <keyword match="JFrame" />
+ <keyword match="JInternalFrame" />
+
+ <keyword match="JLabel" />
+ <keyword match="JLayeredPane" />
+ <keyword match="JList" />
+ <keyword match="JMenu" />
+ <keyword match="JMenuBar" />
+ <keyword match="JMenuItem" />
+ <keyword match="JobAttributes" />
+
+
+
+
+
+ <keyword match="JobHoldUntil" />
+ <keyword match="JobImpressions" />
+ <keyword match="JobImpressionsCompleted" />
+ <keyword match="JobImpressionsSupported" />
+ <keyword match="JobKOctets" />
+ <keyword match="JobKOctetsProcessed" />
+ <keyword match="JobKOctetsSupported" />
+ <keyword match="JobMediaSheets" />
+ <keyword match="JobMediaSheetsCompleted" />
+ <keyword match="JobMediaSheetsSupported" />
+ <keyword match="JobMessageFromOperator" />
+ <keyword match="JobName" />
+ <keyword match="JobOriginatingUserName" />
+ <keyword match="JobPriority" />
+ <keyword match="JobPrioritySupported" />
+ <keyword match="JobSheets" />
+ <keyword match="JobState" />
+ <keyword match="JobStateReason" />
+ <keyword match="JobStateReasons" />
+ <keyword match="JOptionPane" />
+ <keyword match="JPanel" />
+ <keyword match="JPasswordField" />
+ <keyword match="JPEGHuffmanTable" />
+ <keyword match="JPEGImageReadParam" />
+ <keyword match="JPEGImageWriteParam" />
+ <keyword match="JPEGQTable" />
+ <keyword match="JPopupMenu" />
+
+ <keyword match="JProgressBar" />
+ <keyword match="JRadioButton" />
+ <keyword match="JRadioButtonMenuItem" />
+ <keyword match="JRootPane" />
+ <keyword match="JScrollBar" />
+ <keyword match="JScrollPane" />
+ <keyword match="JSeparator" />
+ <keyword match="JSlider" />
+ <keyword match="JSpinner" />
+
+
+
+
+ <keyword match="JSplitPane" />
+ <keyword match="JTabbedPane" />
+ <keyword match="JTable" />
+ <keyword match="JTableHeader" />
+ <keyword match="JTextArea" />
+ <keyword match="JTextComponent" />
+
+ <keyword match="JTextField" />
+ <keyword match="JTextPane" />
+ <keyword match="JToggleButton" />
+
+ <keyword match="JToolBar" />
+
+ <keyword match="JToolTip" />
+ <keyword match="JTree" />
+
+
+ <keyword match="JViewport" />
+ <keyword match="JWindow" />
+ <keyword match="KerberosKey" />
+ <keyword match="KerberosPrincipal" />
+ <keyword match="KerberosTicket" />
+ <keyword match="Kernel" />
+ <keyword match="Key" />
+ <keyword match="KeyAdapter" />
+ <keyword match="KeyAgreement" />
+ <keyword match="KeyAgreementSpi" />
+ <keyword match="KeyboardFocusManager" />
+ <keyword match="KeyEvent" />
+ <keyword match="KeyEventDispatcher" />
+ <keyword match="KeyEventPostProcessor" />
+ <keyword match="KeyException" />
+ <keyword match="KeyFactory" />
+ <keyword match="KeyFactorySpi" />
+ <keyword match="KeyGenerator" />
+ <keyword match="KeyGeneratorSpi" />
+ <keyword match="KeyListener" />
+ <keyword match="KeyManagementException" />
+ <keyword match="KeyManager" />
+ <keyword match="KeyManagerFactory" />
+ <keyword match="KeyManagerFactorySpi" />
+ <keyword match="Keymap" />
+ <keyword match="KeyPair" />
+ <keyword match="KeyPairGenerator" />
+ <keyword match="KeyPairGeneratorSpi" />
+ <keyword match="KeySpec" />
+ <keyword match="KeyStore" />
+ <keyword match="KeyStoreException" />
+ <keyword match="KeyStoreSpi" />
+ <keyword match="KeyStroke" />
+ <keyword match="Label" />
+ <keyword match="LabelUI" />
+ <keyword match="LabelView" />
+ <keyword match="LanguageCallback" />
+ <keyword match="LastOwnerException" />
+ <keyword match="LayeredHighlighter" />
+
+ <keyword match="LayoutFocusTraversalPolicy" />
+ <keyword match="LayoutManager" />
+ <keyword match="LayoutManager2" />
+ <keyword match="LayoutQueue" />
+ <keyword match="LDAPCertStoreParameters" />
+ <keyword match="LdapContext" />
+ <keyword match="LdapReferralException" />
+ <keyword match="Lease" />
+ <keyword match="Level" />
+ <keyword match="LexicalHandler" />
+ <keyword match="LIFESPAN_POLICY_ID" />
+ <keyword match="LifespanPolicy" />
+ <keyword match="LifespanPolicyOperations" />
+ <keyword match="LifespanPolicyValue" />
+ <keyword match="LimitExceededException" />
+ <keyword match="Line" />
+
+ <keyword match="Line2D" />
+
+
+ <keyword match="LineBorder" />
+ <keyword match="LineBreakMeasurer" />
+ <keyword match="LineEvent" />
+
+ <keyword match="LineListener" />
+ <keyword match="LineMetrics" />
+ <keyword match="LineNumberInputStream" />
+ <keyword match="LineNumberReader" />
+ <keyword match="LineUnavailableException" />
+ <keyword match="LinkageError" />
+ <keyword match="LinkedHashMap" />
+ <keyword match="LinkedHashSet" />
+ <keyword match="LinkedList" />
+ <keyword match="LinkException" />
+ <keyword match="LinkLoopException" />
+ <keyword match="LinkRef" />
+ <keyword match="List" />
+ <keyword match="List" />
+ <keyword match="ListCellRenderer" />
+ <keyword match="ListDataEvent" />
+ <keyword match="ListDataListener" />
+ <keyword match="ListIterator" />
+ <keyword match="ListModel" />
+ <keyword match="ListResourceBundle" />
+ <keyword match="ListSelectionEvent" />
+ <keyword match="ListSelectionListener" />
+ <keyword match="ListSelectionModel" />
+ <keyword match="ListUI" />
+ <keyword match="ListView" />
+ <keyword match="LoaderHandler" />
+ <keyword match="Locale" />
+ <keyword match="LocalObject" />
+ <keyword match="LocateRegistry" />
+ <keyword match="LOCATION_FORWARD" />
+ <keyword match="Locator" />
+ <keyword match="LocatorImpl" />
+ <keyword match="Logger" />
+ <keyword match="LoggingPermission" />
+ <keyword match="LoginContext" />
+ <keyword match="LoginException" />
+ <keyword match="LoginModule" />
+ <keyword match="LogManager" />
+ <keyword match="LogRecord" />
+ <keyword match="LogStream" />
+ <keyword match="Long" />
+ <keyword match="LongBuffer" />
+ <keyword match="LongHolder" />
+ <keyword match="LongLongSeqHelper" />
+ <keyword match="LongLongSeqHolder" />
+ <keyword match="LongSeqHelper" />
+ <keyword match="LongSeqHolder" />
+ <keyword match="LookAndFeel" />
+ <keyword match="LookupOp" />
+ <keyword match="LookupTable" />
+ <keyword match="Mac" />
+ <keyword match="MacSpi" />
+ <keyword match="MalformedInputException" />
+ <keyword match="MalformedLinkException" />
+ <keyword match="MalformedURLException" />
+ <keyword match="ManagerFactoryParameters" />
+ <keyword match="Manifest" />
+ <keyword match="Map" />
+
+ <keyword match="MappedByteBuffer" />
+ <keyword match="MARSHAL" />
+ <keyword match="MarshalException" />
+ <keyword match="MarshalledObject" />
+ <keyword match="MaskFormatter" />
+ <keyword match="Matcher" />
+ <keyword match="Math" />
+ <keyword match="MatteBorder" />
+ <keyword match="Media" />
+ <keyword match="MediaName" />
+ <keyword match="MediaPrintableArea" />
+ <keyword match="MediaSize" />
+
+
+
+
+
+ <keyword match="MediaSizeName" />
+ <keyword match="MediaTracker" />
+ <keyword match="MediaTray" />
+ <keyword match="Member" />
+ <keyword match="MemoryCacheImageInputStream" />
+ <keyword match="MemoryCacheImageOutputStream" />
+ <keyword match="MemoryHandler" />
+ <keyword match="MemoryImageSource" />
+ <keyword match="Menu" />
+ <keyword match="MenuBar" />
+ <keyword match="MenuBarUI" />
+ <keyword match="MenuComponent" />
+ <keyword match="MenuContainer" />
+ <keyword match="MenuDragMouseEvent" />
+ <keyword match="MenuDragMouseListener" />
+ <keyword match="MenuElement" />
+ <keyword match="MenuEvent" />
+ <keyword match="MenuItem" />
+ <keyword match="MenuItemUI" />
+ <keyword match="MenuKeyEvent" />
+ <keyword match="MenuKeyListener" />
+ <keyword match="MenuListener" />
+ <keyword match="MenuSelectionManager" />
+ <keyword match="MenuShortcut" />
+ <keyword match="MessageDigest" />
+ <keyword match="MessageDigestSpi" />
+ <keyword match="MessageFormat" />
+
+ <keyword match="MessageProp" />
+ <keyword match="MetaEventListener" />
+ <keyword match="MetalBorders" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <keyword match="MetalButtonUI" />
+ <keyword match="MetalCheckBoxIcon" />
+ <keyword match="MetalCheckBoxUI" />
+ <keyword match="MetalComboBoxButton" />
+ <keyword match="MetalComboBoxEditor" />
+
+ <keyword match="MetalComboBoxIcon" />
+ <keyword match="MetalComboBoxUI" />
+ <keyword match="MetalDesktopIconUI" />
+ <keyword match="MetalFileChooserUI" />
+ <keyword match="MetalIconFactory" />
+
+
+
+
+
+
+ <keyword match="MetalInternalFrameTitlePane" />
+ <keyword match="MetalInternalFrameUI" />
+ <keyword match="MetalLabelUI" />
+ <keyword match="MetalLookAndFeel" />
+ <keyword match="MetalPopupMenuSeparatorUI" />
+ <keyword match="MetalProgressBarUI" />
+ <keyword match="MetalRadioButtonUI" />
+ <keyword match="MetalRootPaneUI" />
+ <keyword match="MetalScrollBarUI" />
+ <keyword match="MetalScrollButton" />
+ <keyword match="MetalScrollPaneUI" />
+ <keyword match="MetalSeparatorUI" />
+ <keyword match="MetalSliderUI" />
+ <keyword match="MetalSplitPaneUI" />
+ <keyword match="MetalTabbedPaneUI" />
+ <keyword match="MetalTextFieldUI" />
+ <keyword match="MetalTheme" />
+ <keyword match="MetalToggleButtonUI" />
+ <keyword match="MetalToolBarUI" />
+ <keyword match="MetalToolTipUI" />
+ <keyword match="MetalTreeUI" />
+ <keyword match="MetaMessage" />
+ <keyword match="Method" />
+ <keyword match="MethodDescriptor" />
+ <keyword match="MidiChannel" />
+ <keyword match="MidiDevice" />
+
+ <keyword match="MidiDeviceProvider" />
+ <keyword match="MidiEvent" />
+ <keyword match="MidiFileFormat" />
+ <keyword match="MidiFileReader" />
+ <keyword match="MidiFileWriter" />
+ <keyword match="MidiMessage" />
+ <keyword match="MidiSystem" />
+ <keyword match="MidiUnavailableException" />
+ <keyword match="MimeTypeParseException" />
+ <keyword match="MinimalHTMLWriter" />
+ <keyword match="MissingResourceException" />
+ <keyword match="Mixer" />
+
+ <keyword match="MixerProvider" />
+ <keyword match="ModificationItem" />
+ <keyword match="Modifier" />
+ <keyword match="MouseAdapter" />
+ <keyword match="MouseDragGestureRecognizer" />
+ <keyword match="MouseEvent" />
+ <keyword match="MouseInputAdapter" />
+ <keyword match="MouseInputListener" />
+ <keyword match="MouseListener" />
+ <keyword match="MouseMotionAdapter" />
+ <keyword match="MouseMotionListener" />
+ <keyword match="MouseWheelEvent" />
+ <keyword match="MouseWheelListener" />
+ <keyword match="MultiButtonUI" />
+ <keyword match="MulticastSocket" />
+ <keyword match="MultiColorChooserUI" />
+ <keyword match="MultiComboBoxUI" />
+ <keyword match="MultiDesktopIconUI" />
+ <keyword match="MultiDesktopPaneUI" />
+ <keyword match="MultiDoc" />
+ <keyword match="MultiDocPrintJob" />
+ <keyword match="MultiDocPrintService" />
+ <keyword match="MultiFileChooserUI" />
+ <keyword match="MultiInternalFrameUI" />
+ <keyword match="MultiLabelUI" />
+ <keyword match="MultiListUI" />
+ <keyword match="MultiLookAndFeel" />
+ <keyword match="MultiMenuBarUI" />
+ <keyword match="MultiMenuItemUI" />
+ <keyword match="MultiOptionPaneUI" />
+ <keyword match="MultiPanelUI" />
+ <keyword match="MultiPixelPackedSampleModel" />
+ <keyword match="MultipleComponentProfileHelper" />
+ <keyword match="MultipleComponentProfileHolder" />
+ <keyword match="MultipleDocumentHandling" />
+ <keyword match="MultipleMaster" />
+ <keyword match="MultiPopupMenuUI" />
+ <keyword match="MultiProgressBarUI" />
+ <keyword match="MultiRootPaneUI" />
+ <keyword match="MultiScrollBarUI" />
+ <keyword match="MultiScrollPaneUI" />
+ <keyword match="MultiSeparatorUI" />
+ <keyword match="MultiSliderUI" />
+ <keyword match="MultiSpinnerUI" />
+ <keyword match="MultiSplitPaneUI" />
+ <keyword match="MultiTabbedPaneUI" />
+ <keyword match="MultiTableHeaderUI" />
+ <keyword match="MultiTableUI" />
+ <keyword match="MultiTextUI" />
+ <keyword match="MultiToolBarUI" />
+ <keyword match="MultiToolTipUI" />
+ <keyword match="MultiTreeUI" />
+ <keyword match="MultiViewportUI" />
+ <keyword match="MutableAttributeSet" />
+ <keyword match="MutableComboBoxModel" />
+ <keyword match="MutableTreeNode" />
+ <keyword match="Name" />
+ <keyword match="NameAlreadyBoundException" />
+ <keyword match="NameCallback" />
+ <keyword match="NameClassPair" />
+ <keyword match="NameComponent" />
+ <keyword match="NameComponentHelper" />
+ <keyword match="NameComponentHolder" />
+ <keyword match="NamedNodeMap" />
+ <keyword match="NamedValue" />
+ <keyword match="NameDynAnyPair" />
+ <keyword match="NameDynAnyPairHelper" />
+ <keyword match="NameDynAnyPairSeqHelper" />
+ <keyword match="NameHelper" />
+ <keyword match="NameHolder" />
+ <keyword match="NameNotFoundException" />
+ <keyword match="NameParser" />
+ <keyword match="NamespaceChangeListener" />
+ <keyword match="NamespaceSupport" />
+ <keyword match="NameValuePair" />
+ <keyword match="NameValuePair" />
+ <keyword match="NameValuePairHelper" />
+ <keyword match="NameValuePairHelper" />
+ <keyword match="NameValuePairSeqHelper" />
+ <keyword match="Naming" />
+ <keyword match="NamingContext" />
+ <keyword match="NamingContextExt" />
+ <keyword match="NamingContextExtHelper" />
+ <keyword match="NamingContextExtHolder" />
+ <keyword match="NamingContextExtOperations" />
+ <keyword match="NamingContextExtPOA" />
+ <keyword match="NamingContextHelper" />
+ <keyword match="NamingContextHolder" />
+ <keyword match="NamingContextOperations" />
+ <keyword match="NamingContextPOA" />
+ <keyword match="NamingEnumeration" />
+ <keyword match="NamingEvent" />
+ <keyword match="NamingException" />
+ <keyword match="NamingExceptionEvent" />
+ <keyword match="NamingListener" />
+ <keyword match="NamingManager" />
+ <keyword match="NamingSecurityException" />
+ <keyword match="NavigationFilter" />
+
+ <keyword match="NegativeArraySizeException" />
+ <keyword match="NetPermission" />
+ <keyword match="NetworkInterface" />
+ <keyword match="NO_IMPLEMENT" />
+ <keyword match="NO_MEMORY" />
+ <keyword match="NO_PERMISSION" />
+ <keyword match="NO_RESOURCES" />
+ <keyword match="NO_RESPONSE" />
+ <keyword match="NoClassDefFoundError" />
+ <keyword match="NoConnectionPendingException" />
+ <keyword match="NoContext" />
+ <keyword match="NoContextHelper" />
+ <keyword match="Node" />
+ <keyword match="NodeChangeEvent" />
+ <keyword match="NodeChangeListener" />
+ <keyword match="NodeList" />
+ <keyword match="NoInitialContextException" />
+ <keyword match="NoninvertibleTransformException" />
+ <keyword match="NonReadableChannelException" />
+ <keyword match="NonWritableChannelException" />
+ <keyword match="NoPermissionException" />
+ <keyword match="NoRouteToHostException" />
+ <keyword match="NoServant" />
+ <keyword match="NoServantHelper" />
+ <keyword match="NoSuchAlgorithmException" />
+ <keyword match="NoSuchAttributeException" />
+ <keyword match="NoSuchElementException" />
+ <keyword match="NoSuchFieldError" />
+ <keyword match="NoSuchFieldException" />
+ <keyword match="NoSuchMethodError" />
+ <keyword match="NoSuchMethodException" />
+ <keyword match="NoSuchObjectException" />
+ <keyword match="NoSuchPaddingException" />
+ <keyword match="NoSuchProviderException" />
+ <keyword match="NotActiveException" />
+ <keyword match="Notation" />
+ <keyword match="NotBoundException" />
+ <keyword match="NotContextException" />
+ <keyword match="NotEmpty" />
+ <keyword match="NotEmptyHelper" />
+ <keyword match="NotEmptyHolder" />
+ <keyword match="NotFound" />
+ <keyword match="NotFoundHelper" />
+ <keyword match="NotFoundHolder" />
+ <keyword match="NotFoundReason" />
+ <keyword match="NotFoundReasonHelper" />
+ <keyword match="NotFoundReasonHolder" />
+ <keyword match="NotOwnerException" />
+ <keyword match="NotSerializableException" />
+ <keyword match="NotYetBoundException" />
+ <keyword match="NotYetConnectedException" />
+ <keyword match="NullCipher" />
+ <keyword match="NullPointerException" />
+ <keyword match="Number" />
+ <keyword match="NumberFormat" />
+
+ <keyword match="NumberFormatException" />
+ <keyword match="NumberFormatter" />
+ <keyword match="NumberOfDocuments" />
+ <keyword match="NumberOfInterveningJobs" />
+ <keyword match="NumberUp" />
+ <keyword match="NumberUpSupported" />
+ <keyword match="NumericShaper" />
+ <keyword match="NVList" />
+ <keyword match="OBJ_ADAPTER" />
+ <keyword match="Object" />
+ <keyword match="OBJECT_NOT_EXIST" />
+ <keyword match="ObjectAlreadyActive" />
+ <keyword match="ObjectAlreadyActiveHelper" />
+ <keyword match="ObjectChangeListener" />
+ <keyword match="ObjectFactory" />
+ <keyword match="ObjectFactoryBuilder" />
+ <keyword match="ObjectHelper" />
+ <keyword match="ObjectHolder" />
+ <keyword match="ObjectIdHelper" />
+ <keyword match="ObjectImpl" />
+ <keyword match="ObjectImpl" />
+ <keyword match="ObjectInput" />
+ <keyword match="ObjectInputStream" />
+
+ <keyword match="ObjectInputValidation" />
+ <keyword match="ObjectNotActive" />
+ <keyword match="ObjectNotActiveHelper" />
+ <keyword match="ObjectOutput" />
+ <keyword match="ObjectOutputStream" />
+
+ <keyword match="ObjectStreamClass" />
+ <keyword match="ObjectStreamConstants" />
+ <keyword match="ObjectStreamException" />
+ <keyword match="ObjectStreamField" />
+ <keyword match="ObjectView" />
+ <keyword match="ObjID" />
+ <keyword match="Observable" />
+ <keyword match="Observer" />
+ <keyword match="OctetSeqHelper" />
+ <keyword match="OctetSeqHolder" />
+ <keyword match="Oid" />
+ <keyword match="OMGVMCID" />
+ <keyword match="OpenType" />
+ <keyword match="Operation" />
+ <keyword match="OperationNotSupportedException" />
+ <keyword match="Option" />
+ <keyword match="OptionalDataException" />
+ <keyword match="OptionPaneUI" />
+ <keyword match="ORB" />
+ <keyword match="ORB" />
+ <keyword match="ORBInitializer" />
+ <keyword match="ORBInitializerOperations" />
+ <keyword match="ORBInitInfo" />
+ <keyword match="ORBInitInfoOperations" />
+ <keyword match="OrientationRequested" />
+ <keyword match="OutOfMemoryError" />
+ <keyword match="OutputDeviceAssigned" />
+ <keyword match="OutputKeys" />
+ <keyword match="OutputStream" />
+ <keyword match="OutputStream" />
+ <keyword match="OutputStream" />
+ <keyword match="OutputStreamWriter" />
+ <keyword match="OverlappingFileLockException" />
+ <keyword match="OverlayLayout" />
+ <keyword match="Owner" />
+ <keyword match="Package" />
+ <keyword match="PackedColorModel" />
+ <keyword match="Pageable" />
+ <keyword match="PageAttributes" />
+
+
+
+
+
+ <keyword match="PageFormat" />
+ <keyword match="PageRanges" />
+ <keyword match="PagesPerMinute" />
+ <keyword match="PagesPerMinuteColor" />
+ <keyword match="Paint" />
+ <keyword match="PaintContext" />
+ <keyword match="PaintEvent" />
+ <keyword match="Panel" />
+ <keyword match="PanelUI" />
+ <keyword match="Paper" />
+ <keyword match="ParagraphView" />
+ <keyword match="ParagraphView" />
+ <keyword match="Parameter" />
+ <keyword match="ParameterBlock" />
+ <keyword match="ParameterDescriptor" />
+ <keyword match="ParameterMetaData" />
+ <keyword match="ParameterMode" />
+ <keyword match="ParameterModeHelper" />
+ <keyword match="ParameterModeHolder" />
+ <keyword match="ParseException" />
+ <keyword match="ParsePosition" />
+ <keyword match="Parser" />
+ <keyword match="Parser" />
+ <keyword match="ParserAdapter" />
+ <keyword match="ParserConfigurationException" />
+ <keyword match="ParserDelegator" />
+ <keyword match="ParserFactory" />
+ <keyword match="PartialResultException" />
+ <keyword match="PasswordAuthentication" />
+ <keyword match="PasswordCallback" />
+ <keyword match="PasswordView" />
+ <keyword match="Patch" />
+ <keyword match="PathIterator" />
+ <keyword match="Pattern" />
+ <keyword match="PatternSyntaxException" />
+ <keyword match="PBEKey" />
+ <keyword match="PBEKeySpec" />
+ <keyword match="PBEParameterSpec" />
+ <keyword match="PDLOverrideSupported" />
+ <keyword match="Permission" />
+ <keyword match="Permission" />
+ <keyword match="PermissionCollection" />
+ <keyword match="Permissions" />
+ <keyword match="PERSIST_STORE" />
+ <keyword match="PersistenceDelegate" />
+ <keyword match="PhantomReference" />
+ <keyword match="Pipe" />
+
+
+ <keyword match="PipedInputStream" />
+ <keyword match="PipedOutputStream" />
+ <keyword match="PipedReader" />
+ <keyword match="PipedWriter" />
+ <keyword match="PixelGrabber" />
+ <keyword match="PixelInterleavedSampleModel" />
+ <keyword match="PKCS8EncodedKeySpec" />
+ <keyword match="PKIXBuilderParameters" />
+ <keyword match="PKIXCertPathBuilderResult" />
+ <keyword match="PKIXCertPathChecker" />
+ <keyword match="PKIXCertPathValidatorResult" />
+ <keyword match="PKIXParameters" />
+ <keyword match="PlainDocument" />
+ <keyword match="PlainView" />
+ <keyword match="POA" />
+ <keyword match="POAHelper" />
+ <keyword match="POAManager" />
+ <keyword match="POAManagerOperations" />
+ <keyword match="POAOperations" />
+ <keyword match="Point" />
+ <keyword match="Point2D" />
+
+
+ <keyword match="Policy" />
+ <keyword match="Policy" />
+ <keyword match="Policy" />
+ <keyword match="PolicyError" />
+ <keyword match="PolicyErrorCodeHelper" />
+ <keyword match="PolicyErrorHelper" />
+ <keyword match="PolicyErrorHolder" />
+ <keyword match="PolicyFactory" />
+ <keyword match="PolicyFactoryOperations" />
+ <keyword match="PolicyHelper" />
+ <keyword match="PolicyHolder" />
+ <keyword match="PolicyListHelper" />
+ <keyword match="PolicyListHolder" />
+ <keyword match="PolicyNode" />
+ <keyword match="PolicyOperations" />
+ <keyword match="PolicyQualifierInfo" />
+ <keyword match="PolicyTypeHelper" />
+ <keyword match="Polygon" />
+ <keyword match="PooledConnection" />
+ <keyword match="Popup" />
+ <keyword match="PopupFactory" />
+ <keyword match="PopupMenu" />
+ <keyword match="PopupMenuEvent" />
+ <keyword match="PopupMenuListener" />
+ <keyword match="PopupMenuUI" />
+ <keyword match="Port" />
+
+ <keyword match="PortableRemoteObject" />
+ <keyword match="PortableRemoteObjectDelegate" />
+ <keyword match="PortUnreachableException" />
+ <keyword match="Position" />
+
+ <keyword match="PreferenceChangeEvent" />
+ <keyword match="PreferenceChangeListener" />
+ <keyword match="Preferences" />
+ <keyword match="PreferencesFactory" />
+ <keyword match="PreparedStatement" />
+ <keyword match="PresentationDirection" />
+ <keyword match="Principal" />
+ <keyword match="Principal" />
+ <keyword match="PrincipalHolder" />
+ <keyword match="Printable" />
+ <keyword match="PrinterAbortException" />
+ <keyword match="PrinterException" />
+ <keyword match="PrinterGraphics" />
+ <keyword match="PrinterInfo" />
+ <keyword match="PrinterIOException" />
+ <keyword match="PrinterIsAcceptingJobs" />
+ <keyword match="PrinterJob" />
+ <keyword match="PrinterLocation" />
+ <keyword match="PrinterMakeAndModel" />
+ <keyword match="PrinterMessageFromOperator" />
+ <keyword match="PrinterMoreInfo" />
+ <keyword match="PrinterMoreInfoManufacturer" />
+ <keyword match="PrinterName" />
+ <keyword match="PrinterResolution" />
+ <keyword match="PrinterState" />
+ <keyword match="PrinterStateReason" />
+ <keyword match="PrinterStateReasons" />
+ <keyword match="PrinterURI" />
+ <keyword match="PrintEvent" />
+ <keyword match="PrintException" />
+ <keyword match="PrintGraphics" />
+ <keyword match="PrintJob" />
+ <keyword match="PrintJobAdapter" />
+ <keyword match="PrintJobAttribute" />
+ <keyword match="PrintJobAttributeEvent" />
+ <keyword match="PrintJobAttributeListener" />
+ <keyword match="PrintJobAttributeSet" />
+ <keyword match="PrintJobEvent" />
+ <keyword match="PrintJobListener" />
+ <keyword match="PrintQuality" />
+ <keyword match="PrintRequestAttribute" />
+ <keyword match="PrintRequestAttributeSet" />
+ <keyword match="PrintService" />
+ <keyword match="PrintServiceAttribute" />
+ <keyword match="PrintServiceAttributeEvent" />
+ <keyword match="PrintServiceAttributeListener" />
+ <keyword match="PrintServiceAttributeSet" />
+ <keyword match="PrintServiceLookup" />
+ <keyword match="PrintStream" />
+ <keyword match="PrintWriter" />
+ <keyword match="PRIVATE_MEMBER" />
+ <keyword match="PrivateCredentialPermission" />
+ <keyword match="PrivateKey" />
+ <keyword match="PrivilegedAction" />
+ <keyword match="PrivilegedActionException" />
+ <keyword match="PrivilegedExceptionAction" />
+ <keyword match="Process" />
+ <keyword match="ProcessingInstruction" />
+ <keyword match="ProfileDataException" />
+ <keyword match="ProfileIdHelper" />
+ <keyword match="ProgressBarUI" />
+ <keyword match="ProgressMonitor" />
+ <keyword match="ProgressMonitorInputStream" />
+ <keyword match="Properties" />
+ <keyword match="PropertyChangeEvent" />
+ <keyword match="PropertyChangeListener" />
+ <keyword match="PropertyChangeListenerProxy" />
+ <keyword match="PropertyChangeSupport" />
+ <keyword match="PropertyDescriptor" />
+ <keyword match="PropertyEditor" />
+ <keyword match="PropertyEditorManager" />
+ <keyword match="PropertyEditorSupport" />
+ <keyword match="PropertyPermission" />
+ <keyword match="PropertyResourceBundle" />
+ <keyword match="PropertyVetoException" />
+ <keyword match="ProtectionDomain" />
+ <keyword match="ProtocolException" />
+ <keyword match="Provider" />
+ <keyword match="ProviderException" />
+ <keyword match="Proxy" />
+ <keyword match="PSSParameterSpec" />
+ <keyword match="PUBLIC_MEMBER" />
+ <keyword match="PublicKey" />
+ <keyword match="PushbackInputStream" />
+ <keyword match="PushbackReader" />
+ <keyword match="QuadCurve2D" />
+
+
+ <keyword match="QueuedJobCount" />
+ <keyword match="Random" />
+ <keyword match="RandomAccess" />
+ <keyword match="RandomAccessFile" />
+ <keyword match="Raster" />
+ <keyword match="RasterFormatException" />
+ <keyword match="RasterOp" />
+ <keyword match="RC2ParameterSpec" />
+ <keyword match="RC5ParameterSpec" />
+ <keyword match="ReadableByteChannel" />
+ <keyword match="Reader" />
+ <keyword match="ReadOnlyBufferException" />
+ <keyword match="Receiver" />
+ <keyword match="Rectangle" />
+ <keyword match="Rectangle2D" />
+
+
+ <keyword match="RectangularShape" />
+ <keyword match="Ref" />
+ <keyword match="RefAddr" />
+ <keyword match="Reference" />
+ <keyword match="Reference" />
+ <keyword match="Referenceable" />
+ <keyword match="ReferenceQueue" />
+ <keyword match="ReferenceUriSchemesSupported" />
+ <keyword match="ReferralException" />
+ <keyword match="ReflectPermission" />
+ <keyword match="Refreshable" />
+ <keyword match="RefreshFailedException" />
+ <keyword match="RegisterableService" />
+ <keyword match="Registry" />
+ <keyword match="RegistryHandler" />
+ <keyword match="RemarshalException" />
+ <keyword match="Remote" />
+ <keyword match="RemoteCall" />
+ <keyword match="RemoteException" />
+ <keyword match="RemoteObject" />
+ <keyword match="RemoteRef" />
+ <keyword match="RemoteServer" />
+ <keyword match="RemoteStub" />
+ <keyword match="RenderableImage" />
+ <keyword match="RenderableImageOp" />
+ <keyword match="RenderableImageProducer" />
+ <keyword match="RenderContext" />
+ <keyword match="RenderedImage" />
+ <keyword match="RenderedImageFactory" />
+ <keyword match="Renderer" />
+ <keyword match="RenderingHints" />
+
+ <keyword match="RepaintManager" />
+ <keyword match="ReplicateScaleFilter" />
+ <keyword match="RepositoryIdHelper" />
+ <keyword match="Request" />
+ <keyword match="REQUEST_PROCESSING_POLICY_ID" />
+ <keyword match="RequestInfo" />
+ <keyword match="RequestInfoOperations" />
+ <keyword match="RequestingUserName" />
+ <keyword match="RequestProcessingPolicy" />
+ <keyword match="RequestProcessingPolicyOperations" />
+ <keyword match="RequestProcessingPolicyValue" />
+ <keyword match="RescaleOp" />
+ <keyword match="ResolutionSyntax" />
+ <keyword match="Resolver" />
+ <keyword match="ResolveResult" />
+ <keyword match="ResourceBundle" />
+ <keyword match="ResponseHandler" />
+ <keyword match="Result" />
+ <keyword match="ResultSet" />
+ <keyword match="ResultSetMetaData" />
+ <keyword match="ReverbType" />
+ <keyword match="RGBImageFilter" />
+ <keyword match="RMIClassLoader" />
+ <keyword match="RMIClassLoaderSpi" />
+ <keyword match="RMIClientSocketFactory" />
+ <keyword match="RMIFailureHandler" />
+ <keyword match="RMISecurityException" />
+ <keyword match="RMISecurityManager" />
+ <keyword match="RMIServerSocketFactory" />
+ <keyword match="RMISocketFactory" />
+ <keyword match="Robot" />
+ <keyword match="RootPaneContainer" />
+ <keyword match="RootPaneUI" />
+ <keyword match="RoundRectangle2D" />
+
+
+ <keyword match="RowMapper" />
+ <keyword match="RowSet" />
+ <keyword match="RowSetEvent" />
+ <keyword match="RowSetInternal" />
+ <keyword match="RowSetListener" />
+ <keyword match="RowSetMetaData" />
+ <keyword match="RowSetReader" />
+ <keyword match="RowSetWriter" />
+ <keyword match="RSAKey" />
+ <keyword match="RSAKeyGenParameterSpec" />
+ <keyword match="RSAMultiPrimePrivateCrtKey" />
+ <keyword match="RSAMultiPrimePrivateCrtKeySpec" />
+ <keyword match="RSAOtherPrimeInfo" />
+ <keyword match="RSAPrivateCrtKey" />
+ <keyword match="RSAPrivateCrtKeySpec" />
+ <keyword match="RSAPrivateKey" />
+ <keyword match="RSAPrivateKeySpec" />
+ <keyword match="RSAPublicKey" />
+ <keyword match="RSAPublicKeySpec" />
+ <keyword match="RTFEditorKit" />
+ <keyword match="RuleBasedCollator" />
+ <keyword match="Runnable" />
+ <keyword match="Runtime" />
+ <keyword match="RunTime" />
+ <keyword match="RuntimeException" />
+ <keyword match="RunTimeOperations" />
+ <keyword match="RuntimePermission" />
+ <keyword match="SampleModel" />
+ <keyword match="Savepoint" />
+ <keyword match="SAXException" />
+ <keyword match="SAXNotRecognizedException" />
+ <keyword match="SAXNotSupportedException" />
+ <keyword match="SAXParseException" />
+ <keyword match="SAXParser" />
+ <keyword match="SAXParserFactory" />
+ <keyword match="SAXResult" />
+ <keyword match="SAXSource" />
+ <keyword match="SAXTransformerFactory" />
+ <keyword match="ScatteringByteChannel" />
+ <keyword match="SchemaViolationException" />
+ <keyword match="Scrollable" />
+ <keyword match="Scrollbar" />
+ <keyword match="ScrollBarUI" />
+ <keyword match="ScrollPane" />
+ <keyword match="ScrollPaneAdjustable" />
+ <keyword match="ScrollPaneConstants" />
+ <keyword match="ScrollPaneLayout" />
+
+ <keyword match="ScrollPaneUI" />
+ <keyword match="SealedObject" />
+ <keyword match="SearchControls" />
+ <keyword match="SearchResult" />
+ <keyword match="SecretKey" />
+ <keyword match="SecretKeyFactory" />
+ <keyword match="SecretKeyFactorySpi" />
+ <keyword match="SecretKeySpec" />
+ <keyword match="SecureClassLoader" />
+ <keyword match="SecureRandom" />
+ <keyword match="SecureRandomSpi" />
+ <keyword match="Security" />
+ <keyword match="SecurityException" />
+ <keyword match="SecurityManager" />
+ <keyword match="SecurityPermission" />
+ <keyword match="Segment" />
+ <keyword match="SelectableChannel" />
+ <keyword match="SelectionKey" />
+ <keyword match="Selector" />
+ <keyword match="SelectorProvider" />
+ <keyword match="SeparatorUI" />
+ <keyword match="Sequence" />
+ <keyword match="SequenceInputStream" />
+ <keyword match="Sequencer" />
+
+ <keyword match="Serializable" />
+ <keyword match="SerializablePermission" />
+ <keyword match="Servant" />
+ <keyword match="SERVANT_RETENTION_POLICY_ID" />
+ <keyword match="ServantActivator" />
+ <keyword match="ServantActivatorHelper" />
+ <keyword match="ServantActivatorOperations" />
+ <keyword match="ServantActivatorPOA" />
+ <keyword match="ServantAlreadyActive" />
+ <keyword match="ServantAlreadyActiveHelper" />
+ <keyword match="ServantLocator" />
+ <keyword match="ServantLocatorHelper" />
+ <keyword match="ServantLocatorOperations" />
+ <keyword match="ServantLocatorPOA" />
+ <keyword match="ServantManager" />
+ <keyword match="ServantManagerOperations" />
+ <keyword match="ServantNotActive" />
+ <keyword match="ServantNotActiveHelper" />
+ <keyword match="ServantObject" />
+ <keyword match="ServantRetentionPolicy" />
+ <keyword match="ServantRetentionPolicyOperations" />
+ <keyword match="ServantRetentionPolicyValue" />
+ <keyword match="ServerCloneException" />
+ <keyword match="ServerError" />
+ <keyword match="ServerException" />
+ <keyword match="ServerNotActiveException" />
+ <keyword match="ServerRef" />
+ <keyword match="ServerRequest" />
+ <keyword match="ServerRequestInfo" />
+ <keyword match="ServerRequestInfoOperations" />
+ <keyword match="ServerRequestInterceptor" />
+ <keyword match="ServerRequestInterceptorOperations" />
+ <keyword match="ServerRuntimeException" />
+ <keyword match="ServerSocket" />
+ <keyword match="ServerSocketChannel" />
+ <keyword match="ServerSocketFactory" />
+ <keyword match="ServiceContext" />
+ <keyword match="ServiceContextHelper" />
+ <keyword match="ServiceContextHolder" />
+ <keyword match="ServiceContextListHelper" />
+ <keyword match="ServiceContextListHolder" />
+ <keyword match="ServiceDetail" />
+ <keyword match="ServiceDetailHelper" />
+ <keyword match="ServiceIdHelper" />
+ <keyword match="ServiceInformation" />
+ <keyword match="ServiceInformationHelper" />
+ <keyword match="ServiceInformationHolder" />
+ <keyword match="ServicePermission" />
+ <keyword match="ServiceRegistry" />
+
+ <keyword match="ServiceUI" />
+ <keyword match="ServiceUIFactory" />
+ <keyword match="ServiceUnavailableException" />
+ <keyword match="Set" />
+ <keyword match="SetOfIntegerSyntax" />
+ <keyword match="SetOverrideType" />
+ <keyword match="SetOverrideTypeHelper" />
+ <keyword match="Severity" />
+ <keyword match="Shape" />
+ <keyword match="ShapeGraphicAttribute" />
+ <keyword match="SheetCollate" />
+ <keyword match="Short" />
+ <keyword match="ShortBuffer" />
+ <keyword match="ShortBufferException" />
+ <keyword match="ShortHolder" />
+ <keyword match="ShortLookupTable" />
+ <keyword match="ShortMessage" />
+ <keyword match="ShortSeqHelper" />
+ <keyword match="ShortSeqHolder" />
+ <keyword match="Sides" />
+ <keyword match="Signature" />
+ <keyword match="SignatureException" />
+ <keyword match="SignatureSpi" />
+ <keyword match="SignedObject" />
+ <keyword match="Signer" />
+ <keyword match="SimpleAttributeSet" />
+ <keyword match="SimpleBeanInfo" />
+ <keyword match="SimpleDateFormat" />
+ <keyword match="SimpleDoc" />
+ <keyword match="SimpleFormatter" />
+ <keyword match="SimpleTimeZone" />
+ <keyword match="SinglePixelPackedSampleModel" />
+ <keyword match="SingleSelectionModel" />
+ <keyword match="Size2DSyntax" />
+ <keyword match="SizeLimitExceededException" />
+ <keyword match="SizeRequirements" />
+ <keyword match="SizeSequence" />
+ <keyword match="Skeleton" />
+ <keyword match="SkeletonMismatchException" />
+ <keyword match="SkeletonNotFoundException" />
+ <keyword match="SliderUI" />
+ <keyword match="Socket" />
+ <keyword match="SocketAddress" />
+ <keyword match="SocketChannel" />
+ <keyword match="SocketException" />
+ <keyword match="SocketFactory" />
+ <keyword match="SocketHandler" />
+ <keyword match="SocketImpl" />
+ <keyword match="SocketImplFactory" />
+ <keyword match="SocketOptions" />
+ <keyword match="SocketPermission" />
+ <keyword match="SocketSecurityException" />
+ <keyword match="SocketTimeoutException" />
+ <keyword match="SoftBevelBorder" />
+ <keyword match="SoftReference" />
+ <keyword match="SortedMap" />
+ <keyword match="SortedSet" />
+ <keyword match="SortingFocusTraversalPolicy" />
+ <keyword match="Soundbank" />
+ <keyword match="SoundbankReader" />
+ <keyword match="SoundbankResource" />
+ <keyword match="Source" />
+ <keyword match="SourceDataLine" />
+ <keyword match="SourceLocator" />
+ <keyword match="SpinnerDateModel" />
+ <keyword match="SpinnerListModel" />
+ <keyword match="SpinnerModel" />
+ <keyword match="SpinnerNumberModel" />
+ <keyword match="SpinnerUI" />
+ <keyword match="SplitPaneUI" />
+ <keyword match="Spring" />
+ <keyword match="SpringLayout" />
+
+ <keyword match="SQLData" />
+ <keyword match="SQLException" />
+ <keyword match="SQLInput" />
+ <keyword match="SQLOutput" />
+ <keyword match="SQLPermission" />
+ <keyword match="SQLWarning" />
+ <keyword match="SSLContext" />
+ <keyword match="SSLContextSpi" />
+ <keyword match="SSLException" />
+ <keyword match="SSLHandshakeException" />
+ <keyword match="SSLKeyException" />
+ <keyword match="SSLPeerUnverifiedException" />
+ <keyword match="SSLPermission" />
+ <keyword match="SSLProtocolException" />
+ <keyword match="SSLServerSocket" />
+ <keyword match="SSLServerSocketFactory" />
+ <keyword match="SSLSession" />
+ <keyword match="SSLSessionBindingEvent" />
+ <keyword match="SSLSessionBindingListener" />
+ <keyword match="SSLSessionContext" />
+ <keyword match="SSLSocket" />
+ <keyword match="SSLSocketFactory" />
+ <keyword match="Stack" />
+ <keyword match="StackOverflowError" />
+ <keyword match="StackTraceElement" />
+ <keyword match="StartTlsRequest" />
+ <keyword match="StartTlsResponse" />
+ <keyword match="State" />
+ <keyword match="StateEdit" />
+ <keyword match="StateEditable" />
+ <keyword match="StateFactory" />
+ <keyword match="Statement" />
+ <keyword match="Statement" />
+ <keyword match="Streamable" />
+ <keyword match="StreamableValue" />
+ <keyword match="StreamCorruptedException" />
+ <keyword match="StreamHandler" />
+ <keyword match="StreamPrintService" />
+ <keyword match="StreamPrintServiceFactory" />
+ <keyword match="StreamResult" />
+ <keyword match="StreamSource" />
+ <keyword match="StreamTokenizer" />
+ <keyword match="StrictMath" />
+ <keyword match="String" />
+ <keyword match="StringBuffer" />
+ <keyword match="StringBufferInputStream" />
+ <keyword match="StringCharacterIterator" />
+ <keyword match="StringContent" />
+ <keyword match="StringHolder" />
+ <keyword match="StringIndexOutOfBoundsException" />
+ <keyword match="StringNameHelper" />
+ <keyword match="StringReader" />
+ <keyword match="StringRefAddr" />
+ <keyword match="StringSelection" />
+ <keyword match="StringSeqHelper" />
+ <keyword match="StringSeqHolder" />
+ <keyword match="StringTokenizer" />
+ <keyword match="StringValueHelper" />
+ <keyword match="StringWriter" />
+ <keyword match="Stroke" />
+ <keyword match="Struct" />
+ <keyword match="StructMember" />
+ <keyword match="StructMemberHelper" />
+ <keyword match="Stub" />
+ <keyword match="StubDelegate" />
+ <keyword match="StubNotFoundException" />
+ <keyword match="Style" />
+ <keyword match="StyleConstants" />
+
+
+
+
+ <keyword match="StyleContext" />
+ <keyword match="StyledDocument" />
+ <keyword match="StyledEditorKit" />
+
+
+
+
+
+
+
+
+ <keyword match="StyleSheet" />
+
+
+ <keyword match="Subject" />
+ <keyword match="SubjectDomainCombiner" />
+ <keyword match="SUCCESSFUL" />
+ <keyword match="SupportedValuesAttribute" />
+ <keyword match="SwingConstants" />
+ <keyword match="SwingPropertyChangeSupport" />
+ <keyword match="SwingUtilities" />
+ <keyword match="SYNC_WITH_TRANSPORT" />
+ <keyword match="SyncFailedException" />
+ <keyword match="SyncScopeHelper" />
+ <keyword match="Synthesizer" />
+ <keyword match="SysexMessage" />
+ <keyword match="System" />
+ <keyword match="SYSTEM_EXCEPTION" />
+ <keyword match="SystemColor" />
+ <keyword match="SystemException" />
+ <keyword match="SystemFlavorMap" />
+ <keyword match="TabableView" />
+ <keyword match="TabbedPaneUI" />
+ <keyword match="TabExpander" />
+ <keyword match="TableCellEditor" />
+ <keyword match="TableCellRenderer" />
+ <keyword match="TableColumn" />
+ <keyword match="TableColumnModel" />
+ <keyword match="TableColumnModelEvent" />
+ <keyword match="TableColumnModelListener" />
+ <keyword match="TableHeaderUI" />
+ <keyword match="TableModel" />
+ <keyword match="TableModelEvent" />
+ <keyword match="TableModelListener" />
+ <keyword match="TableUI" />
+ <keyword match="TableView" />
+ <keyword match="TabSet" />
+ <keyword match="TabStop" />
+ <keyword match="TAG_ALTERNATE_IIOP_ADDRESS" />
+ <keyword match="TAG_CODE_SETS" />
+ <keyword match="TAG_INTERNET_IOP" />
+ <keyword match="TAG_JAVA_CODEBASE" />
+ <keyword match="TAG_MULTIPLE_COMPONENTS" />
+ <keyword match="TAG_ORB_TYPE" />
+ <keyword match="TAG_POLICIES" />
+ <keyword match="TagElement" />
+ <keyword match="TaggedComponent" />
+ <keyword match="TaggedComponentHelper" />
+ <keyword match="TaggedComponentHolder" />
+ <keyword match="TaggedProfile" />
+ <keyword match="TaggedProfileHelper" />
+ <keyword match="TaggedProfileHolder" />
+ <keyword match="TargetDataLine" />
+ <keyword match="TCKind" />
+ <keyword match="Templates" />
+ <keyword match="TemplatesHandler" />
+ <keyword match="Text" />
+ <keyword match="TextAction" />
+ <keyword match="TextArea" />
+ <keyword match="TextAttribute" />
+ <keyword match="TextComponent" />
+ <keyword match="TextEvent" />
+ <keyword match="TextField" />
+ <keyword match="TextHitInfo" />
+ <keyword match="TextInputCallback" />
+ <keyword match="TextLayout" />
+
+ <keyword match="TextListener" />
+ <keyword match="TextMeasurer" />
+ <keyword match="TextOutputCallback" />
+ <keyword match="TextSyntax" />
+ <keyword match="TextUI" />
+ <keyword match="TexturePaint" />
+ <keyword match="Thread" />
+ <keyword match="THREAD_POLICY_ID" />
+ <keyword match="ThreadDeath" />
+ <keyword match="ThreadGroup" />
+ <keyword match="ThreadLocal" />
+ <keyword match="ThreadPolicy" />
+ <keyword match="ThreadPolicyOperations" />
+ <keyword match="ThreadPolicyValue" />
+ <keyword match="Throwable" />
+ <keyword match="Tie" />
+ <keyword match="TileObserver" />
+ <keyword match="Time" />
+ <keyword match="TimeLimitExceededException" />
+ <keyword match="Timer" />
+ <keyword match="Timer" />
+ <keyword match="TimerTask" />
+ <keyword match="Timestamp" />
+ <keyword match="TimeZone" />
+ <keyword match="TitledBorder" />
+ <keyword match="ToolBarUI" />
+ <keyword match="Toolkit" />
+ <keyword match="ToolTipManager" />
+ <keyword match="ToolTipUI" />
+ <keyword match="TooManyListenersException" />
+ <keyword match="Track" />
+ <keyword match="TRANSACTION_REQUIRED" />
+ <keyword match="TRANSACTION_ROLLEDBACK" />
+ <keyword match="TransactionRequiredException" />
+ <keyword match="TransactionRolledbackException" />
+ <keyword match="TransactionService" />
+ <keyword match="Transferable" />
+ <keyword match="TransferHandler" />
+ <keyword match="TransformAttribute" />
+ <keyword match="Transformer" />
+ <keyword match="TransformerConfigurationException" />
+ <keyword match="TransformerException" />
+ <keyword match="TransformerFactory" />
+ <keyword match="TransformerFactoryConfigurationError" />
+ <keyword match="TransformerHandler" />
+ <keyword match="TRANSIENT" />
+ <keyword match="Transmitter" />
+ <keyword match="Transparency" />
+ <keyword match="TRANSPORT_RETRY" />
+ <keyword match="TreeCellEditor" />
+ <keyword match="TreeCellRenderer" />
+ <keyword match="TreeExpansionEvent" />
+ <keyword match="TreeExpansionListener" />
+ <keyword match="TreeMap" />
+ <keyword match="TreeModel" />
+ <keyword match="TreeModelEvent" />
+ <keyword match="TreeModelListener" />
+ <keyword match="TreeNode" />
+ <keyword match="TreePath" />
+ <keyword match="TreeSelectionEvent" />
+ <keyword match="TreeSelectionListener" />
+ <keyword match="TreeSelectionModel" />
+ <keyword match="TreeSet" />
+ <keyword match="TreeUI" />
+ <keyword match="TreeWillExpandListener" />
+ <keyword match="TrustAnchor" />
+ <keyword match="TrustManager" />
+ <keyword match="TrustManagerFactory" />
+ <keyword match="TrustManagerFactorySpi" />
+ <keyword match="TypeCode" />
+ <keyword match="TypeCodeHolder" />
+ <keyword match="TypeMismatch" />
+ <keyword match="TypeMismatch" />
+ <keyword match="TypeMismatch" />
+ <keyword match="TypeMismatchHelper" />
+ <keyword match="TypeMismatchHelper" />
+ <keyword match="Types" />
+ <keyword match="UID" />
+ <keyword match="UIDefaults" />
+
+
+
+
+ <keyword match="UIManager" />
+
+ <keyword match="UIResource" />
+ <keyword match="ULongLongSeqHelper" />
+ <keyword match="ULongLongSeqHolder" />
+ <keyword match="ULongSeqHelper" />
+ <keyword match="ULongSeqHolder" />
+ <keyword match="UndeclaredThrowableException" />
+ <keyword match="UndoableEdit" />
+ <keyword match="UndoableEditEvent" />
+ <keyword match="UndoableEditListener" />
+ <keyword match="UndoableEditSupport" />
+ <keyword match="UndoManager" />
+ <keyword match="UnexpectedException" />
+ <keyword match="UnicastRemoteObject" />
+ <keyword match="UnionMember" />
+ <keyword match="UnionMemberHelper" />
+ <keyword match="UNKNOWN" />
+ <keyword match="UnknownEncoding" />
+ <keyword match="UnknownEncodingHelper" />
+ <keyword match="UnknownError" />
+ <keyword match="UnknownException" />
+ <keyword match="UnknownGroupException" />
+ <keyword match="UnknownHostException" />
+ <keyword match="UnknownHostException" />
+ <keyword match="UnknownObjectException" />
+ <keyword match="UnknownServiceException" />
+ <keyword match="UnknownUserException" />
+ <keyword match="UnknownUserExceptionHelper" />
+ <keyword match="UnknownUserExceptionHolder" />
+ <keyword match="UnmappableCharacterException" />
+ <keyword match="UnmarshalException" />
+ <keyword match="UnmodifiableSetException" />
+ <keyword match="UnrecoverableKeyException" />
+ <keyword match="Unreferenced" />
+ <keyword match="UnresolvedAddressException" />
+ <keyword match="UnresolvedPermission" />
+ <keyword match="UnsatisfiedLinkError" />
+ <keyword match="UnsolicitedNotification" />
+ <keyword match="UnsolicitedNotificationEvent" />
+ <keyword match="UnsolicitedNotificationListener" />
+ <keyword match="UNSUPPORTED_POLICY" />
+ <keyword match="UNSUPPORTED_POLICY_VALUE" />
+ <keyword match="UnsupportedAddressTypeException" />
+ <keyword match="UnsupportedAudioFileException" />
+ <keyword match="UnsupportedCallbackException" />
+ <keyword match="UnsupportedCharsetException" />
+ <keyword match="UnsupportedClassVersionError" />
+ <keyword match="UnsupportedEncodingException" />
+ <keyword match="UnsupportedFlavorException" />
+ <keyword match="UnsupportedLookAndFeelException" />
+ <keyword match="UnsupportedOperationException" />
+ <keyword match="URI" />
+ <keyword match="URIException" />
+ <keyword match="URIResolver" />
+ <keyword match="URISyntax" />
+ <keyword match="URISyntaxException" />
+ <keyword match="URL" />
+ <keyword match="URLClassLoader" />
+ <keyword match="URLConnection" />
+ <keyword match="URLDecoder" />
+ <keyword match="URLEncoder" />
+ <keyword match="URLStreamHandler" />
+ <keyword match="URLStreamHandlerFactory" />
+ <keyword match="URLStringHelper" />
+ <keyword match="USER_EXCEPTION" />
+ <keyword match="UserException" />
+ <keyword match="UShortSeqHelper" />
+ <keyword match="UShortSeqHolder" />
+ <keyword match="UTFDataFormatException" />
+ <keyword match="Util" />
+ <keyword match="UtilDelegate" />
+ <keyword match="Utilities" />
+ <keyword match="ValueBase" />
+ <keyword match="ValueBaseHelper" />
+ <keyword match="ValueBaseHolder" />
+ <keyword match="ValueFactory" />
+ <keyword match="ValueHandler" />
+ <keyword match="ValueMember" />
+ <keyword match="ValueMemberHelper" />
+ <keyword match="VariableHeightLayoutCache" />
+ <keyword match="Vector" />
+ <keyword match="VerifyError" />
+ <keyword match="VersionSpecHelper" />
+ <keyword match="VetoableChangeListener" />
+ <keyword match="VetoableChangeListenerProxy" />
+ <keyword match="VetoableChangeSupport" />
+ <keyword match="View" />
+ <keyword match="ViewFactory" />
+ <keyword match="ViewportLayout" />
+ <keyword match="ViewportUI" />
+ <keyword match="VirtualMachineError" />
+ <keyword match="Visibility" />
+ <keyword match="VisibilityHelper" />
+ <keyword match="VM_ABSTRACT" />
+ <keyword match="VM_CUSTOM" />
+ <keyword match="VM_NONE" />
+ <keyword match="VM_TRUNCATABLE" />
+ <keyword match="VMID" />
+ <keyword match="VoiceStatus" />
+ <keyword match="Void" />
+ <keyword match="VolatileImage" />
+ <keyword match="WCharSeqHelper" />
+ <keyword match="WCharSeqHolder" />
+ <keyword match="WeakHashMap" />
+ <keyword match="WeakReference" />
+ <keyword match="Window" />
+ <keyword match="WindowAdapter" />
+ <keyword match="WindowConstants" />
+ <keyword match="WindowEvent" />
+ <keyword match="WindowFocusListener" />
+ <keyword match="WindowListener" />
+ <keyword match="WindowStateListener" />
+ <keyword match="WrappedPlainView" />
+ <keyword match="WritableByteChannel" />
+ <keyword match="WritableRaster" />
+ <keyword match="WritableRenderedImage" />
+ <keyword match="WriteAbortedException" />
+ <keyword match="Writer" />
+ <keyword match="WrongAdapter" />
+ <keyword match="WrongAdapterHelper" />
+ <keyword match="WrongPolicy" />
+ <keyword match="WrongPolicyHelper" />
+ <keyword match="WrongTransaction" />
+ <keyword match="WrongTransactionHelper" />
+ <keyword match="WrongTransactionHolder" />
+ <keyword match="WStringSeqHelper" />
+ <keyword match="WStringSeqHolder" />
+ <keyword match="WStringValueHelper" />
+ <keyword match="X500Principal" />
+ <keyword match="X500PrivateCredential" />
+ <keyword match="X509Certificate" />
+ <keyword match="X509Certificate" />
+ <keyword match="X509CertSelector" />
+ <keyword match="X509CRL" />
+ <keyword match="X509CRLEntry" />
+ <keyword match="X509CRLSelector" />
+ <keyword match="X509EncodedKeySpec" />
+ <keyword match="X509Extension" />
+ <keyword match="X509KeyManager" />
+ <keyword match="X509TrustManager" />
+ <keyword match="XAConnection" />
+ <keyword match="XADataSource" />
+ <keyword match="XAException" />
+ <keyword match="XAResource" />
+ <keyword match="Xid" />
+ <keyword match="XMLDecoder" />
+ <keyword match="XMLEncoder" />
+ <keyword match="XMLFilter" />
+ <keyword match="XMLFilterImpl" />
+ <keyword match="XMLFormatter" />
+ <keyword match="XMLReader" />
+ <keyword match="XMLReaderAdapter" />
+ <keyword match="XMLReaderFactory" />
+ <keyword match="ZipEntry" />
+ <keyword match="ZipException" />
+ <keyword match="ZipFile" />
+ <keyword match="ZipInputStream" />
+ <keyword match="ZipOutputStream" />
+ <keyword match="ZoneView" />
+ <keyword match="_BindingIteratorImplBase" />
+ <keyword match="_BindingIteratorStub" />
+ <keyword match="_DynAnyFactoryStub" />
+ <keyword match="_DynAnyStub" />
+ <keyword match="_DynArrayStub" />
+ <keyword match="_DynEnumStub" />
+ <keyword match="_DynFixedStub" />
+ <keyword match="_DynSequenceStub" />
+ <keyword match="_DynStructStub" />
+ <keyword match="_DynUnionStub" />
+ <keyword match="_DynValueStub" />
+ <keyword match="_IDLTypeStub" />
+ <keyword match="_NamingContextExtStub" />
+ <keyword match="_NamingContextImplBase" />
+ <keyword match="_NamingContextStub" />
+ <keyword match="_PolicyStub" />
+ <keyword match="_Remote_Stub" />
+ <keyword match="_ServantActivatorStub" />
+ <keyword match="_ServantLocatorStub" />
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/javascript.xml b/framework/Vendor/TextHighlighter/Text/javascript.xml
new file mode 100644
index 00000000..de5e0117
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/javascript.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0"?>
+<!-- $Id: javascript.xml,v 1.2 2007/06/05 21:57:21 ssttoo Exp $ -->
+
+<highlight lang="javascript" case = "no">
+
+ <authors>
+ <author name="Andrey Demenev" email ="demenev@gmail.com"/>
+ </authors>
+
+ <default innerClass="code" />
+
+ <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
+ <contains all="yes"/>
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
+ <contains all="yes"/>
+ </region>
+
+
+ <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/" >
+ <contains block="cvstag"/>
+ </region>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;"/>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" />
+
+ <block name="escaped" match="\\\\|\\&quot;|\\'|\\`" innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ </block>
+
+ <block name="descaped" match="\\\\|\\&quot;|\\'|\\`|\\t|\\n|\\r" innerClass="special" contained="yes">
+ <onlyin region="strdouble"/>
+ </block>
+
+ <region name="comment" start="\/\/" end="/$/m" innerClass="comment">
+ <contains block="cvstag"/>
+ </region>
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/>
+
+ <block name="number" match="\d*\.?\d+" innerClass="number"/>
+
+ <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&amp;=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&amp;=\/%+]*" innerClass="url" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="note" match="\b(note|fixme):" innerClass="inlinedoc" contained="yes" case="no">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+
+ <block name="cvstag" match="\$\w+:.+\$" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <keywords name="builtin" inherits="identifier" innerClass="builtin" case = "yes">
+ <keyword match="String"/>
+ <keyword match="Array"/>
+ <keyword match="RegExp"/>
+ <keyword match="Function"/>
+ <keyword match="Math"/>
+ <keyword match="Number"/>
+ <keyword match="Date"/>
+ <keyword match="Image"/>
+ <keyword match="window"/>
+ <keyword match="document"/>
+ <keyword match="navigator"/>
+ <keyword match="onAbort"/>
+ <keyword match="onBlur"/>
+ <keyword match="onChange"/>
+ <keyword match="onClick"/>
+ <keyword match="onDblClick"/>
+ <keyword match="onDragDrop"/>
+ <keyword match="onError"/>
+ <keyword match="onFocus"/>
+ <keyword match="onKeyDown"/>
+ <keyword match="onKeyPress"/>
+ <keyword match="onKeyUp"/>
+ <keyword match="onLoad"/>
+ <keyword match="onMouseDown"/>
+ <keyword match="onMouseOver"/>
+ <keyword match="onMouseOut"/>
+ <keyword match="onMouseMove"/>
+ <keyword match="onMouseUp"/>
+ <keyword match="onMove"/>
+ <keyword match="onReset"/>
+ <keyword match="onResize"/>
+ <keyword match="onSelect"/>
+ <keyword match="onSubmit"/>
+ <keyword match="onUnload"/>
+ </keywords>
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="break"/>
+ <keyword match="continue"/>
+ <keyword match="do"/>
+ <keyword match="while"/>
+ <keyword match="do"/>
+ <keyword match="export"/>
+ <keyword match="for"/>
+ <keyword match="in"/>
+ <keyword match="if"/>
+ <keyword match="else"/>
+ <keyword match="import"/>
+ <keyword match="return"/>
+ <keyword match="label"/>
+ <keyword match="switch"/>
+ <keyword match="case"/>
+ <keyword match="var"/>
+ <keyword match="with"/>
+ <keyword match="delete"/>
+ <keyword match="new"/>
+ <keyword match="this"/>
+ <keyword match="typeof"/>
+ <keyword match="void"/>
+ <keyword match="abstract"/>
+ <keyword match="boolean"/>
+ <keyword match="byte"/>
+ <keyword match="catch"/>
+ <keyword match="char"/>
+ <keyword match="class"/>
+ <keyword match="const"/>
+ <keyword match="continue"/>
+ <keyword match="debugger"/>
+ <keyword match="default"/>
+ <keyword match="double"/>
+ <keyword match="enum"/>
+ <keyword match="extends"/>
+ <keyword match="false"/>
+ <keyword match="final"/>
+ <keyword match="finally"/>
+ <keyword match="float"/>
+ <keyword match="function"/>
+ <keyword match="implements"/>
+ <keyword match="goto"/>
+ <keyword match="in"/>
+ <keyword match="instanceof"/>
+ <keyword match="int"/>
+ <keyword match="interface"/>
+ <keyword match="long"/>
+ <keyword match="native"/>
+ <keyword match="null"/>
+ <keyword match="package"/>
+ <keyword match="private"/>
+ <keyword match="protected"/>
+ <keyword match="public"/>
+ <keyword match="short"/>
+ <keyword match="static"/>
+ <keyword match="super"/>
+ <keyword match="synchronized"/>
+ <keyword match="throw"/>
+ <keyword match="throws"/>
+ <keyword match="transient"/>
+ <keyword match="true"/>
+ <keyword match="try"/>
+ <keyword match="volatile"/>
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/mysql.xml b/framework/Vendor/TextHighlighter/Text/mysql.xml
new file mode 100644
index 00000000..f0f1ef51
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/mysql.xml
@@ -0,0 +1,424 @@
+<?xml version="1.0"?>
+<!-- $Id: mysql.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="mysql" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <region name="qidentifier" delimClass="quotes" innerClass="identifier"
+ start="`" end="`" />
+
+ <region name="mlcomment" delimClass="comment" innerClass="comment"
+ start="\/\*" end="\*\/" />
+
+ <block name="comment" match="(#|--\s).*" innerClass="comment" />
+
+ <block name="possiblefunction" match="[a-z_]\w*(?=\s*\()" innerClass="identifier" />
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" />
+
+ <region name="strdouble" delimClass="quotes" innerClass="string"
+ start="&quot;" end="&quot;" >
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code"
+ start="\(" end="\)" >
+ <contains all="yes"/>
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string"
+ start="'" end="'" />
+
+ <block name="escaped" match="\\." innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ <onlyin region="strdouble"/>
+ </block>
+
+ <block name="exponent"
+ match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)"
+ innerClass="number" />
+
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/>
+
+ <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" />
+
+ <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" />
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved"
+ case="no">
+ <keyword match="action" />
+ <keyword match="add" />
+ <keyword match="aggregate" />
+ <keyword match="all" />
+ <keyword match="alter" />
+ <keyword match="after" />
+ <keyword match="and" />
+ <keyword match="as" />
+ <keyword match="asc" />
+ <keyword match="avg" />
+ <keyword match="avg_row_length" />
+ <keyword match="auto_increment" />
+ <keyword match="between" />
+ <keyword match="bigint" />
+ <keyword match="bit" />
+
+ <keyword match="binary" />
+ <keyword match="blob" />
+ <keyword match="bool" />
+ <keyword match="both" />
+ <keyword match="by" />
+ <keyword match="cascade" />
+ <keyword match="case" />
+ <keyword match="char" />
+ <keyword match="character" />
+ <keyword match="change" />
+ <keyword match="check" />
+ <keyword match="checksum" />
+ <keyword match="column" />
+ <keyword match="columns" />
+ <keyword match="comment" />
+ <keyword match="constraint" />
+ <keyword match="create" />
+
+ <keyword match="cross" />
+ <keyword match="current_date" />
+ <keyword match="current_time" />
+ <keyword match="current_timestamp" />
+ <keyword match="data" />
+ <keyword match="database" />
+ <keyword match="databases" />
+ <keyword match="date" />
+ <keyword match="datetime" />
+ <keyword match="day" />
+ <keyword match="day_hour" />
+ <keyword match="day_minute" />
+ <keyword match="day_second" />
+ <keyword match="dayofmonth" />
+ <keyword match="dayofweek" />
+ <keyword match="dayofyear" />
+ <keyword match="dec" />
+
+ <keyword match="decimal" />
+ <keyword match="default" />
+ <keyword match="delayed" />
+ <keyword match="delay_key_write" />
+ <keyword match="delete" />
+ <keyword match="desc" />
+ <keyword match="describe" />
+ <keyword match="distinct" />
+ <keyword match="distinctrow" />
+ <keyword match="double" />
+ <keyword match="drop" />
+ <keyword match="end" />
+ <keyword match="else" />
+ <keyword match="escape" />
+ <keyword match="escaped" />
+ <keyword match="enclosed" />
+ <keyword match="enum" />
+
+ <keyword match="explain" />
+ <keyword match="exists" />
+ <keyword match="fields" />
+ <keyword match="file" />
+ <keyword match="first" />
+ <keyword match="float" />
+ <keyword match="float4" />
+ <keyword match="float8" />
+ <keyword match="flush" />
+ <keyword match="foreign" />
+ <keyword match="from" />
+ <keyword match="for" />
+ <keyword match="full" />
+ <keyword match="function" />
+ <keyword match="global" />
+ <keyword match="grant" />
+ <keyword match="grants" />
+
+ <keyword match="group" />
+ <keyword match="having" />
+ <keyword match="heap" />
+ <keyword match="high_priority" />
+ <keyword match="hour" />
+ <keyword match="hour_minute" />
+ <keyword match="hour_second" />
+ <keyword match="hosts" />
+ <keyword match="identified" />
+ <keyword match="ignore" />
+ <keyword match="in" />
+ <keyword match="index" />
+ <keyword match="infile" />
+ <keyword match="inner" />
+ <keyword match="insert" />
+ <keyword match="insert_id" />
+ <keyword match="int" />
+
+ <keyword match="integer" />
+ <keyword match="interval" />
+ <keyword match="int1" />
+ <keyword match="int2" />
+ <keyword match="int3" />
+ <keyword match="int4" />
+ <keyword match="int8" />
+ <keyword match="into" />
+ <keyword match="if" />
+ <keyword match="is" />
+ <keyword match="isam" />
+ <keyword match="join" />
+ <keyword match="key" />
+ <keyword match="keys" />
+ <keyword match="kill" />
+ <keyword match="last_insert_id" />
+ <keyword match="leading" />
+
+ <keyword match="left" />
+ <keyword match="length" />
+ <keyword match="like" />
+ <keyword match="lines" />
+ <keyword match="limit" />
+ <keyword match="load" />
+ <keyword match="local" />
+ <keyword match="lock" />
+ <keyword match="logs" />
+ <keyword match="long" />
+ <keyword match="longblob" />
+ <keyword match="longtext" />
+ <keyword match="low_priority" />
+ <keyword match="max" />
+ <keyword match="max_rows" />
+ <keyword match="match" />
+ <keyword match="mediumblob" />
+
+ <keyword match="mediumtext" />
+ <keyword match="mediumint" />
+ <keyword match="middleint" />
+ <keyword match="min_rows" />
+ <keyword match="minute" />
+ <keyword match="minute_second" />
+ <keyword match="modify" />
+ <keyword match="month" />
+ <keyword match="monthname" />
+ <keyword match="myisam" />
+ <keyword match="natural" />
+ <keyword match="numeric" />
+ <keyword match="no" />
+ <keyword match="not" />
+ <keyword match="null" />
+ <keyword match="on" />
+ <keyword match="optimize" />
+
+ <keyword match="option" />
+ <keyword match="optionally" />
+ <keyword match="or" />
+ <keyword match="order" />
+ <keyword match="outer" />
+ <keyword match="outfile" />
+ <keyword match="pack_keys" />
+ <keyword match="partial" />
+ <keyword match="password" />
+ <keyword match="precision" />
+ <keyword match="primary" />
+ <keyword match="procedure" />
+ <keyword match="process" />
+ <keyword match="processlist" />
+ <keyword match="privileges" />
+ <keyword match="read" />
+ <keyword match="real" />
+
+ <keyword match="references" />
+ <keyword match="reload" />
+ <keyword match="regexp" />
+ <keyword match="rename" />
+ <keyword match="replace" />
+ <keyword match="restrict" />
+ <keyword match="returns" />
+ <keyword match="revoke" />
+ <keyword match="rlike" />
+ <keyword match="row" />
+ <keyword match="rows" />
+ <keyword match="second" />
+ <keyword match="select" />
+ <keyword match="set" />
+ <keyword match="show" />
+ <keyword match="shutdown" />
+ <keyword match="smallint" />
+
+ <keyword match="soname" />
+ <keyword match="sql_big_tables" />
+ <keyword match="sql_big_selects" />
+ <keyword match="sql_low_priority_updates" />
+ <keyword match="sql_log_off" />
+ <keyword match="sql_log_update" />
+ <keyword match="sql_select_limit" />
+ <keyword match="sql_small_result" />
+ <keyword match="sql_big_result" />
+ <keyword match="sql_warnings" />
+ <keyword match="straight_join" />
+ <keyword match="starting" />
+ <keyword match="status" />
+ <keyword match="string" />
+ <keyword match="table" />
+ <keyword match="tables" />
+ <keyword match="temporary" />
+
+ <keyword match="terminated" />
+ <keyword match="text" />
+ <keyword match="then" />
+ <keyword match="time" />
+ <keyword match="timestamp" />
+ <keyword match="tinyblob" />
+ <keyword match="tinytext" />
+ <keyword match="tinyint" />
+ <keyword match="trailing" />
+ <keyword match="to" />
+ <keyword match="type" />
+ <keyword match="use" />
+ <keyword match="using" />
+ <keyword match="unique" />
+ <keyword match="unlock" />
+ <keyword match="unsigned" />
+ <keyword match="update" />
+
+ <keyword match="usage" />
+ <keyword match="values" />
+ <keyword match="varchar" />
+ <keyword match="variables" />
+ <keyword match="varying" />
+ <keyword match="varbinary" />
+ <keyword match="with" />
+ <keyword match="write" />
+ <keyword match="when" />
+ <keyword match="where" />
+ <keyword match="year" />
+ <keyword match="year_month" />
+ <keyword match="zerofill" />
+ </keywords>
+
+ <keywords name="function" inherits="possiblefunction" innerClass="reserved"
+ case="no" otherwise="identifier">
+ <keyword match="ABS" />
+ <keyword match="ACOS" />
+ <keyword match="ADDDATE" />
+ <keyword match="ASCII" />
+ <keyword match="ASIN" />
+ <keyword match="ATAN" />
+ <keyword match="ATAN2" />
+ <keyword match="AVG" />
+ <keyword match="BENCHMARK" />
+ <keyword match="BIN" />
+ <keyword match="CEILING" />
+ <keyword match="CHAR" />
+ <keyword match="COALESCE" />
+ <keyword match="CONCAT" />
+ <keyword match="CONV" />
+ <keyword match="COS" />
+ <keyword match="COT" />
+ <keyword match="COUNT" />
+ <keyword match="CURDATE" />
+ <keyword match="CURTIME" />
+ <keyword match="DATABASE" />
+ <keyword match="DAYNAME" />
+ <keyword match="DAYOFMONTH" />
+ <keyword match="DAYOFWEEK" />
+ <keyword match="DAYOFYEAR" />
+ <keyword match="DECODE" />
+ <keyword match="DEGREES" />
+ <keyword match="ELT" />
+
+ <keyword match="ENCODE" />
+ <keyword match="ENCRYPT" />
+ <keyword match="EXP" />
+ <keyword match="EXTRACT" />
+
+ <keyword match="EXTRACT" />
+ <keyword match="FIELD" />
+ <keyword match="FLOOR" />
+ <keyword match="FORMAT" />
+ <keyword match="GREATEST" />
+ <keyword match="HEX" />
+ <keyword match="HOUR" />
+ <keyword match="IF" />
+ <keyword match="IFNULL" />
+ <keyword match="INSERT" />
+ <keyword match="INSTR" />
+ <keyword match="INTERVAL" />
+
+ <keyword match="ISNULL" />
+ <keyword match="LCASE" />
+ <keyword match="LEAST" />
+ <keyword match="LEFT" />
+ <keyword match="LENGTH" />
+ <keyword match="LOCATE" />
+
+ <keyword match="LOCATE" />
+ <keyword match="LOG" />
+ <keyword match="LOG10" />
+ <keyword match="LOWER" />
+ <keyword match="LPAD" />
+ <keyword match="LTRIM" />
+ <keyword match="MAX" />
+ <keyword match="MD5" />
+ <keyword match="MID" />
+ <keyword match="MIN" />
+
+ <keyword match="MINUTE" />
+ <keyword match="MOD" />
+ <keyword match="MONTH" />
+ <keyword match="MONTHNAME" />
+ <keyword match="NOW" />
+ <keyword match="NULLIF" />
+ <keyword match="OCT" />
+ <keyword match="ORD" />
+ <keyword match="PASSWORD" />
+ <keyword match="PI" />
+ <keyword match="POSITION" />
+
+ <keyword match="POW" />
+ <keyword match="POWER" />
+ <keyword match="prepare" />
+ <keyword match="QUARTER" />
+ <keyword match="RADIANS" />
+ <keyword match="RAND" />
+ <keyword match="REPEAT" />
+ <keyword match="REPLACE" />
+ <keyword match="REVERSE" />
+ <keyword match="RIGHT" />
+ <keyword match="ROUND" />
+
+ <keyword match="ROUND" />
+ <keyword match="RPAD" />
+
+ <keyword match="RTRIM" />
+ <keyword match="SECOND" />
+ <keyword match="SIGN" />
+ <keyword match="SIN" />
+ <keyword match="SOUNDEX" />
+ <keyword match="SPACE" />
+ <keyword match="SQRT" />
+ <keyword match="STD" />
+ <keyword match="STDDEV" />
+ <keyword match="STRCMP" />
+ <keyword match="SUBDATE" />
+ <keyword match="SUBSTRING" />
+
+ <keyword match="SUBSTRING" />
+ <keyword match="SUM" />
+ <keyword match="SYSDATE" />
+ <keyword match="TAN" />
+
+ <keyword match="TRIM" />
+ <keyword match="TRUNCATE" />
+ <keyword match="UCASE" />
+ <keyword match="UPPER" />
+ <keyword match="USER" />
+ <keyword match="VERSION" />
+ <keyword match="WEEK" />
+ <keyword match="WEEKDAY" />
+ <keyword match="YEAR" />
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/package.xml b/framework/Vendor/TextHighlighter/Text/package.xml
new file mode 100644
index 00000000..4cac5d6c
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/package.xml
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.5.4" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+ <name>Text_Highlighter</name>
+ <channel>pear.php.net</channel>
+ <summary>Syntax highlighting</summary>
+ <description>Text_Highlighter is a package for syntax highlighting.
+
+It provides a base class provining all the functionality,
+and a descendent classes geneator class.
+
+The main idea is to simplify creation of subclasses
+implementing syntax highlighting for particular language.
+Subclasses do not implement any new functioanality,
+they just provide syntax highlighting rules.
+The rules sources are in XML format.
+
+To create a highlighter for a language, there is no need
+to code a new class manually. Simply describe the rules
+in XML file and use Text_Highlighter_Generator to create
+a new class.</description>
+ <lead>
+ <name>Stoyan Stefanov</name>
+ <user>stoyan</user>
+ <email>ssttoo@gmail.com</email>
+ <active>yes</active>
+ </lead>
+ <lead>
+ <name>Andrey Demenev</name>
+ <user>blindman</user>
+ <email>demenev@gmail.com</email>
+ <active>yes</active>
+ </lead>
+ <date>2007-06-06</date>
+ <time>11:28:05</time>
+ <version>
+ <release>0.7.0</release>
+ <api>0.7.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <license uri="http://www.php.net/license">PHP License</license>
+ <notes>- added new renderer - Array
+- HTML renderer modified to extend Array
+- more new renderers - BB, HTMLTags, JSON, XML, all extending Array
+(feature requests #8704 and #9188 )
+- new syntax definition - ABAP programming language (feature request #8809)
+- linked elements to their online documentation option (request #7480)
+- option to output code as unordered list (request #4640)
+- option to set starting number when outputting code in ordered lists
+(request #7077)
+- option to set CSS class names mapping insead of using hardcoded
+class names (request #7077)
+- option to set a CSS style mappping instead of class names (request #7077)
+- fixed /= issue when highlighting javascript (bug #11160)
+- added sample CSS to the package (bug #11211)</notes>
+ <contents>
+ <dir name="/">
+ <file baseinstalldir="Text" md5sum="013c9c0ecdee58dbc4ca528dc15a34a2" name="Highlighter/Renderer/Array.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="a971bba378a46ed71dba3d041bd56f0b" name="Highlighter/Renderer/BB.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="acf2457b365cf36813d573ff6f8805b5" name="Highlighter/Renderer/Console.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="203dbdbb0082dc1e2d6364104c13b185" name="Highlighter/Renderer/Html.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="2c3f20ccfaa49beb1f52210dbe3dab96" name="Highlighter/Renderer/HtmlTags.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="c89a16a844d5ca566378a7413f930b39" name="Highlighter/Renderer/JSON.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="77497ce0df4f06685b6a490ae6c4f9b2" name="Highlighter/Renderer/XML.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="9eda0470e135719c006267d635b0f4da" name="Highlighter/ABAP.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="3542033429d49f7cae984b555f4b0e8b" name="Highlighter/CPP.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="f65969cad2155c3024b678211f9658c9" name="Highlighter/CSS.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="b122955b7d554cefcefd4eb20c720ab7" name="Highlighter/DIFF.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="64106222a94c953984d940e3c2c412df" name="Highlighter/DTD.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="243c07edbe16c13a751e21a7255d585e" name="Highlighter/Generator.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="7285f8e1eae5787c4736366e09fc92fa" name="Highlighter/HTML.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="e33a3c1b1c602954ef64be97c35da538" name="Highlighter/JAVA.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="87e889b7fa92c2cba0de2a0f8c827d4b" name="Highlighter/JAVASCRIPT.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="2c14a034318efc04f54a891f4d92efd5" name="Highlighter/MYSQL.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="36b6e4204bda4fd3f46f63d192edfb6c" name="Highlighter/PERL.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="a2298d02fd3712e63abda97f4459186d" name="Highlighter/PHP.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="5a84265037e4c802262b8453fa03f05d" name="Highlighter/PYTHON.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="733b468795b3ccaa82188d60ba42e0db" name="Highlighter/Renderer.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="741b76badb0510310efb053ffb38103c" name="Highlighter/RUBY.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="9612b29d18c0d18cd9a851ed6e49594b" name="Highlighter/SQL.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="d5ebca4d8fbadf6b93f582786a818ab3" name="Highlighter/XML.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="71e89de3fd80eb8c9fe2139bc786c739" name="abap.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="150e48565986dc85cbd5def048c861ff" name="cpp.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="80b88a5630616a43900e9f6255876d73" name="css.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="03bbb9f97dd557688082125fec184160" name="diff.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="2f0dc7366f5da77b875fead48dd1d992" name="dtd.xml" role="data" />
+ <file baseinstalldir="Text/Highlighter" md5sum="3864e523f21aa47f670935233daaf155" name="generate" role="script">
+ <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" />
+ <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" />
+ </file>
+ <file baseinstalldir="Text/Highlighter" md5sum="15a780d6a0e5f8e2f17e10f621d48a77" name="generate.bat" role="script">
+ <tasks:replace from="@bin_dir@" to="bin_dir" type="pear-config" />
+ <tasks:replace from="@php_bin@" to="php_bin" type="pear-config" />
+ <tasks:replace from="@php_dir@" to="php_dir" type="pear-config" />
+ </file>
+ <file baseinstalldir="Text" md5sum="fb358f890eb689f066067ae7440c2e65" name="Highlighter.php" role="php">
+ <tasks:replace from="@package_version@" to="version" type="package-info" />
+ </file>
+ <file baseinstalldir="Text" md5sum="4724355723d91173e3fbff1a49cf6ed2" name="html.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="fca74bdc9fb76c5f4ebf25e13632d724" name="java.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="317d36bed5a22b1207d2903116dc211d" name="javascript.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="abd328d98009176bee09ccd40c195c28" name="mysql.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="e29d249c5868fba82b59cbf5a9a65b36" name="perl.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="9c94779edb325cc7b597f41e7911c87f" name="php.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="17b174ea131f4c9a33383bdac2ecd707" name="python.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="c1cddeb6c05c8a2c38f106dc9c0bf1b4" name="README" role="doc" />
+ <file baseinstalldir="Text" md5sum="77abf6bfda4e2f55e41b313c0a08e076" name="ruby.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="3fcc7d0e298ecfd1432bbd051e977e2d" name="sample.css" role="data" />
+ <file baseinstalldir="Text" md5sum="239d1d056dc1a02b6fc1e52f84fb451c" name="sql.xml" role="data" />
+ <file baseinstalldir="Text" md5sum="96a7618ad15217978ff1d5f70f76eb05" name="TODO" role="data" />
+ <file baseinstalldir="Text" md5sum="abd0b34519988975de481f81bd507ee7" name="xml.xml" role="data" />
+ </dir>
+ </contents>
+ <dependencies>
+ <required>
+ <php>
+ <min>4.3.3</min>
+ </php>
+ <pearinstaller>
+ <min>1.4.0b1</min>
+ </pearinstaller>
+ <package>
+ <name>PEAR</name>
+ <channel>pear.php.net</channel>
+ <min>1.0</min>
+ </package>
+ <package>
+ <name>XML_Parser</name>
+ <channel>pear.php.net</channel>
+ <min>1.0.1</min>
+ </package>
+ <package>
+ <name>Console_Getopt</name>
+ <channel>pear.php.net</channel>
+ <min>1.0</min>
+ </package>
+ </required>
+ </dependencies>
+ <phprelease>
+ <installconditions>
+ <os>
+ <name>(*ix|*ux)</name>
+ </os>
+ </installconditions>
+ <filelist>
+ <ignore name="generate.bat" />
+ </filelist>
+ </phprelease>
+ <phprelease>
+ <installconditions>
+ <os>
+ <name>windows</name>
+ </os>
+ </installconditions>
+ <filelist>
+ <ignore name="generate" />
+ </filelist>
+ </phprelease>
+ <phprelease>
+ <filelist>
+ <ignore name="generate" />
+ <ignore name="generate.bat" />
+ </filelist>
+ </phprelease>
+ <changelog>
+ <release>
+ <version>
+ <release>0.7.0</release>
+ <api>0.7.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2007-06-06</date>
+ <license uri="http://www.php.net/license">PHP License</license>
+ <notes>- added new renderer - Array
+- HTML renderer modified to extend Array
+- more new renderers - BB, HTMLTags, JSON, XML, all extending Array
+(feature requests #8704 and #9188 )
+- new syntax definition - ABAP programming language (feature request #8809)
+- linked elements to their online documentation option (request #7480)
+- option to output code as unordered list (request #4640)
+- option to set starting number when outputting code in ordered lists
+(request #7077)
+- option to set CSS class names mapping insead of using hardcoded
+class names (request #7077)
+- option to set a CSS style mappping instead of class names (request #7077)
+- fixed /= issue when highlighting javascript (bug #11160)
+- added sample CSS to the package (bug #11211)</notes>
+ </release>
+ </changelog>
+</package>
diff --git a/framework/Vendor/TextHighlighter/Text/perl.xml b/framework/Vendor/TextHighlighter/Text/perl.xml
new file mode 100644
index 00000000..f4317653
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/perl.xml
@@ -0,0 +1,439 @@
+<?xml version="1.0"?>
+<!-- $Id: perl.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="perl" case = "yes">
+
+ <authors>
+ <author name="Mariusz 'kg' Jakubowski" email="kg@alternatywa.info" jid="kg@chrome.pl"/>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+ <comment>This highlighter is EXPERIMENTAL, so that it may work incorrectly.
+Most rules were created by Mariusz Jakubowski, and extended by me.
+My knowledge of Perl is poor, and Perl syntax seems too
+complicated to me.</comment>
+
+ <default innerClass="code"/>
+
+ <block name="interpreter" match="/^(#!)(.*)/m" innerClass="special">
+ <partClass index="1" innerClass="special" />
+ <partClass index="2" innerClass="string" />
+ </block>
+
+ <region name="pod" innerClass="comment" start="/^=\w+/m" end="/^=cut[^\n]*/m" startBOL="yes" endBOL="yes"/>
+
+ <!--
+ brackets
+ -->
+ <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}">
+ <contains all="yes"/>
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)">
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]">
+ <contains all="yes"/>
+ </region>
+
+ <!--
+ use smth
+ -->
+ <block name="usestatement" match="(use)\s+([\w:]*)" innerClass="special">
+ <partClass index="1" innerClass="reserved" />
+ <partClass index="2" innerClass="special" />
+ </block>
+
+ <block name="packagereference" match="[&amp; ](\w{2,}::)+\w{2,}" innerClass="special"/>
+
+ <region name="q-w-q-statement"
+ start="/\b(q[wq]\s*((\{)|(\()|(\[)|(\&lt;)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\&gt;)(?(7)\7)))/Us"
+ end="%b2%"
+ innerClass="string" delimClass="quotes" remember="yes">
+
+ <contains block="containedvar"/>
+ <contains block="specialvar"/>
+ <contains block="curlyvar"/>
+
+ </region>
+
+ <region name="qstatement"
+ start="/\b(q\s*((\{)|(\()|(\[)|(\&lt;)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\&gt;)(?(7)\7)))/Us"
+ end="%b2%"
+ innerClass="string" delimClass="quotes" remember="yes">
+
+ </region>
+
+ <!--
+ comments
+ -->
+ <block name="comment" match="#.*" innerClass="comment" />
+
+
+ <!--
+ regexpr
+ FIXME: this should be rewrited
+ -->
+ <block name="dblregexprver1" match="/(s|tr) ([|#~`!@$%^&amp;*-+=\\;:'&quot;,.\/?]) ((\\.|[^\\])*?) (\2)((\\.|[^\\])*?)(\2[ecgimosx]*)/x" innerClass="string">
+ <partClass index="1" innerClass="quotes" />
+ <partClass index="2" innerClass="quotes" />
+ <partClass index="3" innerClass="string" />
+ <partClass index="5" innerClass="quotes" />
+ <partClass index="6" innerClass="string" />
+ <partClass index="8" innerClass="quotes" />
+ </block>
+
+ <block name="dblregexprver2" match="/(m) ([|#~`!@$%^&amp;*-+=\\;:'&quot;,.\/?]) ((\\.|[^\\])*?) (\2[ecgimosx]*)/x" innerClass="string">
+ <partClass index="1" innerClass="quotes" />
+ <partClass index="2" innerClass="quotes" />
+ <partClass index="3" innerClass="string" />
+ <partClass index="5" innerClass="quotes" />
+ </block>
+
+
+ <region name="regexp" start=" \/" end="\/[cgimosx]*" innerClass="string" delimClass="quotes" case="yes">
+ <contains block="reescaped"/>
+ </region>
+
+ <block name="reescaped" match="\\\/" innerClass="string" contained="yes">
+ <onlyin region="regexp"/>
+ </block>
+
+ <!--
+ variables
+ FIXME: @{...}
+ -->
+ <block name="bracketsvars" match="([a-z1-9_]+)(\s*=>)" innerClass="string" contained="yes" case="no">
+ <partClass index="1" innerClass="string" />
+ <partClass index="2" innerClass="code" />
+ <onlyin region="brackets"/>
+ </block>
+
+ <block name="specialvar" match="\$#?[1-9'`@!]" innerClass="var"/>
+
+ <block name="var" match="(\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/>
+ <block name="containedvar" match="\$([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/>
+
+ <!-- not shure what is this, but the Perlers do it :) -->
+ <block name="var2" match="(&amp;|\w+)'[\w_']+\b" innerClass="var" case="no"/>
+
+ <block name="classvar" match="(\{)([a-z1-9]+)(\})" innerClass="var" case="no">
+ <partClass index="1" innerClass="brackets" />
+ <partClass index="2" innerClass="var" />
+ <partClass index="3" innerClass="brackets" />
+ </block>
+
+ <block name="curlyvar" match="[\$@%]#?\{[a-z1-9]+\}" innerClass="var" case="no"/>
+
+ <!--
+ quotes
+ -->
+ <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`">
+ <contains block="containedvar"/>
+ <contains block="specialvar"/>
+ <contains block="curlyvar"/>
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/>
+
+ <block name="escaped" match="\\\\|\\&quot;|\\'|\\`" innerClass="special" contained="yes">
+ <onlyin region="qstatement"/>
+ <onlyin region="strsingle"/>
+ <onlyin region="exec"/>
+ </block>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;">
+ <contains block="containedvar"/>
+ <contains block="specialvar"/>
+ <contains block="curlyvar"/>
+ </region>
+
+ <block name="descaped" match="\\[\\&quot;'`tnr\$\{@]" innerClass="special" contained="yes">
+ <onlyin region="strdouble"/>
+ <onlyin region="q-w-q-statement"/>
+ </block>
+
+ <!-- logical op.
+ <block name="logic" match="\|\||&amp;&amp;" innerClass="reserved" contained="yes"/>-->
+
+ <!--
+ identifiers
+ -->
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/>
+
+ <!--
+ numbers
+ -->
+ <block name="number" match="\d*\.?\d+" innerClass="number"/>
+
+ <!--
+ http://www.perldoc.com/perl5.6/pod/perlfunc.html
+ Alphabetical Listing of Perl Functions
+ -->
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="abs"/>
+ <keyword match="accept"/>
+ <keyword match="alarm"/>
+ <keyword match="atan2"/>
+
+ <keyword match="bind"/>
+ <keyword match="binmode"/>
+ <keyword match="bless"/>
+
+ <keyword match="caller"/>
+ <keyword match="chdir"/>
+ <keyword match="chmod"/>
+ <keyword match="chomp"/>
+ <keyword match="chop"/>
+ <keyword match="chown"/>
+ <keyword match="chr"/>
+ <keyword match="chroot"/>
+ <keyword match="close"/>
+ <keyword match="closedir"/>
+ <keyword match="connect"/>
+ <keyword match="continue"/>
+ <keyword match="cos"/>
+ <keyword match="crypt"/>
+
+ <keyword match="dbmclose"/>
+ <keyword match="dbmopen"/>
+ <keyword match="defined"/>
+ <keyword match="delete"/>
+ <keyword match="die"/>
+ <keyword match="do"/>
+ <keyword match="dump"/>
+
+ <keyword match="each"/>
+ <keyword match="endgrent"/>
+ <keyword match="endhostent"/>
+ <keyword match="endnetent"/>
+ <keyword match="endprotoent"/>
+ <keyword match="endpwent"/>
+ <keyword match="endservent"/>
+ <keyword match="eof"/>
+ <keyword match="eval"/>
+ <keyword match="exec"/>
+ <keyword match="exists"/>
+ <keyword match="exit"/>
+ <keyword match="exp"/>
+
+ <keyword match="fcntl"/>
+ <keyword match="fileno"/>
+ <keyword match="flock"/>
+ <keyword match="fork"/>
+ <keyword match="format"/>
+ <keyword match="formline"/>
+
+ <keyword match="getc"/>
+ <keyword match="getgrent"/>
+ <keyword match="getgrgid"/>
+ <keyword match="getgrnam"/>
+ <keyword match="gethostbyaddr"/>
+ <keyword match="gethostbyname"/>
+ <keyword match="gethostent"/>
+ <keyword match="getlogin"/>
+ <keyword match="getnetbyaddr"/>
+ <keyword match="getnetbyname"/>
+ <keyword match="getnetent"/>
+ <keyword match="getpeername"/>
+ <keyword match="getpgrp"/>
+ <keyword match="getppid"/>
+ <keyword match="getpriority"/>
+ <keyword match="getprotobyname"/>
+ <keyword match="getprotobynumber"/>
+ <keyword match="getprotoent"/>
+ <keyword match="getpwent"/>
+ <keyword match="getpwnam"/>
+ <keyword match="getpwuid"/>
+ <keyword match="getservbyname"/>
+ <keyword match="getservbyport"/>
+ <keyword match="getservent"/>
+ <keyword match="getsockname"/>
+ <keyword match="getsockopt"/>
+ <keyword match="glob"/>
+ <keyword match="gmtime"/>
+ <keyword match="goto"/>
+ <keyword match="grep"/>
+
+ <keyword match="hex"/>
+
+ <keyword match="import"/>
+ <keyword match="index"/>
+ <keyword match="int"/>
+ <keyword match="ioctl"/>
+
+ <keyword match="join"/>
+
+ <keyword match="keys"/>
+ <keyword match="kill"/>
+
+ <keyword match="last"/>
+ <keyword match="lc"/>
+ <keyword match="lcfirst"/>
+ <keyword match="length"/>
+ <keyword match="link"/>
+ <keyword match="listen"/>
+ <keyword match="local"/>
+ <keyword match="localtime"/>
+ <keyword match="lock"/>
+ <keyword match="log"/>
+ <keyword match="lstat"/>
+
+ <!--<keyword match="m"/>-->
+ <keyword match="map"/>
+ <keyword match="mkdir"/>
+ <keyword match="msgctl"/>
+ <keyword match="msgget"/>
+ <keyword match="msgrcv"/>
+ <keyword match="msgsnd"/>
+ <keyword match="my"/>
+
+ <keyword match="next"/>
+ <keyword match="no"/>
+
+ <keyword match="oct"/>
+ <keyword match="open"/>
+ <keyword match="opendir"/>
+ <keyword match="ord"/>
+ <keyword match="our"/>
+
+ <keyword match="pack"/>
+ <keyword match="package"/>
+ <keyword match="pipe"/>
+ <keyword match="pop"/>
+ <keyword match="pos"/>
+ <keyword match="print"/>
+ <keyword match="printf"/>
+ <keyword match="prototype"/>
+ <keyword match="push"/>
+
+ <!--<keyword match="q"/>
+ <keyword match="qq"/>
+ <keyword match="qr"/>-->
+ <keyword match="quotemeta"/>
+ <!--<keyword match="qw"/>
+ <keyword match="qx"/>-->
+
+ <keyword match="rand"/>
+ <keyword match="read"/>
+ <keyword match="readdir"/>
+ <keyword match="readline"/>
+ <keyword match="readlink"/>
+ <keyword match="readpipe"/>
+ <keyword match="recv"/>
+ <keyword match="redo"/>
+ <keyword match="ref"/>
+ <keyword match="rename"/>
+ <keyword match="require"/>
+ <keyword match="reset"/>
+ <keyword match="return"/>
+ <keyword match="reverse"/>
+ <keyword match="rewinddir"/>
+ <keyword match="rindex"/>
+ <keyword match="rmdir"/>
+
+ <!--<keyword match="s"/>-->
+ <keyword match="scalar"/>
+ <keyword match="seek"/>
+ <keyword match="seekdir"/>
+ <keyword match="select"/>
+ <keyword match="semctl"/>
+ <keyword match="semget"/>
+ <keyword match="semop"/>
+ <keyword match="send"/>
+ <keyword match="setgrent"/>
+ <keyword match="sethostent"/>
+ <keyword match="setnetent"/>
+ <keyword match="setpgrp"/>
+ <keyword match="setpriority"/>
+ <keyword match="setprotoent"/>
+ <keyword match="setpwent"/>
+ <keyword match="setservent"/>
+ <keyword match="setsockopt"/>
+ <keyword match="shift"/>
+ <keyword match="shmctl"/>
+ <keyword match="shmget"/>
+ <keyword match="shmread"/>
+ <keyword match="shmwrite"/>
+ <keyword match="shutdown"/>
+ <keyword match="sin"/>
+ <keyword match="sleep"/>
+ <keyword match="socket"/>
+ <keyword match="socketpair"/>
+ <keyword match="sort"/>
+ <keyword match="splice"/>
+ <keyword match="split"/>
+ <keyword match="sprintf"/>
+ <keyword match="sqrt"/>
+ <keyword match="srand"/>
+ <keyword match="stat"/>
+ <keyword match="study"/>
+ <keyword match="sub"/>
+ <keyword match="substr"/>
+ <keyword match="symlink"/>
+ <keyword match="syscall"/>
+ <keyword match="sysopen"/>
+ <keyword match="sysread"/>
+ <keyword match="sysseek"/>
+ <keyword match="system"/>
+ <keyword match="syswrite"/>
+
+ <keyword match="tell"/>
+ <keyword match="telldir"/>
+ <keyword match="tie"/>
+ <keyword match="tied"/>
+ <keyword match="time"/>
+ <keyword match="times"/>
+ <!--<keyword match="tr"/>-->
+ <keyword match="truncate"/>
+
+ <keyword match="uc"/>
+ <keyword match="ucfirst"/>
+ <keyword match="umask"/>
+ <keyword match="undef"/>
+ <keyword match="unlink"/>
+ <keyword match="unpack"/>
+ <keyword match="unshift"/>
+ <keyword match="untie"/>
+ <keyword match="use"/>
+ <keyword match="utime"/>
+
+ <keyword match="values"/>
+ <keyword match="vec"/>
+
+ <keyword match="wait"/>
+ <keyword match="waitpid"/>
+ <keyword match="wantarray"/>
+ <keyword match="warn"/>
+ <keyword match="write"/>
+
+ <keyword match="y"/>
+ </keywords>
+
+ <keywords name="missingreserved" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="new"/>
+ </keywords>
+
+
+ <keywords name="flowcontrol" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="if"/>
+ <keyword match="else"/>
+ <keyword match="elsif"/>
+ <keyword match="while"/>
+ <keyword match="unless"/>
+ <keyword match="for"/>
+ <keyword match="foreach"/>
+ <keyword match="until"/>
+ <keyword match="do"/>
+ <keyword match="continue"/>
+ <keyword match="not"/>
+ <keyword match="or"/>
+ <keyword match="and"/>
+ <keyword match="eq"/>
+ <keyword match="ne"/>
+ <keyword match="gt"/>
+ <keyword match="lt"/>
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/php.xml b/framework/Vendor/TextHighlighter/Text/php.xml
new file mode 100644
index 00000000..de00096a
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/php.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0"?>
+<!-- $Id: php.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="php">
+
+ <authors>
+ <author name="Andrey Demenev" email ="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <region name="phpCode" delimClass="inlinetags" innerClass="code"
+ start="(\&lt;\?(php|=)?)?" end="\?\>" never-contained="yes">
+ <contains all="yes"/>
+ </region>
+
+ <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}" contained="yes">
+ <contains all="yes"/>
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" contained="yes" >
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]" contained="yes">
+ <contains all="yes"/>
+ </region>
+
+
+ <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/" contained="yes">
+ <contains block="phpdoc"/>
+ <contains block="cvstag"/>
+ </region>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string" start="&quot;" end="&quot;" contained="yes">
+ <contains block="var"/>
+ </region>
+
+ <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`" contained="yes">
+ <contains block="var"/>
+ </region>
+
+ <region name="heredoc" delimClass="quotes" innerClass="string" start="/\&lt;\&lt;\&lt;[\x20\x09]*(\w+)$/m" end="/^%1%;?$/m" contained="yes" remember="yes">
+ <contains block="var"/>
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" contained="yes"/>
+
+ <block name="escaped" match="\\\\|\\&quot;|\\'|\\`" innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ <onlyin region="exec"/>
+ </block>
+
+ <block name="descaped" match="\\[\\&quot;'`tnr\$\{]" innerClass="special" contained="yes">
+ <onlyin region="strdouble"/>
+ <onlyin region="heredoc"/>
+ </block>
+
+
+ <region name="comment" start="(#|\/\/)" end="/$|(?=\?\>)/m" innerClass="comment" contained="yes">
+ <contains block="cvstag"/>
+ </region>
+
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" contained="yes"/>
+
+ <block name="typecast" match="\((array|int|integer|string|bool|boolean|object|float|double)\)" innerClass="reserved" contained="yes"/>
+
+ <block name="curlyvar" match="\{\$[a-z_].*\}" innerClass="var" contained="yes">
+ <onlyin region="strdouble"/>
+ <onlyin region="heredoc"/>
+ <onlyin region="exec"/>
+ </block>
+
+ <region name="codeescape" delimClass="inlinetags" innerClass="default" end="\&lt;\?(php|=)?" start="\?\>" contained="yes">
+ <onlyin region="block"/>
+ </region>
+
+ <block name="hexinteger" match="0[xX][\da-f]+" innerClass="number" contained="yes"/>
+ <block name="var" match="\$[a-z_]\w*" innerClass="var" contained="yes"/>
+
+ <block name="integer" match="\d\d*|\b0\b" innerClass="number" contained="yes"/>
+
+
+ <block name="octinteger" match="0[0-7]+" innerClass="number" contained="yes"/>
+
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number" contained="yes"/>
+
+ <block name="exponent"
+ match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)"
+ innerClass="number" contained="yes"/>
+
+ <block name="phpdoc" match="\s@\w+\s" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&amp;=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&amp;=\/%+]*" innerClass="url" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <block name="note" match="\bnote:" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+
+ <block name="cvstag" match="\$\w+\s*:.*\$" innerClass="inlinedoc" contained="yes">
+ <onlyin region="mlcomment"/>
+ <onlyin region="comment"/>
+ </block>
+
+ <keywords name="constants" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="DIRECTORY_SEPARATOR"/>
+ <keyword match="PATH_SEPARATOR"/>
+ </keywords>
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved">
+ <keyword match="echo"/>
+ <keyword match="foreach"/>
+ <keyword match="else"/>
+ <keyword match="if"/>
+ <keyword match="elseif"/>
+ <keyword match="for"/>
+ <keyword match="as"/>
+ <keyword match="while"/>
+ <keyword match="foreach"/>
+ <keyword match="break"/>
+ <keyword match="continue"/>
+ <keyword match="class"/>
+ <keyword match="const"/>
+ <keyword match="declare"/>
+ <keyword match="switch"/>
+ <keyword match="case"/>
+ <keyword match="endfor"/>
+ <keyword match="endswitch"/>
+ <keyword match="endforeach"/>
+ <keyword match="endswitch"/>
+ <keyword match="endif"/>
+ <keyword match="array"/>
+ <keyword match="default"/>
+ <keyword match="do"/>
+ <keyword match="enddeclare"/>
+ <keyword match="eval"/>
+ <keyword match="exit"/>
+ <keyword match="die"/>
+ <keyword match="extends"/>
+ <keyword match="function"/>
+ <keyword match="global"/>
+ <keyword match="include"/>
+ <keyword match="include_once"/>
+ <keyword match="require"/>
+ <keyword match="require_once"/>
+ <keyword match="isset"/>
+ <keyword match="empty"/>
+ <keyword match="list"/>
+ <keyword match="new"/>
+ <keyword match="static"/>
+ <keyword match="unset"/>
+ <keyword match="var"/>
+ <keyword match="return"/>
+ <keyword match="try"/>
+ <keyword match="catch"/>
+ <keyword match="final"/>
+ <keyword match="throw"/>
+ <keyword match="public"/>
+ <keyword match="private"/>
+ <keyword match="protected"/>
+ <keyword match="abstract"/>
+ <keyword match="interface"/>
+ <keyword match="implements"/>
+ <keyword match="const"/>
+ <keyword match="define"/>
+ <keyword match="__FILE__"/>
+ <keyword match="__LINE__"/>
+ <keyword match="__CLASS__"/>
+ <keyword match="__METHOD__"/>
+ <keyword match="__FUNCTION__"/>
+ <keyword match="NULL"/>
+ <keyword match="true"/>
+ <keyword match="false"/>
+ <keyword match="and"/>
+ <keyword match="or"/>
+ <keyword match="xor"/>
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/prado.xml b/framework/Vendor/TextHighlighter/Text/prado.xml
new file mode 100644
index 00000000..480b0bbe
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/prado.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!-- $Id: xml.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="prado" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <region name="cdata" delimClass="comment" innerClass="comment"
+ start="\&lt;\!\[CDATA\[" end="\]\]\&gt;">
+ </region>
+
+ <region name="comment" delimClass="comment" innerClass="comment"
+ start="\&lt;!--" end="--\&gt;">
+ </region>
+
+ <region name="tag" delimClass="brackets" innerClass="code" start="\&lt;[\?\/]?" end="[\/\?]?\&gt;">
+ <contains block="pradoComponent"/>
+ <contains block="tagname"/>
+ <contains region="param"/>
+ <contains block="paramname"/>
+
+ </region>
+
+ <block name="pradoComponent" match="(?&lt;=[\&lt;\/?])com:\w+" innerClass="special" contained="yes"/>
+ <block name="tagname" match="(?&lt;=[\&lt;\/?])[\w\-\:]+" innerClass="reserved" contained="yes"/>
+
+ <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes"/>
+
+ <block name="entity" match="(&amp;|%)[\w\-\.]+;" innerClass="special" />
+
+ <region name="param" start="&quot;" end="&quot;" delimClass="quotes" innerClass="string" contained="yes">
+ <contains block="entity"/>
+ </region>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/python.xml b/framework/Vendor/TextHighlighter/Text/python.xml
new file mode 100644
index 00000000..0baef89c
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/python.xml
@@ -0,0 +1,229 @@
+<?xml version="1.0"?>
+<!-- $Id: python.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="python" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+ <default innerClass="code" />
+
+ <region name="strsingle3" delimClass="quotes" innerClass="string"
+ start="'''" end="'''" />
+
+ <region name="strdouble3" delimClass="quotes" innerClass="string"
+ start="&quot;&quot;&quot;" end="&quot;&quot;&quot;">
+ </region>
+
+ <region name="strdouble" delimClass="quotes" innerClass="string"
+ start="&quot;" end="&quot;" >
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string"
+ start="'" end="'" />
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" >
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]" >
+ <contains all="yes"/>
+ </region>
+
+ <block name="escaped" match="\\." innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ <onlyin region="strsingle3"/>
+ <onlyin region="strdouble"/>
+ <onlyin region="strdouble3"/>
+ </block>
+
+ <block name="possiblefunction" match="[a-z_]\w*(?=\s*\()" innerClass="identifier" />
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" />
+
+ <block name="exponent"
+ match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)"
+ innerClass="number" />
+
+ <block name="imaginary" match="((\d*\.\d+)|(\d+\.\d*)|(\d+))j" innerClass="number"/>
+
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/>
+
+ <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" />
+
+ <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" />
+
+ <block name="octinteger" match="0[0-7]+l?" innerClass="number" />
+
+ <block name="comment" innerClass="comment"
+ match="#.+" />
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="and"/>
+ <keyword match="del"/>
+ <keyword match="for"/>
+ <keyword match="is"/>
+ <keyword match="raise"/>
+ <keyword match="assert"/>
+ <keyword match="elif"/>
+ <keyword match="from"/>
+ <keyword match="lambda"/>
+ <keyword match="return"/>
+ <keyword match="break"/>
+ <keyword match="else"/>
+ <keyword match="global"/>
+ <keyword match="not"/>
+ <keyword match="try"/>
+ <keyword match="class"/>
+ <keyword match="except"/>
+ <keyword match="if"/>
+ <keyword match="or"/>
+ <keyword match="while"/>
+ <keyword match="continue"/>
+ <keyword match="exec"/>
+ <keyword match="import"/>
+ <keyword match="pass"/>
+ <keyword match="yield"/>
+ <keyword match="def"/>
+ <keyword match="finally"/>
+ <keyword match="in"/>
+ <keyword match="print"/>
+ <keyword match="False"/>
+ <keyword match="True"/>
+ <keyword match="None"/>
+ <keyword match="NotImplemented"/>
+ <keyword match="Ellipsis"/>
+
+ <keyword match="Exception" />
+ <keyword match="SystemExit" />
+ <keyword match="StopIteration" />
+ <keyword match="StandardError" />
+ <keyword match="KeyboardInterrupt" />
+ <keyword match="ImportError" />
+ <keyword match="EnvironmentError" />
+ <keyword match="IOError" />
+ <keyword match="OSError" />
+ <keyword match="WindowsError" />
+ <keyword match="EOFError" />
+ <keyword match="RuntimeError" />
+ <keyword match="NotImplementedError" />
+ <keyword match="NameError" />
+ <keyword match="UnboundLocalError" />
+
+ <keyword match="AttributeError" />
+ <keyword match="SyntaxError" />
+ <keyword match="IndentationError" />
+ <keyword match="TabError" />
+ <keyword match="TypeError" />
+ <keyword match="AssertionError" />
+ <keyword match="LookupError" />
+ <keyword match="IndexError" />
+ <keyword match="KeyError" />
+ <keyword match="ArithmeticError" />
+ <keyword match="OverflowError" />
+ <keyword match="ZeroDivisionError" />
+ <keyword match="FloatingPointError" />
+ <keyword match="ValueError" />
+ <keyword match="UnicodeError" />
+ <keyword match="UnicodeEncodeError" />
+ <keyword match="UnicodeDecodeError" />
+
+ <keyword match="UnicodeTranslateError" />
+ <keyword match="ReferenceError" />
+ <keyword match="SystemError" />
+ <keyword match="MemoryError" />
+ <keyword match="Warning" />
+ <keyword match="UserWarning" />
+ <keyword match="DeprecationWarning" />
+ <keyword match="PendingDeprecationWarning" />
+ <keyword match="SyntaxWarning" />
+ <keyword match="OverflowWarning" />
+ <keyword match="RuntimeWarning" />
+ <keyword match="FutureWarning" />
+
+ </keywords>
+
+ <keywords name="builtin" inherits="possiblefunction"
+ innerClass="builtin" otherwise="identifier" case = "yes">
+ <keyword match="__import__"/>
+
+ <keyword match="abs"/>
+ <keyword match="apply"/>
+ <keyword match="basestring"/>
+ <keyword match="bool"/>
+ <keyword match="buffer"/>
+ <keyword match="callable"/>
+ <keyword match="chr"/>
+ <keyword match="classmethod"/>
+ <keyword match="cmp"/>
+
+ <keyword match="coerce"/>
+ <keyword match="compile"/>
+ <keyword match="complex"/>
+ <keyword match="delattr"/>
+ <keyword match="dict"/>
+ <keyword match="dir"/>
+ <keyword match="divmod"/>
+ <keyword match="enumerate"/>
+ <keyword match="eval"/>
+
+ <keyword match="execfile"/>
+ <keyword match="file"/>
+ <keyword match="filter"/>
+ <keyword match="float"/>
+ <keyword match="getattr"/>
+ <keyword match="globals"/>
+ <keyword match="hasattr"/>
+ <keyword match="hash"/>
+ <keyword match="help"/>
+
+ <keyword match="hex"/>
+ <keyword match="id"/>
+ <keyword match="input"/>
+ <keyword match="int"/>
+ <keyword match="intern"/>
+ <keyword match="isinstance"/>
+ <keyword match="issubclass"/>
+ <keyword match="iter"/>
+ <keyword match="len"/>
+
+ <keyword match="list"/>
+ <keyword match="locals"/>
+ <keyword match="long"/>
+ <keyword match="map"/>
+ <keyword match="max"/>
+ <keyword match="min"/>
+ <keyword match="object"/>
+ <keyword match="oct"/>
+ <keyword match="open"/>
+
+ <keyword match="ord"/>
+ <keyword match="pow"/>
+ <keyword match="property"/>
+ <keyword match="range"/>
+ <keyword match="raw_input"/>
+ <keyword match="reduce"/>
+ <keyword match="reload"/>
+ <keyword match="repr"/>
+ <keyword match="round"/>
+
+ <keyword match="setattr"/>
+ <keyword match="slice"/>
+ <keyword match="staticmethod"/>
+ <keyword match="sum"/>
+ <keyword match="super"/>
+ <keyword match="str"/>
+ <keyword match="tuple"/>
+ <keyword match="type"/>
+ <keyword match="unichr"/>
+
+ <keyword match="unicode"/>
+ <keyword match="vars"/>
+ <keyword match="xrange"/>
+ <keyword match="zip"/>
+
+ </keywords>
+
+</highlight>
+
diff --git a/framework/Vendor/TextHighlighter/Text/ruby.xml b/framework/Vendor/TextHighlighter/Text/ruby.xml
new file mode 100644
index 00000000..191f893a
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/ruby.xml
@@ -0,0 +1,141 @@
+<?xml version="1.0"?>
+<!-- $Id: ruby.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="ruby" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+ <comment>
+FIXME: While this construction : s.split /z/i
+is valid, regular expression is not recognized as such
+(/ folowing an identifier or number is not recognized as
+start of RE), making highlighting improper
+
+%q(a (nested) string) does not get highlighted correctly
+ </comment>
+
+ <default innerClass="code" />
+
+ <region name="data" start="/^__END__$/m" end="$" delimClass="reserved" innerClass="comment" never-conteined="yes" />
+
+ <region name="strdouble" delimClass="quotes" innerClass="string"
+ start="&quot;" end="&quot;" >
+ </region>
+
+ <region name="qstrdouble" delimClass="quotes" innerClass="string"
+ start="%[Qx]([!&quot;#\$%&amp;'+\-*.\/:;=?@^`|~{&lt;\[(])" end="%b1%" remember="yes" />
+
+ <region name="strsingle" delimClass="quotes" innerClass="string"
+ start="'" end="'" />
+
+ <region name="qstrsingle" delimClass="quotes" innerClass="string"
+ start="%[wq]([!&quot;#\$%&amp;'+\-*.\/:;=?@^`|~{&lt;\[(])" end="%b1%" remember="yes" />
+
+ <block name="global" match="\$(\W|\w+)" innerClass="var" />
+
+ <block name="classvar" match="/@@?[_a-z][\d_a-z]*/i" innerClass="var" />
+
+ <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" >
+ <contains all="yes"/>
+ </region>
+
+ <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]" >
+ <contains all="yes"/>
+ </region>
+
+ <block name="escaped" match="\\." innerClass="special" contained="yes">
+ <onlyin region="qstrsingle"/>
+ <onlyin region="strsingle"/>
+ <onlyin region="qstrdouble"/>
+ <onlyin region="strdouble"/>
+ <onlyin region="regexp"/>
+ </block>
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" />
+
+ <block name="exponent"
+ match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)"
+ innerClass="number" />
+
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/>
+
+ <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" />
+
+ <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" />
+
+ <block name="octinteger" match="0[0-7]+l?" innerClass="number" />
+
+
+ <region name="rubydoc" start="/^=begin$/m" end="/^=end$/m" delimClass="comment" innerClass="comment">
+ <contains block="cvstag" />
+ </region>
+
+ <block name="cvstag" match="\$\w+\s*:.+\$" innerClass="inlinedoc" contained="yes">
+ <onlyin region="comment"/>
+ <onlyin region="rubydoc"/>
+ </block>
+
+ <region name="comment" innerClass="comment" start="#" end="/$/m" delimClass="comment" >
+ <contains block="cvstag" />
+ </region>
+
+ <region name="regexp" delimClass="quotes" innerClass="string" start="\s*\/" end="\/[iomx]*"
+ neverAfter="(?&lt;!\band|\bor|\bwhile|\buntil|\bunless|\bif|\belsif|\bwhen|[~=!|&amp;(,\[])$">
+ </region>
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes">
+ <keyword match="__FILE__" />
+ <keyword match="require" />
+ <keyword match="and" />
+ <keyword match="def" />
+ <keyword match="end" />
+ <keyword match="in" />
+ <keyword match="or" />
+ <keyword match="self" />
+ <keyword match="unless" />
+ <keyword match="__LINE__" />
+ <keyword match="begin" />
+ <keyword match="defined?" />
+ <keyword match="ensure" />
+ <keyword match="module" />
+ <keyword match="redo" />
+ <keyword match="super" />
+ <keyword match="until" />
+ <keyword match="BEGIN" />
+ <keyword match="break" />
+ <keyword match="do" />
+ <keyword match="false" />
+ <keyword match="next" />
+ <keyword match="rescue" />
+ <keyword match="then" />
+ <keyword match="when" />
+ <keyword match="END" />
+ <keyword match="case" />
+ <keyword match="else" />
+ <keyword match="for" />
+ <keyword match="nil" />
+ <keyword match="retry" />
+ <keyword match="true" />
+ <keyword match="while" />
+ <keyword match="alias" />
+ <keyword match="module_function" />
+ <keyword match="private" />
+ <keyword match="public" />
+ <keyword match="protected" />
+ <keyword match="attr_reader" />
+ <keyword match="attr_writer" />
+ <keyword match="attr_accessor" />
+ <keyword match="class" />
+ <keyword match="elsif" />
+ <keyword match="if" />
+ <keyword match="not" />
+ <keyword match="return" />
+ <keyword match="undef" />
+ <keyword match="yield" />
+ </keywords>
+
+
+</highlight>
+
diff --git a/framework/Vendor/TextHighlighter/Text/sample.css b/framework/Vendor/TextHighlighter/Text/sample.css
new file mode 100644
index 00000000..8b5c9d24
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/sample.css
@@ -0,0 +1,57 @@
+.hl-default {
+ color: Black;
+}
+.hl-code {
+ color: Gray;
+}
+.hl-brackets {
+ color: Olive;
+}
+.hl-comment {
+ color: Orange;
+}
+.hl-quotes {
+ color: Darkred;
+}
+.hl-string {
+ color: Red;
+}
+.hl-identifier {
+ color: Blue;
+}
+.hl-builtin {
+ color: Teal;
+}
+.hl-reserved {
+ color: Green;
+}
+.hl-inlinedoc {
+ color: Blue;
+}
+.hl-var {
+ color: Darkblue;
+}
+.hl-url {
+ color: Blue;
+}
+.hl-special {
+ color: Navy;
+}
+.hl-number {
+ color: Maroon;
+}
+.hl-inlinetags {
+ color: Blue;
+}
+.hl-main {
+ background-color: White;
+}
+.hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px Lightgrey;
+}
diff --git a/framework/Vendor/TextHighlighter/Text/sql.xml b/framework/Vendor/TextHighlighter/Text/sql.xml
new file mode 100644
index 00000000..dcfcfab6
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/sql.xml
@@ -0,0 +1,496 @@
+<?xml version="1.0"?>
+<!-- $Id: sql.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="sql" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <comment>Based on SQL-99</comment>
+
+ <default innerClass="code" />
+
+ <region name="qidentifier" delimClass="quotes" innerClass="identifier"
+ start="`" end="`" />
+
+ <region name="mlcomment" delimClass="comment" innerClass="comment"
+ start="\/\*" end="\*\/" />
+
+ <block name="comment" match="(#|--\s).*" innerClass="comment" />
+
+ <block name="identifier" match="[a-z_]\w*" innerClass="identifier" />
+
+ <region name="strdouble" delimClass="quotes" innerClass="string"
+ start="&quot;" end="&quot;" >
+ </region>
+
+ <region name="brackets" delimClass="brackets" innerClass="code"
+ start="\(" end="\)" >
+ <contains all="yes"/>
+ </region>
+
+ <region name="strsingle" delimClass="quotes" innerClass="string"
+ start="'" end="'" />
+
+ <block name="escaped" match="\\." innerClass="special" contained="yes">
+ <onlyin region="strsingle"/>
+ <onlyin region="strdouble"/>
+ </block>
+
+ <block name="exponent"
+ match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)"
+ innerClass="number" />
+
+ <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/>
+
+ <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" />
+
+ <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" />
+
+ <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "no">
+ <keyword match="ABSOLUTE" />
+ <keyword match="ACTION" />
+ <keyword match="ADD" />
+ <keyword match="ADMIN" />
+ <keyword match="AFTER" />
+ <keyword match="AGGREGATE" />
+ <keyword match="ALIAS" />
+ <keyword match="ALL" />
+ <keyword match="ALLOCATE" />
+ <keyword match="ALTER" />
+ <keyword match="AND" />
+ <keyword match="ANY" />
+ <keyword match="ARE" />
+ <keyword match="ARRAY" />
+ <keyword match="AS" />
+ <keyword match="ASC" />
+ <keyword match="ASSERTION" />
+ <keyword match="AT" />
+ <keyword match="AUTHORIZATION" />
+ <keyword match="BEFORE" />
+ <keyword match="BEGIN" />
+ <keyword match="BINARY" />
+ <keyword match="BIT" />
+ <keyword match="BLOB" />
+ <keyword match="BOOLEAN" />
+ <keyword match="BOTH" />
+ <keyword match="BREADTH" />
+ <keyword match="BY" />
+ <keyword match="CALL" />
+ <keyword match="CASCADE" />
+ <keyword match="CASCADED" />
+ <keyword match="CASE" />
+ <keyword match="CAST" />
+ <keyword match="CATALOG" />
+ <keyword match="CHAR" />
+ <keyword match="CHARACTER" />
+ <keyword match="CHECK" />
+ <keyword match="CLASS" />
+ <keyword match="CLOB" />
+ <keyword match="CLOSE" />
+ <keyword match="COLLATE" />
+ <keyword match="COLLATION" />
+ <keyword match="COLUMN" />
+ <keyword match="COMMIT" />
+ <keyword match="COMPLETION" />
+ <keyword match="CONNECT" />
+ <keyword match="CONNECTION" />
+ <keyword match="CONSTRAINT" />
+ <keyword match="CONSTRAINTS" />
+ <keyword match="CONSTRUCTOR" />
+ <keyword match="CONTINUE" />
+ <keyword match="CORRESPONDING" />
+ <keyword match="CREATE" />
+ <keyword match="CROSS" />
+ <keyword match="CUBE" />
+ <keyword match="CURRENT" />
+ <keyword match="CURRENT_DATE" />
+ <keyword match="CURRENT_PATH" />
+ <keyword match="CURRENT_ROLE" />
+ <keyword match="CURRENT_TIME" />
+ <keyword match="CURRENT_TIMESTAMP" />
+ <keyword match="CURRENT_USER" />
+ <keyword match="CURSOR" />
+ <keyword match="CYCLE" />
+ <keyword match="DATA" />
+ <keyword match="DATE" />
+ <keyword match="DAY" />
+ <keyword match="DEALLOCATE" />
+ <keyword match="DEC" />
+ <keyword match="DECIMAL" />
+ <keyword match="DECLARE" />
+ <keyword match="DEFAULT" />
+ <keyword match="DEFERRABLE" />
+ <keyword match="DEFERRED" />
+ <keyword match="DELETE" />
+ <keyword match="DEPTH" />
+ <keyword match="DEREF" />
+ <keyword match="DESC" />
+ <keyword match="DESCRIBE" />
+ <keyword match="DESCRIPTOR" />
+ <keyword match="DESTROY" />
+ <keyword match="DESTRUCTOR" />
+ <keyword match="DETERMINISTIC" />
+ <keyword match="DIAGNOSTICS" />
+ <keyword match="DICTIONARY" />
+ <keyword match="DISCONNECT" />
+ <keyword match="DISTINCT" />
+ <keyword match="DOMAIN" />
+ <keyword match="DOUBLE" />
+ <keyword match="DROP" />
+ <keyword match="DYNAMIC" />
+ <keyword match="EACH" />
+ <keyword match="ELSE" />
+ <keyword match="END" />
+ <keyword match="END-EXEC" />
+ <keyword match="EQUALS" />
+ <keyword match="ESCAPE" />
+ <keyword match="EVERY" />
+ <keyword match="EXCEPT" />
+ <keyword match="EXCEPTION" />
+ <keyword match="EXEC" />
+ <keyword match="EXECUTE" />
+ <keyword match="EXTERNAL" />
+ <keyword match="FALSE" />
+ <keyword match="FETCH" />
+ <keyword match="FIRST" />
+ <keyword match="FLOAT" />
+ <keyword match="FOR" />
+ <keyword match="FOREIGN" />
+ <keyword match="FOUND" />
+ <keyword match="FREE" />
+ <keyword match="FROM" />
+ <keyword match="FULL" />
+ <keyword match="FUNCTION" />
+ <keyword match="GENERAL" />
+ <keyword match="GET" />
+ <keyword match="GLOBAL" />
+ <keyword match="GO" />
+ <keyword match="GOTO" />
+ <keyword match="GRANT" />
+ <keyword match="GROUP" />
+ <keyword match="GROUPING" />
+ <keyword match="HAVING" />
+ <keyword match="HOST" />
+ <keyword match="HOUR" />
+ <keyword match="IDENTITY" />
+ <keyword match="IGNORE" />
+ <keyword match="IMMEDIATE" />
+ <keyword match="IN" />
+ <keyword match="INDICATOR" />
+ <keyword match="INITIALIZE" />
+ <keyword match="INITIALLY" />
+ <keyword match="INNER" />
+ <keyword match="INOUT" />
+ <keyword match="INPUT" />
+ <keyword match="INSERT" />
+ <keyword match="INT" />
+ <keyword match="INTEGER" />
+ <keyword match="INTERSECT" />
+ <keyword match="INTERVAL" />
+ <keyword match="INTO" />
+ <keyword match="IS" />
+ <keyword match="ISOLATION" />
+ <keyword match="ITERATE" />
+ <keyword match="JOIN" />
+ <keyword match="KEY" />
+ <keyword match="LANGUAGE" />
+ <keyword match="LARGE" />
+ <keyword match="LAST" />
+ <keyword match="LATERAL" />
+ <keyword match="LEADING" />
+ <keyword match="LEFT" />
+ <keyword match="LESS" />
+ <keyword match="LEVEL" />
+ <keyword match="LIKE" />
+ <keyword match="LIMIT" />
+ <keyword match="LOCAL" />
+ <keyword match="LOCALTIME" />
+ <keyword match="LOCALTIMESTAMP" />
+ <keyword match="LOCATOR" />
+ <keyword match="MAP" />
+ <keyword match="MATCH" />
+ <keyword match="MINUTE" />
+ <keyword match="MODIFIES" />
+ <keyword match="MODIFY" />
+ <keyword match="MODULE" />
+ <keyword match="MONTH" />
+ <keyword match="NAMES" />
+ <keyword match="NATIONAL" />
+ <keyword match="NATURAL" />
+ <keyword match="NCHAR" />
+ <keyword match="NCLOB" />
+ <keyword match="NEW" />
+ <keyword match="NEXT" />
+ <keyword match="NO" />
+ <keyword match="NONE" />
+ <keyword match="NOT" />
+ <keyword match="NULL" />
+ <keyword match="NUMERIC" />
+ <keyword match="OBJECT" />
+ <keyword match="OF" />
+ <keyword match="OFF" />
+ <keyword match="OLD" />
+ <keyword match="ON" />
+ <keyword match="ONLY" />
+ <keyword match="OPEN" />
+ <keyword match="OPERATION" />
+ <keyword match="OPTION" />
+ <keyword match="OR" />
+ <keyword match="ORDER" />
+ <keyword match="ORDINALITY" />
+ <keyword match="OUT" />
+ <keyword match="OUTER" />
+ <keyword match="OUTPUT" />
+ <keyword match="PAD" />
+ <keyword match="PARAMETER" />
+ <keyword match="PARAMETERS" />
+ <keyword match="PARTIAL" />
+ <keyword match="PATH" />
+ <keyword match="POSTFIX" />
+ <keyword match="PRECISION" />
+ <keyword match="PREFIX" />
+ <keyword match="PREORDER" />
+ <keyword match="PREPARE" />
+ <keyword match="PRESERVE" />
+ <keyword match="PRIMARY" />
+ <keyword match="PRIOR" />
+ <keyword match="PRIVILEGES" />
+ <keyword match="PROCEDURE" />
+ <keyword match="PUBLIC" />
+ <keyword match="READ" />
+ <keyword match="READS" />
+ <keyword match="REAL" />
+ <keyword match="RECURSIVE" />
+ <keyword match="REF" />
+ <keyword match="REFERENCES" />
+ <keyword match="REFERENCING" />
+ <keyword match="RELATIVE" />
+ <keyword match="RESTRICT" />
+ <keyword match="RESULT" />
+ <keyword match="RETURN" />
+ <keyword match="RETURNS" />
+ <keyword match="REVOKE" />
+ <keyword match="RIGHT" />
+ <keyword match="ROLE" />
+ <keyword match="ROLLBACK" />
+ <keyword match="ROLLUP" />
+ <keyword match="ROUTINE" />
+ <keyword match="ROW" />
+ <keyword match="ROWS" />
+ <keyword match="SAVEPOINT" />
+ <keyword match="SCHEMA" />
+ <keyword match="SCOPE" />
+ <keyword match="SCROLL" />
+ <keyword match="SEARCH" />
+ <keyword match="SECOND" />
+ <keyword match="SECTION" />
+ <keyword match="SELECT" />
+ <keyword match="SEQUENCE" />
+ <keyword match="SESSION" />
+ <keyword match="SESSION_USER" />
+ <keyword match="SET" />
+ <keyword match="SETS" />
+ <keyword match="SIZE" />
+ <keyword match="SMALLINT" />
+ <keyword match="SOME" />
+ <keyword match="SPACE" />
+ <keyword match="SPECIFIC" />
+ <keyword match="SPECIFICTYPE" />
+ <keyword match="SQL" />
+ <keyword match="SQLEXCEPTION" />
+ <keyword match="SQLSTATE" />
+ <keyword match="SQLWARNING" />
+ <keyword match="START" />
+ <keyword match="STATE" />
+ <keyword match="STATEMENT" />
+ <keyword match="STATIC" />
+ <keyword match="STRUCTURE" />
+ <keyword match="SYSTEM_USER" />
+ <keyword match="TABLE" />
+ <keyword match="TEMPORARY" />
+ <keyword match="TERMINATE" />
+ <keyword match="THAN" />
+ <keyword match="THEN" />
+ <keyword match="TIME" />
+ <keyword match="TIMESTAMP" />
+ <keyword match="TIMEZONE_HOUR" />
+ <keyword match="TIMEZONE_MINUTE" />
+ <keyword match="TO" />
+ <keyword match="TRAILING" />
+ <keyword match="TRANSACTION" />
+ <keyword match="TRANSLATION" />
+ <keyword match="TREAT" />
+ <keyword match="TRIGGER" />
+ <keyword match="TRUE" />
+ <keyword match="UNDER" />
+ <keyword match="UNION" />
+ <keyword match="UNIQUE" />
+ <keyword match="UNKNOWN" />
+ <keyword match="UNNEST" />
+ <keyword match="UPDATE" />
+ <keyword match="USAGE" />
+ <keyword match="USER" />
+ <keyword match="USING" />
+ <keyword match="VALUE" />
+ <keyword match="VALUES" />
+ <keyword match="VARCHAR" />
+ <keyword match="VARIABLE" />
+ <keyword match="VARYING" />
+ <keyword match="VIEW" />
+ <keyword match="WHEN" />
+ <keyword match="WHENEVER" />
+ <keyword match="WHERE" />
+ <keyword match="WITH" />
+ <keyword match="WITHOUT" />
+ <keyword match="WORK" />
+ <keyword match="WRITE" />
+ <keyword match="YEAR" />
+ <keyword match="ZONE" />
+ </keywords>
+ <keywords name="keyword" inherits="identifier" innerClass="var" case = "no">
+ <keyword match="ABS" />
+ <keyword match="ADA" />
+ <keyword match="ASENSITIVE" />
+ <keyword match="ASSIGNMENT" />
+ <keyword match="ASYMMETRIC" />
+ <keyword match="ATOMIC" />
+ <keyword match="AVG" />
+ <keyword match="BETWEEN" />
+ <keyword match="BITVAR" />
+ <keyword match="BIT_LENGTH" />
+ <keyword match="C" />
+ <keyword match="CALLED" />
+ <keyword match="CARDINALITY" />
+ <keyword match="CATALOG_NAME" />
+ <keyword match="CHAIN" />
+ <keyword match="CHARACTER_LENGTH" />
+ <keyword match="CHARACTER_SET_CATALOG" />
+ <keyword match="CHARACTER_SET_NAME" />
+ <keyword match="CHARACTER_SET_SCHEMA" />
+ <keyword match="CHAR_LENGTH" />
+ <keyword match="CHECKED" />
+ <keyword match="CLASS_ORIGIN" />
+ <keyword match="COALESCE" />
+ <keyword match="COBOL" />
+ <keyword match="COLLATION_CATALOG" />
+ <keyword match="COLLATION_NAME" />
+ <keyword match="COLLATION_SCHEMA" />
+ <keyword match="COLUMN_NAME" />
+ <keyword match="COMMAND_FUNCTION" />
+ <keyword match="COMMAND_FUNCTION_CODE" />
+ <keyword match="COMMITTED" />
+ <keyword match="CONDITION_NUMBER" />
+ <keyword match="CONNECTION_NAME" />
+ <keyword match="CONSTRAINT_CATALOG" />
+ <keyword match="CONSTRAINT_NAME" />
+ <keyword match="CONSTRAINT_SCHEMA" />
+ <keyword match="CONTAINS" />
+ <keyword match="CONVERT" />
+ <keyword match="COUNT" />
+ <keyword match="CURSOR_NAME" />
+ <keyword match="DATETIME_INTERVAL_CODE" />
+ <keyword match="DATETIME_INTERVAL_PRECISION" />
+ <keyword match="DEFINED" />
+ <keyword match="DEFINER" />
+ <keyword match="DISPATCH" />
+ <keyword match="DYNAMIC_FUNCTION" />
+ <keyword match="DYNAMIC_FUNCTION_CODE" />
+ <keyword match="EXISTING" />
+ <keyword match="EXISTS" />
+ <keyword match="EXTRACT" />
+ <keyword match="FINAL" />
+ <keyword match="FORTRAN" />
+ <keyword match="G" />
+ <keyword match="GENERATED" />
+ <keyword match="GRANTED" />
+ <keyword match="HIERARCHY" />
+ <keyword match="HOLD" />
+ <keyword match="IMPLEMENTATION" />
+ <keyword match="INFIX" />
+ <keyword match="INSENSITIVE" />
+ <keyword match="INSTANCE" />
+ <keyword match="INSTANTIABLE" />
+ <keyword match="INVOKER" />
+ <keyword match="K" />
+ <keyword match="KEY_MEMBER" />
+ <keyword match="KEY_TYPE" />
+ <keyword match="LENGTH" />
+ <keyword match="LOWER" />
+ <keyword match="M" />
+ <keyword match="MAX" />
+ <keyword match="MESSAGE_LENGTH" />
+ <keyword match="MESSAGE_OCTET_LENGTH" />
+ <keyword match="MESSAGE_TEXT" />
+ <keyword match="METHOD" />
+ <keyword match="MIN" />
+ <keyword match="MOD" />
+ <keyword match="MORE" />
+ <keyword match="MUMPS" />
+ <keyword match="NAME" />
+ <keyword match="NULLABLE" />
+ <keyword match="NULLIF" />
+ <keyword match="NUMBER" />
+ <keyword match="OCTET_LENGTH" />
+ <keyword match="OPTIONS" />
+ <keyword match="OVERLAPS" />
+ <keyword match="OVERLAY" />
+ <keyword match="OVERRIDING" />
+ <keyword match="PARAMETER_MODE" />
+ <keyword match="PARAMETER_NAME" />
+ <keyword match="PARAMETER_ORDINAL_POSITION" />
+ <keyword match="PARAMETER_SPECIFIC_CATALOG" />
+ <keyword match="PARAMETER_SPECIFIC_NAME" />
+ <keyword match="PARAMETER_SPECIFIC_SCHEMA" />
+ <keyword match="PASCAL" />
+ <keyword match="PLI" />
+ <keyword match="POSITION" />
+ <keyword match="REPEATABLE" />
+ <keyword match="RETURNED_LENGTH" />
+ <keyword match="RETURNED_OCTET_LENGTH" />
+ <keyword match="RETURNED_SQLSTATE" />
+ <keyword match="ROUTINE_CATALOG" />
+ <keyword match="ROUTINE_NAME" />
+ <keyword match="ROUTINE_SCHEMA" />
+ <keyword match="ROW_COUNT" />
+ <keyword match="SCALE" />
+ <keyword match="SCHEMA_NAME" />
+ <keyword match="SECURITY" />
+ <keyword match="SELF" />
+ <keyword match="SENSITIVE" />
+ <keyword match="SERIALIZABLE" />
+ <keyword match="SERVER_NAME" />
+ <keyword match="SIMILAR" />
+ <keyword match="SIMPLE" />
+ <keyword match="SOURCE" />
+ <keyword match="SPECIFIC_NAME" />
+ <keyword match="STYLE" />
+ <keyword match="SUBCLASS_ORIGIN" />
+ <keyword match="SUBLIST" />
+ <keyword match="SUBSTRING" />
+ <keyword match="SUM" />
+ <keyword match="SYMMETRIC" />
+ <keyword match="SYSTEM" />
+ <keyword match="TABLE_NAME" />
+ <keyword match="TRANSACTIONS_COMMITTED" />
+ <keyword match="TRANSACTIONS_ROLLED_BACK" />
+ <keyword match="TRANSACTION_ACTIVE" />
+ <keyword match="TRANSFORM" />
+ <keyword match="TRANSFORMS" />
+ <keyword match="TRANSLATE" />
+ <keyword match="TRIGGER_CATALOG" />
+ <keyword match="TRIGGER_NAME" />
+ <keyword match="TRIGGER_SCHEMA" />
+ <keyword match="TRIM" />
+ <keyword match="TYPE" />
+ <keyword match="UNCOMMITTED" />
+ <keyword match="UNNAMED" />
+ <keyword match="UPPER" />
+ <keyword match="USER_DEFINED_TYPE_CATALOG" />
+ <keyword match="USER_DEFINED_TYPE_NAME" />
+ <keyword match="USER_DEFINED_TYPE_SCHEMA" />
+ </keywords>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/Text/xml.xml b/framework/Vendor/TextHighlighter/Text/xml.xml
new file mode 100644
index 00000000..a80ffc1a
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/Text/xml.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!-- $Id: xml.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp $ -->
+
+<highlight lang="xml" case="no">
+
+ <authors>
+ <author name="Andrey Demenev" email="demenev@gmail.com"/>
+ </authors>
+
+
+ <default innerClass="code" />
+
+ <region name="cdata" delimClass="comment" innerClass="comment"
+ start="\&lt;\!\[CDATA\[" end="\]\]\&gt;">
+ </region>
+
+ <region name="comment" delimClass="comment" innerClass="comment"
+ start="\&lt;!--" end="--\&gt;">
+ </region>
+
+ <region name="tag" delimClass="brackets" innerClass="code" start="\&lt;[\?\/]?" end="[\/\?]?\&gt;">
+ <contains block="tagname"/>
+ <contains region="param"/>
+ <contains block="paramname"/>
+ </region>
+
+ <block name="tagname" match="(?&lt;=[\&lt;\/?])[\w\-\:]+" innerClass="reserved" contained="yes"/>
+
+ <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes"/>
+
+ <block name="entity" match="(&amp;|%)[\w\-\.]+;" innerClass="special" />
+
+ <region name="param" start="&quot;" end="&quot;" delimClass="quotes" innerClass="string" contained="yes">
+ <contains block="entity"/>
+ </region>
+
+</highlight>
diff --git a/framework/Vendor/TextHighlighter/highlight.css b/framework/Vendor/TextHighlighter/highlight.css
new file mode 100644
index 00000000..c581fb9f
--- /dev/null
+++ b/framework/Vendor/TextHighlighter/highlight.css
@@ -0,0 +1,441 @@
+.php-hl-default {
+ color: Black;
+}
+.php-hl-code {
+ color: Gray;
+}
+.php-hl-brackets {
+ color: Olive;
+}
+.php-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.php-hl-quotes {
+ color: red;
+}
+.php-hl-string {
+ color: Red;
+}
+.php-hl-identifier {
+ color: green;
+}
+.php-hl-builtin {
+ color: Teal;
+}
+.php-hl-reserved {
+ color: black;
+ font-weight: bold;
+}
+.php-hl-inlinedoc {
+ color: Blue;
+}
+.php-hl-var {
+ color: blue;
+}
+.php-hl-url {
+ color: Blue;
+}
+.php-hl-special {
+ color: Navy;
+}
+.php-hl-number {
+ color: Maroon;
+}
+.php-hl-inlinetags {
+ color: Blue;
+}
+.php-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.php-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.php-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+
+.prado-hl-default {
+ color: Black;
+}
+.prado-hl-code {
+ color: Gray;
+}
+.prado-hl-brackets {
+ color: Olive;
+}
+.prado-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.prado-hl-quotes {
+ color: red;
+}
+.prado-hl-string {
+ color: Red;
+}
+.prado-hl-identifier {
+ color: Blue;
+}
+.prado-hl-builtin {
+ color: Teal;
+}
+.prado-hl-reserved {
+ color: Green;
+}
+.prado-hl-inlinedoc {
+ color: Blue;
+}
+.prado-hl-var {
+ color: #000020;
+}
+.prado-hl-url {
+ color: Blue;
+}
+.prado-hl-special {
+ color: Navy;
+ font-weight: bold;
+}
+.prado-hl-number {
+ color: Maroon;
+}
+.prado-hl-inlinetags {
+ color: Blue;
+}
+.prado-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.prado-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.prado-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+
+.xml-hl-default {
+ color: Black;
+}
+.xml-hl-code {
+ color: Gray;
+}
+.xml-hl-brackets {
+ color: Olive;
+}
+.xml-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.xml-hl-quotes {
+ color: red;
+}
+.xml-hl-string {
+ color: Red;
+}
+.xml-hl-identifier {
+ color: Blue;
+}
+.xml-hl-builtin {
+ color: Teal;
+}
+.xml-hl-reserved {
+ color: Green;
+}
+.xml-hl-inlinedoc {
+ color: Blue;
+}
+.xml-hl-var {
+ color: #000020;
+}
+.xml-hl-url {
+ color: Blue;
+}
+.xml-hl-special {
+ color: Navy;
+}
+.xml-hl-number {
+ color: Maroon;
+}
+.xml-hl-inlinetags {
+ color: Blue;
+}
+.xml-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.xml-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.xml-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+.html-hl-default {
+ color: Black;
+}
+.html-hl-code {
+ color: Gray;
+}
+.html-hl-brackets {
+ color: Olive;
+}
+.html-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.html-hl-quotes {
+ color: red;
+}
+.html-hl-string {
+ color: Red;
+}
+.html-hl-identifier {
+ color: Blue;
+}
+.html-hl-builtin {
+ color: Teal;
+}
+.html-hl-reserved {
+ color: Green;
+}
+.html-hl-inlinedoc {
+ color: Blue;
+}
+.html-hl-var {
+ color: #000020;
+}
+.html-hl-url {
+ color: Blue;
+}
+.html-hl-special {
+ color: Navy;
+}
+.html-hl-number {
+ color: Maroon;
+}
+.html-hl-inlinetags {
+ color: Blue;
+}
+.html-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.html-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.html-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+.css-hl-default {
+ color: Black;
+}
+.css-hl-code {
+ color: Gray;
+}
+.css-hl-brackets {
+ color: Olive;
+}
+.css-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.css-hl-quotes {
+ color: red;
+}
+.css-hl-string {
+ color: Red;
+}
+.css-hl-identifier {
+ color: Blue;
+}
+.css-hl-builtin {
+ color: Teal;
+}
+.css-hl-reserved {
+ color: Green;
+}
+.css-hl-inlinedoc {
+ color: Blue;
+}
+.css-hl-var {
+ color: #000020;
+}
+.css-hl-url {
+ color: Blue;
+}
+.css-hl-special {
+ color: Navy;
+}
+.css-hl-number {
+ color: Maroon;
+}
+.css-hl-inlinetags {
+ color: Blue;
+}
+.css-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.css-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.css-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+.javascript-hl-default {
+ color: Black;
+}
+.javascript-hl-code {
+ color: Gray;
+}
+.javascript-hl-brackets {
+ color: Olive;
+}
+.javascript-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.javascript-hl-quotes {
+ color: red;
+}
+.javascript-hl-string {
+ color: Red;
+}
+.javascript-hl-identifier {
+ color: Blue;
+}
+.javascript-hl-builtin {
+ color: Teal;
+}
+.javascript-hl-reserved {
+ color: Green;
+}
+.javascript-hl-inlinedoc {
+ color: Blue;
+}
+.javascript-hl-var {
+ color: #000020;
+}
+.javascript-hl-url {
+ color: Blue;
+}
+.javascript-hl-special {
+ color: Navy;
+}
+.javascript-hl-number {
+ color: Maroon;
+}
+.javascript-hl-inlinetags {
+ color: Blue;
+}
+.javascript-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.javascript-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.javascript-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+
+.sql-hl-default {
+ color: Black;
+}
+.sql-hl-code {
+ color: Gray;
+}
+.sql-hl-brackets {
+ color: Olive;
+}
+.sql-hl-comment {
+ color: #808080;
+ font-style: italic;
+}
+.sql-hl-quotes {
+ color: red;
+}
+.sql-hl-string {
+ color: Red;
+}
+.sql-hl-identifier {
+ color: Blue;
+}
+.sql-hl-builtin {
+ color: Teal;
+}
+.sql-hl-reserved {
+ color: Green;
+}
+.sql-hl-inlinedoc {
+ color: Blue;
+}
+.sql-hl-var {
+ color: #000020;
+}
+.sql-hl-url {
+ color: Blue;
+}
+.sql-hl-special {
+ color: Navy;
+}
+.sql-hl-number {
+ color: Maroon;
+}
+.sql-hl-inlinetags {
+ color: Blue;
+}
+.sql-hl-main {
+ font-family: 'Courier New', Courier, monospace;
+ font-weight: normal;
+}
+.sql-hl-gutter {
+ background-color: #999999;
+ color: White
+}
+.sql-hl-table {
+ font-family: courier;
+ font-size: 12px;
+ border: solid 1px #505050;
+}
+
+.source .copycode
+{
+ text-align: right;
+ float: right;
+}
+
+.source .copycode a
+{
+ cursor: pointer;
+ color: blue;
+}
+
+.source .copycode_hover a
+{
+ color: red;
+}
diff --git a/framework/Vendor/TinyMCE/license.txt b/framework/Vendor/TinyMCE/license.txt
new file mode 100644
index 00000000..60d6d4c8
--- /dev/null
+++ b/framework/Vendor/TinyMCE/license.txt
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/framework/Vendor/TinyMCE/tiny_mce.md5 b/framework/Vendor/TinyMCE/tiny_mce.md5
new file mode 100644
index 00000000..48eb6ae9
--- /dev/null
+++ b/framework/Vendor/TinyMCE/tiny_mce.md5
@@ -0,0 +1 @@
+b1cc9a3ca9783069a9435767a7dc6048 tiny_mce.tar
diff --git a/framework/Vendor/TinyMCE/tiny_mce.tar b/framework/Vendor/TinyMCE/tiny_mce.tar
new file mode 100644
index 00000000..e8283608
--- /dev/null
+++ b/framework/Vendor/TinyMCE/tiny_mce.tar
Binary files differ
diff --git a/framework/Vendor/WsdlGen/Wsdl.php b/framework/Vendor/WsdlGen/Wsdl.php
new file mode 100644
index 00000000..7344812b
--- /dev/null
+++ b/framework/Vendor/WsdlGen/Wsdl.php
@@ -0,0 +1,286 @@
+<?php
+/**
+ * Wsdl file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the BSD License.
+ *
+ * Copyright(c) 2005 by Marcus Nyeholt. All rights reserved.
+ *
+ * To contact the author write to {@link mailto:tanus@users.sourceforge.net Marcus Nyeholt}
+ * This file is part of the PRADO framework from {@link http://www.xisc.com}
+ *
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @package System.Web.Services.SOAP
+ */
+
+/**
+ * Contains the dom object used to build up the wsdl. The
+ * operations generated by the generator are stored in here until the getWsdl()
+ * method is called which builds and returns the generated XML string.
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision$
+ */
+class Wsdl
+{
+ /**
+ * The name of the service (usually the classname)
+ * @var string
+ */
+ private $serviceName;
+
+ /**
+ * The URI to find the service at. If empty, the current
+ * uri will be used (minus any query string)
+ */
+ private $serviceUri;
+
+ /**
+ * The complex types declarations
+ * @var ArrayObject
+ */
+ private $types;
+
+
+ /**
+ * A collection of SOAP operations
+ * @var array
+ */
+ private $operations=array();
+
+ /**
+ * Wsdl DOMDocument that's generated.
+ */
+ private $wsdl = null;
+
+ /**
+ * The definitions created for the WSDL
+ */
+ private $definitions = null;
+
+ /**
+ * The target namespace variable?
+ */
+ private $targetNamespace ='';
+
+ /**
+ * The binding style (default at the moment)
+ */
+ private $bindingStyle = 'rpc';
+
+ /**
+ * The binding uri
+ */
+ private $bindingTransport = 'http://schemas.xmlsoap.org/soap/http';
+
+ private $_encoding='';
+
+ private static $_primitiveTypes = array('string', 'int', 'float', 'boolean', 'date', 'time', 'dateTime');
+
+ /**
+ * Creates a new Wsdl thing
+ * @param string $name the name of the service.
+ * @param string $serviceUri The URI of the service that handles this WSDL
+ * @param string character encoding
+ */
+ public function __construct($name, $serviceUri='', $encoding='')
+ {
+ $this->_encoding = $encoding;
+ $this->serviceName = $name;
+ $protocol=(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']!=='off'))?'https://':'http://';
+ if ($serviceUri === '') $serviceUri = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
+ $this->serviceUri = str_replace('&amp;', '&', $serviceUri);
+ $this->types = new ArrayObject();
+ $this->targetNamespace = 'urn:'.$name.'wsdl';
+ }
+
+ public function getWsdl()
+ {
+ $this->buildWsdl();
+ return $this->wsdl;
+ }
+
+ /**
+ * Generates the WSDL file into the $this->wsdl variable
+ */
+ protected function buildWsdl()
+ {
+ $encoding = $this->_encoding==='' ? '' : 'encoding="'.$this->_encoding.'"';
+
+ $xml = '<?xml version="1.0" '.$encoding.'?>
+ <definitions name="'.$this->serviceName.'" targetNamespace="'.$this->targetNamespace.'"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="'.$this->targetNamespace.'"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:soap-enc="http://schemas.xmlsoap.org/soap/encoding/"></definitions>';
+
+ $dom = new DOMDocument();
+ $dom->loadXml($xml);
+ $this->definitions = $dom->documentElement;
+
+ $this->addTypes($dom);
+
+ $this->addMessages($dom);
+ $this->addPortTypes($dom);
+ $this->addBindings($dom);
+ $this->addService($dom);
+
+ $this->wsdl = $dom->saveXML();
+ }
+
+ /**
+ * Adds complexType definitions to the document
+ * @param DomDocument $dom The document to add to
+ */
+ public function addTypes(DomDocument $dom)
+ {
+ if (!count($this->types)) return;
+ $types = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:types');
+ $schema = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:schema');
+ $schema->setAttribute('targetNamespace', $this->targetNamespace);
+ foreach($this->types as $type => $elements)
+ {
+ $complexType = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:complexType');
+ $complexType->setAttribute('name', $type);
+ if(substr($type, strlen($type) - 5, 5) == 'Array') // if it's an array
+ {
+ $sequence = $dom->createElement("xsd:sequence");
+
+ $singularType = substr($type, 0, strlen($type) - 5);
+ $e = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:element');
+ $e->setAttribute('name', $singularType);
+ $e->setAttribute('type', sprintf('tns:%s',$singularType));
+ $e->setAttribute('minOccurs','0');
+ $e->setAttribute('maxOccurs','unbounded');
+ $sequence->appendChild($e);
+ $complexType->appendChild($sequence);
+ }
+ else
+ {
+ $all = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:all');
+ foreach($elements as $elem)
+ {
+ $e = $dom->createElementNS('http://www.w3.org/2001/XMLSchema', 'xsd:element');
+ $e->setAttribute('name', $elem['name']);
+ $e->setAttribute('type', $elem['type']);
+ if($elem['minOc']!==false)
+ $e->setAttribute('minOccurs',$elem['minOc']);
+ if($elem['maxOc']!==false)
+ $e->setAttribute('maxOccurs',$elem['maxOc']);
+ if($elem['nil']!==false)
+ $e->setAttribute('nillable',$elem['nil']);
+ $all->appendChild($e);
+ }
+ $complexType->appendChild($all);
+ }
+ $schema->appendChild($complexType);
+ $types->appendChild($schema);
+ }
+
+ $this->definitions->appendChild($types);
+ }
+
+ /**
+ * @return string prefix 'xsd:' for primitive array types, otherwise, 'tns:'
+ */
+ protected function getArrayTypePrefix($type)
+ {
+ $elementType = substr($type, 0, strlen($type) - 5);
+ return in_array($elementType, self::$_primitiveTypes) ? 'xsd:' : 'tns:';
+ }
+
+ /**
+ * Add messages for the service
+ * @param DomDocument $dom The document to add to
+ */
+ protected function addMessages(DomDocument $dom)
+ {
+ foreach ($this->operations as $operation) {
+ $operation->setMessageElements($this->definitions, $dom);
+ }
+ }
+
+ /**
+ * Add the port types for the service
+ * @param DomDocument $dom The document to add to
+ */
+ protected function addPortTypes(DOMDocument $dom)
+ {
+ $portType = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:portType');
+ $portType->setAttribute('name', $this->serviceName.'PortType');
+
+ $this->definitions->appendChild($portType);
+ foreach ($this->operations as $operation) {
+ $portOperation = $operation->getPortOperation($dom);
+ $portType->appendChild($portOperation);
+ }
+ }
+
+ /**
+ * Add the bindings for the service
+ * @param DomDocument $dom The document to add to
+ */
+ protected function addBindings(DOMDocument $dom)
+ {
+ $binding = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:binding');
+ $binding->setAttribute('name', $this->serviceName.'Binding');
+ $binding->setAttribute('type', 'tns:'.$this->serviceName.'PortType');
+
+ $soapBinding = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/soap/', 'soap:binding');
+ $soapBinding->setAttribute('style', $this->bindingStyle);
+ $soapBinding->setAttribute('transport', $this->bindingTransport);
+ $binding->appendChild($soapBinding);
+
+ $this->definitions->appendChild($binding);
+
+ foreach ($this->operations as $operation) {
+ $bindingOperation = $operation->getBindingOperation($dom, $this->targetNamespace, $this->bindingStyle);
+ $binding->appendChild($bindingOperation);
+ }
+ }
+
+ /**
+ * Add the service definition
+ * @param DomDocument $dom The document to add to
+ */
+ protected function addService(DomDocument $dom)
+ {
+ $service = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:service');
+ $service->setAttribute('name', $this->serviceName.'Service');
+
+ $port = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:port');
+ $port->setAttribute('name', $this->serviceName.'Port');
+ $port->setAttribute('binding', 'tns:'.$this->serviceName.'Binding');
+
+ $soapAddress = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/soap/', 'soap:address');
+ $soapAddress->setAttribute('location', $this->serviceUri);
+ $port->appendChild($soapAddress);
+
+ $service->appendChild($port);
+
+ $this->definitions->appendChild($service);
+ }
+
+ /**
+ * Adds an operation to have port types and bindings output
+ * @param WsdlOperation $operation The operation to add
+ */
+ public function addOperation(WsdlOperation $operation)
+ {
+ $this->operations[] = $operation;
+ }
+
+ /**
+ * Adds complexTypes to the wsdl
+ * @param string $type Name of the type
+ * @param Array $elements Elements of the type (each one is an associative array('name','type'))
+ */
+ public function addComplexType($type, $elements)
+ {
+ $this->types[$type] = $elements;
+ }
+}
diff --git a/framework/Vendor/WsdlGen/WsdlGenerator.php b/framework/Vendor/WsdlGen/WsdlGenerator.php
new file mode 100644
index 00000000..e4624ef4
--- /dev/null
+++ b/framework/Vendor/WsdlGen/WsdlGenerator.php
@@ -0,0 +1,317 @@
+<?php
+/**
+ * WsdlGenerator file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the BSD License.
+ *
+ * Copyright(c) 2005 by Marcus Nyeholt. All rights reserved.
+ *
+ * To contact the author write to {@link mailto:tanus@users.sourceforge.net Marcus Nyeholt}
+ * This file is part of the PRADO framework from {@link http://www.xisc.com}
+ *
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @package System.Web.Services.SOAP
+ */
+
+require_once(dirname(__FILE__).'/Wsdl.php');
+require_once(dirname(__FILE__).'/WsdlMessage.php');
+require_once(dirname(__FILE__).'/WsdlOperation.php');
+
+/**
+ * Generator for the wsdl.
+ * Special thanks to Cristian Losada for implementing the Complex Types section of the WSDL.
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Cristian Losada <cristian@teaxul.com>
+ * @version $Revision$
+ */
+class WsdlGenerator
+{
+ /**
+ * The instance.
+ * var WsdlGenerator
+ */
+ private static $instance;
+
+ /**
+ * The name of this service (the classname)
+ * @var string
+ */
+ private $serviceName = '';
+
+ /**
+ * The complex types to use in the wsdl
+ * @var Array
+ */
+ private $types = array();
+
+ /**
+ * The operations available in this wsdl
+ * @var ArrayObject
+ */
+ private $operations;
+
+ /**
+ * The wsdl object.
+ * @var object
+ */
+ private $wsdlDocument;
+
+ /**
+ * The actual wsdl string
+ * @var string
+ */
+ private $wsdl = '';
+
+ /**
+ * The singleton instance for the generator
+ */
+ public static function getInstance()
+ {
+ if (is_null(self::$instance)) {
+ self::$instance = new WsdlGenerator();
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Get the Wsdl generated
+ * @return string The Wsdl for this wsdl
+ */
+ public function getWsdl()
+ {
+ return $this->wsdl;
+ }
+
+ /**
+ * Generates WSDL for a passed in class, and saves it in the current object. The
+ * WSDL can then be retrieved by calling
+ * @param string $className The name of the class to generate for
+ * @param string $serviceUri The URI of the service that handles this WSDL
+ * @param string $encoding character encoding.
+ * @return void
+ */
+ public function generateWsdl($className, $serviceUri='',$encoding='')
+ {
+ $this->wsdlDocument = new Wsdl($className, $serviceUri, $encoding);
+
+ $classReflect = new ReflectionClass($className);
+ $methods = $classReflect->getMethods();
+
+ foreach ($methods as $method) {
+ // Only process public methods
+ if ($method->isPublic()) {
+ $this->processMethod($method);
+ }
+ }
+
+ foreach($this->types as $type => $elements) {
+ $this->wsdlDocument->addComplexType($type, $elements);
+ }
+
+ $this->wsdl = $this->wsdlDocument->getWsdl();
+ }
+
+ /**
+ * Static method that generates and outputs the generated wsdl
+ * @param string $className The name of the class to export
+ * @param string $serviceUri The URI of the service that handles this WSDL
+ * @param string $encoding character encoding.
+ */
+ public static function generate($className, $serviceUri='', $encoding='')
+ {
+ $generator = WsdlGenerator::getInstance();
+ $generator->generateWsdl($className, $serviceUri,$encoding);
+ //header('Content-type: text/xml');
+ return $generator->getWsdl();
+ //exit();
+
+ }
+
+ /**
+ * Process a method found in the passed in class.
+ * @param ReflectionMethod $method The method to process
+ */
+ protected function processMethod(ReflectionMethod $method)
+ {
+ $comment = $method->getDocComment();
+ if (strpos($comment, '@soapmethod') === false) {
+ return;
+ }
+ $comment = preg_replace("/(^[\\s]*\\/\\*\\*)
+ |(^[\\s]\\*\\/)
+ |(^[\\s]*\\*?\\s)
+ |(^[\\s]*)
+ |(^[\\t]*)/ixm", "", $comment);
+
+ $comment = str_replace("\r", "", $comment);
+ $comment = preg_replace("/([\\t])+/", "\t", $comment);
+ $commentLines = explode("\n", $comment);
+
+ $methodDoc = '';
+ $params = array();
+ $return = array();
+ $gotDesc = false;
+ $gotParams = false;
+
+ foreach ($commentLines as $line) {
+ if ($line == '') continue;
+ if ($line{0} == '@') {
+ $gotDesc = true;
+ if (preg_match('/^@param\s+([\w\[\]()]+)\s+\$([\w()]+)\s*(.*)/i', $line, $match)) {
+ $param = array();
+ $param['type'] = $this->convertType($match[1]);
+ $param['name'] = $match[2];
+ $param['desc'] = $match[3];
+ $params[] = $param;
+ }
+ else if (preg_match('/^@return\s+([\w\[\]()]+)\s*(.*)/i', $line, $match)) {
+ $gotParams = true;
+ $return['type'] = $this->convertType($match[1]);
+ $return['desc'] = $match[2];
+ $return['name'] = 'return';
+ }
+ }
+ else {
+ if (!$gotDesc) {
+ $methodDoc .= trim($line);
+ }
+ else if (!$gotParams) {
+ $params[count($params)-1]['desc'] .= trim($line);
+ }
+ else {
+ if ($line == '*/') continue;
+ $return['desc'] .= trim($line);
+ }
+ }
+ }
+
+ $methodName = $method->getName();
+ $operation = new WsdlOperation($methodName, $methodDoc);
+
+ $operation->setInputMessage(new WsdlMessage($methodName.'Request', $params));
+ $operation->setOutputMessage(new WsdlMessage($methodName.'Response', array($return)));
+
+ $this->wsdlDocument->addOperation($operation);
+
+ }
+
+ /**
+ * Converts from a PHP type into a WSDL type. This is borrowed from
+ * Cerebral Cortex (let me know and I'll remove asap).
+ *
+ * TODO: date and dateTime
+ * @param string $type The php type to convert
+ * @return string The XSD type.
+ */
+ private function convertType($type)
+ {
+ switch ($type) {
+ case 'string':
+ case 'str':
+ return 'xsd:string';
+ break;
+ case 'int':
+ case 'integer':
+ return 'xsd:int';
+ break;
+ case 'float':
+ case 'double':
+ return 'xsd:float';
+ break;
+ case 'boolean':
+ case 'bool':
+ return 'xsd:boolean';
+ break;
+ case 'date':
+ return 'xsd:date';
+ break;
+ case 'time':
+ return 'xsd:time';
+ break;
+ case 'dateTime':
+ return 'xsd:dateTime';
+ break;
+ case 'array':
+ return 'soap-enc:Array';
+ break;
+ case 'object':
+ return 'xsd:struct';
+ break;
+ case 'mixed':
+ return 'xsd:anyType';
+ break;
+ case 'void':
+ return '';
+ default:
+ if(strpos($type, '[]')) // if it is an array
+ {
+ $className = substr($type, 0, strlen($type) - 2);
+ $type = $className . 'Array';
+ $this->types[$type] = '';
+ $this->convertType($className);
+ }
+ else
+ {
+ if(!isset($this->types[$type]))
+ $this->extractClassProperties($type);
+ }
+ return 'tns:' . $type;
+ }
+ }
+
+ /**
+ * Extract the type and the name of all properties of the $className class and saves it in the $types array
+ * This method extract properties from PHPDoc formatted comments for variables. Unfortunately the reflectionproperty
+ * class doesn't have a getDocComment method to extract comments about it, so we have to extract the information
+ * about the variables manually. Thanks heaps to Cristian Losada for implementing this.
+ * @param string $className The name of the class
+ */
+ private function extractClassProperties($className)
+ {
+ /**
+ * modified by Qiang Xue, Jan. 2, 2007
+ * Using Reflection's DocComment to obtain property definitions
+ * DocComment is available since PHP 5.1
+ */
+ $reflection = new ReflectionClass($className);
+ $properties = $reflection->getProperties();
+ foreach($properties as $property)
+ {
+ $comment = $property->getDocComment();
+ if(strpos($comment, '@soapproperty') !== false)
+ {
+ if(preg_match('/@var\s+([\w\.]+(\[\s*\])?)\s*?\$(.*)$/mi',$comment,$matches))
+ {
+ // support nillable, minOccurs, maxOccurs attributes
+ $nillable=$minOccurs=$maxOccurs=false;
+ if(preg_match('/{(.+)}/',$matches[3],$attr))
+ {
+ $matches[3]=str_replace($attr[0],'',$matches[3]);
+ if(preg_match_all('/((\w+)\s*=\s*(\w+))/mi',$attr[1],$attr))
+ {
+ foreach($attr[2] as $id=>$prop)
+ {
+ if(strcasecmp($prop,'nillable')===0)
+ $nillable=$attr[3][$id] ? 'true' : 'false';
+ elseif(strcasecmp($prop,'minOccurs')===0)
+ $minOccurs=(int)$attr[3][$id];
+ elseif(strcasecmp($prop,'maxOccurs')===0)
+ $maxOccurs=(int)$attr[3][$id];
+ }
+ }
+ }
+
+ $param = array();
+ $param['type'] = $this->convertType($matches[1]);
+ $param['name'] = trim($matches[3]);
+ $param['nil'] = $nillable;
+ $param['minOc'] = $minOccurs;
+ $param['maxOc'] = $maxOccurs;
+ $this->types[$className][] = $param;
+
+ }
+ }
+ }
+ }
+}
diff --git a/framework/Vendor/WsdlGen/WsdlMessage.php b/framework/Vendor/WsdlGen/WsdlMessage.php
new file mode 100644
index 00000000..3597c977
--- /dev/null
+++ b/framework/Vendor/WsdlGen/WsdlMessage.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * WsdlMessage file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the BSD License.
+ *
+ * Copyright(c) 2005 by Marcus Nyeholt. All rights reserved.
+ *
+ * To contact the author write to {@link mailto:tanus@users.sourceforge.net Marcus Nyeholt}
+ * This file is part of the PRADO framework from {@link http://www.xisc.com}
+ *
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @package System.Web.Services.SOAP
+ */
+
+/**
+ * Represents a WSDL message. This is bound to the portTypes
+ * for this service
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision$
+ */
+class WsdlMessage
+{
+ /**
+ * The name of this message
+ * @var string
+ */
+ private $name;
+
+ /**
+ * Represents the parameters for this message
+ * @var array
+ */
+ private $parts;
+
+ /**
+ * Creates a new message
+ * @param string $messageName The name of the message
+ * @param string $parts The parts of this message
+ */
+ public function __construct($messageName, $parts)
+ {
+ $this->name = $messageName;
+ $this->parts = $parts;
+
+ }
+
+ /**
+ * Gets the name of this message
+ * @return string The name
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Return the message as a DOM element
+ * @param DOMDocument $wsdl The wsdl document the messages will be children of
+ */
+ public function getMessageElement(DOMDocument $dom)
+ {
+ $message = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:message');
+ $message->setAttribute('name', $this->name);
+
+ foreach ($this->parts as $part) {
+ if (isset($part['name'])) {
+ $partElement = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:part');
+ $partElement->setAttribute('name', $part['name']);
+ $partElement->setAttribute('type', $part['type']);
+ $message->appendChild($partElement);
+ }
+ }
+
+ return $message;
+ }
+}
diff --git a/framework/Vendor/WsdlGen/WsdlOperation.php b/framework/Vendor/WsdlGen/WsdlOperation.php
new file mode 100644
index 00000000..91adbda4
--- /dev/null
+++ b/framework/Vendor/WsdlGen/WsdlOperation.php
@@ -0,0 +1,135 @@
+<?php
+/**
+ * WsdlOperation file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the BSD License.
+ *
+ * Copyright(c) 2005 by Marcus Nyeholt. All rights reserved.
+ *
+ * To contact the author write to {@link mailto:tanus@users.sourceforge.net Marcus Nyeholt}
+ * This file is part of the PRADO framework from {@link http://www.xisc.com}
+ *
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @package System.Web.Services.SOAP
+ */
+
+/**
+ * Represents a WSDL Operation. This is exported for the portTypes and bindings
+ * section of the soap service
+ * @author Marcus Nyeholt <tanus@users.sourceforge.net>
+ * @author Wei Zhuo <weizhuo[at]gmail[dot]com>
+ * @version $Revision$
+ */
+class WsdlOperation
+{
+ /**
+ * The name of the operation
+ */
+ private $operationName;
+
+ /**
+ * Documentation for the operation
+ */
+ private $documentation;
+
+ /**
+ * The input wsdl message
+ */
+ private $inputMessage;
+
+ /**
+ * The output wsdl message
+ */
+ private $outputMessage;
+
+ public function __construct($name, $doc='')
+ {
+ $this->operationName = $name;
+ $this->documentation = $doc;
+ }
+
+ public function setInputMessage(WsdlMessage $msg)
+ {
+ $this->inputMessage = $msg;
+ }
+
+ public function setOutputMessage(WsdlMessage $msg)
+ {
+ $this->outputMessage = $msg;
+ }
+
+ /**
+ * Sets the message elements for this operation into the wsdl document
+ * @param DOMElement $wsdl The parent domelement for the messages
+ * @param DomDocument $dom The dom document to create the messages as children of
+ */
+ public function setMessageElements(DOMElement $wsdl, DOMDocument $dom)
+ {
+
+ $input = $this->inputMessage->getMessageElement($dom);
+ $output = $this->outputMessage->getMessageElement($dom);
+
+ $wsdl->appendChild($input);
+ $wsdl->appendChild($output);
+ }
+
+ /**
+ * Get the port operations for this operation
+ * @param DomDocument $dom The dom document to create the messages as children of
+ * @return DomElement The dom element representing this port.
+ */
+ public function getPortOperation(DomDocument $dom)
+ {
+ $operation = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:operation');
+ $operation->setAttribute('name', $this->operationName);
+
+ $documentation = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:documentation', htmlentities($this->documentation));
+ $input = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:input');
+ $input->setAttribute('message', 'tns:'.$this->inputMessage->getName());
+ $output = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:output');
+ $output->setAttribute('message', 'tns:'.$this->outputMessage->getName());
+
+ $operation->appendChild($documentation);
+ $operation->appendChild($input);
+ $operation->appendChild($output);
+
+ return $operation;
+ }
+
+ /**
+ * Build the binding operations.
+ * TODO: Still quite incomplete with all the things being stuck in, I don't understand
+ * a lot of it, and it's mostly copied from the output of nusoap's wsdl output.
+ * @param DomDocument $dom The dom document to create the binding as children of
+ * @param string $namespace The namespace this binding is in.
+ * @return DomElement The dom element representing this binding.
+ */
+ public function getBindingOperation(DomDocument $dom, $namespace, $style='rpc')
+ {
+ $operation = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:operation');
+ $operation->setAttribute('name', $this->operationName);
+
+ $soapOperation = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/soap/', 'soap:operation');
+ $method = $this->operationName;
+ $soapOperation->setAttribute('soapAction', $namespace.'#'.$method);
+ $soapOperation->setAttribute('style', $style);
+
+ $input = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:input');
+ $output = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/', 'wsdl:output');
+
+ $soapBody = $dom->createElementNS('http://schemas.xmlsoap.org/wsdl/soap/', 'soap:body');
+ $soapBody->setAttribute('use', 'encoded');
+ $soapBody->setAttribute('namespace', $namespace);
+ $soapBody->setAttribute('encodingStyle', 'http://schemas.xmlsoap.org/soap/encoding/');
+ $input->appendChild($soapBody);
+ $output->appendChild(clone $soapBody);
+
+ $operation->appendChild($soapOperation);
+ $operation->appendChild($input);
+ $operation->appendChild($output);
+
+ return $operation;
+ }
+}
diff --git a/framework/Vendor/readme.html b/framework/Vendor/readme.html
new file mode 100644
index 00000000..a2368f63
--- /dev/null
+++ b/framework/Vendor/readme.html
@@ -0,0 +1,172 @@
+<html>
+<head>
+<title>3rd-Party Project List</title>
+</head>
+<body>
+<h1>3rd-Party Project List</h1>
+<p>
+PRADO makes use of several 3rd-party projects. Please read carefully about
+their license terms if you are using PRADO components that depend on these
+projects.
+</p>
+<table border="1">
+<tr>
+ <th>Directory</th>
+ <th>Project Name</th>
+ <th>License</th>
+ <th>Related PRADO Component</th>
+ <th>Memo</th>
+</tr>
+
+<tr>
+ <td><a href="jQuery">jQuery</a></td>
+ <td><a href="http://jquery.com/">jQuery - Write less, do more</a></td>
+ <td><a href="http://jquery.org/license/">MIT License</a></td>
+ <td></td>
+ <td>Core of Prado javascript library.</td>
+</tr>
+
+<tr>
+ <td><a href="jQueryUI">jQuery UI</a></td>
+ <td><a href="http://jqueryui.com/">jQuery user interface</a></td>
+ <td><a href="http://jquery.org/license/">MIT License</a></td>
+ <td>System.Web.UI.JuiControls</td>
+ <td>jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.</td>
+</tr>
+
+<tr>
+ <td><a href="Low Pro JQ">Low Pro JQ</a></td>
+ <td><a href="http://github.com/danwrong/low-pro-for-jquery">jQuery - Write less, do more</a></td>
+ <td><a href="http://github.com/danwrong/low-pro-for-jquery/blob/master/MIT-LICENCE">MIT License</a></td>
+ <td></td>
+ <td> A jQuery port of the Low Pro behavior framework that was originally written for Prototype. Prado actually uses it as a base to emulate OOP subclassing, inheritance and contructor events.</td>
+</tr>
+
+<tr>
+ <td><a href="ReCaptcha">ReCaptcha</a></td>
+ <td><a href="http://www.google.com/recaptcha">ReCaptcha - Stop spam, read books</a></td>
+ <td><a href="ReCaptcha/LICENSE">BSD-like</a></td>
+ <td>System.Web.UI.WebControls.TReCaptcha</td>
+ <td>ReCaptcha php documentation available at http://recaptcha.net/plugins/php</td>
+</tr>
+<tr>
+ <td><a href="TextHighlighter">Text_Highlighter</a></td>
+ <td><a href="http://pear.php.net/package/Text_Highlighter/">Text_Highlighter - Generic Syntax Highlighter</a> (v0.7.0 beta)</td>
+ <td><a href="http://www.php.net/license/3_01.txt">The PHP License</a></td>
+ <td>System.Web.UI.WebControls.TTextHighlighter</td>
+ <td>Modified many PHP files to make them workable in PHP 5 strict mode and removed their PEAR dependency. Added PRADO syntax file.</td>
+</tr>
+<tr>
+ <td><a href="SafeHtml">SafeHtml</a></td>
+ <td><a href="http://pixel-apes.com/safehtml/">SafeHTML</a> (v1.3.7)</td>
+ <td><a href="SafeHtml/license.txt">BSD License (3 Clause)</a></td>
+ <td>System.Web.UI.WebControls.TSafeHtml</td>
+ <td>TSafeHtml removes malicious javascript code from its rendered output.</td>
+</tr>
+<tr>
+ <td><a href="TinyMCE">TinyMCE</a></td>
+ <td><a href="http://tinymce.moxiecode.com/">TinyMCE Javascript WYSIWYG Editor</a></td>
+ <td><a href="TinyMCE/license.txt">GNU LESSER GENERAL PUBLIC LICENSE</a></td>
+ <td>System.Web.UI.WebControls.THtmlArea, System.Web.UI.WebControls.THtmlArea4</td>
+ <td>TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL. TinyMCE has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.</td>
+</tr>
+<tr>
+ <td>N.A.</td>
+ <td>Tar.php</td>
+ <td><a href="http://www.php.net/license/3_0.txt">PHP License 3.0</a></td>
+ <td>System.IO.TTarFileExtractor</td>
+ <td>TTarFileExtractor is based on Tar.php whose author is Vincent Blavet.</td>
+</tr>
+<tr>
+ <td><a href="../I18N/core/data">../I18N/core/data</a></td>
+ <td><a href="http://icu.sourceforge.net/">International Components for Unicode (Locale Data)</a></td>
+ <td><a href="http://dev.icu-project.org/cgi-bin/viewcvs.cgi/*checkout*/icu/license.html">BSD???</a></td>
+ <td>System.I18N.core.*</td>
+ <td>The ICU data http://dev.icu-project.org/cgi-bin/viewcvs.cgi/icu/source/data/locales/ are PHP serialized.</td>
+</tr>
+<tr>
+ <td><a href="../I18N/core/util.php">../I18N/core/util.php</a></td>
+ <td><a href="http://pear.php.net/package/DB">PEAR :: Package :: DB</a></td>
+ <td><a href="http://www.php.net/license/3_0.txt">PHP License 3.0</a></td>
+ <td>N.A.</td>
+ <td>The parseDSN() function from DB.php file.</td>
+</tr>
+<tr>
+ <td><a href="../I18N/core/TCache_Lite.php">../I18N/core/TCache_Lite.php</a></td>
+ <td><a href="http://pear.php.net/package/Cache_Lite">PEAR :: Package :: Cache_Lite</a></td>
+ <td><a href="http://www.gnu.org/licenses/lgpl.html">LGPL</a></td>
+ <td>N.A.</td>
+ <td>Cache_Lite class was renamed as TCache_Lite for packaging purposes.</td>
+</tr>
+<tr>
+ <td><a href="../I18N/core/Gettext">../I18N/core/Gettext</a></td>
+ <td><a href="http://pear.php.net/package/File_Gettext">PEAR :: Package :: File_Gettext</a></td>
+ <td><a href="http://www.php.net/license/3_0.txt">PHP License 3.0</a></td>
+ <td>N.A.</td>
+ <td>File_Gettext, File::Gettext::MO, and File::Gettext::PO</td>
+</tr>
+<tr>
+ <td>Rico Color is used in the <a href="../Web/Javascripts/source/prado/colorpicker/colorpicker.js">colorpicker.js</a></td>
+ <td><a href="http://openrico.org/">Rico</a></td>
+ <td><a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License v2</a></td>
+ <td>N.A.</td>
+ <td>Rico Javascript Library (not yet utilized in Prado)</td>
+</tr>
+<tr>
+ <td><a href="../Web/Javascripts/prototype/">../Web/Javascripts/prototype</a></td>
+ <td><a href="http://dev.rubyonrails.org/browser/spinoffs/prototype">Prototype javascript library</a></td>
+ <td><a href="../Web/Javascripts/prototype/LICENSE">The Prototype License (MIT based)</a></td>
+ <td>System.Web.UI.TAutoComplete, TDraggable, TDropContainer</td>
+ <td>Prototype used to be the core of Prado javascript library. Now it's still supported for backwards compatibility</td>
+</tr>
+<tr>
+ <td><a href="../Web/Javascripts/prado/logger/logger.js">../Web/Javascripts/prado/logger/logger.js</a></td>
+ <td><a href="http://web.archive.org/web/20060512041505/gleepglop.com/javascripts/logger/">http://web.archive.org/web/20060512041505/gleepglop.com/javascripts/logger/</a> <a href="http://slayeroffice.com">http://slayeroffice.com</a></td>
+ <td>None</td>
+ <td>TJavascriptLogger</td>
+ <td>Javascript logger by Corey Johnson. Object Tree by S.G. Chipman.</td>
+</tr>
+
+<tr>
+ <td><a href="../../demos/quickstart/protected/index/Zend">../../demos/quickstart/protected/index/Zend</a></td>
+ <td><a href="http://framework.zend.com">Zend Framework</a></td>
+ <td><a href="../../demos/quickstart/protected/index/Zend/LICENSE.txt">BSD</a></td>
+ <td>Quickstart tutorial indexing and search is provided the Zend Lucene search implementation.</td>
+ <td>This product includes the Zend Framework, freely available at
+ http://www.zend.com</td>
+</tr>
+
+<tr>
+ <td><a href="Parsedown">Parsedown</a></td>
+ <td><a href="https://github.com/erusev/parsedown">Markdown Parser for PHP</a></td>
+ <td><a href="Parsedown/LICENSE.txt">MIT</a></td>
+ <td>System.Web.UI.WebControls.TMarkdown</td>
+ <td>PHP implementation of Markdown, GitHub Flavored.</td>
+</tr>
+
+<tr>
+ <td><a href="../Util">../Util</a></td>
+ <td><a href="http://phplens.com/phpeverywhere/adodb_date_library">ADOdb Date Time Library</a></td>
+ <td><a href="http://phplens.com/phpeverywhere/adodb_date_library">BSD</a></td>
+ <td>System.Util.TDateTimeStamp</td>
+ <td>TimeStamp support for dates outside the 1970-2038.</td>
+</tr>
+
+<tr>
+ <td><a href="PhpShell">Vendor/PhpShell</a></td>
+ <td><a href="http://pear.php.net/package/PHP_Shell">PHP_Shell</a></td>
+ <td><a href="http://www.opensource.org/licenses/mit-license.php">MIT</a></td>
+ <td>An interactive PHP Shell</td>
+ <td>Available throught the prado-cli.php script.</td>
+</tr>
+<tr>
+ <td><a href="FirePHPCore">Vendor/FirePHPCore</a></td>
+ <td><a href="http://www.firephp.org/">FirePHPCore</a></td>
+ <td><a href="FirePHPCore/LICENSE">BSD</a></td>
+ <td>FirePHP enables you to log to your Firebug Console using a simple PHP method call.</td>
+ <td>Available throught TFirePhpLogRoute</td>
+</tr>
+</table>
+
+</body>
+</html>