Merge branch 'master' into dev

This commit is contained in:
Claude 2017-09-29 17:45:43 +02:00
commit db44796ca2
471 changed files with 19322 additions and 4832 deletions

View File

@ -50,7 +50,13 @@
* iem@kug https://github.com/iem-projects, umläute https://github.com/umlaeute (Footer fix)
* Ridho Muhammad https://github.com/rydhoms (Update geshi.php with php7 fix, indonesian translation)
* azdrax https://github.com/azdrax, Zacharias Sdregas https://github.com/zsdregas (Added greek translation)
* John Walker https://github.com/techjwalker (YOURLS support)
* John Walker https://github.com/techjwalker (YOURLS support and several improvements)
* Christian (BBCode support)
* Shen-Ta Hsiea https://github.com/ibmibmibm (updated traditional chinese translation)
* haliphax https://github.com/haliphax (Fixed cssmin library)
* YangJun https://github.com/yangjun1994 (Fix language.php small mistakes of chinese-simplified)
* Justin Massey https://github.com/Th3R3p0 (LDAP improvements, xss security fixes, Dockerfiles)
* Nilpferd (Shorturl is now shown for 'burn' pastes after creation)
* Pascal Briehl (add support for polr url shortener)
* Simon Sickle https://github.com/SimonSickle (Protect the langs api call with the apiKey)
* John Walker https://github.com/techjwalker (some minor additions)

10
Dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM php:7.0-apache
COPY htdocs /var/www/html
COPY htdocs/application/config/stikked.php.dist /var/www/html/application/config/stikked.php
COPY docker/replace-envvars.sh /bin/
COPY docker/docker-php-entrypoint /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-php-entrypoint
EXPOSE 80
RUN a2enmod rewrite
RUN docker-php-ext-install mysqli

View File

@ -16,7 +16,6 @@ Here are some features:
* Anti-Spam features
* Themes support
* Multilanguage support
* An [Android app](https://play.google.com/store/apps/details?id=org.teamblueridge.pasteitapp)
* Stikked client with support for client side encryption/decryption: [gostikkit](https://github.com/tcolgate/gostikkit)
* Another CLI tool requiring only curl program: [pbin](https://github.com/glensc/pbin)
* And many more. View [this review](http://maketecheasier.com/run-your-own-pastebin-with-stikked/2013/01/11)
@ -56,6 +55,17 @@ Installation
* Be sure to also copy the .htaccess file when you move files around. This is a hidden file and easily overlooked.
How to run it in Docker
-----------------------
sudo docker build -t stikked .
sudo docker-compose up -d
This automatically creates a database with passwords that are configurable in the docker-compose.yml file.
NOTE: This sets the captcha to false and requires port 80 to be accessible on the host machine. Also, a host entry of 127.0.0.1 stikked.local will fix the base_url issues.
Documentation
-------------
@ -71,6 +81,25 @@ In the folder doc/, you will find:
Changelog
---------
### Version 0.12.0:
* Updates ensuring the compatibility with PHP7:
* Updated CodeIgniter to 3.1.5
* Updated GeSHi to 1.0.9.0
* Ability to run Stikked in Docker
* Small security fixes regarding XSS and LDAP
* Various bugfixes and improvements
#### Upgrade instructions
Copy your htdocs/application/stikked.php config file away. Upload the new version. Copy it back.
If you want to keep QR codes being displayed, add the following line in config/stikked.php:
```php
$config['qr_enabled'] = true;
```
### Version 0.11.0:
* Upgrade to CodeIgniter 3.1.0

View File

@ -6,4 +6,5 @@ Some guidelines:
```
php_beautifier --indent_tabs -l "IndentStyles(style=bsd) ArrayNested() NewLines(before=function:T_CLASS:if,after=T_COMMENT) ListClassFunction()"
```
* Optionally, use https://phpbeautifier.com/ with "Allman style" formatting for smaller segments of PHP-only code
* Other people may modify your contribution. Don't take that personal; we all want to improve Stikked. Your input is always welcome!

View File

@ -2,6 +2,6 @@ How to translate Stikked into your own language
-----------------------------------------------
1. Make a copy of the folder `htdocs/application/language/swissgerman`, and name it as you like.
2. Start placing in your texts!
2. Start placing in your translated text!
The date_lang.php and form_validation_lang.php are optional; they lay in the system folder for english fallback. stikked_lang.php is required. If you miss a translation, it will be shown as [translation_index] in Stikked.

View File

@ -1,6 +1,8 @@
Stikked troubleshooting guide
-----------------------------
First, be sure to double-check whether you meet the [prerequisites](//github.com/claudehohl/Stikked#prerequisites).
### Apache
#### 404 Not Found after creating a Paste
@ -50,4 +52,4 @@ You need to have the GD extension for PHP installed and enabled so that the QR c
Still have a problem?
---------------------
Report an issue at GitHub, and we will add your problem to this guide.
Report an issue [at GitHub](//github.com/claudehohl/Stikked/issues), and we will add your problem to this guide.

24
docker-compose.yml Normal file
View File

@ -0,0 +1,24 @@
version: '3'
services:
db:
image: mysql:latest
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 1
MYSQL_DATABASE: stikked
MYSQL_USER: stikked
MYSQL_PASSWORD: stikked
stikked:
depends_on:
- db
image: stikked
env_file:
docker/stikked-envvars.txt
ports:
- 80:80
volumes:
db_data:

View File

@ -0,0 +1,12 @@
#!/bin/sh
set -e
# custom script to overwrite stikked config variables
bash /bin/replace-envvars.sh
# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
set -- php "$@"
fi
exec "$@"

View File

@ -0,0 +1,7 @@
sed -i "s/\['site_name'\].*/['site_name'] = '$SITENAME';/" /var/www/html/application/config/stikked.php
sed -i "s/\['base_url'\].*/['base_url'] = '$BASEURL';/" /var/www/html/application/config/stikked.php
sed -i "s/\['db_hostname'\].*/['db_hostname'] = '$DBHOST';/" /var/www/html/application/config/stikked.php
sed -i "s/\['db_database'\].*/['db_database'] = '$DBNAME';/" /var/www/html/application/config/stikked.php
sed -i "s/\['db_username'\].*/['db_username'] = '$DBUSER';/" /var/www/html/application/config/stikked.php
sed -i "s/\['db_password'\].*/['db_password'] = '$DBPASS';/" /var/www/html/application/config/stikked.php
sed -i "s/\['enable_captcha'\].*/['enable_captcha'] = '$CAPTHCA';/" /var/www/html/application/config/stikked.php

View File

@ -0,0 +1,7 @@
SITENAME=Stikked
BASEURL=http:\/\/stikked.local\/
DBHOST=db
DBNAME=stikked
DBUSER=stikked
DBPASS=stikked
CAPTCHA=false

View File

@ -313,20 +313,6 @@ $config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
/*
|--------------------------------------------------------------------------
| Standardize newlines
|--------------------------------------------------------------------------
|
| Determines whether to standardize newline characters in input data,
| meaning to replace \r\n, \r, \n occurrences with the PHP_EOL value.
|
| This is particularly useful for portability between UNIX-based OSes,
| (usually \n) and Windows (\r\n).
|
*/
$config['standardize_newlines'] = TRUE;
/*
|--------------------------------------------------------------------------
| Global XSS Filtering

View File

@ -95,10 +95,10 @@ $config['supported_languages'] = array(
'ckeditor' => NULL
),
'cn' => array(
'name' => '繁體中文',
'name' => '简体中文',
'folder' => 'chinese-simplified',
'direction' => 'ltr',
'codes' => array('cht', 'chinese-simplified', 'zh-CN'),
'codes' => array('chs', 'chinese-simplified', 'zh-CN'),
'ckeditor' => NULL
),
'zh' => array(

View File

@ -54,6 +54,14 @@ $config['db_prefix'] = '';
*/
$config['theme'] = 'default';
/**
* Display QR code
*
* Whether or not to display the QR code
*
*/
$config['qr_enabled'] = true;
/**
* JavaScript-Editor
*
@ -101,6 +109,7 @@ $config['cron_key'] = '';
* @string gwgd
* @string googl
* @string bitly
* @string polr
* @string random - Randomly chose any of upper API-s !WARNING! May be slow! For maximum performanse, it's recommended to either set all API keys or use random_url_engines to list working engines.
* @string none - same as off
*
@ -132,6 +141,9 @@ $config['cron_key'] = '';
* bitly_url_api: Famous URL shortening service (API: http://dev.bitly.com/get_started.html)
* Usage: Your API key
*
* polr_url: Your own instance of polr URL-shortener (Download: https://github.com/cydrobolt/polr)
* polr_api: Your polr api key
*
**/
$config['url_shortening_use'] = 'off';
$config['random_url_engines'] = 'googl,bitly'; // Used only in random mode, read comment above for more info
@ -147,9 +159,13 @@ $config['shorturl_selected'] = false;
// goo.gl API key
$config['googl_url_api'] = '';
// Bit.ly API key
$config['bitly_url_api'] = '';
// polr
$config['polr_url'] = '';
$config['polr_api'] = '';
/**

View File

@ -26,6 +26,13 @@ class Api extends Main
{
die("The API has been disabled\n");
}
// if ldap is configured and no api token is configured, fail the request
if ((config_item('require_auth') == true) && (config_item('apikey') == ''))
{
die("API key not configured");
}
}
function index()
@ -202,6 +209,11 @@ class Api extends Main
function langs()
{
if (config_item('apikey') != $this->input->get('apikey'))
{
die("Invalid API key\n");
}
$languages = $this->languages->get_languages();
echo json_encode($languages);
}

View File

@ -120,7 +120,7 @@ class Auth extends CI_Controller
public
function alpha_dash_dot($str)
{
return (!preg_match("/^([-a-z0-9_-\.])+$/i", $str)) ? FALSE : TRUE;
return (!preg_match("/^([-a-z0-9_\-\.])+$/i", $str)) ? FALSE : TRUE;
}
}
?>

View File

@ -70,7 +70,7 @@ class Main extends CI_Controller
$fields = array(
'id' => array(
'type' => 'VARCHAR',
'constraint' => 40,
'constraint' => 128,
'default' => 0,
) ,
'ip_address' => array(
@ -266,7 +266,7 @@ class Main extends CI_Controller
//ipv6 migration
$fields = $this->db->field_data('trending');
if (config_item('db_driver') != 'sqlite' && $fields[1]->max_length < 45)
if (stristr(config_item('db_driver') , 'sqlite') === false && $fields[1]->max_length < 45)
{
$db_prefix = config_item('db_prefix');
@ -294,7 +294,7 @@ class Main extends CI_Controller
if ($field->name == 'title')
{
if (config_item('db_driver') != 'sqlite' && $field->max_length < 50)
if (stristr(config_item('db_driver') , 'sqlite') === false && $field->max_length < 50)
{
$db_prefix = config_item('db_prefix');
@ -309,6 +309,34 @@ class Main extends CI_Controller
}
}
}
//upgrade to CI 3.1.2
$fields = $this->db->field_data('sessions');
foreach ($fields as $field)
{
if ($field->name == 'id')
{
if (stristr(config_item('db_driver') , 'sqlite') === false)
{
if ($field->max_length < 128)
{
$db_prefix = config_item('db_prefix');
if ($this->db->dbdriver == "postgre")
{
$this->db->query("ALTER TABLE " . $db_prefix . "sessions ALTER COLUMN id SET DATA TYPE varchar(128)");
}
else
{
$this->db->query("ALTER TABLE " . $db_prefix . "sessions CHANGE id id VARCHAR(128) NOT NULL");
}
}
}
}
}
}
function _form_prep($lang = false, $title = '', $paste = '', $reply = false)
@ -495,6 +523,10 @@ class Main extends CI_Controller
}
function post_encrypted()
{
$this->_valid_authentication();
if ($this->_valid_captcha($this->input->post('captcha')))
{
$this->load->model('pastes');
$_POST['private'] = 1;
@ -502,6 +534,11 @@ class Main extends CI_Controller
$ret_url = $this->pastes->createPaste();
echo $ret_url;
}
else
{
echo 'E_CAPTCHA';
}
}
function raw()
{
@ -724,8 +761,12 @@ class Main extends CI_Controller
{
if (config_item('enable_captcha') && $this->session->userdata('is_human') === null)
{
if (isset($this->form_validation))
{
$this->form_validation->set_message('_valid_captcha', lang('captcha'));
}
if ($this->use_recaptcha)
{

View File

@ -74,7 +74,7 @@ class Spamadmin extends CI_Controller
{
$this->db->insert('blocked_ips', array(
'ip_address' => $ip_address,
'blocked_at' => mktime() ,
'blocked_at' => time() ,
'spam_attempts' => $paste_count,
));
}
@ -85,8 +85,20 @@ class Spamadmin extends CI_Controller
$data = $this->pastes->getSpamLists('spamadmin/' . $ip_address, $seg = 3, $ip_address);
$data['ip_address'] = $ip_address;
$ip = explode('.', $ip_address);
if (count($ip) > 1)
{
$ip_firstpart = $ip[0] . '.' . $ip[1] . '.';
$data['ip_range'] = $ip_firstpart . '*.*';
}
else
{
// ipv6
$ip = explode(':', $ip_address);
$ip_firstpart = $ip[0] . ':' . $ip[1] . ':' . $ip[2] . ':' . $ip[3] . ':' . $ip[4] . ':' . $ip[5] . ':' . $ip[6];
$data['ip_range'] = $ip_firstpart . ':*';
}
//view
$this->load->view('spam_detail', $data);

View File

@ -39,7 +39,7 @@ class MY_Loader extends CI_Loader
//return
return $this->_ci_load(array(
'_ci_view' => $view_path,
'_ci_vars' => $this->_ci_object_to_array($vars) ,
'_ci_vars' => $this->_ci_prepare_view_vars($vars) ,
'_ci_return' => $return
));
}

View File

@ -18,8 +18,20 @@
// Your config here
define("SOURCE_ROOT", "/var/www/your/source/root/");
if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
//composer install
require __DIR__ . '/../vendor/autoload.php';
} else if (file_exists(__DIR__ . '/../src/geshi.php')) {
//git checkout
require __DIR__ . '/../src/geshi.php';
} else {
// Assume you've put geshi in the include_path already
require_once("geshi.php");
}
if (!isset($_SERVER['PATH_INFO'])) {
die("No file name given.\n");
}
// Get path info
$path = SOURCE_ROOT . $_SERVER['PATH_INFO'];

View File

@ -4,7 +4,7 @@
* ----------
* Author: Nigel McNie (nigel@geshi.org)
* Copyright: (c) 2004 Nigel McNie
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/05/20
*
* Application to generate custom CSS files for GeSHi (based on an idea by Andreas
@ -30,7 +30,6 @@
*
************************************************************************************/
set_magic_quotes_runtime(0);
//
// Functions
//
@ -165,21 +164,23 @@ if ( !$step || $step == 1 )
$geshi_lang_path = get_var('geshi-lang-path');
if(strstr($geshi_path, '..')) {
unset($geshi_path);
$geshi_path = null;
}
if(strstr($geshi_lang_path, '..')) {
unset($geshi_lang_path);
$geshi_lang_path = null;
}
if ( !$geshi_path )
{
$geshi_path = '../geshi.php';
$geshi_path = '../src/geshi.php';
}
if ( !$geshi_lang_path )
{
$geshi_lang_path = '../geshi/';
$geshi_lang_path = '../src/geshi/';
}
$no_geshi_dot_php_error = false;
$no_lang_dir_error = false;
if ( is_file($geshi_path) && is_readable($geshi_path) )
{
// Get file contents and see if GeSHi is in here

View File

@ -28,19 +28,19 @@
*
*/
require dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'geshi.php';
$geshi = new GeSHi;
if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
//composer install
require __DIR__ . '/../vendor/autoload.php';
} else if (file_exists(__DIR__ . '/../src/geshi.php')) {
//git checkout
require __DIR__ . '/../src/geshi.php';
} else {
// Assume you've put geshi in the include_path already
require_once "geshi.php";
}
$languages = array();
if ($handle = opendir($geshi->language_path)) {
while (($file = readdir($handle)) !== false) {
$pos = strpos($file, '.');
if ($pos > 0 && substr($file, $pos) == '.php') {
$languages[] = substr($file, 0, $pos);
}
}
closedir($handle);
}
$geshi = new GeSHi();
$languages = $geshi->get_supported_languages();
sort($languages);
header('Content-Type: application/octet-stream');

View File

@ -15,14 +15,16 @@ error_reporting(E_ALL);
// Rudimentary checking of where GeSHi is. In a default install it will be in ../, but
// it could be in the current directory if the include_path is set. There's nowhere else
// we can reasonably guess.
if (is_readable('../geshi.php')) {
$path = '../';
} elseif (is_readable('geshi.php')) {
$path = './';
if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
//composer install
require __DIR__ . '/../vendor/autoload.php';
} else if (file_exists(__DIR__ . '/../src/geshi.php')) {
//git checkout
require __DIR__ . '/../src/geshi.php';
} else {
die('Could not find geshi.php - make sure it is in your include path!');
// Assume you've put geshi in the include_path already
require_once("geshi.php");
}
require $path . 'geshi.php';
$fill_source = false;
if (isset($_POST['submit'])) {
@ -94,6 +96,7 @@ if (isset($_POST['submit'])) {
} else {
// make sure we don't preselect any language
$_POST['language'] = null;
$geshi = new GeSHi();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
@ -178,20 +181,10 @@ if (isset($_POST['submit'])) {
<p>
<select name="language" id="language">
<?php
if (!($dir = @opendir(dirname(__FILE__) . '/geshi'))) {
if (!($dir = @opendir(dirname(__FILE__) . '/../geshi'))) {
$languages = $geshi->get_supported_languages();
if (!count($languages)) {
echo '<option>No languages available!</option>';
}
}
$languages = array();
while ($file = readdir($dir)) {
if ( $file[0] == '.' || strpos($file, '.', 1) === false) {
continue;
}
$lang = substr($file, 0, strpos($file, '.'));
$languages[] = $lang;
}
closedir($dir);
sort($languages);
foreach ($languages as $lang) {
if (isset($_POST['language']) && $_POST['language'] == $lang) {

View File

@ -1,778 +0,0 @@
<?php
/**
* GeSHi language file validation script
*
* Just point your browser at this script (with geshi.php in the parent directory)
* and the language files in subdirectory "../geshi/" are being validated
*
* CLI mode is supported
*
* @author Benny Baumann
* @version $Id$
*/
header('Content-Type: text/html; charset=utf-8');
set_time_limit(0);
error_reporting(E_ALL);
$time_start = explode(' ', microtime());
function colorize($level, $string) {
static $colors, $end;
if ( !isset($colors) ) {
if ( PHP_SAPI != 'cli' ) {
$end = '</span>';
$colors = array(
TYPE_NOTICE => '<span style="color:#080;font-weight:bold;">',
TYPE_WARNING => '<span style="color:#CC0; font-weight: bold;">',
TYPE_ERROR => '<span style="color:#F00; font-weight: bold;">',
TYPE_OK => '<span style="color: #080; font-weight: bold;">'
);
} else {
$end = chr(27).'[0m';
$colors = array(
TYPE_NOTICE => chr(27).'[1m',
TYPE_WARNING => chr(27).'[1;33m',
TYPE_ERROR => chr(27).'[1;31m',
TYPE_OK => chr(27).'[1;32m'
);
}
}
if ( !isset($colors[$level]) ) {
trigger_error("no colors for level $level", E_USER_ERROR);
}
return $colors[$level].$string.$end;
}
define ('TYPE_NOTICE', 0);
define ('TYPE_WARNING', 1);
define ('TYPE_ERROR', 2);
define ('TYPE_OK', 3);
$error_abort = false;
$error_cache = array();
function output_error_cache(){
global $error_cache;
if(count($error_cache)) {
echo colorize(TYPE_ERROR, "Failed");
if ( PHP_SAPI == 'cli' ) {
echo "\n\n";
} else {
echo "<br /><ol>\n";
}
foreach($error_cache as $error_msg) {
if ( PHP_SAPI == 'cli' ) {
echo "\n";
} else {
echo "<li>";
}
switch($error_msg['t']) {
case TYPE_NOTICE:
$msg = 'NOTICE';
break;
case TYPE_WARNING:
$msg = 'WARNING';
break;
case TYPE_ERROR:
$msg = 'ERROR';
break;
}
echo colorize($error_msg['t'], $msg);
if ( PHP_SAPI == 'cli' ) {
echo "\t" . $error_msg['m'];
} else {
echo " " . $error_msg['m'] . "</li>";
}
}
if ( PHP_SAPI == 'cli' ) {
echo "\n";
} else {
echo "</ol>\n";
}
} else {
echo colorize(TYPE_OK, "OK");
if ( PHP_SAPI == 'cli' ) {
echo "\n";
} else {
echo "\n<br />";
}
}
echo "\n";
$error_cache = array();
}
function report_error($type, $message) {
global $error_cache, $error_abort;
$error_cache[] = array('t' => $type, 'm' => $message);
if(TYPE_ERROR == $type) {
$error_abort = true;
}
}
function dupfind_strtolower(&$value){
$value = strtolower($value);
}
if ( PHP_SAPI != 'cli' ) { ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>GeSHi Language File Validation Script</title>
<style type="text/css">
<!--
html {
background-color: #f0f0f0;
}
body {
font-family: Verdana, Arial, sans-serif;
margin: 10px;
border: 2px solid #e0e0e0;
background-color: #fcfcfc;
padding: 5px;
font-size: 10pt;
}
h2 {
margin: .1em 0 .2em .5em;
border-bottom: 1px solid #b0b0b0;
color: #b0b0b0;
font-weight: normal;
font-size: 150%;
}
h3 {
margin: .1em 0 .2em .5em;
color: #b0b0b0;
font-weight: normal;
font-size: 120%;
}
#footer {
text-align: center;
font-size: 80%;
color: #a9a9a9;
}
#footer a {
color: #9999ff;
}
textarea {
border: 1px solid #b0b0b0;
font-size: 90%;
color: #333;
margin-left: 20px;
}
select, input {
margin-left: 20px;
}
p {
font-size: 90%;
margin-left: .5em;
}
-->
</style>
</head>
<body>
<h2>GeSHi Language File Validation Script</h2>
<p>To use this script, make sure that <strong>geshi.php</strong> is in the
parent directory or in your include_path, and that the language files are in a
subdirectory of GeSHi's directory called <strong>geshi/</strong>.</p>
<p>Everything else will be done by this script automatically. After the script
finished you should see messages of what could cause trouble with GeSHi or where
your language files can be improved. Please be patient, as this might take some time.</p>
<ol>
<li>Checking where to find GeSHi installation ...<?php
} else { ?>
<?php echo colorize(TYPE_NOTICE, "#### GeSHi Language File Validation Script ####") ?>
To use this script, make sure that <?php echo colorize(TYPE_NOTICE, "geshi.php"); ?> is in the
parent directory or in your include_path, and that the language files are in a
subdirectory of GeSHi's directory called <?php echo colorize(TYPE_NOTICE, "geshi/"); ?>.
Everything else will be done by this script automatically. After the script
finished you should see messages of what could cause trouble with GeSHi or where
your language files can be improved. Please be patient, as this might take some time.
Checking where to find GeSHi installation ...<?php echo "\t";
}
// Rudimentary checking of where GeSHi is. In a default install it will be in ../, but
// it could be in the current directory if the include_path is set. There's nowhere else
// we can reasonably guess.
if (is_readable('../geshi.php')) {
$path = '../';
} elseif (is_readable('geshi.php')) {
$path = './';
} else {
report_error(TYPE_ERROR, 'Could not find geshi.php - make sure it is in your include path!');
}
if(!$error_abort) {
require $path . 'geshi.php';
if(!class_exists('GeSHi')) {
report_error(TYPE_ERROR, 'The GeSHi class was not found, although it seemed we loaded the correct file!');
}
}
if(!$error_abort) {
if(!defined('GESHI_LANG_ROOT')) {
report_error(TYPE_ERROR, 'There\'s no information present on where to find the language files!');
} elseif(!is_dir(GESHI_LANG_ROOT)) {
report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" given, does not ressemble a directory!');
} elseif(!is_readable(GESHI_LANG_ROOT)) {
report_error(TYPE_ERROR, 'The path "'.GESHI_LANG_ROOT.'" is not readable to this script!');
}
}
output_error_cache();
if(!$error_abort) {
if ( PHP_SAPI == 'cli' ) {
echo "Listing available language files ...\t\t";
} else {
echo "</li>\n<li>Listing available language files ... ";
}
if (!($dir = @opendir(GESHI_LANG_ROOT))) {
report_error(TYPE_ERROR, 'Error requesting listing for available language files!');
}
$languages = array();
if(!$error_abort) {
while ($file = readdir($dir)) {
if (!$file || $file[0] == '.' || strpos($file, '.php') === false) {
continue;
}
$lang = substr($file, 0, strpos($file, '.'));
if(4 != strlen($file) - strlen($lang)) {
continue;
}
$languages[] = $lang;
}
closedir($dir);
}
$languages = array_unique($languages);
sort($languages);
if(!count($languages)) {
report_error(TYPE_WARNING, 'Unable to locate any usable language files in "'.GESHI_LANG_ROOT.'"!');
}
output_error_cache();
}
if ( PHP_SAPI == 'cli' ) {
if (isset($_SERVER['argv'][1]) && in_array($_SERVER['argv'][1], $languages)) {
$languages = array($_SERVER['argv'][1]);
}
} else {
if (isset($_REQUEST['show']) && in_array($_REQUEST['show'], $languages)) {
$languages = array($_REQUEST['show']);
}
}
if(!$error_abort) {
foreach ($languages as $lang) {
if ( PHP_SAPI == 'cli' ) {
echo "Validating language file for '$lang' ...\t\t";
} else {
echo "</li>\n<li>Validating language file for '$lang' ... ";
}
$langfile = GESHI_LANG_ROOT . $lang . '.php';
$language_data = array();
if(!is_file($langfile)) {
report_error(TYPE_ERROR, 'The path "' .$langfile. '" does not ressemble a regular file!');
} elseif(!is_readable($langfile)) {
report_error(TYPE_ERROR, 'Cannot read file "' .$langfile. '"!');
} else {
$langfile_content = file_get_contents($langfile);
if(preg_match("/\?>(?:\r?\n|\r(?!\n)){2,}\Z/", $langfile_content)) {
report_error(TYPE_ERROR, 'Language file contains trailing empty lines at EOF!');
}
if(preg_match("/\?>(?:\r?\n|\r(?!\n))?\Z/", $langfile_content)) {
report_error(TYPE_ERROR, 'Language file contains an PHP end marker at EOF!');
}
if(!preg_match("/(?:\r?\n|\r(?!\n))\Z/", $langfile_content)) {
report_error(TYPE_ERROR, 'Language file contains no newline at EOF!');
}
if(preg_match("/(\r?\n|\r(?!\n))\\1\Z/", $langfile_content)) {
report_error(TYPE_ERROR, 'Language file contains trailing empty line before EOF!');
}
if(preg_match("/[\x20\t]$/m", $langfile_content)) {
report_error(TYPE_ERROR, 'Language file contains trailing whitespace at EOL!');
}
if(preg_match("/\t/", $langfile_content)) {
report_error(TYPE_NOTICE, 'Language file contains unescaped tabulator chars (probably for indentation)!');
}
if(preg_match('/^(?: )*(?! )(?! \*) /m', $langfile_content)) {
report_error(TYPE_NOTICE, 'Language file contains irregular indentation (other than 4 spaces per indentation level)!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?Author:((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not contain a specification of an author!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?Copyright:((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not contain a specification of the copyright!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?Release Version:((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not contain a specification of the release version!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?Date Started:((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not contain a specification of the date it was started!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?This file is part of GeSHi\.((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not state that it belongs to GeSHi!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?language file for GeSHi\.((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not state that it is a language file for GeSHi!');
}
if(!preg_match("/\/\*\*((?!\*\/).)*?GNU General Public License((?!\*\/).)*?\*\//s", $langfile_content)) {
report_error(TYPE_WARNING, 'Language file does not state that it is provided under the terms of the GNU GPL!');
}
unset($langfile_content);
include $langfile;
if(!isset($language_data)) {
report_error(TYPE_ERROR, 'Language file does not contain a $language_data structure to check!');
} elseif (!is_array($language_data)) {
report_error(TYPE_ERROR, 'Language file contains a $language_data structure which is not an array!');
}
}
if(!$error_abort) {
if(!isset($language_data['LANG_NAME'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'LANG_NAME\'] specification!');
} elseif (!is_string($language_data['LANG_NAME'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'LANG_NAME\'] specification which is not a string!');
}
if(!isset($language_data['COMMENT_SINGLE'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'COMMENT_SIGNLE\'] structure to check!');
} elseif (!is_array($language_data['COMMENT_SINGLE'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_SINGLE\'] structure which is not an array!');
}
if(!isset($language_data['COMMENT_MULTI'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'COMMENT_MULTI\'] structure to check!');
} elseif (!is_array($language_data['COMMENT_MULTI'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_MULTI\'] structure which is not an array!');
}
if(isset($language_data['COMMENT_REGEXP'])) {
if (!is_array($language_data['COMMENT_REGEXP'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'COMMENT_REGEXP\'] structure which is not an array!');
}
}
if(!isset($language_data['QUOTEMARKS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'QUOTEMARKS\'] structure to check!');
} elseif (!is_array($language_data['QUOTEMARKS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'QUOTEMARKS\'] structure which is not an array!');
}
if(isset($language_data['HARDQUOTE'])) {
if (!is_array($language_data['HARDQUOTE'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'HARDQUOTE\'] structure which is not an array!');
}
}
if(!isset($language_data['ESCAPE_CHAR'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'ESCAPE_CHAR\'] specification to check!');
} elseif (!is_string($language_data['ESCAPE_CHAR'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'ESCAPE_CHAR\'] specification which is not a string!');
} elseif (1 < strlen($language_data['ESCAPE_CHAR'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'ESCAPE_CHAR\'] specification is not empty or exactly one char!');
}
if(!isset($language_data['CASE_KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'CASE_KEYWORDS\'] specification!');
} elseif (!is_int($language_data['CASE_KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_KEYWORDS\'] specification which is not an integer!');
} elseif (GESHI_CAPS_NO_CHANGE != $language_data['CASE_KEYWORDS'] &&
GESHI_CAPS_LOWER != $language_data['CASE_KEYWORDS'] &&
GESHI_CAPS_UPPER != $language_data['CASE_KEYWORDS']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_KEYWORDS\'] specification which is neither of GESHI_CAPS_NO_CHANGE, GESHI_CAPS_LOWER nor GESHI_CAPS_UPPER!');
}
if(!isset($language_data['KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'KEYWORDS\'] structure to check!');
} elseif (!is_array($language_data['KEYWORDS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'KEYWORDS\'] structure which is not an array!');
} else {
foreach($language_data['KEYWORDS'] as $kw_key => $kw_value) {
if(!is_integer($kw_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$kw_key' in \$language_data['KEYWORDS'] that is not integer!");
} elseif (!is_array($kw_value)) {
report_error(TYPE_ERROR, "Language file contains a \$language_data['KEYWORDS']['$kw_value'] structure which is not an array!");
}
}
}
if(!isset($language_data['SYMBOLS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'SYMBOLS\'] structure to check!');
} elseif (!is_array($language_data['SYMBOLS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'SYMBOLS\'] structure which is not an array!');
}
if(!isset($language_data['CASE_SENSITIVE'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'CASE_SENSITIVE\'] structure to check!');
} elseif (!is_array($language_data['CASE_SENSITIVE'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'CASE_SENSITIVE\'] structure which is not an array!');
} else {
foreach($language_data['CASE_SENSITIVE'] as $cs_key => $cs_value) {
if(!is_integer($cs_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$cs_key' in \$language_data['CASE_SENSITIVE'] that is not integer!");
} elseif (!is_bool($cs_value)) {
report_error(TYPE_ERROR, "Language file contains a Case Sensitivity specification for \$language_data['CASE_SENSITIVE']['$cs_value'] which is not a boolean!");
}
}
}
if(!isset($language_data['URLS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'URLS\'] structure to check!');
} elseif (!is_array($language_data['URLS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'URLS\'] structure which is not an array!');
} else {
foreach($language_data['URLS'] as $url_key => $url_value) {
if(!is_integer($url_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$url_key' in \$language_data['URLS'] that is not integer!");
} elseif (!is_string($url_value)) {
report_error(TYPE_ERROR, "Language file contains a Documentation URL specification for \$language_data['URLS']['$url_value'] which is not a string!");
} elseif (preg_match('#&([^;]*(=|$))#U', $url_value)) {
report_error(TYPE_ERROR, "Language file contains unescaped ampersands (&amp;) in \$language_data['URLS']!");
}
}
}
if(!isset($language_data['OOLANG'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'OOLANG\'] specification!');
} elseif (!is_int($language_data['OOLANG']) && !is_bool($language_data['OOLANG'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OOLANG\'] specification which is neither boolean nor integer!');
} elseif (false !== $language_data['OOLANG'] &&
true !== $language_data['OOLANG'] &&
2 !== $language_data['OOLANG']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OOLANG\'] specification which is neither of false, true or 2!');
}
if(!isset($language_data['OBJECT_SPLITTERS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'OBJECT_SPLITTERS\'] structure to check!');
} elseif (!is_array($language_data['OBJECT_SPLITTERS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'OBJECT_SPLITTERS\'] structure which is not an array!');
}
if(!isset($language_data['REGEXPS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'REGEXPS\'] structure to check!');
} elseif (!is_array($language_data['REGEXPS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'REGEXPS\'] structure which is not an array!');
}
if(!isset($language_data['STRICT_MODE_APPLIES'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'STRICT_MODE_APPLIES\'] specification!');
} elseif (!is_int($language_data['STRICT_MODE_APPLIES'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STRICT_MODE_APPLIES\'] specification which is not an integer!');
} elseif (GESHI_MAYBE != $language_data['STRICT_MODE_APPLIES'] &&
GESHI_ALWAYS != $language_data['STRICT_MODE_APPLIES'] &&
GESHI_NEVER != $language_data['STRICT_MODE_APPLIES']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STRICT_MODE_APPLIES\'] specification which is neither of GESHI_MAYBE, GESHI_ALWAYS nor GESHI_NEVER!');
}
if(!isset($language_data['SCRIPT_DELIMITERS'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'SCRIPT_DELIMITERS\'] structure to check!');
} elseif (!is_array($language_data['SCRIPT_DELIMITERS'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'SCRIPT_DELIMITERS\'] structure which is not an array!');
}
if(!isset($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'HIGHLIGHT_STRICT_BLOCK\'] structure to check!');
} elseif (!is_array($language_data['HIGHLIGHT_STRICT_BLOCK'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'HIGHLIGHT_STRICT_BLOCK\'] structure which is not an array!');
}
if(isset($language_data['TAB_WIDTH'])) {
if (!is_int($language_data['TAB_WIDTH'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'TAB_WIDTH\'] specification which is not an integer!');
} elseif (1 > $language_data['TAB_WIDTH']) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'TAB_WIDTH\'] specification which is less than 1!');
}
}
if(isset($language_data['PARSER_CONTROL'])) {
if (!is_array($language_data['PARSER_CONTROL'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'PARSER_CONTROL\'] structure which is not an array!');
}
}
if(!isset($language_data['STYLES'])) {
report_error(TYPE_ERROR, 'Language file contains no $language_data[\'STYLES\'] structure to check!');
} elseif (!is_array($language_data['STYLES'])) {
report_error(TYPE_ERROR, 'Language file contains a $language_data[\'STYLES\'] structure which is not an array!');
} else {
$style_arrays = array('KEYWORDS', 'COMMENTS', 'ESCAPE_CHAR',
'BRACKETS', 'STRINGS', 'NUMBERS', 'METHODS', 'SYMBOLS',
'REGEXPS', 'SCRIPT');
foreach($style_arrays as $style_kind) {
if(!isset($language_data['STYLES'][$style_kind])) {
report_error(TYPE_ERROR, "Language file contains no \$language_data['STYLES']['$style_kind'] structure to check!");
} elseif (!is_array($language_data['STYLES'][$style_kind])) {
report_error(TYPE_ERROR, "Language file contains a \$language_data['STYLES\']['$style_kind'] structure which is not an array!");
} else {
foreach($language_data['STYLES'][$style_kind] as $sk_key => $sk_value) {
if(!is_int($sk_key) && ('COMMENTS' != $style_kind && 'MULTI' != $sk_key)
&& !(('STRINGS' == $style_kind || 'ESCAPE_CHAR' == $style_kind) && 'HARD' == $sk_key)) {
report_error(TYPE_WARNING, "Language file contains an key '$sk_key' in \$language_data['STYLES']['$style_kind'] that is not integer!");
} elseif (!is_string($sk_value)) {
report_error(TYPE_WARNING, "Language file contains a CSS specification for \$language_data['STYLES']['$style_kind'][$key] which is not a string!");
}
}
}
}
unset($style_arrays);
}
}
if(!$error_abort) {
//Initial sanity checks survived? --> Let's dig deeper!
foreach($language_data['KEYWORDS'] as $key => $keywords) {
if(!isset($language_data['CASE_SENSITIVE'][$key])) {
report_error(TYPE_ERROR, "Language file contains no \$language_data['CASE_SENSITIVE'] specification for keyword group $key!");
}
if(!isset($language_data['URLS'][$key])) {
report_error(TYPE_ERROR, "Language file contains no \$language_data['URLS'] specification for keyword group $key!");
}
if(empty($keywords)) {
report_error(TYPE_WARNING, "Language file contains an empty keyword list in \$language_data['KEYWORDS'] for group $key!");
}
foreach($keywords as $id => $kw) {
if(!is_string($kw)) {
report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['KEYWORDS'][$key][$id]!");
} elseif (!strlen($kw)) {
report_error(TYPE_ERROR, "Language file contains an empty string entry at \$language_data['KEYWORDS'][$key][$id]!");
} elseif (preg_match('/^([\(\)\{\}\[\]\^=.,:;\-+\*\/%\$\"\'\?]|&[\w#]\w*;)+$/i', $kw)) {
report_error(TYPE_NOTICE, "Language file contains an keyword ('$kw') at \$language_data['KEYWORDS'][$key][$id] which seems to be better suited for the symbols section!");
}
}
if(isset($language_data['CASE_SENSITIVE'][$key]) && !$language_data['CASE_SENSITIVE'][$key]) {
array_walk($keywords, 'dupfind_strtolower');
}
if(count($keywords) != count(array_unique($keywords))) {
$kw_diffs = array_count_values($keywords);
foreach($kw_diffs as $kw => $kw_count) {
if($kw_count > 1) {
report_error(TYPE_WARNING, "Language file contains per-group duplicate keyword '$kw' in \$language_data['KEYWORDS'][$key]!");
}
}
}
}
$disallowed_before = "(?<![a-zA-Z0-9\$_\|\#;>|^&";
$disallowed_after = "(?![a-zA-Z0-9_\|%\\-&;";
foreach($language_data['KEYWORDS'] as $key => $keywords) {
foreach($language_data['KEYWORDS'] as $key2 => $keywords2) {
if($key2 <= $key) {
continue;
}
$kw_diffs = array_intersect($keywords, $keywords2);
foreach($kw_diffs as $kw) {
if(isset($language_data['PARSER_CONTROL']['KEYWORDS'])) {
//Check the precondition\post-cindition for the involved keyword groups
$g1_pre = $disallowed_before;
$g2_pre = $disallowed_before;
$g1_post = $disallowed_after;
$g2_post = $disallowed_after;
if(isset($language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'])) {
$g1_pre = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];
$g2_pre = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];
}
if(isset($language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'])) {
$g1_post = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];
$g2_post = $language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];
}
if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_BEFORE'])) {
$g1_pre = $language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_BEFORE'];
}
if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_AFTER'])) {
$g1_post = $language_data['PARSER_CONTROL']['KEYWORDS'][$key]['DISALLOWED_AFTER'];
}
if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_BEFORE'])) {
$g2_pre = $language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_BEFORE'];
}
if(isset($language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_AFTER'])) {
$g2_post = $language_data['PARSER_CONTROL']['KEYWORDS'][$key2]['DISALLOWED_AFTER'];
}
if($g1_pre != $g2_pre || $g1_post != $g2_post) {
continue;
}
}
report_error(TYPE_WARNING, "Language file contains cross-group duplicate keyword '$kw' in \$language_data['KEYWORDS'][$key] and \$language_data['KEYWORDS'][$key2]!");
}
}
}
foreach($language_data['CASE_SENSITIVE'] as $key => $keywords) {
if(!isset($language_data['KEYWORDS'][$key]) && $key != GESHI_COMMENTS) {
report_error(TYPE_WARNING, "Language file contains an superfluous \$language_data['CASE_SENSITIVE'] specification for non-existing keyword group $key!");
}
}
foreach($language_data['URLS'] as $key => $keywords) {
if(!isset($language_data['KEYWORDS'][$key])) {
report_error(TYPE_WARNING, "Language file contains an superfluous \$language_data['URLS'] specification for non-existing keyword group $key!");
}
}
foreach($language_data['STYLES']['KEYWORDS'] as $key => $keywords) {
if(!isset($language_data['KEYWORDS'][$key])) {
report_error(TYPE_WARNING, "Language file contains an superfluous \$language_data['STYLES']['KEYWORDS'] specification for non-existing keyword group $key!");
}
}
foreach($language_data['COMMENT_SINGLE'] as $ck => $cv) {
if(!is_int($ck)) {
report_error(TYPE_WARNING, "Language file contains an key '$ck' in \$language_data['COMMENT_SINGLE'] that is not integer!");
}
if(!is_string($cv)) {
report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['COMMENT_SINGLE'][$ck]!");
}
if(!isset($language_data['STYLES']['COMMENTS'][$ck])) {
report_error(TYPE_WARNING, "Language file contains no \$language_data['STYLES']['COMMENTS'] specification for comment group $ck!");
}
}
if(isset($language_data['COMMENT_REGEXP'])) {
foreach($language_data['COMMENT_REGEXP'] as $ck => $cv) {
if(!is_int($ck)) {
report_error(TYPE_WARNING, "Language file contains an key '$ck' in \$language_data['COMMENT_REGEXP'] that is not integer!");
}
if(!is_string($cv)) {
report_error(TYPE_WARNING, "Language file contains an non-string entry at \$language_data['COMMENT_REGEXP'][$ck]!");
}
if(!isset($language_data['STYLES']['COMMENTS'][$ck])) {
report_error(TYPE_WARNING, "Language file contains no \$language_data['STYLES']['COMMENTS'] specification for comment group $ck!");
}
}
}
foreach($language_data['STYLES']['COMMENTS'] as $ck => $cv) {
if($ck != 'MULTI' && !isset($language_data['COMMENT_SINGLE'][$ck]) &&
!isset($language_data['COMMENT_REGEXP'][$ck])) {
report_error(TYPE_NOTICE, "Language file contains an superfluous \$language_data['STYLES']['COMMENTS'] specification for Single Line or Regular-Expression Comment key $ck!");
}
}
if (isset($language_data['STYLES']['STRINGS']['HARD'])) {
if (empty($language_data['HARDQUOTE'])) {
report_error(TYPE_NOTICE, "Language file contains superfluous \$language_data['STYLES']['STRINGS'] specification for key 'HARD', but no 'HARDQUOTE's are defined!");
}
unset($language_data['STYLES']['STRINGS']['HARD']);
}
foreach($language_data['STYLES']['STRINGS'] as $sk => $sv) {
if($sk && !isset($language_data['QUOTEMARKS'][$sk])) {
report_error(TYPE_NOTICE, "Language file contains an superfluous \$language_data['STYLES']['STRINGS'] specification for non-existing quotemark key $sk!");
}
}
foreach($language_data['REGEXPS'] as $rk => $rv) {
if(!is_int($rk)) {
report_error(TYPE_WARNING, "Language file contains an key '$rk' in \$language_data['REGEXPS'] that is not integer!");
}
if(is_string($rv)) {
//Check for unmasked / in regular expressions ...
if(empty($rv)) {
report_error(TYPE_WARNING, "Language file contains an empty regular expression at \$language_data['REGEXPS'][$rk]!");
} else {
if(preg_match("/(?<!\\\\)\//s", $rv)) {
report_error(TYPE_WARNING, "Language file contains a regular expression with an unmasked / character at \$language_data['REGEXPS'][$rk]!");
} elseif (preg_match("/(?<!<)(\\\\\\\\)*\\\\\|(?!>)/s", $rv)) {
report_error(TYPE_WARNING, "Language file contains a regular expression with an unescaped match for a pipe character '|' which needs escaping as '&lt;PIPE&gt;' instead at \$language_data['REGEXPS'][$rk]!");
}
}
} elseif(is_array($rv)) {
if(!isset($rv[GESHI_SEARCH])) {
report_error(TYPE_ERROR, "Language file contains no GESHI_SEARCH entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
} elseif(!is_string($rv[GESHI_SEARCH])) {
report_error(TYPE_ERROR, "Language file contains a GESHI_SEARCH entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
} else {
if(preg_match("/(?<!\\\\)\//s", $rv[GESHI_SEARCH])) {
report_error(TYPE_WARNING, "Language file contains a regular expression with an unmasked / character at \$language_data['REGEXPS'][$rk]!");
} elseif (preg_match("/(?<!<)(\\\\\\\\)*\\\\\|(?!>)/s", $rv[GESHI_SEARCH])) {
report_error(TYPE_WARNING, "Language file contains a regular expression with an unescaped match for a pipe character '|' which needs escaping as '&lt;PIPE&gt;' instead at \$language_data['REGEXPS'][$rk]!");
}
}
if(!isset($rv[GESHI_REPLACE])) {
report_error(TYPE_WARNING, "Language file contains no GESHI_REPLACE entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
} elseif(!is_string($rv[GESHI_REPLACE])) {
report_error(TYPE_ERROR, "Language file contains a GESHI_REPLACE entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
}
if(!isset($rv[GESHI_MODIFIERS])) {
report_error(TYPE_WARNING, "Language file contains no GESHI_MODIFIERS entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
} elseif(!is_string($rv[GESHI_MODIFIERS])) {
report_error(TYPE_ERROR, "Language file contains a GESHI_MODIFIERS entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
}
if(!isset($rv[GESHI_BEFORE])) {
report_error(TYPE_WARNING, "Language file contains no GESHI_BEFORE entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
} elseif(!is_string($rv[GESHI_BEFORE])) {
report_error(TYPE_ERROR, "Language file contains a GESHI_BEFORE entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
}
if(!isset($rv[GESHI_AFTER])) {
report_error(TYPE_WARNING, "Language file contains no GESHI_AFTER entry in extended regular expression at \$language_data['REGEXPS'][$rk]!");
} elseif(!is_string($rv[GESHI_AFTER])) {
report_error(TYPE_ERROR, "Language file contains a GESHI_AFTER entry in extended regular expression at \$language_data['REGEXPS'][$rk] which is not a string!");
}
} else {
report_error(TYPE_WARNING, "Language file contains an non-string and non-array entry at \$language_data['REGEXPS'][$rk]!");
}
if(!isset($language_data['STYLES']['REGEXPS'][$rk])) {
report_error(TYPE_WARNING, "Language file contains no \$language_data['STYLES']['REGEXPS'] specification for regexp group $rk!");
}
}
foreach($language_data['STYLES']['REGEXPS'] as $rk => $rv) {
if(!isset($language_data['REGEXPS'][$rk])) {
report_error(TYPE_NOTICE, "Language file contains an superfluous \$language_data['STYLES']['REGEXPS'] specification for regexp key $rk!");
}
}
}
output_error_cache();
flush();
if($error_abort) {
break;
}
}
}
$time_end = explode(' ', microtime());
$time_diff = $time_end[0] + $time_end[1] - $time_start[0] - $time_start[1];
if ( PHP_SAPI != 'cli' ) {
?></li>
</ol>
<p>Validation process completed in <?php printf("%.2f", $time_diff); ?> seconds.</p>
<div id="footer">GeSHi &copy; 2004-2007 Nigel McNie, 2007-2008 Benny Baumann, released under the GNU GPL</div>
</body>
</html>
<?php } else { ?>
Validation process completed in <?php printf("%.2f", $time_diff); ?> seconds.
GeSHi &copy; 2004-2007 Nigel McNie, 2007-2014 Benny Baumann, released under the GNU GPL
<?php } ?>

View File

@ -173,17 +173,20 @@ features are made available through this script.</p>
// Rudimentary checking of where GeSHi is. In a default install it will be in ../, but
// it could be in the current directory if the include_path is set. There's nowhere else
// we can reasonably guess.
if (is_readable('../geshi.php')) {
$path = '../';
} elseif (is_readable('geshi.php')) {
$path = './';
if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
//composer install
require __DIR__ . '/../vendor/autoload.php';
} else if (file_exists(__DIR__ . '/../src/geshi.php')) {
//git checkout
require __DIR__ . '/../src/geshi.php';
} else if (stream_resolve_include_path('geshi.php')) {
// Assume you've put geshi in the include_path already
require_once 'geshi.php';
} else {
report_error(TYPE_ERROR, 'Could not find geshi.php - make sure it is in your include path!');
}
if(!$error_abort) {
require $path . 'geshi.php';
if(!class_exists('GeSHi')) {
report_error(TYPE_ERROR, 'The GeSHi class was not found, although it seemed we loaded the correct file!');
}
@ -347,7 +350,7 @@ for($i = 1; $i <= count($kw_cases_sel); $i += 1) {
}
$lang = validate_lang();
var_dump($lang);
//var_dump($lang);
echo "</pre>";
?>

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
* ------
* Author: Jason Curl (jason.curl@continental-corporation.com)
* Copyright: (c) 2009 Jason Curl
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/09/05
*
* 4CS language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/05/26
*
* MOS 6502 (more specifically 6510) ACME Cross Assembler 0.93 by Marco Baye language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/06/07
*
* MOS 6502 (6510) Kick Assembler 3.13 language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/06/02
*
* MOS 6502 (6510) TASM/64TASS (64TASS being the super set of TASM) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Warren Willmey
* Copyright: (c) 2010 Warren Willmey.
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/06/09
*
* Motorola 68000 - HiSoft Devpac ST 2 Assembler language file for GeSHi.

View File

@ -7,7 +7,7 @@
* - Sandra Rossi (sandra.rossi@gmail.com)
* - Jacob Laursen (jlu@kmd.dk)
* Copyright: (c) 2007 Andres Picazo
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/06/04
*
* ABAP language file for GeSHi.
@ -1326,15 +1326,15 @@ $language_data = array(
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;', //control statements
2 => 'color: #cc4050; text-transform: uppercase; font-weight: bold; zzz:data;', //data statements
3 => 'color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;', //first token of other statements
4 => 'color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;', // next tokens of other statements ("keywords")
5 => 'color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;',
6 => 'color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;',
7 => 'color: #000066; text-transform: uppercase; font-weight: bold; zzz:control;',
8 => 'color: #005066; text-transform: uppercase; font-weight: bold; zzz:statement;',
9 => 'color: #500066; text-transform: uppercase; font-weight: bold; zzz:keyword;'
1 => 'color: #000066; font-weight: bold; zzz:control;', //control statements
2 => 'color: #cc4050; font-weight: bold; zzz:data;', //data statements
3 => 'color: #005066; font-weight: bold; zzz:statement;', //first token of other statements
4 => 'color: #500066; font-weight: bold; zzz:keyword;', // next tokens of other statements ("keywords")
5 => 'color: #005066; font-weight: bold; zzz:statement;',
6 => 'color: #000066; font-weight: bold; zzz:control;',
7 => 'color: #000066; font-weight: bold; zzz:control;',
8 => 'color: #005066; font-weight: bold; zzz:statement;',
9 => 'color: #500066; font-weight: bold; zzz:keyword;'
),
'COMMENTS' => array(
1 => 'color: #808080; font-style: italic;',
@ -1368,9 +1368,9 @@ $language_data = array(
)
),
'URLS' => array(
1 => 'http://help.sap.com/abapdocu/en/ABAP{FNAMEU}.htm',
2 => 'http://help.sap.com/abapdocu/en/ABAP{FNAMEU}.htm',
3 => 'http://help.sap.com/abapdocu/en/ABAP{FNAMEU}.htm',
1 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm',
2 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm',
3 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm',
4 => '',
5 => '',
6 => '',

View File

@ -4,7 +4,7 @@
* ----------------
* Author: Steffen Krause (Steffen.krause@muse.de)
* Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/06/20
*
* Actionscript language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------------
* Author: Jordi Boggiano (j.boggiano@seld.be)
* Copyright: (c) 2007 Jordi Boggiano (http://www.seld.be/), Benny Baumann (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2007/11/26
*
* ActionScript3 language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Tux (tux@inmail.cz)
* Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/07/29
*
* Ada language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Guido Diepen (guido.diepen@aimms.com)
* Copyright: (c) 2011 Guido Diepen (http://www.aimms.com)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2011/05/05
*
* AIMMS language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Neville Dempsey (NevilleD.sourceforge@sgr-a.net)
* Copyright: (c) 2010 Neville Dempsey (https://sourceforge.net/projects/algol68/files/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/04/24
*
* ALGOL 68 language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Tux (tux@inmail.cz)
* Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/29/07
*
* Apache language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Stephan Klimek (http://www.initware.org)
* Copyright: Stephan Klimek (http://www.initware.org)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2005/07/20
*
* AppleScript language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Milian Wolff (mail@milianw.de)
* Copyright: (c) 2008 Milian Wolff (http://milianw.de)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2008/06/17
*
* Apt sources.list language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Marat Dukhan (mdukhan3.at.gatech.dot.edu)
* Copyright: (c) Marat Dukhan (mdukhan3.at.gatech.dot.edu)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2011/10/06
*
* ARM Assembler language file for GeSHi.

View File

@ -8,7 +8,7 @@
* 2009-2011 Benny Baumann (http://qbnz.com/highlighter),
* 2011 Dennis Yurichev (dennis@conus.info),
* 2011 Marat Dukhan (mdukhan3.at.gatech.dot.edu)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/07/27
*
* x86 Assembler language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Amit Gupta (http://blog.igeek.info/)
* Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/08/13
*
* ASP language file for GeSHi.

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
* -----
* Author: Mihai Vasilian (grayasm@gmail.com)
* Copyright: (c) 2010 Mihai Vasilian
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/01/25
*
* autoconf language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Naveen Garg (naveen.garg@gmail.com)
* Copyright: (c) 2009 Naveen Garg and GeSHi
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/06/11
*
* Autohotkey language file for GeSHi.

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
* --------
* Author: Ryan Jones (sciguyryan@gmail.com)
* Copyright: (c) 2008 Ryan Jones
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2008/10/08
*
* AviSynth language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: George Pollard (porges@porg.es)
* Copyright: (c) 2009 George Pollard
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/01/28
*
* Awk language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: aquaticus.info
* Copyright: (c) 2008 aquaticus.info
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2008/01/09
*
* BASCOM AVR language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Andreas Gohr (andi@splitbrain.org)
* Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/08/20
*
* BASH language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Matthew Webb (bmatthew1@blueyonder.co.uk)
* Copyright: (c) 2004 Matthew Webb (http://matthew-4gl.wikispaces.com)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2007/09/15
*
* Basic4GL language file for GeSHi.

View File

@ -0,0 +1,228 @@
<?php
/*************************************************************************************
* batch.php
* ------------
* Author: FraidZZ ( fraidzz [@] bk.ru )
* Copyright: (c) 2015 FraidZZ ( http://vk.com/fraidzz , http://www.cyberforum.ru/members/340557.html )
* Release Version: 1.0.9.0
* Date Started: 2015/03/28
*
* Windows batch file language file for GeSHi.
*
*************************************************************************************
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
************************************************************************************/
$language_data = array(
'LANG_NAME' => 'Windows Batch file',
'COMMENT_SINGLE' => array(),
'COMMENT_MULTI' => array(),
'COMMENT_REGEXP' => array(
100 => '/(?:^|[&|])\\s*(?:rem|::)[^\\n]*/msi',
101 => '/[\\/-]\\S*/si',
102 => '/^\s*:[^:]\\S*/msi',
103 => '/(?:([%!])[^"\'~ ][^"\' ]*\\1|%%?(?:~[dpnxsatz]*)?[^"\'])/si'
),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'", '"'),
'ESCAPE_CHAR' => '',
'ESCAPE_REGEXP' => array(
100 => '/(?:([%!])\\S+\\1|%%(?:~[dpnxsatz]*)?[^"\'])/si'
),
'KEYWORDS' => array(
1 => array(
'echo',
'set',
'for',
'if',
'exit',
'else',
'do',
'not',
'defined',
'exist'
),
2 => array(
"ASSOC",
"ATTRIB",
"BREAK",
"BCDEDIT",
"CACLS",
"CD",
"CHCP",
"CHDIR",
"CHKDSK",
"CHKNTFS",
"CLS",
"CMD",
"COLOR",
"COMP",
"COMPACT",
"CONVERT",
"COPY",
"DATE",
"DEL",
"DIR",
"DISKCOMP",
"DISKCOPY",
"DISKPART",
"DOSKEY",
"DRIVERQUERY",
"ECHO",
"ENDLOCAL",
"ERASE",
"EXIT",
"FC",
"FIND",
"FINDSTR",
"FOR",
"FORMAT",
"FSUTIL",
"FTYPE",
"GPRESULT",
"GRAFTABL",
"HELP",
"ICACLS",
"IF",
"LABEL",
"MD",
"MKDIR",
"MKLINK",
"MODE",
"MORE",
"MOVE",
"OPENFILES",
"PATH",
"PAUSE",
"POPD",
"PRINT",
"PROMPT",
"PUSHD",
"RD",
"RECOVER",
"REN",
"RENAME",
"REPLACE",
"RMDIR",
"ROBOCOPY",
"SET",
"SETLOCAL",
"SC",
"SCHTASKS",
"SHIFT",
"SHUTDOWN",
"SORT",
"START",
"SUBST",
"SYSTEMINFO",
"TASKLIST",
"TASKKILL",
"TIME",
"TITLE",
"TREE",
"TYPE",
"VER",
"VERIFY",
"VOL",
"XCOPY",
"WMIC",
"CSCRIPT"
),
3 => array(
"enabledelayedexpansion",
"enableextensions"
)
),
'SYMBOLS' => array(
'(',
')',
'+',
'-',
'~',
'^',
'@',
'&',
'*',
'|',
'/',
'<',
'>'
),
'CASE_SENSITIVE' => array(
GESHI_COMMENTS => false,
1 => false,
2 => false,
3 => false,
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #800080; font-weight: bold;',
2 => 'color: #0080FF; font-weight: bold;',
3 => 'color: #0000FF; font-weight: bold;'
),
'COMMENTS' => array(
101 => 'color: #44aa44; font-weight: bold;',
100 => 'color: #888888;',
102 => 'color: #990000; font-weight: bold;',
103 => 'color: #000099; font-weight: bold;',
'MULTI' => 'color: #808080; font-style: italic;'
),
'ESCAPE_CHAR' => array(
100 => 'color: #000099; font-weight: bold;'
),
'BRACKETS' => array(
0 => 'color: #66cc66; font-weight: bold;'
),
'STRINGS' => array(
0 => 'color: #ff0000;',
),
'NUMBERS' => array(
0 => 'color: #cc66cc;'
),
'METHODS' => array(
0 => 'color: #006600;'
),
'SYMBOLS' => array(
0 => 'color: #44aa44; font-weight: bold;'
),
'REGEXPS' => array(
0 => 'color: #990000; font-weight: bold',
1 => 'color: #800080; font-weight: bold;'
),
'SCRIPT' => array()
),
'URLS' => array(
1 => '',
2 => '',
3 => ''
),
'OOLANG' => false,
'OBJECT_SPLITTERS' => array(),
'REGEXPS' => array(
0 => array(
GESHI_SEARCH => "((?:goto|call)\\s*)(\\S+)",
GESHI_REPLACE => "\\2",
GESHI_BEFORE => "\\1",
GESHI_MODIFIERS => "si",
GESHI_AFTER => ""
),
1 => "goto|call"
),
'STRICT_MODE_APPLIES' => GESHI_MAYBE,
'SCRIPT_DELIMITERS' => array(),
'HIGHLIGHT_STRICT_BLOCK' => array()
);

View File

@ -4,7 +4,7 @@
* ----------
* Author: Benny Baumann (BenBE@geshi.org)
* Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/10/31
*
* Brainfuck language file for GeSHi.

View File

@ -0,0 +1,200 @@
<?php
/********************************************************************************
* bibtex.php
* -----
* Author: Maïeul Rouquette from
* Quinn Taylor (quinntaylor@mac.com)
* Copyright: (c) 2009 Quinn Taylor (quinntaylor@mac.com), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.9.0
* Date Started: 2009/04/29
*
* BibLaTeX language file for GeSHi.
*
* CHANGES
* 2015/12/29 (1.0.8.13) Biblatex parser
* CHANGES
* -------
* 2009/04/29 (1.0.8.4)
* - First Release
*
* TODO
* -------------------------
* - Add regex for matching and replacing URLs with corresponding hyperlinks
* - Add regex for matching more LaTeX commands that may be embedded in BibTeX
* (Someone who understands regex better than I should borrow from latex.php)
********************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*
*******************************************************************************/
// http://en.wikipedia.org/wiki/BibTeX
// http://www.fb10.uni-bremen.de/anglistik/langpro/bibliographies/jacobsen-bibtex.html
$language_data = array (
'LANG_NAME' => 'BibTeX',
'OOLANG' => false,
'COMMENT_SINGLE' => array(
1 => '%%'
),
'COMMENT_MULTI' => array(),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array(),
'ESCAPE_CHAR' => '',
'KEYWORDS' => array(
0 => array(
'@comment','@preamble','@string'
),
// Standard entry types
1 => array(
'@article','@book','@booklet','@conference','@inbook',
'@incollection','@inproceedings','@manual','@mastersthesis',
'@misc','@phdthesis','@proceedings','@techreport','@unpublished'
),
// Custom entry types
2 => array(
'@collection','@patent','@webpage'
),
// Standard entry field names
3 => array(
'address','annote','author','booktitle','chapter','crossref',
'edition','editor','howpublished','institution','journal','key',
'month','note','number','organization','pages','publisher','school',
'series','title','type','volume','year',
),
// Custom entry field names
4 => array(
'abstract','affiliation','chaptername','cited-by','cites',
'contents','copyright','date-added','date-modified','doi','eprint',
'isbn','issn','keywords','language','lccn','lib-congress',
'location','price','rating','read','size','source','url',
)
),
'URLS' => array(
0 => '',
1 => '',
2 => '',
3 => '',
4 => ''
),
'SYMBOLS' => array(
'{', '}', '#', '=', ','
),
'CASE_SENSITIVE' => array(
1 => false,
2 => false,
3 => false,
4 => false,
GESHI_COMMENTS => false,
),
// Define the colors for the groups listed above
'STYLES' => array(
'KEYWORDS' => array(
1 => 'color: #C02020;', // Standard entry types
2 => 'color: #C02020;', // Custom entry types
3 => 'color: #C08020;', // Standard entry field names
4 => 'color: #C08020;' // Custom entry field names
),
'COMMENTS' => array(
1 => 'color: #2C922C; font-style: italic;'
),
'STRINGS' => array(
0 => 'color: #2020C0;'
),
'SYMBOLS' => array(
0 => 'color: #E02020;'
),
'REGEXPS' => array(
1 => 'color: #2020C0;', // {...}
2 => 'color: #C08020;', // BibDesk fields
3 => 'color: #800000;', // LaTeX commands
4 => 'color: #C08020;', // Custom entry field (biblatex)
5 => 'color: #C02020;', // Custom entry types (biblatex)
),
'ESCAPE_CHAR' => array(
0 => 'color: #000000; font-weight: bold;'
),
'BRACKETS' => array(
0 => 'color: #E02020;'
),
'NUMBERS' => array(
),
'METHODS' => array(
),
'SCRIPT' => array(
)
),
'REGEXPS' => array(
// {parameters}
1 => array(
GESHI_SEARCH => "(?<=\\{)(?:\\{(?R)\\}|[^\\{\\}])*(?=\\})",
GESHI_REPLACE => '\0',
GESHI_MODIFIERS => 's',
GESHI_BEFORE => '',
GESHI_AFTER => ''
),
2 => array(
GESHI_SEARCH => "\bBdsk-(File|Url)-\d+",
GESHI_REPLACE => '\0',
GESHI_MODIFIERS => 'Us',
GESHI_BEFORE => '',
GESHI_AFTER => ''
),
3 => array(
GESHI_SEARCH => "\\\\[A-Za-z0-9]*+",
GESHI_REPLACE => '\0',
GESHI_MODIFIERS => 'Us',
GESHI_BEFORE => '',
GESHI_AFTER => ''
),
4 => array(
GESHI_SEARCH => "([A-z]+)\s+=",
GESHI_REPLACE => '\0',
GESHI_MODIFIERS => 'Us',
GESHI_BEFORE => '',
GESHI_AFTER => ''
),
5 => array(
GESHI_SEARCH => "@([A-z])+",
GESHI_REPLACE => '\0',
GESHI_MODIFIERS => '',
GESHI_BEFORE => '',
GESHI_AFTER => ''
),
),
'HIGHLIGHT_STRICT_BLOCK' => array(
),
'OBJECT_SPLITTERS' => array(
),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(
),
'PARSER_CONTROL' => array(
'ENABLE_FLAGS' => array(
'NUMBERS' => GESHI_NEVER
),
'KEYWORDS' => array(
3 => array(
'DISALLOWED_AFTER' => '(?=\s*=)'
),
4 => array(
'DISALLOWED_AFTER' => '(?=\s*=)'
),
)
)
);

View File

@ -4,7 +4,7 @@
* -----
* Author: Quinn Taylor (quinntaylor@mac.com)
* Copyright: (c) 2009 Quinn Taylor (quinntaylor@mac.com), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/04/29
*
* BibTeX language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------------
* Author: P<EFBFBD>draig O`Connel (info@moonsword.info)
* Copyright: (c) 2005 P<EFBFBD>draig O`Connel (http://moonsword.info)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 16.10.2005
*
* BlitzBasic language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Rowan Rodrik van der Molen (rowan@bigsmoke.us)
* Copyright: (c) 2006 Rowan Rodrik van der Molen (http://www.bigsmoke.us/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2006/09/28
*
* BNF (Backus-Naur form) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Marcus Griep (neoeinstein+GeSHi@gmail.com)
* Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2007/09/10
*
* Boo language file for GeSHi.

View File

@ -7,7 +7,7 @@
* - Jack Lloyd (lloyd@randombit.net)
* - Michael Mol (mikemol@gmail.com)
* Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/06/04
*
* C language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Stuart Moncrieff (stuart at myloadtest dot com)
* Copyright: (c) 2010 Stuart Moncrieff (http://www.myloadtest.com/loadrunner-syntax-highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010-07-25
*
* C (for LoadRunner) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------
* Author: M. Uli Kusterer (witness.of.teachtext@gmx.net)
* Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/06/04
*
* C for Macs language file for GeSHi.

View File

@ -7,7 +7,7 @@
* - Jack Lloyd (lloyd@randombit.net)
* - Michael Mol (mikemol@gmail.com)
* Copyright: (c) 2012 Benny Baumann (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2012/08/12
*
* C (WinAPI) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Roberto Rossi (rsoftware@altervista.org)
* Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/08/30
*
* CAD DCL (Dialog Control Language) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -----------
* Author: Roberto Rossi (rsoftware@altervista.org)
* Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/08/30
*
* AutoCAD/IntelliCAD Lisp language file for GeSHi.

View File

@ -0,0 +1,171 @@
<?php
/*************************************************************************************
* ceylon.php
* ----------
* Author: Lucas Werkmeister (mail@lucaswerkmeister.de)
* Copyright: (c) 2015 Lucas Werkmeister (http://lucaswerkmeister.de)
* Release Version: 1.0.9.0
* Date Started: 2015-01-08
*
* Ceylon language file for GeSHi.
*
* CHANGES
* -------
*
* TODO (updated 2015-06-19)
* ------------------
* * Regexes match and break help URLs, so those are commented out for now
* * Ceylon supports nested block comments
* * The Ceylon compiler correctly parses
* "\{FICTITIOUS CHARACTER WITH " IN NAME}"
* as a single string literal.
* (However, that's not really important
* since Unicode character names never contain quotes.)
*
*************************************************************************************
*
* This file is part of GeSHi.
*
* GeSHi is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GeSHi 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GeSHi; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
************************************************************************************/
$language_data = array (
'LANG_NAME' => 'Ceylon',
'COMMENT_SINGLE' => array(1 => '//', 2 => '#!'),
'COMMENT_MULTI' => array('/*' => '*/'),
'COMMENT_REGEXP' => array(
/*
* 1. regular line comments (see COMMENT_SINGLE)
* 2. shebang line comments (see COMMENT_SINGLE)
* 3. strings (including string templates)
*/
3 => '/(?:"|``).*?(?:``|")/'
),
'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,
'QUOTEMARKS' => array("'"),
'ESCAPE_CHAR' => '\\',
'KEYWORDS' => array(
/*
* 1. lexer keywords (class, else, etc.)
* 2. language modifiers (shared, formal, etc.)
* 3. language doc modifiers (doc, see, etc.)
*/
1 => array(
'assembly', 'module', 'package', 'import',
'alias', 'class', 'interface', 'object', 'given',
'value', 'assign', 'void', 'function',
'new', 'of', 'extends', 'satisfies', 'abstracts',
'in', 'out',
'return', 'break', 'continue', 'throw', 'assert',
'dynamic',
'if', 'else', 'switch', 'case',
'for', 'while', 'try', 'catch', 'finally',
'then', 'let',
'this', 'outer', 'super',
'is', 'exists', 'nonempty'
),
2 => array(
'shared', 'abstract', 'formal', 'default', 'actual',
'variable', 'late', 'native', 'deprecated',
'final', 'sealed', 'annotation', 'small'
),
3 => array(
'doc', 'by', 'license', 'see', 'throws', 'tagged'
)
),
'SYMBOLS' => array(
',', ';', '...', '{', '}', '[', ']', '`', '?.', '*.',
'?', '-&gt;', '=&gt;',
'**', '++', '--', '..', ':', '&&', '||',
'+=', '-=', '*=', '/=', '%=', '|=', '&=', '~=', '||=', '&&=',
'+', '-', '*', '/', '%', '^',
'~', '&', '|', '===', '==', '=', '!=', '!',
'&lt;=&gt;', '&lt;=', '&gt;=',
'&lt;', '&gt;',
'.'
),
'STYLES' => array(
'KEYWORDS' => array(
1 => 'font-weight:bold;color:#4C4C4C;',
2 => 'color:#39C',
3 => 'color:#39C'
),
'COMMENTS' => array(
1 => 'color:darkgray;',
2 => 'color:darkgray;',
3 => 'color:blue',
'MULTI' => 'color:darkgray;'
),
'STRINGS' => array(
0 => 'color:blue;'
),
'REGEXPS' => array(
1 => 'color:#639;',
2 => 'color:#039;',
3 => 'color:#906;'
),
'ESCAPE_CHAR' => array(),
'BRACKETS' => array(),
'NUMBERS' => array(),
'METHODS' => array(),
'SYMBOLS' => array(),
'SCRIPT' => array()
),
'REGEXPS' => array(
/*
* 1. qualified lidentifiers
* 2. lidentifiers
* 3. uidentifiers
*
* All of these contain various lookahead and -behind to ensure
* that we don't match various stuff that GeSHi escapes
* (for instance, we see semicolons as <SEMI>).
*/
1 => array(
GESHI_SEARCH => '\\b((\?|\*)?\.[[:space:]]*)([[:lower:]][[:alnum:]]*|\\\\i[[:alnum:]]*)\\b',
GESHI_REPLACE => '\\3',
GESHI_MODIFIERS => '',
GESHI_BEFORE => '\\1',
GESHI_AFTER => ''
),
2 => array(
GESHI_SEARCH => '(?<![|<>&![:alnum:]])([[:lower:]][[:alnum:]]*|\\\\i[[:alnum:]]*)(?![>[:alnum:]])',
GESHI_REPLACE => '\\1',
GESHI_MODIFIERS => '',
GESHI_BEFORE => '',
GESHI_AFTER => ''
),
3 => array(
GESHI_SEARCH => '(?<![|<>&![:alnum:]])([[:upper:]][[:alnum:]]*|\\\\I[[:alnum:]]*)(?![>[:alnum:]])',
GESHI_REPLACE => '\\1',
GESHI_MODIFIERS => '',
GESHI_BEFORE => '',
GESHI_AFTER => ''
)
),
'OOLANG' => false,
'OBJECT_SPLITTERS' => array(),
'URLS' => array(
1 => '',
2 => '', 3 => '' // the real URLs are commented out because syntax highlighting breaks them
// 2 => 'https://modules.ceylon-lang.org/repo/1/ceylon/language/1.1.0/module-doc/api/index.html#{FNAME}',
// 3 => 'https://modules.ceylon-lang.org/repo/1/ceylon/language/1.1.0/module-doc/api/index.html#{FNAME}',
),
'CASE_SENSITIVE' => array(1 => true, 2 => true, 3 => true),
'STRICT_MODE_APPLIES' => GESHI_NEVER,
'SCRIPT_DELIMITERS' => array(),
'HIGHLIGHT_STRICT_BLOCK' => array()
);

View File

@ -4,7 +4,7 @@
* --------
* Author: John Horigan <john@glyphic.com>
* Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2006/03/11
*
* CFDG language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Diego
* Copyright: (c) 2006 Diego
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2006/02/25
*
* ColdFusion language file for GeSHi.

View File

@ -6,7 +6,7 @@
* Copyright: (c) 2010 Jason Turner (lefticus@gmail.com),
* (c) 2009 Jonathan Turner,
* (c) 2004 Ben Keen (ben.keen@gmail.com), Benny Baumann (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/07/03
*
* ChaiScript language file for GeSHi.

View File

@ -4,14 +4,14 @@
* -----
* Author: Richard Molitor (richard.molitor@student.kit.edu)
* Copyright: (c) 2013 Richard Molitor
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2013/06/22
*
* Chapel language file for GeSHi.
*
* CHANGES
* -------
* 2013/06/22 (1.0.8.12)
* 2013/06/22 (1.0.8.13)
* - First Release
*
* TODO (updated 2013/06/22)

View File

@ -4,7 +4,7 @@
* --------
* Author: Marcus Griep (neoeinstein+GeSHi@gmail.com)
* Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2007/10/24
*
* CIL (Common Intermediate Language) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Jess Johnson (jess@grok-code.com)
* Copyright: (c) 2009 Jess Johnson (http://grok-code.com)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/09/20
*
* Clojure language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Daniel Nelson (danieln@eng.utah.edu)
* Copyright: (c) 2009 Daniel Nelson
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/04/06
*
* CMake language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: BenBE (BenBE@omorphia.org)
* Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2007/07/02
*
* COBOL language file for GeSHi.
@ -16,13 +16,13 @@
*
* CHANGES
* -------
* 2013/11/17 (1.0.8.12)
* 2013/11/17 (1.0.8.13)
* - Changed compiler directives to be handled like comments.
* - Fixed bug where keywords in identifiers were highlighted.
* 2013/08/19 (1.0.8.12)
* 2013/08/19 (1.0.8.13)
* - Added more intrinsic functions, reserved words, and compiler directives
* from the (upcoming) standard.
* 2013/07/07 (1.0.8.12)
* 2013/07/07 (1.0.8.13)
* - Added more reserved words, compiler directives and intrinsic functions.
* - Added modern comment syntax and corrected the other one.
* - Set OOLANG to true and added an object splitter.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Trevor Burnham (trevorburnham@gmail.com)
* Copyright: (c) 2010 Trevor Burnham (http://iterative.ly)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/06/08
*
* CoffeeScript language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Iulian M
* Copyright: (c) 2006 Iulian M
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/09/27
*
* C++ (with Qt extensions) language file for GeSHi.
@ -95,7 +95,8 @@ $language_data = array (
'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class' ,
'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals', 'Q_SIGNALS', 'Q_SLOTS',
'Q_FOREACH', 'QCOMPARE', 'QVERIFY', 'qDebug', 'kDebug', 'QBENCHMARK'
'Q_FOREACH', 'QCOMPARE', 'QVERIFY', 'qDebug', 'kDebug', 'QBENCHMARK',
'SIGNAL', 'SLOT', 'emit'
),
3 => array(
'cin', 'cerr', 'clog', 'cout',
@ -141,334 +142,387 @@ $language_data = array (
'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'
),
5 => array(
"Q_UINT16", "Q_UINT32", "Q_UINT64", "Q_UINT8", "Q_ULLONG",
"Q_ULONG", "Q3Accel", "Q3Action", "Q3ActionGroup", "Q3AsciiBucket",
"Q3AsciiCache", "Q3AsciiCacheIterator", "Q3AsciiDict",
"Q3AsciiDictIterator", "Q3BaseBucket", "Q3BoxLayout", "Q3Button",
"Q3ButtonGroup", "Q3Cache", "Q3CacheIterator", "Q3Canvas",
"Q3CanvasEllipse", "Q3CanvasItem", "Q3CanvasItemList",
"Q3CanvasLine", "Q3CanvasPixmap", "Q3CanvasPixmapArray",
"Q3CanvasPolygon", "Q3CanvasPolygonalItem", "Q3CanvasRectangle",
"Q3CanvasSpline", "Q3CanvasSprite", "Q3CanvasText", "Q3CanvasView",
"Q3CheckListItem", "Q3CheckTableItem", "Q3CleanupHandler",
"Q3ColorDrag", "Q3ComboBox", "Q3ComboTableItem", "Q3CString",
"Q3DataBrowser", "Q3DataTable", "Q3DataView", "Q3DateEdit",
"Q3DateTimeEdit", "Q3DateTimeEditBase", "Q3DeepCopy", "Q3Dict",
"Q3DictIterator", "Q3Dns", "Q3DnsSocket", "Q3DockArea",
"Q3DockAreaLayout", "Q3DockWindow", "Q3DragObject", "Q3DropSite",
"Q3EditorFactory", "Q3FileDialog", "Q3FileIconProvider",
"Q3FilePreview", "Q3Frame", "Q3Ftp", "Q3GArray", "Q3GCache",
"Q3GCacheIterator", "Q3GDict", "Q3GDictIterator", "Q3GList",
"Q3GListIterator", "Q3GListStdIterator", "Q3Grid", "Q3GridLayout",
"Q3GridView", "Q3GroupBox", "Q3GVector", "Q3HBox", "Q3HBoxLayout",
"Q3HButtonGroup", "Q3Header", "Q3HGroupBox", "Q3Http",
"Q3HttpHeader", "Q3HttpRequestHeader", "Q3HttpResponseHeader",
"Q3IconDrag", "Q3IconDragItem", "Q3IconView", "Q3IconViewItem",
"Q3ImageDrag", "Q3IntBucket", "Q3IntCache", "Q3IntCacheIterator",
"Q3IntDict", "Q3IntDictIterator", "Q3ListBox", "Q3ListBoxItem",
"Q3ListBoxPixmap", "Q3ListBoxText", "Q3ListView", "Q3ListViewItem",
"Q3ListViewItemIterator", "Q3LNode", "Q3LocalFs", "Q3MainWindow",
"Q3MemArray", "Q3MimeSourceFactory", "Q3MultiLineEdit",
"Q3NetworkOperation", "Q3NetworkProtocol", "Q3NetworkProtocolDict",
"Q3NetworkProtocolFactory", "Q3NetworkProtocolFactoryBase",
"Q3ObjectDictionary", "Q3PaintDeviceMetrics", "Q3Painter",
"Q3Picture", "Q3PointArray", "Q3PolygonScanner", "Q3PopupMenu",
"Q3Process", "Q3ProgressBar", "Q3ProgressDialog", "Q3PtrBucket",
"Q3PtrCollection", "Q3PtrDict", "Q3PtrDictIterator", "Q3PtrList",
"Q3PtrListIterator", "Q3PtrListStdIterator", "Q3PtrQueue",
"Q3PtrStack", "Q3PtrVector", "Q3RangeControl", "Q3ScrollView",
"Q3Semaphore", "Q3ServerSocket", "Q3Shared", "Q3Signal",
"Q3SimpleRichText", "Q3SingleCleanupHandler", "Q3Socket",
"Q3SocketDevice", "Q3SortedList", "Q3SpinWidget", "Q3SqlCursor",
"Q3SqlEditorFactory", "Q3SqlFieldInfo", "Q3SqlFieldInfoList",
"Q3SqlForm", "Q3SqlPropertyMap", "Q3SqlRecordInfo",
"Q3SqlSelectCursor", "Q3StoredDrag", "Q3StrIList", "Q3StringBucket",
"Q3StrIVec", "Q3StrList", "Q3StrListIterator", "Q3StrVec",
"Q3StyleSheet", "Q3StyleSheetItem", "Q3SyntaxHighlighter",
"Q3TabDialog", "Q3Table", "Q3TableItem", "Q3TableSelection",
"Q3TextBrowser", "Q3TextDrag", "Q3TextEdit",
"Q3TextEditOptimPrivate", "Q3TextStream", "Q3TextView",
"Q3TimeEdit", "Q3ToolBar", "Q3TSFUNC", "Q3UriDrag", "Q3Url",
"Q3UrlOperator", "Q3ValueList", "Q3ValueListConstIterator",
"Q3ValueListIterator", "Q3ValueStack", "Q3ValueVector", "Q3VBox",
"Q3VBoxLayout", "Q3VButtonGroup", "Q3VGroupBox", "Q3WhatsThis",
"Q3WidgetStack", "Q3Wizard", "QAbstractButton",
"QAbstractEventDispatcher", "QAbstractExtensionFactory",
"QAbstractExtensionManager", "QAbstractFileEngine",
"QAbstractFileEngineHandler", "QAbstractFileEngineIterator",
"QAbstractFormBuilder", "QAbstractGraphicsShapeItem",
"QAbstractItemDelegate", "QAbstractItemModel", "QAbstractItemView",
"QAbstractListModel", "QAbstractMessageHandler",
"QAbstractNetworkCache", "QAbstractPageSetupDialog",
"QAbstractPrintDialog", "QAbstractProxyModel",
"QAbstractScrollArea", "QAbstractSlider", "QAbstractSocket",
"QAbstractSpinBox", "QAbstractTableModel",
"QAbstractTextDocumentLayout", "QAbstractUndoItem",
"QAbstractUriResolver", "QAbstractXmlNodeModel",
"QAbstractXmlReceiver", "QAccessible", "QAccessible2Interface",
"QAccessibleApplication", "QAccessibleBridge",
"QAccessibleBridgeFactoryInterface", "QAccessibleBridgePlugin",
"QAccessibleEditableTextInterface", "QAccessibleEvent",
"QAccessibleFactoryInterface", "QAccessibleInterface",
"QAccessibleInterfaceEx", "QAccessibleObject",
"QAccessibleObjectEx", "QAccessiblePlugin",
"QAccessibleSimpleEditableTextInterface",
"QAccessibleTableInterface", "QAccessibleTextInterface",
"QAccessibleValueInterface", "QAccessibleWidget",
"QAccessibleWidgetEx", "QAction", "QActionEvent", "QActionGroup",
"QApplication", "QArgument", "QAssistantClient", "QAtomicInt",
"QAtomicPointer", "QAuthenticator", "QBasicAtomicInt",
"QBasicAtomicPointer", "QBasicTimer", "QBitArray", "QBitmap",
"QBitRef", "QBool", "QBoxLayout", "QBrush", "QBrushData", "QBuffer",
"QButtonGroup", "QByteArray", "QByteArrayMatcher", "QByteRef",
"QCache", "QCalendarWidget", "QCDEStyle", "QChar", "QCharRef",
"QCheckBox", "QChildEvent", "QCleanlooksStyle", "QClipboard",
"QClipboardEvent", "QCloseEvent", "QColor", "QColorDialog",
"QColorGroup", "QColormap", "QColumnView", "QComboBox",
"QCommandLinkButton", "QCommonStyle", "QCompleter",
"QConicalGradient", "QConstString", "QContextMenuEvent", "QCOORD",
"QCoreApplication", "QCryptographicHash", "QCursor", "QCursorShape",
"QCustomEvent", "QDataStream", "QDataWidgetMapper", "QDate",
"QDateEdit", "QDateTime", "QDateTimeEdit", "QDB2Driver",
"QDB2Result", "QDBusAbstractAdaptor", "QDBusAbstractInterface",
"QDBusArgument", "QDBusConnection", "QDBusConnectionInterface",
"QDBusContext", "QDBusError", "QDBusInterface", "QDBusMessage",
"QDBusMetaType", "QDBusObjectPath", "QDBusPendingCall",
"QDBusPendingCallWatcher", "QDBusPendingReply",
"QDBusPendingReplyData", "QDBusReply", "QDBusServer",
"QDBusSignature", "QDBusVariant", "QDebug",
"QDesignerActionEditorInterface", "QDesignerBrushManagerInterface",
"QDesignerComponents", "QDesignerContainerExtension",
"QDesignerCustomWidgetCollectionInterface",
"QDesignerCustomWidgetInterface", "QDesignerDnDItemInterface",
"QDesignerDynamicPropertySheetExtension", "QDesignerExportWidget",
"QDesignerExtraInfoExtension", "QDesignerFormEditorInterface",
"QDesignerFormEditorPluginInterface", "QDesignerFormWindowCursorInterface",
"QDesignerFormWindowInterface", "QDesignerFormWindowManagerInterface",
"QDesignerFormWindowToolInterface",
"QDesignerIconCacheInterface", "QDesignerIntegrationInterface",
"QDesignerLanguageExtension", "QDesignerLayoutDecorationExtension",
"QDesignerMemberSheetExtension", "QDesignerMetaDataBaseInterface",
"QDesignerMetaDataBaseItemInterface",
"QDesignerObjectInspectorInterface", "QDesignerPromotionInterface",
"QDesignerPropertyEditorInterface",
"QDesignerPropertySheetExtension", "QDesignerResourceBrowserInterface",
"QDesignerTaskMenuExtension", "QDesignerWidgetBoxInterface",
"QDesignerWidgetDataBaseInterface", "QDesignerWidgetDataBaseItemInterface",
"QDesignerWidgetFactoryInterface", "QDesktopServices",
"QDesktopWidget", "QDial", "QDialog", "QDialogButtonBox", "QDir",
"QDirIterator", "QDirModel", "QDockWidget", "QDomAttr",
"QDomCDATASection", "QDomCharacterData", "QDomComment",
"QDomDocument", "QDomDocumentFragment", "QDomDocumentType",
"QDomElement", "QDomEntity", "QDomEntityReference",
"QDomImplementation", "QDomNamedNodeMap", "QDomNode",
"QDomNodeList", "QDomNotation", "QDomProcessingInstruction",
"QDomText", "QDoubleSpinBox", "QDoubleValidator", "QDrag",
"QDragEnterEvent", "QDragLeaveEvent", "QDragMoveEvent",
"QDragResponseEvent", "QDropEvent", "QDynamicPropertyChangeEvent",
"QErrorMessage", "QEvent", "QEventLoop", "QEventSizeOfChecker",
"QExplicitlySharedDataPointer", "QExtensionFactory",
"QExtensionManager", "QFactoryInterface", "QFile", "QFileDialog",
"QFileIconProvider", "QFileInfo", "QFileInfoList",
"QFileInfoListIterator", "QFileOpenEvent", "QFileSystemModel",
"QFileSystemWatcher", "QFlag", "QFlags", "QFocusEvent",
"QFocusFrame", "QFont", "QFontComboBox", "QFontDatabase",
"QFontDialog", "QFontInfo", "QFontMetrics", "QFontMetricsF",
"QForeachContainer", "QForeachContainerBase", "QFormBuilder",
"QFormLayout", "QFrame", "QFSFileEngine", "QFtp", "QFuture",
"QFutureInterface", "QFutureInterfaceBase", "QFutureIterator",
"QFutureSynchronizer", "QFutureWatcher", "QFutureWatcherBase",
"QGenericArgument", "QGenericReturnArgument", "QGLColormap",
"QGLContext", "QGLFormat", "QGLFramebufferObject", "QGlobalStatic",
"QGlobalStaticDeleter", "QGLPixelBuffer", "QGLWidget", "QGradient",
"QGradientStop", "QGradientStops", "QGraphicsEllipseItem",
"QGraphicsGridLayout", "QGraphicsItem", "QGraphicsItemAnimation",
"QGraphicsItemGroup", "QGraphicsLayout", "QGraphicsLayoutItem",
"QGraphicsLinearLayout", "QGraphicsLineItem", "QGraphicsPathItem",
"QGraphicsPixmapItem", "QGraphicsPolygonItem",
"QGraphicsProxyWidget", "QGraphicsRectItem", "QGraphicsScene",
"QGraphicsSceneContextMenuEvent", "QGraphicsSceneDragDropEvent",
"QGraphicsSceneEvent", "QGraphicsSceneHelpEvent",
"QGraphicsSceneHoverEvent", "QGraphicsSceneMouseEvent",
"QGraphicsSceneMoveEvent", "QGraphicsSceneResizeEvent",
"QGraphicsSceneWheelEvent", "QGraphicsSimpleTextItem",
"QGraphicsSvgItem", "QGraphicsTextItem", "QGraphicsView",
"QGraphicsWidget", "QGridLayout", "QGroupBox", "QGtkStyle", "QHash",
"QHashData", "QHashDummyNode", "QHashDummyValue", "QHashIterator",
"QHashNode", "QHBoxLayout", "QHeaderView", "QHelpContentItem",
"QHelpContentModel", "QHelpContentWidget", "QHelpEngine",
"QHelpEngineCore", "QHelpEvent", "QHelpGlobal", "QHelpIndexModel",
"QHelpIndexWidget", "QHelpSearchEngine", "QHelpSearchQuery",
"QHelpSearchQueryWidget", "QHelpSearchResultWidget", "QHideEvent",
"QHostAddress", "QHostInfo", "QHoverEvent", "QHttp", "QHttpHeader",
"QHttpRequestHeader", "QHttpResponseHeader", "QIBaseDriver",
"QIBaseResult", "QIcon", "QIconDragEvent", "QIconEngine",
"QIconEngineFactoryInterface", "QIconEngineFactoryInterfaceV2",
"QIconEnginePlugin", "QIconEnginePluginV2", "QIconEngineV2",
"QIconSet", "QImage", "QImageIOHandler",
"QImageIOHandlerFactoryInterface", "QImageIOPlugin", "QImageReader",
"QImageTextKeyLang", "QImageWriter", "QIncompatibleFlag",
"QInputContext", "QInputContextFactory",
"QInputContextFactoryInterface", "QInputContextPlugin",
"QInputDialog", "QInputEvent", "QInputMethodEvent", "Q_INT16",
"Q_INT32", "Q_INT64", "Q_INT8", "QInternal", "QIntForSize",
"QIntForType", "QIntValidator", "QIODevice", "Q_IPV6ADDR",
"QIPv6Address", "QItemDelegate", "QItemEditorCreator",
"QItemEditorCreatorBase", "QItemEditorFactory", "QItemSelection",
"QItemSelectionModel", "QItemSelectionRange", "QKeyEvent",
"QKeySequence", "QLabel", "QLatin1Char", "QLatin1String", "QLayout",
"QLayoutItem", "QLayoutIterator", "QLCDNumber", "QLibrary",
"QLibraryInfo", "QLine", "QLinearGradient", "QLineEdit", "QLineF",
"QLinkedList", "QLinkedListData", "QLinkedListIterator",
"QLinkedListNode", "QList", "QListData", "QListIterator",
"QListView", "QListWidget", "QListWidgetItem", "Q_LLONG", "QLocale",
"QLocalServer", "QLocalSocket", "Q_LONG", "QMacCompatGLenum",
"QMacCompatGLint", "QMacCompatGLuint", "QMacGLCompatTypes",
"QMacMime", "QMacPasteboardMime", "QMainWindow", "QMap", "QMapData",
"QMapIterator", "QMapNode", "QMapPayloadNode", "QMatrix",
"QMdiArea", "QMdiSubWindow", "QMenu", "QMenuBar",
"QMenubarUpdatedEvent", "QMenuItem", "QMessageBox",
"QMetaClassInfo", "QMetaEnum", "QMetaMethod", "QMetaObject",
"QMetaObjectExtraData", "QMetaProperty", "QMetaType", "QMetaTypeId",
"QMetaTypeId2", "QMimeData", "QMimeSource", "QModelIndex",
"QModelIndexList", "QMotifStyle", "QMouseEvent", "QMoveEvent",
"QMovie", "QMultiHash", "QMultiMap", "QMutableFutureIterator",
"QMutableHashIterator", "QMutableLinkedListIterator",
"QMutableListIterator", "QMutableMapIterator",
"QMutableSetIterator", "QMutableStringListIterator",
"QMutableVectorIterator", "QMutex", "QMutexLocker", "QMYSQLDriver",
"QMYSQLResult", "QNetworkAccessManager", "QNetworkAddressEntry",
"QNetworkCacheMetaData", "QNetworkCookie", "QNetworkCookieJar",
"QNetworkDiskCache", "QNetworkInterface", "QNetworkProxy",
"QNetworkProxyFactory", "QNetworkProxyQuery", "QNetworkReply",
"QNetworkRequest", "QNoDebug", "QNoImplicitBoolCast", "QObject",
"QObjectCleanupHandler", "QObjectData", "QObjectList",
"QObjectUserData", "QOCIDriver", "QOCIResult", "QODBCDriver",
"QODBCResult", "QPageSetupDialog", "QPaintDevice", "QPaintEngine",
"QPaintEngineState", "QPainter", "QPainterPath",
"QPainterPathPrivate", "QPainterPathStroker", "QPaintEvent",
"QPair", "QPalette", "QPen", "QPersistentModelIndex", "QPicture",
"QPictureFormatInterface", "QPictureFormatPlugin", "QPictureIO",
"Q_PID", "QPixmap", "QPixmapCache", "QPlainTextDocumentLayout",
"QPlainTextEdit", "QPlastiqueStyle", "QPluginLoader", "QPoint",
"QPointer", "QPointF", "QPolygon", "QPolygonF", "QPrintDialog",
"QPrintEngine", "QPrinter", "QPrinterInfo", "QPrintPreviewDialog",
"QPrintPreviewWidget", "QProcess", "QProgressBar",
"QProgressDialog", "QProxyModel", "QPSQLDriver", "QPSQLResult",
"QPushButton", "QQueue", "QRadialGradient", "QRadioButton",
"QReadLocker", "QReadWriteLock", "QRect", "QRectF", "QRegExp",
"QRegExpValidator", "QRegion", "QResizeEvent", "QResource",
"QReturnArgument", "QRgb", "QRubberBand", "QRunnable",
"QScriptable", "QScriptClass", "QScriptClassPropertyIterator",
"QScriptContext", "QScriptContextInfo", "QScriptContextInfoList",
"QScriptEngine", "QScriptEngineAgent", "QScriptEngineDebugger",
"QScriptExtensionInterface", "QScriptExtensionPlugin",
"QScriptString", "QScriptSyntaxCheckResult", "QScriptValue",
"QScriptValueIterator", "QScriptValueList", "QScrollArea",
"QScrollBar", "QSemaphore", "QSessionManager", "QSet",
"QSetIterator", "QSettings", "QSharedData", "QSharedDataPointer",
"QSharedMemory", "QSharedPointer", "QShortcut", "QShortcutEvent",
"QShowEvent", "QSignalMapper", "QSignalSpy", "QSimpleXmlNodeModel",
"QSize", "QSizeF", "QSizeGrip", "QSizePolicy", "QSlider",
"QSocketNotifier", "QSortFilterProxyModel", "QSound",
"QSourceLocation", "QSpacerItem", "QSpinBox", "QSplashScreen",
"QSplitter", "QSplitterHandle", "QSpontaneKeyEvent", "QSqlDatabase",
"QSqlDriver", "QSqlDriverCreator", "QSqlDriverCreatorBase",
"QSqlDriverFactoryInterface", "QSqlDriverPlugin", "QSqlError",
"QSqlField", "QSqlIndex", "QSQLite2Driver", "QSQLite2Result",
"QSQLiteDriver", "QSQLiteResult", "QSqlQuery", "QSqlQueryModel",
"QSqlRecord", "QSqlRelation", "QSqlRelationalDelegate",
"QSqlRelationalTableModel", "QSqlResult", "QSqlTableModel", "QSsl",
"QSslCertificate", "QSslCipher", "QSslConfiguration", "QSslError",
"QSslKey", "QSslSocket", "QStack", "QStackedLayout",
"QStackedWidget", "QStandardItem", "QStandardItemEditorCreator",
"QStandardItemModel", "QStatusBar", "QStatusTipEvent",
"QStdWString", "QString", "QStringList", "QStringListIterator",
"QStringListModel", "QStringMatcher", "QStringRef", "QStyle",
"QStyledItemDelegate", "QStyleFactory", "QStyleFactoryInterface",
"QStyleHintReturn", "QStyleHintReturnMask",
"QStyleHintReturnVariant", "QStyleOption", "QStyleOptionButton",
"QStyleOptionComboBox", "QStyleOptionComplex",
"QStyleOptionDockWidget", "QStyleOptionDockWidgetV2",
"QStyleOptionFocusRect", "QStyleOptionFrame", "QStyleOptionFrameV2",
"QStyleOptionFrameV3", "QStyleOptionGraphicsItem",
"QStyleOptionGroupBox", "QStyleOptionHeader",
"QStyleOptionMenuItem", "QStyleOptionProgressBar",
"QStyleOptionProgressBarV2", "QStyleOptionQ3DockWindow",
"QStyleOptionQ3ListView", "QStyleOptionQ3ListViewItem",
"QStyleOptionRubberBand", "QStyleOptionSizeGrip",
"QStyleOptionSlider", "QStyleOptionSpinBox", "QStyleOptionTab",
"QStyleOptionTabBarBase", "QStyleOptionTabBarBaseV2",
"QStyleOptionTabV2", "QStyleOptionTabV3",
"QStyleOptionTabWidgetFrame", "QStyleOptionTitleBar",
"QStyleOptionToolBar", "QStyleOptionToolBox",
"QStyleOptionToolBoxV2", "QStyleOptionToolButton",
"QStyleOptionViewItem", "QStyleOptionViewItemV2",
"QStyleOptionViewItemV3", "QStyleOptionViewItemV4", "QStylePainter",
"QStylePlugin", "QSvgGenerator", "QSvgRenderer", "QSvgWidget",
"QSyntaxHighlighter", "QSysInfo", "QSystemLocale",
"QSystemSemaphore", "QSystemTrayIcon", "Qt", "Qt3Support",
"QTabBar", "QTabletEvent", "QTableView", "QTableWidget",
"QTableWidgetItem", "QTableWidgetSelectionRange", "QTabWidget",
"QtAlgorithms", "QtAssistant", "QtCleanUpFunction",
"QtConcurrentFilter", "QtConcurrentMap", "QtConcurrentRun",
"QtContainerFwd", "QtCore", "QTcpServer", "QTcpSocket", "QtDBus",
"QtDebug", "QtDesigner", "QTDSDriver", "QTDSResult",
"QTemporaryFile", "QtEndian", "QTest", "QTestAccessibility",
"QTestAccessibilityEvent", "QTestData", "QTestDelayEvent",
"QTestEvent", "QTestEventList", "QTestEventLoop",
"QTestKeyClicksEvent", "QTestKeyEvent", "QTestMouseEvent",
"QtEvents", "QTextBlock", "QTextBlockFormat", "QTextBlockGroup",
"QTextBlockUserData", "QTextBoundaryFinder", "QTextBrowser",
"QTextCharFormat", "QTextCodec", "QTextCodecFactoryInterface",
"QTextCodecPlugin", "QTextCursor", "QTextDecoder", "QTextDocument",
"QTextDocumentFragment", "QTextDocumentWriter", "QTextEdit",
"QTextEncoder", "QTextFormat", "QTextFragment", "QTextFrame",
"QTextFrameFormat", "QTextFrameLayoutData", "QTextImageFormat",
"QTextInlineObject", "QTextIStream", "QTextItem", "QTextLayout",
"QTextLength", "QTextLine", "QTextList", "QTextListFormat",
"QTextObject", "QTextObjectInterface", "QTextOption",
"QTextOStream", "QTextStream", "QTextStreamFunction",
"QTextStreamManipulator", "QTextTable", "QTextTableCell",
"QTextTableCellFormat", "QTextTableFormat", "QtGlobal", "QtGui",
"QtHelp", "QThread", "QThreadPool", "QThreadStorage",
"QThreadStorageData", "QTime", "QTimeEdit", "QTimeLine", "QTimer",
"QTimerEvent", "QtMsgHandler", "QtNetwork", "QToolBar",
"QToolBarChangeEvent", "QToolBox", "QToolButton", "QToolTip",
"QtOpenGL", "QtPlugin", "QtPluginInstanceFunction", "QTransform",
"QTranslator", "QTreeView", "QTreeWidget", "QTreeWidgetItem",
"QTreeWidgetItemIterator", "QTS", "QtScript", "QtScriptTools",
"QtSql", "QtSvg", "QtTest", "QtUiTools", "QtWebKit", "QtXml",
"QtXmlPatterns", "QTypeInfo", "QUdpSocket", "QUiLoader",
"QUintForSize", "QUintForType", "QUndoCommand", "QUndoGroup",
"QUndoStack", "QUndoView", "QUnixPrintWidget", "QUpdateLaterEvent",
"QUrl", "QUrlInfo", "QUuid", "QValidator", "QVariant",
"QVariantComparisonHelper", "QVariantHash", "QVariantList",
"QVariantMap", "QVarLengthArray", "QVBoxLayout", "QVector",
"QVectorData", "QVectorIterator", "QVectorTypedData",
"QWaitCondition", "QWeakPointer", "QWebDatabase", "QWebFrame",
"QWebHistory", "QWebHistoryInterface", "QWebHistoryItem",
"QWebHitTestResult", "QWebPage", "QWebPluginFactory",
"QWebSecurityOrigin", "QWebSettings", "QWebView", "QWhatsThis",
"QWhatsThisClickedEvent", "QWheelEvent", "QWidget", "QWidgetAction",
"QWidgetData", "QWidgetItem", "QWidgetItemV2", "QWidgetList",
"QWidgetMapper", "QWidgetSet", "QWindowsCEStyle", "QWindowsMime",
"QWindowsMobileStyle", "QWindowsStyle", "QWindowStateChangeEvent",
"QWindowsVistaStyle", "QWindowsXPStyle", "QWizard", "QWizardPage",
"QWMatrix", "QWorkspace", "QWriteLocker", "QX11EmbedContainer",
"QX11EmbedWidget", "QX11Info", "QXmlAttributes",
"QXmlContentHandler", "QXmlDeclHandler", "QXmlDefaultHandler",
"QXmlDTDHandler", "QXmlEntityResolver", "QXmlErrorHandler",
"QXmlFormatter", "QXmlInputSource", "QXmlItem",
"QXmlLexicalHandler", "QXmlLocator", "QXmlName", "QXmlNamePool",
"QXmlNamespaceSupport", "QXmlNodeModelIndex", "QXmlParseException",
"QXmlQuery", "QXmlReader", "QXmlResultItems", "QXmlSerializer",
"QXmlSimpleReader", "QXmlStreamAttribute", "QXmlStreamAttributes",
"QXmlStreamEntityDeclaration", "QXmlStreamEntityDeclarations",
"QXmlStreamEntityResolver", "QXmlStreamNamespaceDeclaration",
"QXmlStreamNamespaceDeclarations", "QXmlStreamNotationDeclaration",
"QXmlStreamNotationDeclarations", "QXmlStreamReader",
"QXmlStreamStringRef", "QXmlStreamWriter"
'Q_INT8', 'Q_INT16', 'Q_INT32', 'Q_INT64', 'Q_LLONG', 'Q_LONG',
'Q_UINT8', 'Q_UINT16', 'Q_UINT32', 'Q_UINT64', 'Q_ULLONG', 'Q_ULONG',
'QAbstractAnimation', 'QAbstractButton', 'QAbstractEventDispatcher',
'QAbstractExtensionFactory', 'QAbstractExtensionManager',
'QAbstractFormBuilder', 'QAbstractGraphicsShapeItem',
'QAbstractItemDelegate', 'QAbstractItemModel', 'QAbstractItemView',
'QAbstractListModel', 'QAbstractMessageHandler',
'QAbstractNativeEventFilter', 'QAbstractNetworkCache',
'QAbstractOpenGLFunctions', 'QAbstractPlanarVideoBuffer',
'QAbstractPrintDialog', 'QAbstractProxyModel', 'QAbstractScrollArea',
'QAbstractSlider', 'QAbstractSocket', 'QAbstractSpinBox',
'QAbstractState', 'QAbstractTableModel',
'QAbstractTextDocumentLayout', 'QAbstractTransition',
'QAbstractUriResolver', 'QAbstractVideoBuffer',
'QAbstractVideoSurface', 'QAbstractXmlNodeModel',
'QAbstractXmlReceiver', 'QAccelerometer', 'QAccelerometerFilter',
'QAccelerometerReading', 'QAccessible', 'QAccessibleActionInterface',
'QAccessibleEditableTextInterface', 'QAccessibleEvent',
'QAccessibleInterface', 'QAccessibleObject', 'QAccessiblePlugin',
'QAccessibleStateChangeEvent', 'QAccessibleTableCellInterface',
'QAccessibleTableInterface', 'QAccessibleTableModelChangeEvent',
'QAccessibleTextCursorEvent', 'QAccessibleTextInsertEvent',
'QAccessibleTextInterface', 'QAccessibleTextRemoveEvent',
'QAccessibleTextSelectionEvent', 'QAccessibleTextUpdateEvent',
'QAccessibleValueChangeEvent', 'QAccessibleValueInterface',
'QAccessibleWidget', 'QAction', 'QActionEvent', 'QActionGroup',
'QAltimeter', 'QAltimeterFilter', 'QAltimeterReading',
'QAmbientLightFilter','QAmbientLightReading', 'QAmbientLightSensor',
'QAmbientTemperatureFilter', 'QAmbientTemperatureReading',
'QAmbientTemperatureSensor', 'QAndroidActivityResultReceiver',
'QAndroidJniEnvironment', 'QAndroidJniObject', 'QAnimationGroup',
'QApplication', 'QAssociativeIterable', 'QAtomicInt',
'QAtomicInteger', 'QAtomicPointer', 'QAudioBuffer', 'QAudioDecoder',
'QAudioDecoderControl', 'QAudioDeviceInfo', 'QAudioEncoderSettings',
'QAudioEncoderSettingsControl', 'QAudioFormat', 'QAudioInput',
'QAudioInputSelectorControl', 'QAudioOutput',
'QAudioOutputSelectorControl', 'QAudioProbe', 'QAudioRecorder',
'QAuthenticator', 'QAxAggregated', 'QAxBase', 'QAxBindable',
'QAxFactory', 'QAxObject', 'QAxScript', 'QAxScriptEngine',
'QAxScriptManager', 'QAxSelect', 'QAxWidget', 'QBackingStore',
'QBasicTimer', 'QBitArray', 'QBitmap', 'QBluetoothAddress',
'QBluetoothDeviceDiscoveryAgent', 'QBluetoothDeviceInfo',
'QBluetoothHostInfo', 'QBluetoothLocalDevice', 'QBluetoothServer',
'QBluetoothServiceDiscoveryAgent', 'QBluetoothServiceInfo',
'QBluetoothSocket', 'QBluetoothTransferManager',
'QBluetoothTransferReply', 'QBluetoothTransferRequest',
'QBluetoothUuid', 'QBoxLayout', 'QBrush', 'QBuffer', 'QButtonGroup',
'QByteArray', 'QByteArrayList', 'QByteArrayMatcher', 'QCache',
'QCalendarWidget', 'QCamera', 'QCameraCaptureBufferFormatControl',
'QCameraCaptureDestinationControl', 'QCameraControl',
'QCameraExposure', 'QCameraExposureControl', 'QCameraFeedbackControl',
'QCameraFlashControl', 'QCameraFocus', 'QCameraFocusControl',
'QCameraFocusZone', 'QCameraImageCapture',
'QCameraImageCaptureControl', 'QCameraImageProcessing',
'QCameraImageProcessingControl', 'QCameraInfo', 'QCameraInfoControl',
'QCameraLocksControl', 'QCameraViewfinder',
'QCameraViewfinderSettingsControl', 'QCameraZoomControl', 'QChar',
'QCheckBox', 'QChildEvent', 'QClipboard', 'QCloseEvent',
'QCocoaNativeContext', 'QCollator', 'QCollatorSortKey', 'QColor',
'QColorDialog', 'QColormap', 'QColumnView', 'QComboBox',
'QCommandLineOption', 'QCommandLineParser', 'QCommandLinkButton',
'QCommonStyle', 'QCompass', 'QCompassFilter', 'QCompassReading',
'QCompleter', 'QConicalGradient', 'QContextMenuEvent',
'QContiguousCache', 'QCoreApplication', 'QCryptographicHash',
'QCursor', 'QDBusAbstractAdaptor', 'QDBusAbstractInterface',
'QDBusArgument', 'QDBusConnection', 'QDBusConnectionInterface',
'QDBusContext', 'QDBusError', 'QDBusInterface', 'QDBusMessage',
'QDBusObjectPath', 'QDBusPendingCall', 'QDBusPendingCallWatcher',
'QDBusPendingReply', 'QDBusReply', 'QDBusServer',
'QDBusServiceWatcher', 'QDBusSignature', 'QDBusUnixFileDescriptor',
'QDBusVariant', 'QDBusVirtualObject', 'QDataStream',
'QDataWidgetMapper', 'QDate', 'QDateEdit', 'QDateTime',
'QDateTimeEdit', 'QDebug', 'QDebugStateSaver',
'QDesignerActionEditorInterface', 'QDesignerContainerExtension',
'QDesignerCustomWidgetCollectionInterface',
'QDesignerCustomWidgetInterface',
'QDesignerDynamicPropertySheetExtension',
'QDesignerFormEditorInterface', 'QDesignerFormWindowCursorInterface',
'QDesignerFormWindowInterface', 'QDesignerFormWindowManagerInterface',
'QDesignerMemberSheetExtension', 'QDesignerObjectInspectorInterface',
'QDesignerPropertyEditorInterface', 'QDesignerPropertySheetExtension',
'QDesignerTaskMenuExtension', 'QDesignerWidgetBoxInterface',
'QDesktopServices', 'QDesktopWidget', 'QDial', 'QDialog',
'QDialogButtonBox', 'QDir', 'QDirIterator', 'QDirModel',
'QDistanceFilter', 'QDistanceReading', 'QDistanceSensor',
'QDnsDomainNameRecord', 'QDnsHostAddressRecord', 'QDnsLookup',
'QDnsMailExchangeRecord', 'QDnsServiceRecord', 'QDnsTextRecord',
'QDockWidget', 'QDomAttr', 'QDomCDATASection', 'QDomCharacterData',
'QDomComment', 'QDomDocument', 'QDomDocumentFragment',
'QDomDocumentType', 'QDomElement', 'QDomEntity', 'QDomEntityReference',
'QDomImplementation', 'QDomNamedNodeMap', 'QDomNode', 'QDomNodeList',
'QDomNotation', 'QDomProcessingInstruction', 'QDomText',
'QDoubleSpinBox', 'QDoubleValidator', 'QDrag', 'QDragEnterEvent',
'QDragLeaveEvent', 'QDragMoveEvent', 'QDropEvent',
'QDynamicPropertyChangeEvent', 'EnginioClient',
'EnginioClientConnection', 'EnginioIdentity', 'EnginioModel',
'EnginioOAuth2Authentication', 'EnginioReply', 'QEGLNativeContext',
'QEasingCurve', 'QEglFSFunctions', 'QElapsedTimer',
'QEnableSharedFromThis', 'QEnterEvent', 'QErrorMessage', 'QEvent',
'QEventLoop', 'QEventLoopLocker', 'QEventTransition', 'QException',
'QExplicitlySharedDataPointer', 'QExposeEvent', 'QExtensionFactory',
'QExtensionManager', 'QFile', 'QFileDevice', 'QFileDialog',
'QFileIconProvider', 'QFileInfo', 'QFileOpenEvent', 'QFileSelector',
'QFileSystemModel', 'QFileSystemWatcher', 'QFinalState', 'QFlag',
'QFlags', 'QFocusEvent', 'QFocusFrame', 'QFont', 'QFontComboBox',
'QFontDatabase', 'QFontDialog', 'QFontInfo', 'QFontMetrics',
'QFontMetricsF', 'QFormBuilder', 'QFormLayout', 'QFrame', 'QFuture',
'QFutureIterator', 'QFutureSynchronizer', 'QFutureWatcher',
'QGLBuffer', 'QGLColormap', 'QGLContext', 'QGLFormat',
'QGLFramebufferObject', 'QGLFramebufferObjectFormat', 'QGLFunctions',
'QGLPixelBuffer', 'QGLShader', 'QGLShaderProgram', 'QGLWidget',
'QGLXNativeContext', 'QGenericArgument', 'QGenericMatrix',
'QGenericPlugin', 'QGenericPluginFactory', 'QGenericReturnArgument',
'QGeoAddress', 'QGeoAreaMonitorInfo', 'QGeoAreaMonitorSource',
'QGeoCircle', 'QGeoCodeReply', 'QGeoCodingManager',
'QGeoCodingManagerEngine', 'QGeoCoordinate', 'QGeoLocation',
'QGeoManeuver', 'QGeoPositionInfo', 'QGeoPositionInfoSource',
'QGeoPositionInfoSourceFactory', 'QGeoRectangle', 'QGeoRoute',
'QGeoRouteReply', 'QGeoRouteRequest', 'QGeoRouteSegment',
'QGeoRoutingManager', 'QGeoRoutingManagerEngine',
'QGeoSatelliteInfo', 'QGeoSatelliteInfoSource',
'QGeoServiceProvider', 'QGeoServiceProviderFactory', 'QGeoShape',
'QGesture', 'QGestureEvent', 'QGestureRecognizer', 'QGlobalStatic',
'QGlyphRun', 'QGradient', 'QGraphicsAnchor', 'QGraphicsAnchorLayout',
'QGraphicsBlurEffect', 'QGraphicsColorizeEffect',
'QGraphicsDropShadowEffect', 'QGraphicsEffect',
'QGraphicsEllipseItem', 'QGraphicsGridLayout', 'QGraphicsItem',
'QGraphicsItemAnimation', 'QGraphicsItemGroup', 'QGraphicsLayout',
'QGraphicsLayoutItem', 'QGraphicsLineItem', 'QGraphicsLinearLayout',
'QGraphicsObject', 'QGraphicsOpacityEffect', 'QGraphicsPathItem',
'QGraphicsPixmapItem', 'QGraphicsPolygonItem',
'QGraphicsProxyWidget', 'QGraphicsRectItem', 'QGraphicsRotation',
'QGraphicsScale', 'QGraphicsScene', 'QGraphicsSceneContextMenuEvent',
'QGraphicsSceneDragDropEvent', 'QGraphicsSceneEvent',
'QGraphicsSceneHelpEvent', 'QGraphicsSceneHoverEvent',
'QGraphicsSceneMouseEvent', 'QGraphicsSceneMoveEvent',
'QGraphicsSceneResizeEvent', 'QGraphicsSceneWheelEvent',
'QGraphicsSimpleTextItem', 'QGraphicsSvgItem', 'QGraphicsTextItem',
'QGraphicsTransform', 'QGraphicsVideoItem', 'QGraphicsView',
'QGraphicsWebView', 'QGraphicsWidget', 'QGridLayout', 'QGroupBox',
'QGuiApplication', 'QGyroscope', 'QGyroscopeFilter',
'QGyroscopeReading', 'QHBoxLayout', 'QHash', 'QHashIterator',
'QHeaderView', 'QHelpContentItem', 'QHelpContentModel',
'QHelpContentWidget', 'QHelpEngine', 'QHelpEngineCore', 'QHelpEvent',
'QHelpIndexModel', 'QHelpIndexWidget', 'QHelpSearchEngine',
'QHelpSearchQuery', 'QHelpSearchQueryWidget',
'QHelpSearchResultWidget', 'QHideEvent', 'QHistoryState',
'QHolsterFilter', 'QHolsterReading', 'QHolsterSensor',
'QHostAddress', 'QHostInfo', 'QHoverEvent', 'QHttpMultiPart',
'QHttpPart', 'QIODevice', 'QIRProximityFilter', 'QIRProximityReading',
'QIRProximitySensor', 'QIcon', 'QIconDragEvent', 'QIconEngine',
'QIconEnginePlugin', 'QIdentityProxyModel', 'QImage',
'QImageEncoderControl', 'QImageEncoderSettings', 'QImageIOHandler',
'QImageIOPlugin', 'QImageReader', 'QImageWriter', 'QInputDialog',
'QInputEvent', 'QInputMethod', 'QInputMethodEvent',
'QInputMethodQueryEvent', 'QIntValidator', 'QItemDelegate',
'QItemEditorCreator', 'QItemEditorCreatorBase', 'QItemEditorFactory',
'QItemSelection', 'QItemSelectionModel', 'QItemSelectionRange',
'QJSEngine', 'QJSValue', 'QJSValueIterator', 'QJsonArray',
'QJsonDocument', 'QJsonObject', 'QJsonParseError', 'QJsonValue',
'QKeyEvent', 'QKeyEventTransition', 'QKeySequence', 'QKeySequenceEdit',
'QLCDNumber', 'QLabel', 'QLatin1Char', 'QLatin1String', 'QLayout',
'QLayoutItem', 'QLibrary', 'QLibraryInfo', 'QLightFilter',
'QLightReading', 'QLightSensor', 'QLine', 'QLineEdit', 'QLineF',
'QLinearGradient', 'QLinkedList', 'QLinkedListIterator', 'QList',
'QListIterator', 'QListView', 'QListWidget', 'QListWidgetItem',
'QLocalServer', 'QLocalSocket', 'QLocale', 'QLockFile',
'QLoggingCategory', 'QLowEnergyCharacteristic',
'QLowEnergyController', 'QLowEnergyDescriptor', 'QLowEnergyService',
'QMacCocoaViewContainer', 'QMacNativeWidget', 'QMacPasteboardMime',
'QMacToolBar', 'QMacToolBarItem', 'QMagnetometer',
'QMagnetometerFilter', 'QMagnetometerReading', 'QMainWindow', 'QMap',
'QMapIterator', 'QMargins', 'QMarginsF', 'QMaskGenerator', 'QMatrix',
'QMatrix4x4', 'QMdiArea', 'QMdiSubWindow', 'QMediaAudioProbeControl',
'QMediaAvailabilityControl', 'QMediaBindableInterface',
'QMediaContainerControl', 'QMediaContent', 'QMediaControl',
'QMediaGaplessPlaybackControl', 'QMediaNetworkAccessControl',
'QMediaObject', 'QMediaPlayer', 'QMediaPlayerControl',
'QMediaPlaylist', 'QMediaRecorder', 'QMediaRecorderControl',
'QMediaResource', 'QMediaService', 'QMediaServiceCameraInfoInterface',
'QMediaServiceFeaturesInterface', 'QMediaServiceProviderPlugin',
'QMediaServiceSupportedDevicesInterface',
'QMediaServiceSupportedFormatsInterface', 'QMediaStreamsControl',
'QMediaTimeInterval', 'QMediaTimeRange', 'QMediaVideoProbeControl',
'QMenu', 'QMenuBar', 'QMessageAuthenticationCode', 'QMessageBox',
'QMessageLogContext', 'QMessageLogger', 'QMetaClassInfo',
'QMetaDataReaderControl', 'QMetaDataWriterControl', 'QMetaEnum',
'QMetaMethod', 'QMetaObject', 'QMetaProperty', 'QMetaType',
'QMimeData', 'QMimeDatabase', 'QMimeType', 'QModelIndex',
'QMouseEvent', 'QMouseEventTransition', 'QMoveEvent', 'QMovie',
'QMultiHash', 'QMultiMap', 'QMutableHashIterator',
'QMutableLinkedListIterator', 'QMutableListIterator',
'QMutableMapIterator', 'QMutableSetIterator',
'QMutableVectorIterator', 'QMutex', 'QMutexLocker',
'QNativeGestureEvent', 'QNdefFilter', 'QNdefMessage',
'QNdefNfcSmartPosterRecord', 'QNdefNfcTextRecord',
'QNdefNfcUriRecord', 'QNdefRecord', 'QNearFieldManager',
'QNearFieldShareManager', 'QNearFieldShareTarget', 'QNearFieldTarget',
'QNetworkAccessManager', 'QNetworkAddressEntry',
'QNetworkCacheMetaData', 'QNetworkConfiguration',
'QNetworkConfigurationManager', 'QNetworkCookie', 'QNetworkCookieJar',
'QNetworkDiskCache', 'QNetworkInterface', 'QNetworkProxy',
'QNetworkProxyFactory', 'QNetworkProxyQuery', 'QNetworkReply',
'QNetworkRequest', 'QNetworkSession', 'QNmeaPositionInfoSource',
'QObject', 'QObjectCleanupHandler', 'QOffscreenSurface',
'QOpenGLBuffer', 'QOpenGLContext', 'QOpenGLContextGroup',
'QOpenGLDebugLogger', 'QOpenGLDebugMessage',
'QOpenGLFramebufferObject', 'QOpenGLFramebufferObjectFormat',
'QOpenGLFunctions', 'QOpenGLFunctions_1_0', 'QOpenGLFunctions_1_1',
'QOpenGLFunctions_1_2', 'QOpenGLFunctions_1_3', 'QOpenGLFunctions_1_4',
'QOpenGLFunctions_1_5', 'QOpenGLFunctions_2_0', 'QOpenGLFunctions_2_1',
'QOpenGLFunctions_3_0', 'QOpenGLFunctions_3_1',
'QOpenGLFunctions_3_2_Compatibility', 'QOpenGLFunctions_3_2_Core',
'QOpenGLFunctions_3_3_Compatibility', 'QOpenGLFunctions_3_3_Core',
'QOpenGLFunctions_4_0_Compatibility', 'QOpenGLFunctions_4_0_Core',
'QOpenGLFunctions_4_1_Compatibility', 'QOpenGLFunctions_4_1_Core',
'QOpenGLFunctions_4_2_Compatibility', 'QOpenGLFunctions_4_2_Core',
'QOpenGLFunctions_4_3_Compatibility', 'QOpenGLFunctions_4_3_Core',
'QOpenGLFunctions_ES2', 'QOpenGLPaintDevice',
'QOpenGLPixelTransferOptions', 'QOpenGLShader',
'QOpenGLShaderProgram', 'QOpenGLTexture', 'QOpenGLTimeMonitor',
'QOpenGLTimerQuery', 'QOpenGLVersionProfile',
'QOpenGLVertexArrayObject', 'QOpenGLWidget', 'QOpenGLWindow',
'QOrientationFilter', 'QOrientationReading', 'QOrientationSensor',
'QPageLayout', 'QPageSetupDialog', 'QPageSize', 'QPagedPaintDevice',
'QPaintDevice', 'QPaintDeviceWindow', 'QPaintEngine',
'QPaintEngineState', 'QPaintEvent', 'QPainter', 'QPainterPath',
'QPainterPathStroker', 'QPair', 'QPalette', 'QPanGesture',
'QParallelAnimationGroup', 'QPauseAnimation', 'QPdfWriter', 'QPen',
'QPersistentModelIndex', 'QPicture', 'QPictureFormatPlugin',
'QPictureIO', 'QPinchGesture', 'QPixelFormat', 'QPixmap',
'QPixmapCache', 'QPlace', 'QPlaceAttribute', 'QPlaceCategory',
'QPlaceContactDetail', 'QPlaceContent', 'QPlaceContentReply',
'QPlaceContentRequest', 'QPlaceDetailsReply', 'QPlaceEditorial',
'QPlaceIcon', 'QPlaceIdReply', 'QPlaceImage', 'QPlaceManager',
'QPlaceManagerEngine', 'QPlaceMatchReply', 'QPlaceMatchRequest',
'QPlaceProposedSearchResult', 'QPlaceRatings', 'QPlaceReply',
'QPlaceResult', 'QPlaceReview', 'QPlaceSearchReply',
'QPlaceSearchRequest', 'QPlaceSearchResult',
'QPlaceSearchSuggestionReply', 'QPlaceSupplier', 'QPlaceUser',
'QPlainTextDocumentLayout', 'QPlainTextEdit',
'QPlatformSystemTrayIcon', 'QPluginLoader', 'QPoint', 'QPointF',
'QPointer', 'QPolygon', 'QPolygonF', 'QPressureFilter',
'QPressureReading', 'QPressureSensor', 'QPrintDialog', 'QPrintEngine',
'QPrintPreviewDialog', 'QPrintPreviewWidget', 'QPrinter',
'QPrinterInfo', 'QProcess', 'QProcessEnvironment', 'QProgressBar',
'QProgressDialog', 'QPropertyAnimation', 'QProximityFilter',
'QProximityReading', 'QProximitySensor', 'QProxyStyle',
'QPushButton', 'QQmlAbstractProfilerAdapter',
'QQmlAbstractUrlInterceptor', 'QQmlApplicationEngine',
'QQmlComponent', 'QQmlContext', 'QQmlEngine', 'QQmlError',
'QQmlExpression', 'QQmlExtensionPlugin', 'QQmlFileSelector',
'QQmlImageProviderBase', 'QQmlIncubationController', 'QQmlIncubator',
'QQmlListProperty', 'QQmlListReference', 'QQmlNdefRecord',
'QQmlNetworkAccessManagerFactory', 'QQmlParserStatus', 'QQmlProperty',
'QQmlPropertyMap', 'QQmlPropertyValueSource', 'QQmlScriptString',
'QQuaternion', 'QQueue', 'QQuickFramebufferObject', 'QQuickImageProvider',
'QQuickItem', 'QQuickItemGrabResult', 'QQuickPaintedItem',
'QQuickRenderControl', 'QQuickTextDocument', 'QQuickTextureFactory',
'QQuickView', 'QQuickWidget', 'QQuickWindow', 'QTouchEventSequence',
'Qoutputrange', 'QRadialGradient', 'QRadioButton', 'QRadioData',
'QRadioDataControl', 'QRadioTuner', 'QRadioTunerControl',
'QRasterPaintEngine', 'QRasterWindow', 'QRawFont', 'QReadLocker',
'QReadWriteLock', 'QRect', 'QRectF', 'QRegExp', 'QRegExpValidator',
'QRegion', 'QRegularExpression', 'QRegularExpressionMatch',
'QRegularExpressionMatchIterator', 'QRegularExpressionValidator',
'QResizeEvent', 'QResource', 'QRotationFilter', 'QRotationReading',
'QRotationSensor', 'QRubberBand', 'QRunnable', 'QSGAbstractRenderer',
'QSGBasicGeometryNode', 'QSGClipNode', 'QSGDynamicTexture',
'QSGEngine', 'QSGFlatColorMaterial', 'QSGGeometry', 'QSGGeometryNode',
'QSGMaterial', 'QSGMaterialShader', 'QSGMaterialType', 'QSGNode',
'QSGOpacityNode', 'QSGOpaqueTextureMaterial', 'QSGSimpleMaterial',
'QSGSimpleMaterialShader', 'QSGSimpleRectNode',
'QSGSimpleTextureNode', 'QSGTexture', 'QSGTextureMaterial',
'QSGTextureProvider', 'QSGTransformNode', 'QSGVertexColorMaterial',
'QSaveFile', 'QScopedArrayPointer', 'QScopedPointer',
'QScopedValueRollback', 'QScreen', 'QScriptClass',
'QScriptClassPropertyIterator', 'QScriptContext',
'QScriptContextInfo', 'QScriptEngine', 'QScriptEngineAgent',
'QScriptEngineDebugger', 'QScriptExtensionPlugin', 'QScriptProgram',
'QScriptString', 'QScriptSyntaxCheckResult', 'QScriptValue',
'QScriptValueIterator', 'QScriptable', 'QScrollArea', 'QScrollBar',
'QScrollEvent', 'QScrollPrepareEvent', 'QScroller',
'QScrollerProperties', 'QSemaphore', 'QSensor', 'QSensorBackend',
'QSensorBackendFactory', 'QSensorChangesInterface', 'QSensorFilter',
'QSensorGesture', 'QSensorGestureManager',
'QSensorGesturePluginInterface', 'QSensorGestureRecognizer',
'QSensorManager', 'QSensorPluginInterface', 'QSensorReading',
'QSequentialAnimationGroup', 'QSequentialIterable', 'QSerialPort',
'QSerialPortInfo', 'QSessionManager', 'QSet', 'QSetIterator',
'QSettings', 'QSharedData', 'QSharedDataPointer', 'QSharedMemory',
'QSharedPointer', 'QShortcut', 'QShortcutEvent', 'QShowEvent',
'QSignalBlocker', 'QSignalMapper', 'QSignalSpy', 'QSignalTransition',
'QSimpleXmlNodeModel', 'QSize', 'QSizeF', 'QSizeGrip', 'QSizePolicy',
'QSlider', 'QSocketNotifier', 'QSortFilterProxyModel', 'QSound',
'QSoundEffect', 'QSourceLocation', 'QSpacerItem', 'QSpinBox',
'QSplashScreen', 'QSplitter', 'QSplitterHandle', 'QSqlDatabase',
'QSqlDriver', 'QSqlDriverCreator', 'QSqlDriverCreatorBase',
'QSqlDriverPlugin', 'QSqlError', 'QSqlField', 'QSqlIndex',
'QSqlQuery', 'QSqlQueryModel', 'QSqlRecord', 'QSqlRelation',
'QSqlRelationalDelegate', 'QSqlRelationalTableModel', 'QSqlResult',
'QSqlTableModel', 'QSslCertificate', 'QSslCertificateExtension',
'QSslCipher', 'QSslConfiguration', 'QSslError', 'QSslKey',
'QSslSocket', 'QStack', 'QStackedLayout', 'QStackedWidget',
'QStandardItem', 'QStandardItemEditorCreator', 'QStandardItemModel',
'QStandardPaths', 'QState', 'QStateMachine', 'QStaticPlugin',
'QStaticText', 'QStatusBar', 'QStatusTipEvent', 'QStorageInfo',
'QString', 'QStringList', 'QStringListModel', 'QStringMatcher',
'QStringRef', 'QStyle', 'QStyleFactory', 'QStyleHintReturn',
'QStyleHintReturnMask', 'QStyleHintReturnVariant', 'QStyleHints',
'QStyleOption', 'QStyleOptionButton', 'QStyleOptionComboBox',
'QStyleOptionComplex', 'QStyleOptionDockWidget',
'QStyleOptionFocusRect', 'QStyleOptionFrame',
'QStyleOptionGraphicsItem', 'QStyleOptionGroupBox',
'QStyleOptionHeader', 'QStyleOptionMenuItem',
'QStyleOptionProgressBar', 'QStyleOptionRubberBand',
'QStyleOptionSizeGrip', 'QStyleOptionSlider',
'QStyleOptionSpinBox', 'QStyleOptionTab',
'QStyleOptionTabBarBase', 'QStyleOptionTabWidgetFrame',
'QStyleOptionTitleBar', 'QStyleOptionToolBar',
'QStyleOptionToolBox', 'QStyleOptionToolButton',
'QStyleOptionViewItem', 'QStylePainter', 'QStylePlugin',
'QStyledItemDelegate', 'QSupportedWritingSystems', 'QSurface',
'QSurfaceFormat', 'QSvgGenerator', 'QSvgRenderer', 'QSvgWidget',
'QSwipeGesture', 'QSyntaxHighlighter', 'QSysInfo', 'QSystemSemaphore',
'QSystemTrayIcon', 'QTabBar', 'QTabWidget', 'QTableView',
'QTableWidget', 'QTableWidgetItem', 'QTableWidgetSelectionRange',
'QTabletEvent', 'QTapAndHoldGesture', 'QTapFilter', 'QTapGesture',
'QTapReading', 'QTapSensor', 'QTcpServer', 'QTcpSocket',
'QTemporaryDir', 'QTemporaryFile', 'QTestEventList', 'QTextBlock',
'QTextBlockFormat', 'QTextBlockGroup', 'QTextBlockUserData',
'QTextBoundaryFinder', 'QTextBrowser', 'QTextCharFormat',
'QTextCodec', 'QTextCursor', 'QTextDecoder', 'QTextDocument',
'QTextDocumentFragment', 'QTextDocumentWriter', 'QTextEdit',
'QTextEncoder', 'QTextFormat', 'QTextFragment', 'QTextFrame',
'QTextFrameFormat', 'QTextImageFormat', 'QTextInlineObject',
'QTextItem', 'QTextLayout', 'QTextLength', 'QTextLine', 'QTextList',
'QTextListFormat', 'QTextObject', 'QTextObjectInterface',
'QTextOption', 'QTextStream', 'QTextTable', 'QTextTableCell',
'QTextTableCellFormat', 'QTextTableFormat', 'QThread', 'QThreadPool',
'QThreadStorage', 'QTileRules', 'QTiltFilter', 'QTiltReading',
'QTiltSensor', 'QTime', 'QTimeEdit', 'QTimeLine', 'QTimeZone',
'QTimer', 'QTimerEvent', 'QToolBar', 'QToolBox', 'QToolButton',
'QToolTip', 'QTouchDevice', 'QTouchEvent', 'QTransform',
'QTranslator', 'QTreeView', 'QTreeWidget', 'QTreeWidgetItem',
'QTreeWidgetItemIterator', 'QUdpSocket', 'QUiLoader', 'QUndoCommand',
'QUndoGroup', 'QUndoStack', 'QUndoView', 'QUnhandledException',
'QUrl', 'QUrlQuery', 'QUuid', 'QVBoxLayout', 'QValidator',
'QVarLengthArray', 'QVariant', 'QVariantAnimation', 'QVector',
'QVector2D', 'QVector3D', 'QVector4D', 'QVectorIterator',
'QVideoDeviceSelectorControl', 'QVideoEncoderSettings',
'QVideoEncoderSettingsControl', 'QVideoFrame', 'QVideoProbe',
'QVideoRendererControl', 'QVideoSurfaceFormat', 'QVideoWidget',
'QVideoWidgetControl', 'QVideoWindowControl', 'QWGLNativeContext',
'QWaitCondition', 'QWeakPointer', 'QWebChannel',
'QWebChannelAbstractTransport', 'QWebDatabase', 'QWebElement',
'QWebElementCollection', 'QWebEngineHistory', 'QWebEngineHistoryItem',
'QWebEnginePage', 'QWebEngineSettings', 'QWebEngineView', 'QWebFrame',
'QWebHistory', 'QWebHistoryInterface', 'QWebHistoryItem',
'QWebHitTestResult', 'QWebInspector', 'QWebPage', 'QWebPluginFactory',
'QWebSecurityOrigin', 'QWebSettings', 'QWebSocket',
'QWebSocketCorsAuthenticator', 'QWebSocketServer', 'QWebView',
'QWhatsThis', 'QWhatsThisClickedEvent', 'QWheelEvent', 'QWidget',
'QWidgetAction', 'QWidgetItem', 'QWinEventNotifier', 'QWinJumpList',
'QWinJumpListCategory', 'QWinJumpListItem', 'QWinMime',
'QWinTaskbarButton', 'QWinTaskbarProgress', 'QWinThumbnailToolBar',
'QWinThumbnailToolButton', 'QWindow', 'QWindowStateChangeEvent',
'QWizard', 'QWizardPage', 'QWriteLocker', 'QX11Info',
'QXcbWindowFunctions', 'QXmlAttributes', 'QXmlContentHandler',
'QXmlDTDHandler', 'QXmlDeclHandler', 'QXmlDefaultHandler',
'QXmlEntityResolver','QXmlErrorHandler', 'QXmlFormatter',
'QXmlInputSource', 'QXmlItem', 'QXmlLexicalHandler', 'QXmlLocator',
'QXmlName', 'QXmlNamePool', 'QXmlNamespaceSupport',
'QXmlNodeModelIndex', 'QXmlParseException', 'QXmlQuery',
'QXmlReader', 'QXmlResultItems', 'QXmlSchema', 'QXmlSchemaValidator',
'QXmlSerializer', 'QXmlSimpleReader', 'QXmlStreamAttribute',
'QXmlStreamAttributes', 'QXmlStreamEntityDeclaration',
'QXmlStreamEntityResolver', 'QXmlStreamNamespaceDeclaration',
'QXmlStreamNotationDeclaration', 'QXmlStreamReader',
'QXmlStreamWriter'
)
),
'SYMBOLS' => array(

View File

@ -8,7 +8,7 @@
* - Jack Lloyd (lloyd@randombit.net)
* - Benny Baumann (BenBE@geshi.org)
* Copyright: (c) 2004 Dennis Bayer, Nigel McNie, 2012 Benny Baumann (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/09/27
*
* C++ language file for GeSHi.

View File

@ -7,13 +7,15 @@
* - M. Uli Kusterer (witness.of.teachtext@gmx.net)
* - Jack Lloyd (lloyd@randombit.net)
* Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/09/27
*
* C++ language file for GeSHi.
*
* CHANGES
* -------
* 2013/11/06
* - Added nullptr from c++11 & others
* 2008/05/23 (1.0.7.22)
* - Added description of extra language features (SF#1970248)
* 2004/XX/XX (1.0.2)
@ -101,10 +103,13 @@ $language_data = array (
'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',
'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',
'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',
'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class'
'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class', 'nullptr',
'decltype', 'override', 'final', 'noexcept', 'alignas', 'alignof', 'noreturn',
'constexpr', 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'thread_local',
'static_assert', 'compl', 'or', 'or_eq', 'xor', 'xor_eq', 'not', 'not_eq'
),
3 => array(
'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',
'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this', 'export',
'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',
'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',
'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',
@ -126,11 +131,12 @@ $language_data = array (
'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'
),
4 => array(
'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',
'register', 'short', 'shortint', 'signed', 'static', 'struct',
'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',
'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',
'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
'auto', 'bool', 'char', 'char16_t', 'char32_t', 'const', 'double', 'float',
'int', 'long', 'longint','register', 'short', 'shortint', 'signed',
'static', 'struct', 'typedef', 'union', 'unsigned', 'void', 'volatile',
'extern', 'jmp_buf','signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t',
'FILE', 'fpos_t', 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',
'mutable',
'int8', 'int16', 'int32', 'int64',
'uint8', 'uint16', 'uint32', 'uint64',

View File

@ -5,13 +5,15 @@
* Author: Alan Juden (alan@judenware.org)
* Revised by: Michael Mol (mikemol@gmail.com)
* Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/06/04
*
* C# language file for GeSHi.
*
* CHANGES
* -------
* 2015/04/14
* - Added C# 5.0 and 6.0 missing keywords and #pragma directive
* 2012/06/18 (1.0.8.11)
* - Added missing keywords (Christian Stelzmann)
* 2009/04/03 (1.0.8.6)
@ -62,7 +64,8 @@ $language_data = array (
'ESCAPE_CHAR' => '\\',
'KEYWORDS' => array(
1 => array(
'abstract', 'add', 'as', 'base', 'break', 'by', 'case', 'catch', 'const', 'continue',
'abstract', 'add', 'as', 'async', 'await', 'base',
'break', 'by', 'case', 'catch', 'const', 'continue',
'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',
'finally', 'fixed', 'for', 'foreach', 'from', 'get', 'goto', 'group', 'if',
'implicit', 'in', 'into', 'internal', 'join', 'lock', 'namespace', 'null',
@ -74,10 +77,10 @@ $language_data = array (
),
2 => array(
'#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',
'#line', '#region', '#undef', '#warning'
'#line', '#pragma', '#region', '#undef', '#warning'
),
3 => array(
'checked', 'is', 'new', 'sizeof', 'typeof', 'unchecked'
'checked', 'is', 'new', 'nameof', 'sizeof', 'typeof', 'unchecked'
),
4 => array(
'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
* ----------
* Author: Benny Baumann (benbe@geshi.org)
* Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/12/21
*
* Cuesheet language file for GeSHi.

View File

@ -6,7 +6,7 @@
* Contributors:
* - Jimmy Cao
* Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2005/04/22
*
* D language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Edward Hart (edward.dan.hart@gmail.com)
* Copyright: (c) 2013 Edward Hart
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2013/10/25
*
* Dart language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Petr Hendl (petr@hendl.cz)
* Copyright: (c) 2011 Petr Hendl http://hendl.cz/geshi/
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2011/02/17
*
* DCL language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Benny Baumann (BenBE@omorphia.de)
* Copyright: (c) 2007-2014 Benny Baumann (http://geshi.org/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2012/04/12
*
* DCPU/16 Assembly language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Stelio Passaris (GeSHi@stelio.net)
* Copyright: (c) 2009 Stelio Passaris (http://stelio.net/stiki/GeSHi)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2009/01/20
*
* DCS language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: J<EFBFBD>rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de)
* Copyright: (c) 2004 J<EFBFBD>rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/07/26
*
* Delphi (Object Pascal) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Conny Brunnkvist (conny@fuchsia.se), W. Tasin (tasin@fhm.edu)
* Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2004/12/29
*
* Diff-output language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Gabriel Lorenzo (ermakina@gmail.com)
* Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2005/06/19
*
* DIV language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Alessandro Staltari (staltari@geocities.com)
* Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2005/07/05
*
* DOS language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Adrien Friggeri (adrien@friggeri.net)
* Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2007/05/30
*
* dot language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Kevin Reid (kpreid@switchb.org)
* Copyright: (c) 2010 Kevin Reid (http://switchb.org/kpreid/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/04/16
*
* E language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------------
* Author: Michel Mariani (http://www.tonton-pixel.com/site/)
* Copyright: (c) 2010 Michel Mariani (http://www.tonton-pixel.com/site/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/01/08
*
* ECMAScript language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ----------
* Author: Zoran Simic (zsimic@axarosenberg.com)
* Copyright: (c) 2005 Zoran Simic
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2005/06/30
*
* Eiffel language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------
* Author: Benny Baumann (BenBE@geshi.org)
* Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2008/10/19
*
* Email (mbox \ eml \ RFC format) language file for GeSHi.

View File

@ -4,7 +4,7 @@
* --------
* Author: Thorsten Muehlfelder (muehlfelder@enertex.de)
* Copyright: (c) 2010 Enertex Bayern GmbH
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/08/26
*
* Enerscript language file for GeSHi.

View File

@ -7,7 +7,7 @@
* - Uwe Dauernheim (uwe@dauernheim.net)
* - Dan Forest-Barbier (dan@twisted.in)
* Copyright: (c) 2008 Uwe Dauernheim (http://www.kreisquadratur.de/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2008-09-27
*
* Erlang language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: Nicholas Koceja (nerketur@hotmail.com)
* Copyright: (c) 2010 Nicholas Koceja
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 11/24/2010
*
* Euphoria language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -----------
* Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)
* Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2012/09/01
*
* Easytrieve language file for GeSHi.

View File

@ -4,7 +4,7 @@
* -------
* Author: Juro Bystricky (juro@f1compiler.com)
* Copyright: K2 Software Corp.
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/07/06
*
* Formula One language file for GeSHi.

View File

@ -4,7 +4,7 @@
* ---------------------------------
* Author: billykater (billykater+geshi@gmail.com)
* Copyright: (c) 2010 billykater (http://falconpl.org/)
* Release Version: 1.0.8.12
* Release Version: 1.0.9.0
* Date Started: 2010/06/07
*
* Falcon language file for GeSHi.

Some files were not shown because too many files have changed in this diff Show More