diff options
Diffstat (limited to 'inc')
313 files changed, 12861 insertions, 3397 deletions
diff --git a/inc/Sitemapper.php b/inc/Sitemapper.php index bbea73b52..bf89a311c 100644 --- a/inc/Sitemapper.php +++ b/inc/Sitemapper.php @@ -63,11 +63,11 @@ class Sitemapper { $event = new Doku_Event('SITEMAP_GENERATE', $eventData); if ($event->advise_before(true)) { //save the new sitemap - $result = io_saveFile($sitemap, Sitemapper::getXML($items)); + $event->result = io_saveFile($sitemap, Sitemapper::getXML($items)); } $event->advise_after(); - return $result; + return $event->result; } /** @@ -82,6 +82,7 @@ class Sitemapper { echo '<?xml version="1.0" encoding="UTF-8"?>'.NL; echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'.NL; foreach ($items as $item) { + /** @var SitemapItem $item */ echo $item->toXML(); } echo '</urlset>'.NL; @@ -93,14 +94,14 @@ class Sitemapper { /** * Helper function for getting the path to the sitemap file. * - * @return The path to the sitemap file. + * @return string The path to the sitemap file. * @author Michael Hamann */ public static function getFilePath() { global $conf; $sitemap = $conf['cachedir'].'/sitemap.xml'; - if($conf['compression'] === 'bz2' || $conf['compression'] === 'gz'){ + if (self::sitemapIsCompressed()) { $sitemap .= '.gz'; } @@ -108,6 +109,16 @@ class Sitemapper { } /** + * Helper function for checking if the sitemap is compressed + * + * @return bool If the sitemap file is compressed + */ + public static function sitemapIsCompressed() { + global $conf; + return $conf['compression'] === 'bz2' || $conf['compression'] === 'gz'; + } + + /** * Pings search engines with the sitemap url. Plugins can add or remove * urls to ping using the SITEMAP_PING event. * @@ -175,7 +186,7 @@ class SitemapItem { * @param $id string A wikipage id. * @param $changefreq string How frequently the item is likely to change. Valid values: always, hourly, daily, weekly, monthly, yearly, never. * @param $priority float|string The priority of the item relative to other URLs on your site. Valid values range from 0.0 to 1.0. - * @return The sitemap item. + * @return SitemapItem The sitemap item. */ public static function createFromID($id, $changefreq = null, $priority = null) { $id = trim($id); @@ -187,7 +198,7 @@ class SitemapItem { /** * Get the XML representation of the sitemap item. * - * @return The XML representation. + * @return string The XML representation. */ public function toXML() { $result = ' <url>'.NL diff --git a/inc/actions.php b/inc/actions.php index 62b0e1800..f65b47451 100644 --- a/inc/actions.php +++ b/inc/actions.php @@ -64,7 +64,7 @@ function act_dispatch(){ //sitemap if ($ACT == 'sitemap'){ - $ACT = act_sitemap($ACT); + act_sitemap($ACT); } //register @@ -137,6 +137,7 @@ function act_dispatch(){ if (in_array($page, $pluginlist)) { // attempt to load the plugin if ($plugin =& plugin_load('admin',$page) !== null){ + /** @var DokuWiki_Admin_Plugin $plugin */ if($plugin->forAdminOnly() && !$INFO['isadmin']){ // a manager tried to load a plugin that's for admins only $INPUT->remove('page'); @@ -177,6 +178,11 @@ function act_dispatch(){ // in function tpl_content() } +/** + * Send the given headers using header() + * + * @param array $headers The headers that shall be sent + */ function act_sendheaders($headers) { foreach ($headers as $hdr) header($hdr); } @@ -437,6 +443,11 @@ function act_redirect($id,$preact){ trigger_event('ACTION_SHOW_REDIRECT',$opts,'act_redirect_execute'); } +/** + * Execute the redirect + * + * @param array $opts id and fragment for the redirect + */ function act_redirect_execute($opts){ $go = wl($opts['id'],'',true); if(isset($opts['fragment'])) $go .= '#'.$opts['fragment']; @@ -637,7 +648,7 @@ function act_sitemap($act) { } $sitemap = Sitemapper::getFilePath(); - if(strrchr($sitemap, '.') === '.gz'){ + if (Sitemapper::sitemapIsCompressed()) { $mime = 'application/x-gzip'; }else{ $mime = 'application/xml; charset=utf-8'; diff --git a/inc/adLDAP.php b/inc/adLDAP.php deleted file mode 100644 index 24be6e475..000000000 --- a/inc/adLDAP.php +++ /dev/null @@ -1,2442 +0,0 @@ -<?php -/** - * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY - * Version 3.3.2 - * - * PHP Version 5 with SSL and LDAP support - * - * Written by Scott Barnett, Richard Hyland - * email: scott@wiggumworld.com, adldap@richardhyland.com - * http://adldap.sourceforge.net/ - * - * Copyright (c) 2006-2010 Scott Barnett, Richard Hyland - * - * We'd appreciate any improvements or additions to be submitted back - * to benefit the entire community :) - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * @category ToolsAndUtilities - * @package adLDAP - * @author Scott Barnett, Richard Hyland - * @copyright (c) 2006-2010 Scott Barnett, Richard Hyland - * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1 - * @revision $Revision: 91 $ - * @version 3.3.2 - * @link http://adldap.sourceforge.net/ - */ - -/** - * Define the different types of account in AD - */ -define ('ADLDAP_NORMAL_ACCOUNT', 805306368); -define ('ADLDAP_WORKSTATION_TRUST', 805306369); -define ('ADLDAP_INTERDOMAIN_TRUST', 805306370); -define ('ADLDAP_SECURITY_GLOBAL_GROUP', 268435456); -define ('ADLDAP_DISTRIBUTION_GROUP', 268435457); -define ('ADLDAP_SECURITY_LOCAL_GROUP', 536870912); -define ('ADLDAP_DISTRIBUTION_LOCAL_GROUP', 536870913); -define ('ADLDAP_FOLDER', 'OU'); -define ('ADLDAP_CONTAINER', 'CN'); - -/** -* Main adLDAP class -* -* Can be initialised using $adldap = new adLDAP(); -* -* Something to keep in mind is that Active Directory is a permissions -* based directory. If you bind as a domain user, you can't fetch as -* much information on other users as you could as a domain admin. -* -* Before asking questions, please read the Documentation at -* http://adldap.sourceforge.net/wiki/doku.php?id=api -*/ -class adLDAP { - /** - * The account suffix for your domain, can be set when the class is invoked - * - * @var string - */ - protected $_account_suffix = "@mydomain.local"; - - /** - * The base dn for your domain - * - * @var string - */ - protected $_base_dn = "DC=mydomain,DC=local"; - - /** - * Array of domain controllers. Specifiy multiple controllers if you - * would like the class to balance the LDAP queries amongst multiple servers - * - * @var array - */ - protected $_domain_controllers = array ("dc01.mydomain.local"); - - /** - * Optional account with higher privileges for searching - * This should be set to a domain admin account - * - * @var string - * @var string - */ - protected $_ad_username=NULL; - protected $_ad_password=NULL; - - /** - * AD does not return the primary group. http://support.microsoft.com/?kbid=321360 - * This tweak will resolve the real primary group. - * Setting to false will fudge "Domain Users" and is much faster. Keep in mind though that if - * someone's primary group is NOT domain users, this is obviously going to mess up the results - * - * @var bool - */ - protected $_real_primarygroup=true; - - /** - * Use SSL (LDAPS), your server needs to be setup, please see - * http://adldap.sourceforge.net/wiki/doku.php?id=ldap_over_ssl - * - * @var bool - */ - protected $_use_ssl=false; - - /** - * Use TLS - * If you wish to use TLS you should ensure that $_use_ssl is set to false and vice-versa - * - * @var bool - */ - protected $_use_tls=false; - - /** - * When querying group memberships, do it recursively - * eg. User Fred is a member of Group A, which is a member of Group B, which is a member of Group C - * user_ingroup("Fred","C") will returns true with this option turned on, false if turned off - * - * @var bool - */ - protected $_recursive_groups=true; - - // You should not need to edit anything below this line - //****************************************************************************************** - - /** - * Connection and bind default variables - * - * @var mixed - * @var mixed - */ - protected $_conn; - protected $_bind; - - /** - * Getters and Setters - */ - - /** - * Set the account suffix - * - * @param string $_account_suffix - * @return void - */ - public function set_account_suffix($_account_suffix) - { - $this->_account_suffix = $_account_suffix; - } - - /** - * Get the account suffix - * - * @return string - */ - public function get_account_suffix() - { - return $this->_account_suffix; - } - - /** - * Set the domain controllers array - * - * @param array $_domain_controllers - * @return void - */ - public function set_domain_controllers(array $_domain_controllers) - { - $this->_domain_controllers = $_domain_controllers; - } - - /** - * Get the list of domain controllers - * - * @return void - */ - public function get_domain_controllers() - { - return $this->_domain_controllers; - } - - /** - * Set the username of an account with higher priviledges - * - * @param string $_ad_username - * @return void - */ - public function set_ad_username($_ad_username) - { - $this->_ad_username = $_ad_username; - } - - /** - * Get the username of the account with higher priviledges - * - * This will throw an exception for security reasons - */ - public function get_ad_username() - { - throw new adLDAPException('For security reasons you cannot access the domain administrator account details'); - } - - /** - * Set the password of an account with higher priviledges - * - * @param string $_ad_password - * @return void - */ - public function set_ad_password($_ad_password) - { - $this->_ad_password = $_ad_password; - } - - /** - * Get the password of the account with higher priviledges - * - * This will throw an exception for security reasons - */ - public function get_ad_password() - { - throw new adLDAPException('For security reasons you cannot access the domain administrator account details'); - } - - /** - * Set whether to detect the true primary group - * - * @param bool $_real_primary_group - * @return void - */ - public function set_real_primarygroup($_real_primarygroup) - { - $this->_real_primarygroup = $_real_primarygroup; - } - - /** - * Get the real primary group setting - * - * @return bool - */ - public function get_real_primarygroup() - { - return $this->_real_primarygroup; - } - - /** - * Set whether to use SSL - * - * @param bool $_use_ssl - * @return void - */ - public function set_use_ssl($_use_ssl) - { - $this->_use_ssl = $_use_ssl; - } - - /** - * Get the SSL setting - * - * @return bool - */ - public function get_use_ssl() - { - return $this->_use_ssl; - } - - /** - * Set whether to use TLS - * - * @param bool $_use_tls - * @return void - */ - public function set_use_tls($_use_tls) - { - $this->_use_tls = $_use_tls; - } - - /** - * Get the TLS setting - * - * @return bool - */ - public function get_use_tls() - { - return $this->_use_tls; - } - - /** - * Set whether to lookup recursive groups - * - * @param bool $_recursive_groups - * @return void - */ - public function set_recursive_groups($_recursive_groups) - { - $this->_recursive_groups = $_recursive_groups; - } - - /** - * Get the recursive groups setting - * - * @return bool - */ - public function get_recursive_groups() - { - return $this->_recursive_groups; - } - - /** - * Default Constructor - * - * Tries to bind to the AD domain over LDAP or LDAPs - * - * @param array $options Array of options to pass to the constructor - * @throws Exception - if unable to bind to Domain Controller - * @return bool - */ - function __construct($options=array()){ - // You can specifically overide any of the default configuration options setup above - if (count($options)>0){ - if (array_key_exists("account_suffix",$options)){ $this->_account_suffix=$options["account_suffix"]; } - if (array_key_exists("base_dn",$options)){ $this->_base_dn=$options["base_dn"]; } - if (array_key_exists("domain_controllers",$options)){ $this->_domain_controllers=$options["domain_controllers"]; } - if (array_key_exists("ad_username",$options)){ $this->_ad_username=$options["ad_username"]; } - if (array_key_exists("ad_password",$options)){ $this->_ad_password=$options["ad_password"]; } - if (array_key_exists("real_primarygroup",$options)){ $this->_real_primarygroup=$options["real_primarygroup"]; } - if (array_key_exists("use_ssl",$options)){ $this->_use_ssl=$options["use_ssl"]; } - if (array_key_exists("use_tls",$options)){ $this->_use_tls=$options["use_tls"]; } - if (array_key_exists("recursive_groups",$options)){ $this->_recursive_groups=$options["recursive_groups"]; } - } - - if ($this->ldap_supported() === false) { - throw new adLDAPException('No LDAP support for PHP. See: http://www.php.net/ldap'); - } - - return $this->connect(); - } - - /** - * Default Destructor - * - * Closes the LDAP connection - * - * @return void - */ - function __destruct(){ $this->close(); } - - /** - * Connects and Binds to the Domain Controller - * - * @return bool - */ - public function connect() { - // Connect to the AD/LDAP server as the username/password - $dc=$this->random_controller(); - if ($this->_use_ssl){ - $this->_conn = ldap_connect("ldaps://".$dc, 636); - } else { - $this->_conn = ldap_connect($dc); - } - - // Set some ldap options for talking to AD - ldap_set_option($this->_conn, LDAP_OPT_PROTOCOL_VERSION, 3); - ldap_set_option($this->_conn, LDAP_OPT_REFERRALS, 0); - - if ($this->_use_tls) { - ldap_start_tls($this->_conn); - } - - // Bind as a domain admin if they've set it up - if ($this->_ad_username!=NULL && $this->_ad_password!=NULL){ - $this->_bind = @ldap_bind($this->_conn,$this->_ad_username.$this->_account_suffix,$this->_ad_password); - if (!$this->_bind){ - if ($this->_use_ssl && !$this->_use_tls){ - // If you have problems troubleshooting, remove the @ character from the ldap_bind command above to get the actual error message - throw new adLDAPException('Bind to Active Directory failed. Either the LDAPs connection failed or the login credentials are incorrect. AD said: ' . $this->get_last_error()); - } else { - throw new adLDAPException('Bind to Active Directory failed. Check the login credentials and/or server details. AD said: ' . $this->get_last_error()); - } - } - } - - if ($this->_base_dn == NULL) { - $this->_base_dn = $this->find_base_dn(); - } - - return (true); - } - - /** - * Closes the LDAP connection - * - * @return void - */ - public function close() { - ldap_close ($this->_conn); - } - - /** - * Validate a user's login credentials - * - * @param string $username A user's AD username - * @param string $password A user's AD password - * @param bool optional $prevent_rebind - * @return bool - */ - public function authenticate($username, $password, $prevent_rebind = false) { - // Prevent null binding - if ($username === NULL || $password === NULL) { return false; } - if (empty($username) || empty($password)) { return false; } - - // Bind as the user - $ret = true; - $this->_bind = @ldap_bind($this->_conn, $username . $this->_account_suffix, $password); - if (!$this->_bind){ $ret = false; } - - // Cnce we've checked their details, kick back into admin mode if we have it - if ($this->_ad_username !== NULL && !$prevent_rebind) { - $this->_bind = @ldap_bind($this->_conn, $this->_ad_username . $this->_account_suffix , $this->_ad_password); - if (!$this->_bind){ - // This should never happen in theory - throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->get_last_error()); - } - } - - return $ret; - } - - //***************************************************************************************************************** - // GROUP FUNCTIONS - - /** - * Add a group to a group - * - * @param string $parent The parent group name - * @param string $child The child group name - * @return bool - */ - public function group_add_group($parent,$child){ - - // Find the parent group's dn - $parent_group=$this->group_info($parent,array("cn")); - if ($parent_group[0]["dn"]===NULL){ return (false); } - $parent_dn=$parent_group[0]["dn"]; - - // Find the child group's dn - $child_group=$this->group_info($child,array("cn")); - if ($child_group[0]["dn"]===NULL){ return (false); } - $child_dn=$child_group[0]["dn"]; - - $add=array(); - $add["member"] = $child_dn; - - $result=@ldap_mod_add($this->_conn,$parent_dn,$add); - if ($result==false){ return (false); } - return (true); - } - - /** - * Add a user to a group - * - * @param string $group The group to add the user to - * @param string $user The user to add to the group - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function group_add_user($group,$user,$isGUID=false){ - // Adding a user is a bit fiddly, we need to get the full DN of the user - // and add it using the full DN of the group - - // Find the user's dn - $user_dn=$this->user_dn($user,$isGUID); - if ($user_dn===false){ return (false); } - - // Find the group's dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - $add=array(); - $add["member"] = $user_dn; - - $result=@ldap_mod_add($this->_conn,$group_dn,$add); - if ($result==false){ return (false); } - return (true); - } - - /** - * Add a contact to a group - * - * @param string $group The group to add the contact to - * @param string $contact_dn The DN of the contact to add - * @return bool - */ - public function group_add_contact($group,$contact_dn){ - // To add a contact we take the contact's DN - // and add it using the full DN of the group - - // Find the group's dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - $add=array(); - $add["member"] = $contact_dn; - - $result=@ldap_mod_add($this->_conn,$group_dn,$add); - if ($result==false){ return (false); } - return (true); - } - - /** - * Create a group - * - * @param array $attributes Default attributes of the group - * @return bool - */ - public function group_create($attributes){ - if (!is_array($attributes)){ return ("Attributes must be an array"); } - if (!array_key_exists("group_name",$attributes)){ return ("Missing compulsory field [group_name]"); } - if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } - if (!array_key_exists("description",$attributes)){ return ("Missing compulsory field [description]"); } - if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } - $attributes["container"]=array_reverse($attributes["container"]); - - //$member_array = array(); - //$member_array[0] = "cn=user1,cn=Users,dc=yourdomain,dc=com"; - //$member_array[1] = "cn=administrator,cn=Users,dc=yourdomain,dc=com"; - - $add=array(); - $add["cn"] = $attributes["group_name"]; - $add["samaccountname"] = $attributes["group_name"]; - $add["objectClass"] = "Group"; - $add["description"] = $attributes["description"]; - //$add["member"] = $member_array; UNTESTED - - $container="OU=".implode(",OU=",$attributes["container"]); - $result=ldap_add($this->_conn,"CN=".$add["cn"].", ".$container.",".$this->_base_dn,$add); - if ($result!=true){ return (false); } - - return (true); - } - - /** - * Remove a group from a group - * - * @param string $parent The parent group name - * @param string $child The child group name - * @return bool - */ - public function group_del_group($parent,$child){ - - // Find the parent dn - $parent_group=$this->group_info($parent,array("cn")); - if ($parent_group[0]["dn"]===NULL){ return (false); } - $parent_dn=$parent_group[0]["dn"]; - - // Find the child dn - $child_group=$this->group_info($child,array("cn")); - if ($child_group[0]["dn"]===NULL){ return (false); } - $child_dn=$child_group[0]["dn"]; - - $del=array(); - $del["member"] = $child_dn; - - $result=@ldap_mod_del($this->_conn,$parent_dn,$del); - if ($result==false){ return (false); } - return (true); - } - - /** - * Remove a user from a group - * - * @param string $group The group to remove a user from - * @param string $user The AD user to remove from the group - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function group_del_user($group,$user,$isGUID=false){ - - // Find the parent dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - // Find the users dn - $user_dn=$this->user_dn($user,$isGUID); - if ($user_dn===false){ return (false); } - - $del=array(); - $del["member"] = $user_dn; - - $result=@ldap_mod_del($this->_conn,$group_dn,$del); - if ($result==false){ return (false); } - return (true); - } - - /** - * Remove a contact from a group - * - * @param string $group The group to remove a user from - * @param string $contact_dn The DN of a contact to remove from the group - * @return bool - */ - public function group_del_contact($group,$contact_dn){ - - // Find the parent dn - $group_info=$this->group_info($group,array("cn")); - if ($group_info[0]["dn"]===NULL){ return (false); } - $group_dn=$group_info[0]["dn"]; - - $del=array(); - $del["member"] = $contact_dn; - - $result=@ldap_mod_del($this->_conn,$group_dn,$del); - if ($result==false){ return (false); } - return (true); - } - - /** - * Return a list of groups in a group - * - * @param string $group The group to query - * @param bool $recursive Recursively get groups - * @return array - */ - public function groups_in_group($group, $recursive = NULL){ - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it - - // Search the directory for the members of a group - $info=$this->group_info($group,array("member","cn")); - $groups=$info[0]["member"]; - if (!is_array($groups)) { - return (false); - } - - $group_array=array(); - - for ($i=0; $i<$groups["count"]; $i++){ - $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($groups[$i])."))"; - $fields = array("samaccountname", "distinguishedname", "objectClass"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - // not a person, look for a group - if ($entries['count'] == 0 && $recursive == true) { - $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($groups[$i])."))"; - $fields = array("distinguishedname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - if (!isset($entries[0]['distinguishedname'][0])) { - continue; - } - $sub_groups = $this->groups_in_group($entries[0]['distinguishedname'][0], $recursive); - if (is_array($sub_groups)) { - $group_array = array_merge($group_array, $sub_groups); - $group_array = array_unique($group_array); - } - continue; - } - - $group_array[] = $entries[0]['distinguishedname'][0]; - } - return ($group_array); - } - - /** - * Return a list of members in a group - * - * @param string $group The group to query - * @param bool $recursive Recursively get group members - * @return array - */ - public function group_members($group, $recursive = NULL){ - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it - // Search the directory for the members of a group - $info=$this->group_info($group,array("member","cn")); - $users=$info[0]["member"]; - if (!is_array($users)) { - return (false); - } - - $user_array=array(); - - for ($i=0; $i<$users["count"]; $i++){ - $filter="(&(objectCategory=person)(distinguishedName=".$this->ldap_slashes($users[$i])."))"; - $fields = array("samaccountname", "distinguishedname", "objectClass"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - // not a person, look for a group - if ($entries['count'] == 0 && $recursive == true) { - $filter="(&(objectCategory=group)(distinguishedName=".$this->ldap_slashes($users[$i])."))"; - $fields = array("samaccountname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - if (!isset($entries[0]['samaccountname'][0])) { - continue; - } - $sub_users = $this->group_members($entries[0]['samaccountname'][0], $recursive); - if (is_array($sub_users)) { - $user_array = array_merge($user_array, $sub_users); - $user_array = array_unique($user_array); - } - continue; - } - - if ($entries[0]['samaccountname'][0] === NULL && $entries[0]['distinguishedname'][0] !== NULL) { - $user_array[] = $entries[0]['distinguishedname'][0]; - } - elseif ($entries[0]['samaccountname'][0] !== NULL) { - $user_array[] = $entries[0]['samaccountname'][0]; - } - } - return ($user_array); - } - - /** - * Group Information. Returns an array of information about a group. - * The group name is case sensitive - * - * @param string $group_name The group name to retrieve info about - * @param array $fields Fields to retrieve - * @return array - */ - public function group_info($group_name,$fields=NULL){ - if ($group_name===NULL){ return (false); } - if (!$this->_bind){ return (false); } - - if (stristr($group_name, '+')) { - $group_name=stripslashes($group_name); - } - - $filter="(&(objectCategory=group)(name=".$this->ldap_slashes($group_name)."))"; - //echo ($filter."!!!<br>"); - if ($fields===NULL){ $fields=array("member","memberof","cn","description","distinguishedname","objectcategory","samaccountname"); } - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - //print_r($entries); - return ($entries); - } - - /** - * Return a complete list of "groups in groups" - * - * @param string $group The group to get the list from - * @return array - */ - public function recursive_groups($group){ - if ($group===NULL){ return (false); } - - $ret_groups=array(); - - $groups=$this->group_info($group,array("memberof")); - if (isset($groups[0]["memberof"]) && is_array($groups[0]["memberof"])) { - $groups=$groups[0]["memberof"]; - - if ($groups){ - $group_names=$this->nice_names($groups); - $ret_groups=array_merge($ret_groups,$group_names); //final groups to return - - foreach ($group_names as $id => $group_name){ - $child_groups=$this->recursive_groups($group_name); - $ret_groups=array_merge($ret_groups,$child_groups); - } - } - } - - return ($ret_groups); - } - - /** - * Returns a complete list of the groups in AD based on a SAM Account Type - * - * @param string $samaccounttype The account type to return - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function search_groups($samaccounttype = ADLDAP_SECURITY_GLOBAL_GROUP, $include_desc = false, $search = "*", $sorted = true) { - if (!$this->_bind){ return (false); } - - $filter = '(&(objectCategory=group)'; - if ($samaccounttype !== null) { - $filter .= '(samaccounttype='. $samaccounttype .')'; - } - $filter .= '(cn='.$search.'))'; - // Perform the search and grab all their details - $fields=array("samaccountname","description"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - $groups_array = array(); - for ($i=0; $i<$entries["count"]; $i++){ - if ($include_desc && strlen($entries[$i]["description"][0]) > 0 ){ - $groups_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["description"][0]; - } elseif ($include_desc){ - $groups_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["samaccountname"][0]; - } else { - array_push($groups_array, $entries[$i]["samaccountname"][0]); - } - } - if( $sorted ){ asort($groups_array); } - return ($groups_array); - } - - /** - * Returns a complete list of all groups in AD - * - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_groups($include_desc = false, $search = "*", $sorted = true){ - $groups_array = $this->search_groups(null, $include_desc, $search, $sorted); - return ($groups_array); - } - - /** - * Returns a complete list of security groups in AD - * - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_security_groups($include_desc = false, $search = "*", $sorted = true){ - $groups_array = $this->search_groups(ADLDAP_SECURITY_GLOBAL_GROUP, $include_desc, $search, $sorted); - return ($groups_array); - } - - /** - * Returns a complete list of distribution lists in AD - * - * @param bool $include_desc Whether to return a description - * @param string $search Search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_distribution_groups($include_desc = false, $search = "*", $sorted = true){ - $groups_array = $this->search_groups(ADLDAP_DISTRIBUTION_GROUP, $include_desc, $search, $sorted); - return ($groups_array); - } - - //***************************************************************************************************************** - // USER FUNCTIONS - - /** - * Create a user - * - * If you specify a password here, this can only be performed over SSL - * - * @param array $attributes The attributes to set to the user account - * @return bool - */ - public function user_create($attributes){ - // Check for compulsory fields - if (!array_key_exists("username",$attributes)){ return ("Missing compulsory field [username]"); } - if (!array_key_exists("firstname",$attributes)){ return ("Missing compulsory field [firstname]"); } - if (!array_key_exists("surname",$attributes)){ return ("Missing compulsory field [surname]"); } - if (!array_key_exists("email",$attributes)){ return ("Missing compulsory field [email]"); } - if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } - if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } - - if (array_key_exists("password",$attributes) && (!$this->_use_ssl && !$this->_use_tls)){ - throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); - } - - if (!array_key_exists("display_name",$attributes)){ $attributes["display_name"]=$attributes["firstname"]." ".$attributes["surname"]; } - - // Translate the schema - $add=$this->adldap_schema($attributes); - - // Additional stuff only used for adding accounts - $add["cn"][0]=$attributes["display_name"]; - $add["samaccountname"][0]=$attributes["username"]; - $add["objectclass"][0]="top"; - $add["objectclass"][1]="person"; - $add["objectclass"][2]="organizationalPerson"; - $add["objectclass"][3]="user"; //person? - //$add["name"][0]=$attributes["firstname"]." ".$attributes["surname"]; - - // Set the account control attribute - $control_options=array("NORMAL_ACCOUNT"); - if (!$attributes["enabled"]){ $control_options[]="ACCOUNTDISABLE"; } - $add["userAccountControl"][0]=$this->account_control($control_options); - //echo ("<pre>"); print_r($add); - - // Determine the container - $attributes["container"]=array_reverse($attributes["container"]); - $container="OU=".implode(",OU=",$attributes["container"]); - - // Add the entry - $result=@ldap_add($this->_conn, "CN=".$add["cn"][0].", ".$container.",".$this->_base_dn, $add); - if ($result!=true){ return (false); } - - return (true); - } - - /** - * Delete a user account - * - * @param string $username The username to delete (please be careful here!) - * @param bool $isGUID Is the username a GUID or a samAccountName - * @return array - */ - public function user_delete($username,$isGUID=false) { - $userinfo = $this->user_info($username, array("*"),$isGUID); - $dn = $userinfo[0]['distinguishedname'][0]; - $result=$this->dn_delete($dn); - if ($result!=true){ return (false); } - return (true); - } - - /** - * Groups the user is a member of - * - * @param string $username The username to query - * @param bool $recursive Recursive list of groups - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return array - */ - public function user_groups($username,$recursive=NULL,$isGUID=false){ - if ($username===NULL){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it - if (!$this->_bind){ return (false); } - - // Search the directory for their information - $info=@$this->user_info($username,array("memberof","primarygroupid"),$isGUID); - $groups=$this->nice_names($info[0]["memberof"]); // Presuming the entry returned is our guy (unique usernames) - - if ($recursive === true){ - foreach ($groups as $id => $group_name){ - $extra_groups=$this->recursive_groups($group_name); - $groups=array_merge($groups,$extra_groups); - } - } - - return ($groups); - } - - /** - * Find information about the users - * - * @param string $username The username to query - * @param array $fields Array of parameters to query - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return array - */ - public function user_info($username,$fields=NULL,$isGUID=false){ - if ($username===NULL){ return (false); } - if (!$this->_bind){ return (false); } - - if ($isGUID === true) { - $username = $this->strguid2hex($username); - $filter="objectguid=".$username; - } - else if (strstr($username, "@")) { - $filter="userPrincipalName=".$username; - } - else { - $filter="samaccountname=".$username; - } - $filter = "(&(objectCategory=person)({$filter}))"; - if ($fields===NULL){ $fields=array("samaccountname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); } - if (!in_array("objectsid",$fields)){ - $fields[] = "objectsid"; - } - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - if (isset($entries[0])) { - if ($entries[0]['count'] >= 1) { - if (in_array("memberof", $fields)) { - // AD does not return the primary group in the ldap query, we may need to fudge it - if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){ - //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]); - $entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]); - } else { - $entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn; - } - $entries[0]["memberof"]["count"]++; - } - } - return $entries; - } - return false; - } - - /** - * Determine if a user is in a specific group - * - * @param string $username The username to query - * @param string $group The name of the group to check against - * @param bool $recursive Check groups recursively - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function user_ingroup($username,$group,$recursive=NULL,$isGUID=false){ - if ($username===NULL){ return (false); } - if ($group===NULL){ return (false); } - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // Use the default option if they haven't set it - - // Get a list of the groups - $groups=$this->user_groups($username,$recursive,$isGUID); - - // Return true if the specified group is in the group list - if (in_array($group,$groups)){ return (true); } - - return (false); - } - - /** - * Return info about the domain itself - * - * @authot Andreas Gohr <gohr@cosmocode.de> - * @param array $fields The fields to query - * @return array - */ - public function domain_info($fields){ - if (!$this->_bind){ return (false); } - - $sr = ldap_read($this->_conn, $this->_base_dn, 'objectclass=*', $fields); - if (!$sr) { - return false; - } - $info = ldap_get_entries($this->_conn, $sr); - if(count($info)) return $info[0]; - - return false; - } - - /** - * Determine a user's password expiry date - * - * @param string $username The username to query - * @param book $isGUID Is the username passed a GUID or a samAccountName - * @requires bcmath http://www.php.net/manual/en/book.bc.php - * @return array - */ - public function user_password_expiry($username,$isGUID=false) { - if ($username===NULL){ return ("Missing compulsory field [username]"); } - if (!$this->_bind){ return (false); } - if (!function_exists('bcmod')) { return ("Missing function support [bcmod] http://www.php.net/manual/en/book.bc.php"); }; - - $userinfo = $this->user_info($username, array("pwdlastset", "useraccountcontrol"), $isGUID); - $pwdlastset = $userinfo[0]['pwdlastset'][0]; - $status = array(); - - if ($userinfo[0]['useraccountcontrol'][0] == '66048') { - // Password does not expire - return "Does not expire"; - } - if ($pwdlastset === '0') { - // Password has already expired - return "Password has expired"; - } - - // Password expiry in AD can be calculated from TWO values: - // - User's own pwdLastSet attribute: stores the last time the password was changed - // - Domain's maxPwdAge attribute: how long passwords last in the domain - // - // Although Microsoft chose to use a different base and unit for time measurements. - // This function will convert them to Unix timestamps - $sr = ldap_read($this->_conn, $this->_base_dn, 'objectclass=*', array('maxPwdAge')); - if (!$sr) { - return false; - } - $info = ldap_get_entries($this->_conn, $sr); - $maxpwdage = $info[0]['maxpwdage'][0]; - - - // See MSDN: http://msdn.microsoft.com/en-us/library/ms974598.aspx - // - // pwdLastSet contains the number of 100 nanosecond intervals since January 1, 1601 (UTC), - // stored in a 64 bit integer. - // - // The number of seconds between this date and Unix epoch is 11644473600. - // - // maxPwdAge is stored as a large integer that represents the number of 100 nanosecond - // intervals from the time the password was set before the password expires. - // - // We also need to scale this to seconds but also this value is a _negative_ quantity! - // - // If the low 32 bits of maxPwdAge are equal to 0 passwords do not expire - // - // Unfortunately the maths involved are too big for PHP integers, so I've had to require - // BCMath functions to work with arbitrary precision numbers. - if (bcmod($maxpwdage, 4294967296) === '0') { - return "Domain does not expire passwords"; - } - - // Add maxpwdage and pwdlastset and we get password expiration time in Microsoft's - // time units. Because maxpwd age is negative we need to subtract it. - $pwdexpire = bcsub($pwdlastset, $maxpwdage); - - // Convert MS's time to Unix time - $status['expiryts'] = bcsub(bcdiv($pwdexpire, '10000000'), '11644473600'); - $status['expiryformat'] = date('Y-m-d H:i:s', bcsub(bcdiv($pwdexpire, '10000000'), '11644473600')); - - return $status; - } - - /** - * Modify a user - * - * @param string $username The username to query - * @param array $attributes The attributes to modify. Note if you set the enabled attribute you must not specify any other attributes - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function user_modify($username,$attributes,$isGUID=false){ - if ($username===NULL){ return ("Missing compulsory field [username]"); } - if (array_key_exists("password",$attributes) && !$this->_use_ssl){ - throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); - } - - // Find the dn of the user - $user_dn=$this->user_dn($username,$isGUID); - if ($user_dn===false){ return (false); } - - // Translate the update to the LDAP schema - $mod=$this->adldap_schema($attributes); - - // Check to see if this is an enabled status update - if (!$mod && !array_key_exists("enabled", $attributes)){ return (false); } - - // Set the account control attribute (only if specified) - if (array_key_exists("enabled",$attributes)){ - if ($attributes["enabled"]){ $control_options=array("NORMAL_ACCOUNT"); } - else { $control_options=array("NORMAL_ACCOUNT","ACCOUNTDISABLE"); } - $mod["userAccountControl"][0]=$this->account_control($control_options); - } - - // Do the update - $result=@ldap_modify($this->_conn,$user_dn,$mod); - if ($result==false){ return (false); } - - return (true); - } - - /** - * Disable a user account - * - * @param string $username The username to disable - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function user_disable($username,$isGUID=false){ - if ($username===NULL){ return ("Missing compulsory field [username]"); } - $attributes=array("enabled"=>0); - $result = $this->user_modify($username, $attributes, $isGUID); - if ($result==false){ return (false); } - - return (true); - } - - /** - * Enable a user account - * - * @param string $username The username to enable - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function user_enable($username,$isGUID=false){ - if ($username===NULL){ return ("Missing compulsory field [username]"); } - $attributes=array("enabled"=>1); - $result = $this->user_modify($username, $attributes, $isGUID); - if ($result==false){ return (false); } - - return (true); - } - - /** - * Set the password of a user - This must be performed over SSL - * - * @param string $username The username to modify - * @param string $password The new password - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function user_password($username,$password,$isGUID=false){ - if ($username===NULL){ return (false); } - if ($password===NULL){ return (false); } - if (!$this->_bind){ return (false); } - if (!$this->_use_ssl && !$this->_use_tls){ - throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.'); - } - - $user_dn=$this->user_dn($username,$isGUID); - if ($user_dn===false){ return (false); } - - $add=array(); - $add["unicodePwd"][0]=$this->encode_password($password); - - $result=@ldap_mod_replace($this->_conn,$user_dn,$add); - if ($result==false){ - $err = ldap_errno($this->_conn); - if($err){ - $msg = 'Error '.$err.': '.ldap_err2str($err).'.'; - if($err == 53) $msg .= ' Your password might not match the password policy.'; - throw new adLDAPException($msg); - }else{ - return false; - } - } - - return (true); - } - - /** - * Return a list of all users in AD - * - * @param bool $include_desc Return a description of the user - * @param string $search Search parameter - * @param bool $sorted Sort the user accounts - * @return array - */ - public function all_users($include_desc = false, $search = "*", $sorted = true){ - if (!$this->_bind){ return (false); } - - // Perform the search and grab all their details - $filter = "(&(objectClass=user)(samaccounttype=". ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)(cn=".$search."))"; - $fields=array("samaccountname","displayname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - $users_array = array(); - for ($i=0; $i<$entries["count"]; $i++){ - if ($include_desc && strlen($entries[$i]["displayname"][0])>0){ - $users_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["displayname"][0]; - } elseif ($include_desc){ - $users_array[ $entries[$i]["samaccountname"][0] ] = $entries[$i]["samaccountname"][0]; - } else { - array_push($users_array, $entries[$i]["samaccountname"][0]); - } - } - if ($sorted){ asort($users_array); } - return ($users_array); - } - - /** - * Converts a username (samAccountName) to a GUID - * - * @param string $username The username to query - * @return string - */ - public function username2guid($username) { - if (!$this->_bind){ return (false); } - if ($username === null){ return ("Missing compulsory field [username]"); } - - $filter = "samaccountname=" . $username; - $fields = array("objectGUID"); - $sr = @ldap_search($this->_conn, $this->_base_dn, $filter, $fields); - if (ldap_count_entries($this->_conn, $sr) > 0) { - $entry = @ldap_first_entry($this->_conn, $sr); - $guid = @ldap_get_values_len($this->_conn, $entry, 'objectGUID'); - $strGUID = $this->binary2text($guid[0]); - return ($strGUID); - } - else { - return (false); - } - } - - /** - * Move a user account to a different OU - * - * @param string $username The username to move (please be careful here!) - * @param array $container The container or containers to move the user to (please be careful here!). - * accepts containers in 1. parent 2. child order - * @return array - */ - public function user_move($username, $container) { - if (!$this->_bind){ return (false); } - if ($username === null){ return ("Missing compulsory field [username]"); } - if ($container === null){ return ("Missing compulsory field [container]"); } - if (!is_array($container)){ return ("Container must be an array"); } - - $userinfo = $this->user_info($username, array("*")); - $dn = $userinfo[0]['distinguishedname'][0]; - $newrdn = "cn=" . $username; - $container = array_reverse($container); - $newcontainer = "ou=" . implode(",ou=",$container); - $newbasedn = strtolower($newcontainer) . "," . $this->_base_dn; - $result=@ldap_rename($this->_conn,$dn,$newrdn,$newbasedn,true); - if ($result !== true) { - return (false); - } - return (true); - } - - //***************************************************************************************************************** - // CONTACT FUNCTIONS - // * Still work to do in this area, and new functions to write - - /** - * Create a contact - * - * @param array $attributes The attributes to set to the contact - * @return bool - */ - public function contact_create($attributes){ - // Check for compulsory fields - if (!array_key_exists("display_name",$attributes)){ return ("Missing compulsory field [display_name]"); } - if (!array_key_exists("email",$attributes)){ return ("Missing compulsory field [email]"); } - if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } - if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } - - // Translate the schema - $add=$this->adldap_schema($attributes); - - // Additional stuff only used for adding contacts - $add["cn"][0]=$attributes["display_name"]; - $add["objectclass"][0]="top"; - $add["objectclass"][1]="person"; - $add["objectclass"][2]="organizationalPerson"; - $add["objectclass"][3]="contact"; - if (!isset($attributes['exchange_hidefromlists'])) { - $add["msExchHideFromAddressLists"][0]="TRUE"; - } - - // Determine the container - $attributes["container"]=array_reverse($attributes["container"]); - $container="OU=".implode(",OU=",$attributes["container"]); - - // Add the entry - $result=@ldap_add($this->_conn, "CN=".$add["cn"][0].", ".$container.",".$this->_base_dn, $add); - if ($result!=true){ return (false); } - - return (true); - } - - /** - * Determine the list of groups a contact is a member of - * - * @param string $distinguisedname The full DN of a contact - * @param bool $recursive Recursively check groups - * @return array - */ - public function contact_groups($distinguishedname,$recursive=NULL){ - if ($distinguishedname===NULL){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it - if (!$this->_bind){ return (false); } - - // Search the directory for their information - $info=@$this->contact_info($distinguishedname,array("memberof","primarygroupid")); - $groups=$this->nice_names($info[0]["memberof"]); //presuming the entry returned is our contact - - if ($recursive === true){ - foreach ($groups as $id => $group_name){ - $extra_groups=$this->recursive_groups($group_name); - $groups=array_merge($groups,$extra_groups); - } - } - - return ($groups); - } - - /** - * Get contact information - * - * @param string $distinguisedname The full DN of a contact - * @param array $fields Attributes to be returned - * @return array - */ - public function contact_info($distinguishedname,$fields=NULL){ - if ($distinguishedname===NULL){ return (false); } - if (!$this->_bind){ return (false); } - - $filter="distinguishedName=".$distinguishedname; - if ($fields===NULL){ $fields=array("distinguishedname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid"); } - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - if ($entries[0]['count'] >= 1) { - // AD does not return the primary group in the ldap query, we may need to fudge it - if ($this->_real_primarygroup && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["primarygroupid"][0])){ - //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]); - $entries[0]["memberof"][]=$this->get_primary_group($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]); - } else { - $entries[0]["memberof"][]="CN=Domain Users,CN=Users,".$this->_base_dn; - } - } - - $entries[0]["memberof"]["count"]++; - return ($entries); - } - - /** - * Determine if a contact is a member of a group - * - * @param string $distinguisedname The full DN of a contact - * @param string $group The group name to query - * @param bool $recursive Recursively check groups - * @return bool - */ - public function contact_ingroup($distinguisedname,$group,$recursive=NULL){ - if ($distinguisedname===NULL){ return (false); } - if ($group===NULL){ return (false); } - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it - - // Get a list of the groups - $groups=$this->contact_groups($distinguisedname,array("memberof"),$recursive); - - // Return true if the specified group is in the group list - if (in_array($group,$groups)){ return (true); } - - return (false); - } - - /** - * Modify a contact - * - * @param string $distinguishedname The contact to query - * @param array $attributes The attributes to modify. Note if you set the enabled attribute you must not specify any other attributes - * @return bool - */ - public function contact_modify($distinguishedname,$attributes){ - if ($distinguishedname===NULL){ return ("Missing compulsory field [distinguishedname]"); } - - // Translate the update to the LDAP schema - $mod=$this->adldap_schema($attributes); - - // Check to see if this is an enabled status update - if (!$mod){ return (false); } - - // Do the update - $result=ldap_modify($this->_conn,$distinguishedname,$mod); - if ($result==false){ return (false); } - - return (true); - } - - /** - * Delete a contact - * - * @param string $distinguishedname The contact dn to delete (please be careful here!) - * @return array - */ - public function contact_delete($distinguishedname) { - $result = $this->dn_delete($distinguishedname); - if ($result!=true){ return (false); } - return (true); - } - - /** - * Return a list of all contacts - * - * @param bool $include_desc Include a description of a contact - * @param string $search The search parameters - * @param bool $sorted Whether to sort the results - * @return array - */ - public function all_contacts($include_desc = false, $search = "*", $sorted = true){ - if (!$this->_bind){ return (false); } - - // Perform the search and grab all their details - $filter = "(&(objectClass=contact)(cn=".$search."))"; - $fields=array("displayname","distinguishedname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - $users_array = array(); - for ($i=0; $i<$entries["count"]; $i++){ - if ($include_desc && strlen($entries[$i]["displayname"][0])>0){ - $users_array[ $entries[$i]["distinguishedname"][0] ] = $entries[$i]["displayname"][0]; - } elseif ($include_desc){ - $users_array[ $entries[$i]["distinguishedname"][0] ] = $entries[$i]["distinguishedname"][0]; - } else { - array_push($users_array, $entries[$i]["distinguishedname"][0]); - } - } - if ($sorted){ asort($users_array); } - return ($users_array); - } - - //***************************************************************************************************************** - // FOLDER FUNCTIONS - - /** - * Returns a folder listing for a specific OU - * See http://adldap.sourceforge.net/wiki/doku.php?id=api_folder_functions - * - * @param array $folder_name An array to the OU you wish to list. - * If set to NULL will list the root, strongly recommended to set - * $recursive to false in that instance! - * @param string $dn_type The type of record to list. This can be ADLDAP_FOLDER or ADLDAP_CONTAINER. - * @param bool $recursive Recursively search sub folders - * @param bool $type Specify a type of object to search for - * @return array - */ - public function folder_list($folder_name = NULL, $dn_type = ADLDAP_FOLDER, $recursive = NULL, $type = NULL) { - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it - if (!$this->_bind){ return (false); } - - $filter = '(&'; - if ($type !== NULL) { - switch ($type) { - case 'contact': - $filter .= '(objectClass=contact)'; - break; - case 'computer': - $filter .= '(objectClass=computer)'; - break; - case 'group': - $filter .= '(objectClass=group)'; - break; - case 'folder': - $filter .= '(objectClass=organizationalUnit)'; - break; - case 'container': - $filter .= '(objectClass=container)'; - break; - case 'domain': - $filter .= '(objectClass=builtinDomain)'; - break; - default: - $filter .= '(objectClass=user)'; - break; - } - } - else { - $filter .= '(objectClass=*)'; - } - // If the folder name is null then we will search the root level of AD - // This requires us to not have an OU= part, just the base_dn - $searchou = $this->_base_dn; - if (is_array($folder_name)) { - $ou = $dn_type . "=".implode("," . $dn_type . "=",$folder_name); - $filter .= '(!(distinguishedname=' . $ou . ',' . $this->_base_dn . ')))'; - $searchou = $ou . ',' . $this->_base_dn; - } - else { - $filter .= '(!(distinguishedname=' . $this->_base_dn . ')))'; - } - - if ($recursive === true) { - $sr=ldap_search($this->_conn, $searchou, $filter, array('objectclass', 'distinguishedname', 'samaccountname')); - $entries = @ldap_get_entries($this->_conn, $sr); - if (is_array($entries)) { - return $entries; - } - } - else { - $sr=ldap_list($this->_conn, $searchou, $filter, array('objectclass', 'distinguishedname', 'samaccountname')); - $entries = @ldap_get_entries($this->_conn, $sr); - if (is_array($entries)) { - return $entries; - } - } - - return false; - } - - //***************************************************************************************************************** - // COMPUTER FUNCTIONS - - /** - * Get information about a specific computer - * - * @param string $computer_name The name of the computer - * @param array $fields Attributes to return - * @return array - */ - public function computer_info($computer_name,$fields=NULL){ - if ($computer_name===NULL){ return (false); } - if (!$this->_bind){ return (false); } - - $filter="(&(objectClass=computer)(cn=".$computer_name."))"; - if ($fields===NULL){ $fields=array("memberof","cn","displayname","dnshostname","distinguishedname","objectcategory","operatingsystem","operatingsystemservicepack","operatingsystemversion"); } - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - return ($entries); - } - - /** - * Check if a computer is in a group - * - * @param string $computer_name The name of the computer - * @param string $group The group to check - * @param bool $recursive Whether to check recursively - * @return array - */ - public function computer_ingroup($computer_name,$group,$recursive=NULL){ - if ($computer_name===NULL){ return (false); } - if ($group===NULL){ return (false); } - if (!$this->_bind){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } // use the default option if they haven't set it - - //get a list of the groups - $groups=$this->computer_groups($computer_name,array("memberof"),$recursive); - - //return true if the specified group is in the group list - if (in_array($group,$groups)){ return (true); } - - return (false); - } - - /** - * Get the groups a computer is in - * - * @param string $computer_name The name of the computer - * @param bool $recursive Whether to check recursively - * @return array - */ - public function computer_groups($computer_name,$recursive=NULL){ - if ($computer_name===NULL){ return (false); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } //use the default option if they haven't set it - if (!$this->_bind){ return (false); } - - //search the directory for their information - $info=@$this->computer_info($computer_name,array("memberof","primarygroupid")); - $groups=$this->nice_names($info[0]["memberof"]); //presuming the entry returned is our guy (unique usernames) - - if ($recursive === true){ - foreach ($groups as $id => $group_name){ - $extra_groups=$this->recursive_groups($group_name); - $groups=array_merge($groups,$extra_groups); - } - } - - return ($groups); - } - - //************************************************************************************************************ - // ORGANIZATIONAL UNIT FUNCTIONS - - /** - * Create an organizational unit - * - * @param array $attributes Default attributes of the ou - * @return bool - */ - public function ou_create($attributes){ - if (!is_array($attributes)){ return ("Attributes must be an array"); } - if (!array_key_exists("ou_name",$attributes)){ return ("Missing compulsory field [ou_name]"); } - if (!array_key_exists("container",$attributes)){ return ("Missing compulsory field [container]"); } - if (!is_array($attributes["container"])){ return ("Container attribute must be an array."); } - $attributes["container"]=array_reverse($attributes["container"]); - - $add=array(); - $add["objectClass"] = "organizationalUnit"; - - $container="OU=".implode(",OU=",$attributes["container"]); - $result=ldap_add($this->_conn,"CN=".$add["cn"].", ".$container.",".$this->_base_dn,$add); - if ($result!=true){ return (false); } - - return (true); - } - - //************************************************************************************************************ - // EXCHANGE FUNCTIONS - - /** - * Create an Exchange account - * - * @param string $username The username of the user to add the Exchange account to - * @param array $storagegroup The mailbox, Exchange Storage Group, for the user account, this must be a full CN - * If the storage group has a different base_dn to the adLDAP configuration, set it using $base_dn - * @param string $emailaddress The primary email address to add to this user - * @param string $mailnickname The mail nick name. If mail nickname is blank, the username will be used - * @param bool $usedefaults Indicates whether the store should use the default quota, rather than the per-mailbox quota. - * @param string $base_dn Specify an alternative base_dn for the Exchange storage group - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function exchange_create_mailbox($username, $storagegroup, $emailaddress, $mailnickname=NULL, $usedefaults=TRUE, $base_dn=NULL, $isGUID=false){ - if ($username===NULL){ return ("Missing compulsory field [username]"); } - if ($storagegroup===NULL){ return ("Missing compulsory array [storagegroup]"); } - if (!is_array($storagegroup)){ return ("[storagegroup] must be an array"); } - if ($emailaddress===NULL){ return ("Missing compulsory field [emailaddress]"); } - - if ($base_dn===NULL) { - $base_dn = $this->_base_dn; - } - - $container="CN=".implode(",CN=",$storagegroup); - - if ($mailnickname===NULL) { $mailnickname=$username; } - $mdbUseDefaults = $this->bool2str($usedefaults); - - $attributes = array( - 'exchange_homemdb'=>$container.",".$base_dn, - 'exchange_proxyaddress'=>'SMTP:' . $emailaddress, - 'exchange_mailnickname'=>$mailnickname, - 'exchange_usedefaults'=>$mdbUseDefaults - ); - $result = $this->user_modify($username,$attributes,$isGUID); - if ($result==false){ return (false); } - return (true); - } - - /** - * Add an X400 address to Exchange - * See http://tools.ietf.org/html/rfc1685 for more information. - * An X400 Address looks similar to this X400:c=US;a= ;p=Domain;o=Organization;s=Doe;g=John; - * - * @param string $username The username of the user to add the X400 to to - * @param string $country Country - * @param string $admd Administration Management Domain - * @param string $pdmd Private Management Domain (often your AD domain) - * @param string $org Organization - * @param string $surname Surname - * @param string $givenName Given name - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function exchange_add_X400($username, $country, $admd, $pdmd, $org, $surname, $givenname, $isGUID=false) { - if ($username===NULL){ return ("Missing compulsory field [username]"); } - - $proxyvalue = 'X400:'; - - // Find the dn of the user - $user=$this->user_info($username,array("cn","proxyaddresses"), $isGUID); - if ($user[0]["dn"]===NULL){ return (false); } - $user_dn=$user[0]["dn"]; - - // We do not have to demote an email address from the default so we can just add the new proxy address - $attributes['exchange_proxyaddress'] = $proxyvalue . 'c=' . $country . ';a=' . $admd . ';p=' . $pdmd . ';o=' . $org . ';s=' . $surname . ';g=' . $givenname . ';'; - - // Translate the update to the LDAP schema - $add=$this->adldap_schema($attributes); - - if (!$add){ return (false); } - - // Do the update - // Take out the @ to see any errors, usually this error might occur because the address already - // exists in the list of proxyAddresses - $result=@ldap_mod_add($this->_conn,$user_dn,$add); - if ($result==false){ return (false); } - - return (true); - } - - /** - * Add an address to Exchange - * - * @param string $username The username of the user to add the Exchange account to - * @param string $emailaddress The email address to add to this user - * @param bool $default Make this email address the default address, this is a bit more intensive as we have to demote any existing default addresses - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function exchange_add_address($username, $emailaddress, $default=FALSE, $isGUID=false) { - if ($username===NULL){ return ("Missing compulsory field [username]"); } - if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); } - - $proxyvalue = 'smtp:'; - if ($default === true) { - $proxyvalue = 'SMTP:'; - } - - // Find the dn of the user - $user=$this->user_info($username,array("cn","proxyaddresses"),$isGUID); - if ($user[0]["dn"]===NULL){ return (false); } - $user_dn=$user[0]["dn"]; - - // We need to scan existing proxy addresses and demote the default one - if (is_array($user[0]["proxyaddresses"]) && $default===true) { - $modaddresses = array(); - for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) { - if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false) { - $user[0]['proxyaddresses'][$i] = str_replace('SMTP:', 'smtp:', $user[0]['proxyaddresses'][$i]); - } - if ($user[0]['proxyaddresses'][$i] != '') { - $modaddresses['proxyAddresses'][$i] = $user[0]['proxyaddresses'][$i]; - } - } - $modaddresses['proxyAddresses'][(sizeof($user[0]['proxyaddresses'])-1)] = 'SMTP:' . $emailaddress; - - $result=@ldap_mod_replace($this->_conn,$user_dn,$modaddresses); - if ($result==false){ return (false); } - - return (true); - } - else { - // We do not have to demote an email address from the default so we can just add the new proxy address - $attributes['exchange_proxyaddress'] = $proxyvalue . $emailaddress; - - // Translate the update to the LDAP schema - $add=$this->adldap_schema($attributes); - - if (!$add){ return (false); } - - // Do the update - // Take out the @ to see any errors, usually this error might occur because the address already - // exists in the list of proxyAddresses - $result=@ldap_mod_add($this->_conn,$user_dn,$add); - if ($result==false){ return (false); } - - return (true); - } - } - - /** - * Remove an address to Exchange - * If you remove a default address the account will no longer have a default, - * we recommend changing the default address first - * - * @param string $username The username of the user to add the Exchange account to - * @param string $emailaddress The email address to add to this user - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function exchange_del_address($username, $emailaddress, $isGUID=false) { - if ($username===NULL){ return ("Missing compulsory field [username]"); } - if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); } - - // Find the dn of the user - $user=$this->user_info($username,array("cn","proxyaddresses"),$isGUID); - if ($user[0]["dn"]===NULL){ return (false); } - $user_dn=$user[0]["dn"]; - - if (is_array($user[0]["proxyaddresses"])) { - $mod = array(); - for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) { - if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false && $user[0]['proxyaddresses'][$i] == 'SMTP:' . $emailaddress) { - $mod['proxyAddresses'][0] = 'SMTP:' . $emailaddress; - } - elseif (strstr($user[0]['proxyaddresses'][$i], 'smtp:') !== false && $user[0]['proxyaddresses'][$i] == 'smtp:' . $emailaddress) { - $mod['proxyAddresses'][0] = 'smtp:' . $emailaddress; - } - } - - $result=@ldap_mod_del($this->_conn,$user_dn,$mod); - if ($result==false){ return (false); } - - return (true); - } - else { - return (false); - } - } - /** - * Change the default address - * - * @param string $username The username of the user to add the Exchange account to - * @param string $emailaddress The email address to make default - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return bool - */ - public function exchange_primary_address($username, $emailaddress, $isGUID=false) { - if ($username===NULL){ return ("Missing compulsory field [username]"); } - if ($emailaddress===NULL) { return ("Missing compulsory fields [emailaddress]"); } - - // Find the dn of the user - $user=$this->user_info($username,array("cn","proxyaddresses"), $isGUID); - if ($user[0]["dn"]===NULL){ return (false); } - $user_dn=$user[0]["dn"]; - - if (is_array($user[0]["proxyaddresses"])) { - $modaddresses = array(); - for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) { - if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false) { - $user[0]['proxyaddresses'][$i] = str_replace('SMTP:', 'smtp:', $user[0]['proxyaddresses'][$i]); - } - if ($user[0]['proxyaddresses'][$i] == 'smtp:' . $emailaddress) { - $user[0]['proxyaddresses'][$i] = str_replace('smtp:', 'SMTP:', $user[0]['proxyaddresses'][$i]); - } - if ($user[0]['proxyaddresses'][$i] != '') { - $modaddresses['proxyAddresses'][$i] = $user[0]['proxyaddresses'][$i]; - } - } - - $result=@ldap_mod_replace($this->_conn,$user_dn,$modaddresses); - if ($result==false){ return (false); } - - return (true); - } - - } - - /** - * Mail enable a contact - * Allows email to be sent to them through Exchange - * - * @param string $distinguishedname The contact to mail enable - * @param string $emailaddress The email address to allow emails to be sent through - * @param string $mailnickname The mailnickname for the contact in Exchange. If NULL this will be set to the display name - * @return bool - */ - public function exchange_contact_mailenable($distinguishedname, $emailaddress, $mailnickname=NULL){ - if ($distinguishedname===NULL){ return ("Missing compulsory field [distinguishedname]"); } - if ($emailaddress===NULL){ return ("Missing compulsory field [emailaddress]"); } - - if ($mailnickname !== NULL) { - // Find the dn of the user - $user=$this->contact_info($distinguishedname,array("cn","displayname")); - if ($user[0]["displayname"]===NULL){ return (false); } - $mailnickname = $user[0]['displayname'][0]; - } - - $attributes = array("email"=>$emailaddress,"contact_email"=>"SMTP:" . $emailaddress,"exchange_proxyaddress"=>"SMTP:" . $emailaddress,"exchange_mailnickname"=>$mailnickname); - - // Translate the update to the LDAP schema - $mod=$this->adldap_schema($attributes); - - // Check to see if this is an enabled status update - if (!$mod){ return (false); } - - // Do the update - $result=ldap_modify($this->_conn,$distinguishedname,$mod); - if ($result==false){ return (false); } - - return (true); - } - - /** - * Returns a list of Exchange Servers in the ConfigurationNamingContext of the domain - * - * @param array $attributes An array of the AD attributes you wish to return - * @return array - */ - public function exchange_servers($attributes = array('cn','distinguishedname','serialnumber')) { - if (!$this->_bind){ return (false); } - - $configurationNamingContext = $this->get_root_dse(array('configurationnamingcontext')); - $sr = @ldap_search($this->_conn,$configurationNamingContext[0]['configurationnamingcontext'][0],'(&(objectCategory=msExchExchangeServer))',$attributes); - $entries = @ldap_get_entries($this->_conn, $sr); - return $entries; - } - - /** - * Returns a list of Storage Groups in Exchange for a given mail server - * - * @param string $exchangeServer The full DN of an Exchange server. You can use exchange_servers() to find the DN for your server - * @param array $attributes An array of the AD attributes you wish to return - * @param bool $recursive If enabled this will automatically query the databases within a storage group - * @return array - */ - public function exchange_storage_groups($exchangeServer, $attributes = array('cn','distinguishedname'), $recursive = NULL) { - if (!$this->_bind){ return (false); } - if ($exchangeServer===NULL){ return ("Missing compulsory field [exchangeServer]"); } - if ($recursive===NULL){ $recursive=$this->_recursive_groups; } - - $filter = '(&(objectCategory=msExchStorageGroup))'; - $sr=@ldap_search($this->_conn, $exchangeServer, $filter, $attributes); - $entries = @ldap_get_entries($this->_conn, $sr); - - if ($recursive === true) { - for ($i=0; $i<$entries['count']; $i++) { - $entries[$i]['msexchprivatemdb'] = $this->exchange_storage_databases($entries[$i]['distinguishedname'][0]); - } - } - - return $entries; - } - - /** - * Returns a list of Databases within any given storage group in Exchange for a given mail server - * - * @param string $storageGroup The full DN of an Storage Group. You can use exchange_storage_groups() to find the DN - * @param array $attributes An array of the AD attributes you wish to return - * @return array - */ - public function exchange_storage_databases($storageGroup, $attributes = array('cn','distinguishedname','displayname')) { - if (!$this->_bind){ return (false); } - if ($storageGroup===NULL){ return ("Missing compulsory field [storageGroup]"); } - - $filter = '(&(objectCategory=msExchPrivateMDB))'; - $sr=@ldap_search($this->_conn, $storageGroup, $filter, $attributes); - $entries = @ldap_get_entries($this->_conn, $sr); - return $entries; - } - - //************************************************************************************************************ - // SERVER FUNCTIONS - - /** - * Find the Base DN of your domain controller - * - * @return string - */ - public function find_base_dn() { - $namingContext = $this->get_root_dse(array('defaultnamingcontext')); - return $namingContext[0]['defaultnamingcontext'][0]; - } - - /** - * Get the RootDSE properties from a domain controller - * - * @param array $attributes The attributes you wish to query e.g. defaultnamingcontext - * @return array - */ - public function get_root_dse($attributes = array("*", "+")) { - if (!$this->_bind){ return (false); } - - $sr = @ldap_read($this->_conn, NULL, 'objectClass=*', $attributes); - $entries = @ldap_get_entries($this->_conn, $sr); - return $entries; - } - - //************************************************************************************************************ - // UTILITY FUNCTIONS (Many of these functions are protected and can only be called from within the class) - - /** - * Get last error from Active Directory - * - * This function gets the last message from Active Directory - * This may indeed be a 'Success' message but if you get an unknown error - * it might be worth calling this function to see what errors were raised - * - * return string - */ - public function get_last_error() { - return @ldap_error($this->_conn); - } - - /** - * Detect LDAP support in php - * - * @return bool - */ - protected function ldap_supported() { - if (!function_exists('ldap_connect')) { - return (false); - } - return (true); - } - - /** - * Schema - * - * @param array $attributes Attributes to be queried - * @return array - */ - protected function adldap_schema($attributes){ - - // LDAP doesn't like NULL attributes, only set them if they have values - // If you wish to remove an attribute you should set it to a space - // TO DO: Adapt user_modify to use ldap_mod_delete to remove a NULL attribute - $mod=array(); - - // Check every attribute to see if it contains 8bit characters and then UTF8 encode them - array_walk($attributes, array($this, 'encode8bit')); - - if ($attributes["address_city"]){ $mod["l"][0]=$attributes["address_city"]; } - if ($attributes["address_code"]){ $mod["postalCode"][0]=$attributes["address_code"]; } - //if ($attributes["address_country"]){ $mod["countryCode"][0]=$attributes["address_country"]; } // use country codes? - if ($attributes["address_country"]){ $mod["c"][0]=$attributes["address_country"]; } - if ($attributes["address_pobox"]){ $mod["postOfficeBox"][0]=$attributes["address_pobox"]; } - if ($attributes["address_state"]){ $mod["st"][0]=$attributes["address_state"]; } - if ($attributes["address_street"]){ $mod["streetAddress"][0]=$attributes["address_street"]; } - if ($attributes["company"]){ $mod["company"][0]=$attributes["company"]; } - if ($attributes["change_password"]){ $mod["pwdLastSet"][0]=0; } - if ($attributes["department"]){ $mod["department"][0]=$attributes["department"]; } - if ($attributes["description"]){ $mod["description"][0]=$attributes["description"]; } - if ($attributes["display_name"]){ $mod["displayName"][0]=$attributes["display_name"]; } - if ($attributes["email"]){ $mod["mail"][0]=$attributes["email"]; } - if ($attributes["expires"]){ $mod["accountExpires"][0]=$attributes["expires"]; } //unix epoch format? - if ($attributes["firstname"]){ $mod["givenName"][0]=$attributes["firstname"]; } - if ($attributes["home_directory"]){ $mod["homeDirectory"][0]=$attributes["home_directory"]; } - if ($attributes["home_drive"]){ $mod["homeDrive"][0]=$attributes["home_drive"]; } - if ($attributes["initials"]){ $mod["initials"][0]=$attributes["initials"]; } - if ($attributes["logon_name"]){ $mod["userPrincipalName"][0]=$attributes["logon_name"]; } - if ($attributes["manager"]){ $mod["manager"][0]=$attributes["manager"]; } //UNTESTED ***Use DistinguishedName*** - if ($attributes["office"]){ $mod["physicalDeliveryOfficeName"][0]=$attributes["office"]; } - if ($attributes["password"]){ $mod["unicodePwd"][0]=$this->encode_password($attributes["password"]); } - if ($attributes["profile_path"]){ $mod["profilepath"][0]=$attributes["profile_path"]; } - if ($attributes["script_path"]){ $mod["scriptPath"][0]=$attributes["script_path"]; } - if ($attributes["surname"]){ $mod["sn"][0]=$attributes["surname"]; } - if ($attributes["title"]){ $mod["title"][0]=$attributes["title"]; } - if ($attributes["telephone"]){ $mod["telephoneNumber"][0]=$attributes["telephone"]; } - if ($attributes["mobile"]){ $mod["mobile"][0]=$attributes["mobile"]; } - if ($attributes["pager"]){ $mod["pager"][0]=$attributes["pager"]; } - if ($attributes["ipphone"]){ $mod["ipphone"][0]=$attributes["ipphone"]; } - if ($attributes["web_page"]){ $mod["wWWHomePage"][0]=$attributes["web_page"]; } - if ($attributes["fax"]){ $mod["facsimileTelephoneNumber"][0]=$attributes["fax"]; } - if ($attributes["enabled"]){ $mod["userAccountControl"][0]=$attributes["enabled"]; } - - // Distribution List specific schema - if ($attributes["group_sendpermission"]){ $mod["dlMemSubmitPerms"][0]=$attributes["group_sendpermission"]; } - if ($attributes["group_rejectpermission"]){ $mod["dlMemRejectPerms"][0]=$attributes["group_rejectpermission"]; } - - // Exchange Schema - if ($attributes["exchange_homemdb"]){ $mod["homeMDB"][0]=$attributes["exchange_homemdb"]; } - if ($attributes["exchange_mailnickname"]){ $mod["mailNickname"][0]=$attributes["exchange_mailnickname"]; } - if ($attributes["exchange_proxyaddress"]){ $mod["proxyAddresses"][0]=$attributes["exchange_proxyaddress"]; } - if ($attributes["exchange_usedefaults"]){ $mod["mDBUseDefaults"][0]=$attributes["exchange_usedefaults"]; } - if ($attributes["exchange_policyexclude"]){ $mod["msExchPoliciesExcluded"][0]=$attributes["exchange_policyexclude"]; } - if ($attributes["exchange_policyinclude"]){ $mod["msExchPoliciesIncluded"][0]=$attributes["exchange_policyinclude"]; } - if ($attributes["exchange_addressbook"]){ $mod["showInAddressBook"][0]=$attributes["exchange_addressbook"]; } - - // This schema is designed for contacts - if ($attributes["exchange_hidefromlists"]){ $mod["msExchHideFromAddressLists"][0]=$attributes["exchange_hidefromlists"]; } - if ($attributes["contact_email"]){ $mod["targetAddress"][0]=$attributes["contact_email"]; } - - //echo ("<pre>"); print_r($mod); - /* - // modifying a name is a bit fiddly - if ($attributes["firstname"] && $attributes["surname"]){ - $mod["cn"][0]=$attributes["firstname"]." ".$attributes["surname"]; - $mod["displayname"][0]=$attributes["firstname"]." ".$attributes["surname"]; - $mod["name"][0]=$attributes["firstname"]." ".$attributes["surname"]; - } - */ - - if (count($mod)==0){ return (false); } - return ($mod); - } - - /** - * Coping with AD not returning the primary group - * http://support.microsoft.com/?kbid=321360 - * - * For some reason it's not possible to search on primarygrouptoken=XXX - * If someone can show otherwise, I'd like to know about it :) - * this way is resource intensive and generally a pain in the @#%^ - * - * @deprecated deprecated since version 3.1, see get get_primary_group - * @param string $gid Group ID - * @return string - */ - protected function group_cn($gid){ - if ($gid===NULL){ return (false); } - $r=false; - - $filter="(&(objectCategory=group)(samaccounttype=". ADLDAP_SECURITY_GLOBAL_GROUP ."))"; - $fields=array("primarygrouptoken","samaccountname","distinguishedname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - for ($i=0; $i<$entries["count"]; $i++){ - if ($entries[$i]["primarygrouptoken"][0]==$gid){ - $r=$entries[$i]["distinguishedname"][0]; - $i=$entries["count"]; - } - } - - return ($r); - } - - /** - * Coping with AD not returning the primary group - * http://support.microsoft.com/?kbid=321360 - * - * This is a re-write based on code submitted by Bruce which prevents the - * need to search each security group to find the true primary group - * - * @param string $gid Group ID - * @param string $usersid User's Object SID - * @return string - */ - protected function get_primary_group($gid, $usersid){ - if ($gid===NULL || $usersid===NULL){ return (false); } - $r=false; - - $gsid = substr_replace($usersid,pack('V',$gid),strlen($usersid)-4,4); - $filter='(objectsid='.$this->getTextSID($gsid).')'; - $fields=array("samaccountname","distinguishedname"); - $sr=ldap_search($this->_conn,$this->_base_dn,$filter,$fields); - $entries = ldap_get_entries($this->_conn, $sr); - - return $entries[0]['distinguishedname'][0]; - } - - /** - * Convert a binary SID to a text SID - * - * @param string $binsid A Binary SID - * @return string - */ - protected function getTextSID($binsid) { - $hex_sid = bin2hex($binsid); - $rev = hexdec(substr($hex_sid, 0, 2)); - $subcount = hexdec(substr($hex_sid, 2, 2)); - $auth = hexdec(substr($hex_sid, 4, 12)); - $result = "$rev-$auth"; - - for ($x=0;$x < $subcount; $x++) { - $subauth[$x] = - hexdec($this->little_endian(substr($hex_sid, 16 + ($x * 8), 8))); - $result .= "-" . $subauth[$x]; - } - - // Cheat by tacking on the S- - return 'S-' . $result; - } - - /** - * Converts a little-endian hex number to one that hexdec() can convert - * - * @param string $hex A hex code - * @return string - */ - protected function little_endian($hex) { - $result = ''; - for ($x = strlen($hex) - 2; $x >= 0; $x = $x - 2) { - $result .= substr($hex, $x, 2); - } - return $result; - } - - /** - * Converts a binary attribute to a string - * - * @param string $bin A binary LDAP attribute - * @return string - */ - protected function binary2text($bin) { - $hex_guid = bin2hex($bin); - $hex_guid_to_guid_str = ''; - for($k = 1; $k <= 4; ++$k) { - $hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2); - } - $hex_guid_to_guid_str .= '-'; - for($k = 1; $k <= 2; ++$k) { - $hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2); - } - $hex_guid_to_guid_str .= '-'; - for($k = 1; $k <= 2; ++$k) { - $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2); - } - $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4); - $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20); - return strtoupper($hex_guid_to_guid_str); - } - - /** - * Converts a binary GUID to a string GUID - * - * @param string $binaryGuid The binary GUID attribute to convert - * @return string - */ - public function decodeGuid($binaryGuid) { - if ($binaryGuid === null){ return ("Missing compulsory field [binaryGuid]"); } - - $strGUID = $this->binary2text($binaryGuid); - return ($strGUID); - } - - /** - * Converts a string GUID to a hexdecimal value so it can be queried - * - * @param string $strGUID A string representation of a GUID - * @return string - */ - protected function strguid2hex($strGUID) { - $strGUID = str_replace('-', '', $strGUID); - - $octet_str = '\\' . substr($strGUID, 6, 2); - $octet_str .= '\\' . substr($strGUID, 4, 2); - $octet_str .= '\\' . substr($strGUID, 2, 2); - $octet_str .= '\\' . substr($strGUID, 0, 2); - $octet_str .= '\\' . substr($strGUID, 10, 2); - $octet_str .= '\\' . substr($strGUID, 8, 2); - $octet_str .= '\\' . substr($strGUID, 14, 2); - $octet_str .= '\\' . substr($strGUID, 12, 2); - //$octet_str .= '\\' . substr($strGUID, 16, strlen($strGUID)); - for ($i=16; $i<=(strlen($strGUID)-2); $i++) { - if (($i % 2) == 0) { - $octet_str .= '\\' . substr($strGUID, $i, 2); - } - } - - return $octet_str; - } - - /** - * Obtain the user's distinguished name based on their userid - * - * - * @param string $username The username - * @param bool $isGUID Is the username passed a GUID or a samAccountName - * @return string - */ - protected function user_dn($username,$isGUID=false){ - $user=$this->user_info($username,array("cn"),$isGUID); - if ($user[0]["dn"]===NULL){ return (false); } - $user_dn=$user[0]["dn"]; - return ($user_dn); - } - - /** - * Encode a password for transmission over LDAP - * - * @param string $password The password to encode - * @return string - */ - protected function encode_password($password){ - $password="\"".$password."\""; - $encoded=""; - for ($i=0; $i <strlen($password); $i++){ $encoded.="{$password{$i}}\000"; } - return ($encoded); - } - - /** - * Escape strings for the use in LDAP filters - * - * DEVELOPERS SHOULD BE DOING PROPER FILTERING IF THEY'RE ACCEPTING USER INPUT - * Ported from Perl's Net::LDAP::Util escape_filter_value - * - * @param string $str The string the parse - * @author Port by Andreas Gohr <andi@splitbrain.org> - * @return string - */ - protected function ldap_slashes($str){ - return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e', - '"\\\\\".join("",unpack("H2","$1"))', - $str); - } - - /** - * Select a random domain controller from your domain controller array - * - * @return string - */ - protected function random_controller(){ - mt_srand(doubleval(microtime()) * 100000000); // For older PHP versions - return ($this->_domain_controllers[array_rand($this->_domain_controllers)]); - } - - /** - * Account control options - * - * @param array $options The options to convert to int - * @return int - */ - protected function account_control($options){ - $val=0; - - if (is_array($options)){ - if (in_array("SCRIPT",$options)){ $val=$val+1; } - if (in_array("ACCOUNTDISABLE",$options)){ $val=$val+2; } - if (in_array("HOMEDIR_REQUIRED",$options)){ $val=$val+8; } - if (in_array("LOCKOUT",$options)){ $val=$val+16; } - if (in_array("PASSWD_NOTREQD",$options)){ $val=$val+32; } - //PASSWD_CANT_CHANGE Note You cannot assign this permission by directly modifying the UserAccountControl attribute. - //For information about how to set the permission programmatically, see the "Property flag descriptions" section. - if (in_array("ENCRYPTED_TEXT_PWD_ALLOWED",$options)){ $val=$val+128; } - if (in_array("TEMP_DUPLICATE_ACCOUNT",$options)){ $val=$val+256; } - if (in_array("NORMAL_ACCOUNT",$options)){ $val=$val+512; } - if (in_array("INTERDOMAIN_TRUST_ACCOUNT",$options)){ $val=$val+2048; } - if (in_array("WORKSTATION_TRUST_ACCOUNT",$options)){ $val=$val+4096; } - if (in_array("SERVER_TRUST_ACCOUNT",$options)){ $val=$val+8192; } - if (in_array("DONT_EXPIRE_PASSWORD",$options)){ $val=$val+65536; } - if (in_array("MNS_LOGON_ACCOUNT",$options)){ $val=$val+131072; } - if (in_array("SMARTCARD_REQUIRED",$options)){ $val=$val+262144; } - if (in_array("TRUSTED_FOR_DELEGATION",$options)){ $val=$val+524288; } - if (in_array("NOT_DELEGATED",$options)){ $val=$val+1048576; } - if (in_array("USE_DES_KEY_ONLY",$options)){ $val=$val+2097152; } - if (in_array("DONT_REQ_PREAUTH",$options)){ $val=$val+4194304; } - if (in_array("PASSWORD_EXPIRED",$options)){ $val=$val+8388608; } - if (in_array("TRUSTED_TO_AUTH_FOR_DELEGATION",$options)){ $val=$val+16777216; } - } - return ($val); - } - - /** - * Take an LDAP query and return the nice names, without all the LDAP prefixes (eg. CN, DN) - * - * @param array $groups - * @return array - */ - protected function nice_names($groups){ - - $group_array=array(); - for ($i=0; $i<$groups["count"]; $i++){ // For each group - $line=$groups[$i]; - - if (strlen($line)>0){ - // More presumptions, they're all prefixed with CN= - // so we ditch the first three characters and the group - // name goes up to the first comma - $bits=explode(",",$line); - $group_array[]=substr($bits[0],3,(strlen($bits[0])-3)); - } - } - return ($group_array); - } - - /** - * Delete a distinguished name from Active Directory - * You should never need to call this yourself, just use the wrapper functions user_delete and contact_delete - * - * @param string $dn The distinguished name to delete - * @return bool - */ - protected function dn_delete($dn){ - $result=ldap_delete($this->_conn, $dn); - if ($result!=true){ return (false); } - return (true); - } - - /** - * Convert a boolean value to a string - * You should never need to call this yourself - * - * @param bool $bool Boolean value - * @return string - */ - protected function bool2str($bool) { - return ($bool) ? 'TRUE' : 'FALSE'; - } - - /** - * Convert 8bit characters e.g. accented characters to UTF8 encoded characters - */ - protected function encode8bit(&$item, $key) { - $encode = false; - if (is_string($item)) { - for ($i=0; $i<strlen($item); $i++) { - if (ord($item[$i]) >> 7) { - $encode = true; - } - } - } - if ($encode === true && $key != 'password') { - $item = utf8_encode($item); - } - } -} - -/** -* adLDAP Exception Handler -* -* Exceptions of this type are thrown on bind failure or when SSL is required but not configured -* Example: -* try { -* $adldap = new adLDAP(); -* } -* catch (adLDAPException $e) { -* echo $e; -* exit(); -* } -*/ -class adLDAPException extends Exception {} - -?> diff --git a/inc/adLDAP/adLDAP.php b/inc/adLDAP/adLDAP.php new file mode 100644 index 000000000..a8f33b47e --- /dev/null +++ b/inc/adLDAP/adLDAP.php @@ -0,0 +1,951 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 169 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+
+/**
+* Main adLDAP class
+*
+* Can be initialised using $adldap = new adLDAP();
+*
+* Something to keep in mind is that Active Directory is a permissions
+* based directory. If you bind as a domain user, you can't fetch as
+* much information on other users as you could as a domain admin.
+*
+* Before asking questions, please read the Documentation at
+* http://adldap.sourceforge.net/wiki/doku.php?id=api
+*/
+require_once(dirname(__FILE__) . '/collections/adLDAPCollection.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPGroups.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPUsers.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPFolders.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPUtils.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPContacts.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPExchange.php');
+require_once(dirname(__FILE__) . '/classes/adLDAPComputers.php');
+
+class adLDAP {
+
+ /**
+ * Define the different types of account in AD
+ */
+ const ADLDAP_NORMAL_ACCOUNT = 805306368;
+ const ADLDAP_WORKSTATION_TRUST = 805306369;
+ const ADLDAP_INTERDOMAIN_TRUST = 805306370;
+ const ADLDAP_SECURITY_GLOBAL_GROUP = 268435456;
+ const ADLDAP_DISTRIBUTION_GROUP = 268435457;
+ const ADLDAP_SECURITY_LOCAL_GROUP = 536870912;
+ const ADLDAP_DISTRIBUTION_LOCAL_GROUP = 536870913;
+ const ADLDAP_FOLDER = 'OU';
+ const ADLDAP_CONTAINER = 'CN';
+
+ /**
+ * The default port for LDAP non-SSL connections
+ */
+ const ADLDAP_LDAP_PORT = '389';
+ /**
+ * The default port for LDAPS SSL connections
+ */
+ const ADLDAP_LDAPS_PORT = '636';
+
+ /**
+ * The account suffix for your domain, can be set when the class is invoked
+ *
+ * @var string
+ */
+ protected $accountSuffix = "@mydomain.local";
+
+ /**
+ * The base dn for your domain
+ *
+ * If this is set to null then adLDAP will attempt to obtain this automatically from the rootDSE
+ *
+ * @var string
+ */
+ protected $baseDn = "DC=mydomain,DC=local";
+
+ /**
+ * Port used to talk to the domain controllers.
+ *
+ * @var int
+ */
+ protected $adPort = self::ADLDAP_LDAP_PORT;
+
+ /**
+ * Array of domain controllers. Specifiy multiple controllers if you
+ * would like the class to balance the LDAP queries amongst multiple servers
+ *
+ * @var array
+ */
+ protected $domainControllers = array("dc01.mydomain.local");
+
+ /**
+ * Optional account with higher privileges for searching
+ * This should be set to a domain admin account
+ *
+ * @var string
+ * @var string
+ */
+ protected $adminUsername = NULL;
+ protected $adminPassword = NULL;
+
+ /**
+ * AD does not return the primary group. http://support.microsoft.com/?kbid=321360
+ * This tweak will resolve the real primary group.
+ * Setting to false will fudge "Domain Users" and is much faster. Keep in mind though that if
+ * someone's primary group is NOT domain users, this is obviously going to mess up the results
+ *
+ * @var bool
+ */
+ protected $realPrimaryGroup = true;
+
+ /**
+ * Use SSL (LDAPS), your server needs to be setup, please see
+ * http://adldap.sourceforge.net/wiki/doku.php?id=ldap_over_ssl
+ *
+ * @var bool
+ */
+ protected $useSSL = false;
+
+ /**
+ * Use TLS
+ * If you wish to use TLS you should ensure that $useSSL is set to false and vice-versa
+ *
+ * @var bool
+ */
+ protected $useTLS = false;
+
+ /**
+ * Use SSO
+ * To indicate to adLDAP to reuse password set by the brower through NTLM or Kerberos
+ *
+ * @var bool
+ */
+ protected $useSSO = false;
+
+ /**
+ * When querying group memberships, do it recursively
+ * eg. User Fred is a member of Group A, which is a member of Group B, which is a member of Group C
+ * user_ingroup("Fred","C") will returns true with this option turned on, false if turned off
+ *
+ * @var bool
+ */
+ protected $recursiveGroups = true;
+
+ // You should not need to edit anything below this line
+ //******************************************************************************************
+
+ /**
+ * Connection and bind default variables
+ *
+ * @var mixed
+ * @var mixed
+ */
+ protected $ldapConnection;
+ protected $ldapBind;
+
+ /**
+ * Get the active LDAP Connection
+ *
+ * @return resource
+ */
+ public function getLdapConnection() {
+ if ($this->ldapConnection) {
+ return $this->ldapConnection;
+ }
+ return false;
+ }
+
+ /**
+ * Get the bind status
+ *
+ * @return bool
+ */
+ public function getLdapBind() {
+ return $this->ldapBind;
+ }
+
+ /**
+ * Get the current base DN
+ *
+ * @return string
+ */
+ public function getBaseDn() {
+ return $this->baseDn;
+ }
+
+ /**
+ * The group class
+ *
+ * @var adLDAPGroups
+ */
+ protected $groupClass;
+
+ /**
+ * Get the group class interface
+ *
+ * @return adLDAPGroups
+ */
+ public function group() {
+ if (!$this->groupClass) {
+ $this->groupClass = new adLDAPGroups($this);
+ }
+ return $this->groupClass;
+ }
+
+ /**
+ * The user class
+ *
+ * @var adLDAPUsers
+ */
+ protected $userClass;
+
+ /**
+ * Get the userclass interface
+ *
+ * @return adLDAPUsers
+ */
+ public function user() {
+ if (!$this->userClass) {
+ $this->userClass = new adLDAPUsers($this);
+ }
+ return $this->userClass;
+ }
+
+ /**
+ * The folders class
+ *
+ * @var adLDAPFolders
+ */
+ protected $folderClass;
+
+ /**
+ * Get the folder class interface
+ *
+ * @return adLDAPFolders
+ */
+ public function folder() {
+ if (!$this->folderClass) {
+ $this->folderClass = new adLDAPFolders($this);
+ }
+ return $this->folderClass;
+ }
+
+ /**
+ * The utils class
+ *
+ * @var adLDAPUtils
+ */
+ protected $utilClass;
+
+ /**
+ * Get the utils class interface
+ *
+ * @return adLDAPUtils
+ */
+ public function utilities() {
+ if (!$this->utilClass) {
+ $this->utilClass = new adLDAPUtils($this);
+ }
+ return $this->utilClass;
+ }
+
+ /**
+ * The contacts class
+ *
+ * @var adLDAPContacts
+ */
+ protected $contactClass;
+
+ /**
+ * Get the contacts class interface
+ *
+ * @return adLDAPContacts
+ */
+ public function contact() {
+ if (!$this->contactClass) {
+ $this->contactClass = new adLDAPContacts($this);
+ }
+ return $this->contactClass;
+ }
+
+ /**
+ * The exchange class
+ *
+ * @var adLDAPExchange
+ */
+ protected $exchangeClass;
+
+ /**
+ * Get the exchange class interface
+ *
+ * @return adLDAPExchange
+ */
+ public function exchange() {
+ if (!$this->exchangeClass) {
+ $this->exchangeClass = new adLDAPExchange($this);
+ }
+ return $this->exchangeClass;
+ }
+
+ /**
+ * The computers class
+ *
+ * @var adLDAPComputers
+ */
+ protected $computersClass;
+
+ /**
+ * Get the computers class interface
+ *
+ * @return adLDAPComputers
+ */
+ public function computer() {
+ if (!$this->computerClass) {
+ $this->computerClass = new adLDAPComputers($this);
+ }
+ return $this->computerClass;
+ }
+
+ /**
+ * Getters and Setters
+ */
+
+ /**
+ * Set the account suffix
+ *
+ * @param string $accountSuffix
+ * @return void
+ */
+ public function setAccountSuffix($accountSuffix)
+ {
+ $this->accountSuffix = $accountSuffix;
+ }
+
+ /**
+ * Get the account suffix
+ *
+ * @return string
+ */
+ public function getAccountSuffix()
+ {
+ return $this->accountSuffix;
+ }
+
+ /**
+ * Set the domain controllers array
+ *
+ * @param array $domainControllers
+ * @return void
+ */
+ public function setDomainControllers(array $domainControllers)
+ {
+ $this->domainControllers = $domainControllers;
+ }
+
+ /**
+ * Get the list of domain controllers
+ *
+ * @return void
+ */
+ public function getDomainControllers()
+ {
+ return $this->domainControllers;
+ }
+
+ /**
+ * Sets the port number your domain controller communicates over
+ *
+ * @param int $adPort
+ */
+ public function setPort($adPort)
+ {
+ $this->adPort = $adPort;
+ }
+
+ /**
+ * Gets the port number your domain controller communicates over
+ *
+ * @return int
+ */
+ public function getPort()
+ {
+ return $this->adPort;
+ }
+
+ /**
+ * Set the username of an account with higher priviledges
+ *
+ * @param string $adminUsername
+ * @return void
+ */
+ public function setAdminUsername($adminUsername)
+ {
+ $this->adminUsername = $adminUsername;
+ }
+
+ /**
+ * Get the username of the account with higher priviledges
+ *
+ * This will throw an exception for security reasons
+ */
+ public function getAdminUsername()
+ {
+ throw new adLDAPException('For security reasons you cannot access the domain administrator account details');
+ }
+
+ /**
+ * Set the password of an account with higher priviledges
+ *
+ * @param string $adminPassword
+ * @return void
+ */
+ public function setAdminPassword($adminPassword)
+ {
+ $this->adminPassword = $adminPassword;
+ }
+
+ /**
+ * Get the password of the account with higher priviledges
+ *
+ * This will throw an exception for security reasons
+ */
+ public function getAdminPassword()
+ {
+ throw new adLDAPException('For security reasons you cannot access the domain administrator account details');
+ }
+
+ /**
+ * Set whether to detect the true primary group
+ *
+ * @param bool $realPrimaryGroup
+ * @return void
+ */
+ public function setRealPrimaryGroup($realPrimaryGroup)
+ {
+ $this->realPrimaryGroup = $realPrimaryGroup;
+ }
+
+ /**
+ * Get the real primary group setting
+ *
+ * @return bool
+ */
+ public function getRealPrimaryGroup()
+ {
+ return $this->realPrimaryGroup;
+ }
+
+ /**
+ * Set whether to use SSL
+ *
+ * @param bool $useSSL
+ * @return void
+ */
+ public function setUseSSL($useSSL)
+ {
+ $this->useSSL = $useSSL;
+ // Set the default port correctly
+ if($this->useSSL) {
+ $this->setPort(self::ADLDAP_LDAPS_PORT);
+ }
+ else {
+ $this->setPort(self::ADLDAP_LDAP_PORT);
+ }
+ }
+
+ /**
+ * Get the SSL setting
+ *
+ * @return bool
+ */
+ public function getUseSSL()
+ {
+ return $this->useSSL;
+ }
+
+ /**
+ * Set whether to use TLS
+ *
+ * @param bool $useTLS
+ * @return void
+ */
+ public function setUseTLS($useTLS)
+ {
+ $this->useTLS = $useTLS;
+ }
+
+ /**
+ * Get the TLS setting
+ *
+ * @return bool
+ */
+ public function getUseTLS()
+ {
+ return $this->useTLS;
+ }
+
+ /**
+ * Set whether to use SSO
+ * Requires ldap_sasl_bind support. Be sure --with-ldap-sasl is used when configuring PHP otherwise this function will be undefined.
+ *
+ * @param bool $useSSO
+ * @return void
+ */
+ public function setUseSSO($useSSO)
+ {
+ if ($useSSO === true && !$this->ldapSaslSupported()) {
+ throw new adLDAPException('No LDAP SASL support for PHP. See: http://www.php.net/ldap_sasl_bind');
+ }
+ $this->useSSO = $useSSO;
+ }
+
+ /**
+ * Get the SSO setting
+ *
+ * @return bool
+ */
+ public function getUseSSO()
+ {
+ return $this->useSSO;
+ }
+
+ /**
+ * Set whether to lookup recursive groups
+ *
+ * @param bool $recursiveGroups
+ * @return void
+ */
+ public function setRecursiveGroups($recursiveGroups)
+ {
+ $this->recursiveGroups = $recursiveGroups;
+ }
+
+ /**
+ * Get the recursive groups setting
+ *
+ * @return bool
+ */
+ public function getRecursiveGroups()
+ {
+ return $this->recursiveGroups;
+ }
+
+ /**
+ * Default Constructor
+ *
+ * Tries to bind to the AD domain over LDAP or LDAPs
+ *
+ * @param array $options Array of options to pass to the constructor
+ * @throws Exception - if unable to bind to Domain Controller
+ * @return bool
+ */
+ function __construct($options = array()) {
+ // You can specifically overide any of the default configuration options setup above
+ if (count($options) > 0) {
+ if (array_key_exists("account_suffix",$options)){ $this->accountSuffix = $options["account_suffix"]; }
+ if (array_key_exists("base_dn",$options)){ $this->baseDn = $options["base_dn"]; }
+ if (array_key_exists("domain_controllers",$options)){
+ if (!is_array($options["domain_controllers"])) {
+ throw new adLDAPException('[domain_controllers] option must be an array');
+ }
+ $this->domainControllers = $options["domain_controllers"];
+ }
+ if (array_key_exists("admin_username",$options)){ $this->adminUsername = $options["admin_username"]; }
+ if (array_key_exists("admin_password",$options)){ $this->adminPassword = $options["admin_password"]; }
+ if (array_key_exists("real_primarygroup",$options)){ $this->realPrimaryGroup = $options["real_primarygroup"]; }
+ if (array_key_exists("use_ssl",$options)){ $this->setUseSSL($options["use_ssl"]); }
+ if (array_key_exists("use_tls",$options)){ $this->useTLS = $options["use_tls"]; }
+ if (array_key_exists("recursive_groups",$options)){ $this->recursiveGroups = $options["recursive_groups"]; }
+ if (array_key_exists("ad_port",$options)){ $this->setPort($options["ad_port"]); }
+ if (array_key_exists("sso",$options)) {
+ $this->setUseSSO($options["sso"]);
+ if (!$this->ldapSaslSupported()) {
+ $this->setUseSSO(false);
+ }
+ }
+ }
+
+ if ($this->ldapSupported() === false) {
+ throw new adLDAPException('No LDAP support for PHP. See: http://www.php.net/ldap');
+ }
+
+ return $this->connect();
+ }
+
+ /**
+ * Default Destructor
+ *
+ * Closes the LDAP connection
+ *
+ * @return void
+ */
+ function __destruct() {
+ $this->close();
+ }
+
+ /**
+ * Connects and Binds to the Domain Controller
+ *
+ * @return bool
+ */
+ public function connect()
+ {
+ // Connect to the AD/LDAP server as the username/password
+ $domainController = $this->randomController();
+ if ($this->useSSL) {
+ $this->ldapConnection = ldap_connect("ldaps://" . $domainController, $this->adPort);
+ } else {
+ $this->ldapConnection = ldap_connect($domainController, $this->adPort);
+ }
+
+ // Set some ldap options for talking to AD
+ ldap_set_option($this->ldapConnection, LDAP_OPT_PROTOCOL_VERSION, 3);
+ ldap_set_option($this->ldapConnection, LDAP_OPT_REFERRALS, 0);
+
+ if ($this->useTLS) {
+ ldap_start_tls($this->ldapConnection);
+ }
+
+ // Bind as a domain admin if they've set it up
+ if ($this->adminUsername !== NULL && $this->adminPassword !== NULL) {
+ $this->ldapBind = @ldap_bind($this->ldapConnection, $this->adminUsername . $this->accountSuffix, $this->adminPassword);
+ if (!$this->ldapBind) {
+ if ($this->useSSL && !$this->useTLS) {
+ // If you have problems troubleshooting, remove the @ character from the ldapldapBind command above to get the actual error message
+ throw new adLDAPException('Bind to Active Directory failed. Either the LDAPs connection failed or the login credentials are incorrect. AD said: ' . $this->getLastError());
+ }
+ else {
+ throw new adLDAPException('Bind to Active Directory failed. Check the login credentials and/or server details. AD said: ' . $this->getLastError());
+ }
+ }
+ }
+ if ($this->useSSO && $_SERVER['REMOTE_USER'] && $this->adminUsername === null && $_SERVER['KRB5CCNAME']) {
+ putenv("KRB5CCNAME=" . $_SERVER['KRB5CCNAME']);
+ $this->ldapBind = @ldap_sasl_bind($this->ldapConnection, NULL, NULL, "GSSAPI");
+ if (!$this->ldapBind){
+ throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->getLastError());
+ }
+ else {
+ return true;
+ }
+ }
+
+
+ if ($this->baseDn == NULL) {
+ $this->baseDn = $this->findBaseDn();
+ }
+
+ return true;
+ }
+
+ /**
+ * Closes the LDAP connection
+ *
+ * @return void
+ */
+ public function close() {
+ if ($this->ldapConnection) {
+ @ldap_close($this->ldapConnection);
+ }
+ }
+
+ /**
+ * Validate a user's login credentials
+ *
+ * @param string $username A user's AD username
+ * @param string $password A user's AD password
+ * @param bool optional $preventRebind
+ * @return bool
+ */
+ public function authenticate($username, $password, $preventRebind = false) {
+ // Prevent null binding
+ if ($username === NULL || $password === NULL) { return false; }
+ if (empty($username) || empty($password)) { return false; }
+
+ // Allow binding over SSO for Kerberos
+ if ($this->useSSO && $_SERVER['REMOTE_USER'] && $_SERVER['REMOTE_USER'] == $username && $this->adminUsername === NULL && $_SERVER['KRB5CCNAME']) {
+ putenv("KRB5CCNAME=" . $_SERVER['KRB5CCNAME']);
+ $this->ldapBind = @ldap_sasl_bind($this->ldapConnection, NULL, NULL, "GSSAPI");
+ if (!$this->ldapBind) {
+ throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->getLastError());
+ }
+ else {
+ return true;
+ }
+ }
+
+ // Bind as the user
+ $ret = true;
+ $this->ldapBind = @ldap_bind($this->ldapConnection, $username . $this->accountSuffix, $password);
+ if (!$this->ldapBind){
+ $ret = false;
+ }
+
+ // Cnce we've checked their details, kick back into admin mode if we have it
+ if ($this->adminUsername !== NULL && !$preventRebind) {
+ $this->ldapBind = @ldap_bind($this->ldapConnection, $this->adminUsername . $this->accountSuffix , $this->adminPassword);
+ if (!$this->ldapBind){
+ // This should never happen in theory
+ throw new adLDAPException('Rebind to Active Directory failed. AD said: ' . $this->getLastError());
+ }
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Find the Base DN of your domain controller
+ *
+ * @return string
+ */
+ public function findBaseDn()
+ {
+ $namingContext = $this->getRootDse(array('defaultnamingcontext'));
+ return $namingContext[0]['defaultnamingcontext'][0];
+ }
+
+ /**
+ * Get the RootDSE properties from a domain controller
+ *
+ * @param array $attributes The attributes you wish to query e.g. defaultnamingcontext
+ * @return array
+ */
+ public function getRootDse($attributes = array("*", "+")) {
+ if (!$this->ldapBind){ return (false); }
+
+ $sr = @ldap_read($this->ldapConnection, NULL, 'objectClass=*', $attributes);
+ $entries = @ldap_get_entries($this->ldapConnection, $sr);
+ return $entries;
+ }
+
+ /**
+ * Get last error from Active Directory
+ *
+ * This function gets the last message from Active Directory
+ * This may indeed be a 'Success' message but if you get an unknown error
+ * it might be worth calling this function to see what errors were raised
+ *
+ * return string
+ */
+ public function getLastError() {
+ return @ldap_error($this->ldapConnection);
+ }
+
+ /**
+ * Detect LDAP support in php
+ *
+ * @return bool
+ */
+ protected function ldapSupported()
+ {
+ if (!function_exists('ldap_connect')) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Detect ldap_sasl_bind support in PHP
+ *
+ * @return bool
+ */
+ protected function ldapSaslSupported()
+ {
+ if (!function_exists('ldap_sasl_bind')) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Schema
+ *
+ * @param array $attributes Attributes to be queried
+ * @return array
+ */
+ public function adldap_schema($attributes){
+
+ // LDAP doesn't like NULL attributes, only set them if they have values
+ // If you wish to remove an attribute you should set it to a space
+ // TO DO: Adapt user_modify to use ldap_mod_delete to remove a NULL attribute
+ $mod=array();
+
+ // Check every attribute to see if it contains 8bit characters and then UTF8 encode them
+ array_walk($attributes, array($this, 'encode8bit'));
+
+ if ($attributes["address_city"]){ $mod["l"][0]=$attributes["address_city"]; }
+ if ($attributes["address_code"]){ $mod["postalCode"][0]=$attributes["address_code"]; }
+ //if ($attributes["address_country"]){ $mod["countryCode"][0]=$attributes["address_country"]; } // use country codes?
+ if ($attributes["address_country"]){ $mod["c"][0]=$attributes["address_country"]; }
+ if ($attributes["address_pobox"]){ $mod["postOfficeBox"][0]=$attributes["address_pobox"]; }
+ if ($attributes["address_state"]){ $mod["st"][0]=$attributes["address_state"]; }
+ if ($attributes["address_street"]){ $mod["streetAddress"][0]=$attributes["address_street"]; }
+ if ($attributes["company"]){ $mod["company"][0]=$attributes["company"]; }
+ if ($attributes["change_password"]){ $mod["pwdLastSet"][0]=0; }
+ if ($attributes["department"]){ $mod["department"][0]=$attributes["department"]; }
+ if ($attributes["description"]){ $mod["description"][0]=$attributes["description"]; }
+ if ($attributes["display_name"]){ $mod["displayName"][0]=$attributes["display_name"]; }
+ if ($attributes["email"]){ $mod["mail"][0]=$attributes["email"]; }
+ if ($attributes["expires"]){ $mod["accountExpires"][0]=$attributes["expires"]; } //unix epoch format?
+ if ($attributes["firstname"]){ $mod["givenName"][0]=$attributes["firstname"]; }
+ if ($attributes["home_directory"]){ $mod["homeDirectory"][0]=$attributes["home_directory"]; }
+ if ($attributes["home_drive"]){ $mod["homeDrive"][0]=$attributes["home_drive"]; }
+ if ($attributes["initials"]){ $mod["initials"][0]=$attributes["initials"]; }
+ if ($attributes["logon_name"]){ $mod["userPrincipalName"][0]=$attributes["logon_name"]; }
+ if ($attributes["manager"]){ $mod["manager"][0]=$attributes["manager"]; } //UNTESTED ***Use DistinguishedName***
+ if ($attributes["office"]){ $mod["physicalDeliveryOfficeName"][0]=$attributes["office"]; }
+ if ($attributes["password"]){ $mod["unicodePwd"][0]=$this->user()->encodePassword($attributes["password"]); }
+ if ($attributes["profile_path"]){ $mod["profilepath"][0]=$attributes["profile_path"]; }
+ if ($attributes["script_path"]){ $mod["scriptPath"][0]=$attributes["script_path"]; }
+ if ($attributes["surname"]){ $mod["sn"][0]=$attributes["surname"]; }
+ if ($attributes["title"]){ $mod["title"][0]=$attributes["title"]; }
+ if ($attributes["telephone"]){ $mod["telephoneNumber"][0]=$attributes["telephone"]; }
+ if ($attributes["mobile"]){ $mod["mobile"][0]=$attributes["mobile"]; }
+ if ($attributes["pager"]){ $mod["pager"][0]=$attributes["pager"]; }
+ if ($attributes["ipphone"]){ $mod["ipphone"][0]=$attributes["ipphone"]; }
+ if ($attributes["web_page"]){ $mod["wWWHomePage"][0]=$attributes["web_page"]; }
+ if ($attributes["fax"]){ $mod["facsimileTelephoneNumber"][0]=$attributes["fax"]; }
+ if ($attributes["enabled"]){ $mod["userAccountControl"][0]=$attributes["enabled"]; }
+ if ($attributes["homephone"]){ $mod["homephone"][0]=$attributes["homephone"]; }
+
+ // Distribution List specific schema
+ if ($attributes["group_sendpermission"]){ $mod["dlMemSubmitPerms"][0]=$attributes["group_sendpermission"]; }
+ if ($attributes["group_rejectpermission"]){ $mod["dlMemRejectPerms"][0]=$attributes["group_rejectpermission"]; }
+
+ // Exchange Schema
+ if ($attributes["exchange_homemdb"]){ $mod["homeMDB"][0]=$attributes["exchange_homemdb"]; }
+ if ($attributes["exchange_mailnickname"]){ $mod["mailNickname"][0]=$attributes["exchange_mailnickname"]; }
+ if ($attributes["exchange_proxyaddress"]){ $mod["proxyAddresses"][0]=$attributes["exchange_proxyaddress"]; }
+ if ($attributes["exchange_usedefaults"]){ $mod["mDBUseDefaults"][0]=$attributes["exchange_usedefaults"]; }
+ if ($attributes["exchange_policyexclude"]){ $mod["msExchPoliciesExcluded"][0]=$attributes["exchange_policyexclude"]; }
+ if ($attributes["exchange_policyinclude"]){ $mod["msExchPoliciesIncluded"][0]=$attributes["exchange_policyinclude"]; }
+ if ($attributes["exchange_addressbook"]){ $mod["showInAddressBook"][0]=$attributes["exchange_addressbook"]; }
+ if ($attributes["exchange_altrecipient"]){ $mod["altRecipient"][0]=$attributes["exchange_altrecipient"]; }
+ if ($attributes["exchange_deliverandredirect"]){ $mod["deliverAndRedirect"][0]=$attributes["exchange_deliverandredirect"]; }
+
+ // This schema is designed for contacts
+ if ($attributes["exchange_hidefromlists"]){ $mod["msExchHideFromAddressLists"][0]=$attributes["exchange_hidefromlists"]; }
+ if ($attributes["contact_email"]){ $mod["targetAddress"][0]=$attributes["contact_email"]; }
+
+ //echo ("<pre>"); print_r($mod);
+ /*
+ // modifying a name is a bit fiddly
+ if ($attributes["firstname"] && $attributes["surname"]){
+ $mod["cn"][0]=$attributes["firstname"]." ".$attributes["surname"];
+ $mod["displayname"][0]=$attributes["firstname"]." ".$attributes["surname"];
+ $mod["name"][0]=$attributes["firstname"]." ".$attributes["surname"];
+ }
+ */
+
+ if (count($mod)==0){ return (false); }
+ return ($mod);
+ }
+
+ /**
+ * Convert 8bit characters e.g. accented characters to UTF8 encoded characters
+ */
+ protected function encode8Bit(&$item, $key) {
+ $encode = false;
+ if (is_string($item)) {
+ for ($i=0; $i<strlen($item); $i++) {
+ if (ord($item[$i]) >> 7) {
+ $encode = true;
+ }
+ }
+ }
+ if ($encode === true && $key != 'password') {
+ $item = utf8_encode($item);
+ }
+ }
+
+ /**
+ * Select a random domain controller from your domain controller array
+ *
+ * @return string
+ */
+ protected function randomController()
+ {
+ mt_srand(doubleval(microtime()) * 100000000); // For older PHP versions
+ /*if (sizeof($this->domainControllers) > 1) {
+ $adController = $this->domainControllers[array_rand($this->domainControllers)];
+ // Test if the controller is responding to pings
+ $ping = $this->pingController($adController);
+ if ($ping === false) {
+ // Find the current key in the domain controllers array
+ $key = array_search($adController, $this->domainControllers);
+ // Remove it so that we don't end up in a recursive loop
+ unset($this->domainControllers[$key]);
+ // Select a new controller
+ return $this->randomController();
+ }
+ else {
+ return ($adController);
+ }
+ } */
+ return $this->domainControllers[array_rand($this->domainControllers)];
+ }
+
+ /**
+ * Test basic connectivity to controller
+ *
+ * @return bool
+ */
+ protected function pingController($host) {
+ $port = $this->adPort;
+ fsockopen($host, $port, $errno, $errstr, 10);
+ if ($errno > 0) {
+ return false;
+ }
+ return true;
+ }
+
+}
+
+/**
+* adLDAP Exception Handler
+*
+* Exceptions of this type are thrown on bind failure or when SSL is required but not configured
+* Example:
+* try {
+* $adldap = new adLDAP();
+* }
+* catch (adLDAPException $e) {
+* echo $e;
+* exit();
+* }
+*/
+class adLDAPException extends Exception {}
+
+?>
\ No newline at end of file diff --git a/inc/adLDAP/classes/adLDAPComputers.php b/inc/adLDAP/classes/adLDAPComputers.php new file mode 100644 index 000000000..71b24a04f --- /dev/null +++ b/inc/adLDAP/classes/adLDAPComputers.php @@ -0,0 +1,153 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Computers
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPComputerCollection.php');
+
+/**
+* COMPUTER MANAGEMENT FUNCTIONS
+*/
+class adLDAPComputers {
+
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+ /**
+ * Get information about a specific computer. Returned in a raw array format from AD
+ *
+ * @param string $computerName The name of the computer
+ * @param array $fields Attributes to return
+ * @return array
+ */
+ public function info($computerName, $fields = NULL)
+ {
+ if ($computerName === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $filter = "(&(objectClass=computer)(cn=" . $computerName . "))";
+ if ($fields === NULL) {
+ $fields = array("memberof","cn","displayname","dnshostname","distinguishedname","objectcategory","operatingsystem","operatingsystemservicepack","operatingsystemversion");
+ }
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ return $entries;
+ }
+
+ /**
+ * Find information about the computers. Returned in a raw array format from AD
+ *
+ * @param string $computerName The name of the computer
+ * @param array $fields Array of parameters to query
+ * @return mixed
+ */
+ public function infoCollection($computerName, $fields = NULL)
+ {
+ if ($computerName === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $info = $this->info($computerName, $fields);
+
+ if ($info !== false) {
+ $collection = new adLDAPComputerCollection($info, $this->adldap);
+ return $collection;
+ }
+ return false;
+ }
+
+ /**
+ * Check if a computer is in a group
+ *
+ * @param string $computerName The name of the computer
+ * @param string $group The group to check
+ * @param bool $recursive Whether to check recursively
+ * @return array
+ */
+ public function inGroup($computerName, $group, $recursive = NULL)
+ {
+ if ($computerName === NULL) { return false; }
+ if ($group === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // use the default option if they haven't set it
+
+ //get a list of the groups
+ $groups = $this->groups($computerName, array("memberof"), $recursive);
+
+ //return true if the specified group is in the group list
+ if (in_array($group, $groups)){
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the groups a computer is in
+ *
+ * @param string $computerName The name of the computer
+ * @param bool $recursive Whether to check recursively
+ * @return array
+ */
+ public function groups($computerName, $recursive = NULL)
+ {
+ if ($computerName === NULL) { return false; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+ if (!$this->adldap->getLdapBind()){ return false; }
+
+ //search the directory for their information
+ $info = @$this->info($computerName, array("memberof", "primarygroupid"));
+ $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); //presuming the entry returned is our guy (unique usernames)
+
+ if ($recursive === true) {
+ foreach ($groups as $id => $groupName){
+ $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
+ $groups = array_merge($groups, $extraGroups);
+ }
+ }
+
+ return $groups;
+ }
+
+}
+?>
\ No newline at end of file diff --git a/inc/adLDAP/classes/adLDAPContacts.php b/inc/adLDAP/classes/adLDAPContacts.php new file mode 100644 index 000000000..addd3e5f0 --- /dev/null +++ b/inc/adLDAP/classes/adLDAPContacts.php @@ -0,0 +1,294 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Contacts
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPContactCollection.php');
+
+class adLDAPContacts {
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+ //*****************************************************************************************************************
+ // CONTACT FUNCTIONS
+ // * Still work to do in this area, and new functions to write
+
+ /**
+ * Create a contact
+ *
+ * @param array $attributes The attributes to set to the contact
+ * @return bool
+ */
+ public function create($attributes)
+ {
+ // Check for compulsory fields
+ if (!array_key_exists("display_name", $attributes)) { return "Missing compulsory field [display_name]"; }
+ if (!array_key_exists("email", $attributes)) { return "Missing compulsory field [email]"; }
+ if (!array_key_exists("container", $attributes)) { return "Missing compulsory field [container]"; }
+ if (!is_array($attributes["container"])) { return "Container attribute must be an array."; }
+
+ // Translate the schema
+ $add = $this->adldap->adldap_schema($attributes);
+
+ // Additional stuff only used for adding contacts
+ $add["cn"][0] = $attributes["display_name"];
+ $add["objectclass"][0] = "top";
+ $add["objectclass"][1] = "person";
+ $add["objectclass"][2] = "organizationalPerson";
+ $add["objectclass"][3] = "contact";
+ if (!isset($attributes['exchange_hidefromlists'])) {
+ $add["msExchHideFromAddressLists"][0] = "TRUE";
+ }
+
+ // Determine the container
+ $attributes["container"] = array_reverse($attributes["container"]);
+ $container= "OU=" . implode(",OU=", $attributes["container"]);
+
+ // Add the entry
+ $result = @ldap_add($this->adldap->getLdapConnection(), "CN=" . $this->adldap->utilities()->escapeCharacters($add["cn"][0]) . ", " . $container . "," . $this->adldap->getBaseDn(), $add);
+ if ($result != true) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Determine the list of groups a contact is a member of
+ *
+ * @param string $distinguisedname The full DN of a contact
+ * @param bool $recursive Recursively check groups
+ * @return array
+ */
+ public function groups($distinguishedName, $recursive = NULL)
+ {
+ if ($distinguishedName === NULL) { return false; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+ if (!$this->adldap->getLdapBind()){ return false; }
+
+ // Search the directory for their information
+ $info = @$this->info($distinguishedName, array("memberof", "primarygroupid"));
+ $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); //presuming the entry returned is our contact
+
+ if ($recursive === true){
+ foreach ($groups as $id => $groupName){
+ $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
+ $groups = array_merge($groups, $extraGroups);
+ }
+ }
+
+ return $groups;
+ }
+
+ /**
+ * Get contact information. Returned in a raw array format from AD
+ *
+ * @param string $distinguisedname The full DN of a contact
+ * @param array $fields Attributes to be returned
+ * @return array
+ */
+ public function info($distinguishedName, $fields = NULL)
+ {
+ if ($distinguishedName === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $filter = "distinguishedName=" . $distinguishedName;
+ if ($fields === NULL) {
+ $fields = array("distinguishedname", "mail", "memberof", "department", "displayname", "telephonenumber", "primarygroupid", "objectsid");
+ }
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ if ($entries[0]['count'] >= 1) {
+ // AD does not return the primary group in the ldap query, we may need to fudge it
+ if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["primarygroupid"][0])){
+ //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
+ $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
+ } else {
+ $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
+ }
+ }
+
+ $entries[0]["memberof"]["count"]++;
+ return $entries;
+ }
+
+ /**
+ * Find information about the contacts. Returned in a raw array format from AD
+ *
+ * @param string $distinguishedName The full DN of a contact
+ * @param array $fields Array of parameters to query
+ * @return mixed
+ */
+ public function infoCollection($distinguishedName, $fields = NULL)
+ {
+ if ($distinguishedName === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $info = $this->info($distinguishedName, $fields);
+
+ if ($info !== false) {
+ $collection = new adLDAPContactCollection($info, $this->adldap);
+ return $collection;
+ }
+ return false;
+ }
+
+ /**
+ * Determine if a contact is a member of a group
+ *
+ * @param string $distinguisedName The full DN of a contact
+ * @param string $group The group name to query
+ * @param bool $recursive Recursively check groups
+ * @return bool
+ */
+ public function inGroup($distinguisedName, $group, $recursive = NULL)
+ {
+ if ($distinguisedName === NULL) { return false; }
+ if ($group === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+
+ // Get a list of the groups
+ $groups = $this->groups($distinguisedName, array("memberof"), $recursive);
+
+ // Return true if the specified group is in the group list
+ if (in_array($group, $groups)){
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Modify a contact
+ *
+ * @param string $distinguishedName The contact to query
+ * @param array $attributes The attributes to modify. Note if you set the enabled attribute you must not specify any other attributes
+ * @return bool
+ */
+ public function modify($distinguishedName, $attributes) {
+ if ($distinguishedName === NULL) { return "Missing compulsory field [distinguishedname]"; }
+
+ // Translate the update to the LDAP schema
+ $mod = $this->adldap->adldap_schema($attributes);
+
+ // Check to see if this is an enabled status update
+ if (!$mod) {
+ return false;
+ }
+
+ // Do the update
+ $result = ldap_modify($this->adldap->getLdapConnection(), $distinguishedName, $mod);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Delete a contact
+ *
+ * @param string $distinguishedName The contact dn to delete (please be careful here!)
+ * @return array
+ */
+ public function delete($distinguishedName)
+ {
+ $result = $this->folder()->delete($distinguishedName);
+ if ($result != true) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Return a list of all contacts
+ *
+ * @param bool $includeDescription Include a description of a contact
+ * @param string $search The search parameters
+ * @param bool $sorted Whether to sort the results
+ * @return array
+ */
+ public function all($includeDescription = false, $search = "*", $sorted = true) {
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ // Perform the search and grab all their details
+ $filter = "(&(objectClass=contact)(cn=" . $search . "))";
+ $fields = array("displayname","distinguishedname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ $usersArray = array();
+ for ($i=0; $i<$entries["count"]; $i++){
+ if ($includeDescription && strlen($entries[$i]["displayname"][0])>0){
+ $usersArray[$entries[$i]["distinguishedname"][0]] = $entries[$i]["displayname"][0];
+ } elseif ($includeDescription){
+ $usersArray[$entries[$i]["distinguishedname"][0]] = $entries[$i]["distinguishedname"][0];
+ } else {
+ array_push($usersArray, $entries[$i]["distinguishedname"][0]);
+ }
+ }
+ if ($sorted) {
+ asort($usersArray);
+ }
+ return $usersArray;
+ }
+
+ /**
+ * Mail enable a contact
+ * Allows email to be sent to them through Exchange
+ *
+ * @param string $distinguishedname The contact to mail enable
+ * @param string $emailaddress The email address to allow emails to be sent through
+ * @param string $mailnickname The mailnickname for the contact in Exchange. If NULL this will be set to the display name
+ * @return bool
+ */
+ public function contactMailEnable($distinguishedName, $emailAddress, $mailNickname = NULL){
+ return $this->adldap->exchange()->contactMailEnable($distinguishedName, $emailAddress, $mailNickname);
+ }
+
+
+}
+?>
diff --git a/inc/adLDAP/classes/adLDAPExchange.php b/inc/adLDAP/classes/adLDAPExchange.php new file mode 100644 index 000000000..dd0c6de05 --- /dev/null +++ b/inc/adLDAP/classes/adLDAPExchange.php @@ -0,0 +1,390 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Exchange
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+
+/**
+* MICROSOFT EXCHANGE FUNCTIONS
+*/
+class adLDAPExchange {
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+ /**
+ * Create an Exchange account
+ *
+ * @param string $username The username of the user to add the Exchange account to
+ * @param array $storageGroup The mailbox, Exchange Storage Group, for the user account, this must be a full CN
+ * If the storage group has a different base_dn to the adLDAP configuration, set it using $base_dn
+ * @param string $emailAddress The primary email address to add to this user
+ * @param string $mailNickname The mail nick name. If mail nickname is blank, the username will be used
+ * @param bool $mdbUseDefaults Indicates whether the store should use the default quota, rather than the per-mailbox quota.
+ * @param string $baseDn Specify an alternative base_dn for the Exchange storage group
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function createMailbox($username, $storageGroup, $emailAddress, $mailNickname=NULL, $useDefaults=TRUE, $baseDn=NULL, $isGUID=false)
+ {
+ if ($username === NULL){ return "Missing compulsory field [username]"; }
+ if ($storageGroup === NULL) { return "Missing compulsory array [storagegroup]"; }
+ if (!is_array($storageGroup)) { return "[storagegroup] must be an array"; }
+ if ($emailAddress === NULL) { return "Missing compulsory field [emailAddress]"; }
+
+ if ($baseDn === NULL) {
+ $baseDn = $this->adldap->getBaseDn();
+ }
+
+ $container = "CN=" . implode(",CN=", $storageGroup);
+
+ if ($mailNickname === NULL) {
+ $mailNickname = $username;
+ }
+ $mdbUseDefaults = $this->adldap->utilities()->boolToString($useDefaults);
+
+ $attributes = array(
+ 'exchange_homemdb'=>$container.",".$baseDn,
+ 'exchange_proxyaddress'=>'SMTP:' . $emailAddress,
+ 'exchange_mailnickname'=>$mailNickname,
+ 'exchange_usedefaults'=>$mdbUseDefaults
+ );
+ $result = $this->adldap->user()->modify($username, $attributes, $isGUID);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Add an X400 address to Exchange
+ * See http://tools.ietf.org/html/rfc1685 for more information.
+ * An X400 Address looks similar to this X400:c=US;a= ;p=Domain;o=Organization;s=Doe;g=John;
+ *
+ * @param string $username The username of the user to add the X400 to to
+ * @param string $country Country
+ * @param string $admd Administration Management Domain
+ * @param string $pdmd Private Management Domain (often your AD domain)
+ * @param string $org Organization
+ * @param string $surname Surname
+ * @param string $givenName Given name
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function addX400($username, $country, $admd, $pdmd, $org, $surname, $givenName, $isGUID=false)
+ {
+ if ($username === NULL){ return "Missing compulsory field [username]"; }
+
+ $proxyValue = 'X400:';
+
+ // Find the dn of the user
+ $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+ if ($user[0]["dn"] === NULL) { return false; }
+ $userDn = $user[0]["dn"];
+
+ // We do not have to demote an email address from the default so we can just add the new proxy address
+ $attributes['exchange_proxyaddress'] = $proxyValue . 'c=' . $country . ';a=' . $admd . ';p=' . $pdmd . ';o=' . $org . ';s=' . $surname . ';g=' . $givenName . ';';
+
+ // Translate the update to the LDAP schema
+ $add = $this->adldap->adldap_schema($attributes);
+
+ if (!$add) { return false; }
+
+ // Do the update
+ // Take out the @ to see any errors, usually this error might occur because the address already
+ // exists in the list of proxyAddresses
+ $result = @ldap_mod_add($this->adldap->getLdapConnection(), $userDn, $add);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Add an address to Exchange
+ *
+ * @param string $username The username of the user to add the Exchange account to
+ * @param string $emailAddress The email address to add to this user
+ * @param bool $default Make this email address the default address, this is a bit more intensive as we have to demote any existing default addresses
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function addAddress($username, $emailAddress, $default = FALSE, $isGUID = false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ if ($emailAddress === NULL) { return "Missing compulsory fields [emailAddress]"; }
+
+ $proxyValue = 'smtp:';
+ if ($default === true) {
+ $proxyValue = 'SMTP:';
+ }
+
+ // Find the dn of the user
+ $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+ if ($user[0]["dn"] === NULL){ return false; }
+ $userDn = $user[0]["dn"];
+
+ // We need to scan existing proxy addresses and demote the default one
+ if (is_array($user[0]["proxyaddresses"]) && $default === true) {
+ $modAddresses = array();
+ for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) {
+ if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false) {
+ $user[0]['proxyaddresses'][$i] = str_replace('SMTP:', 'smtp:', $user[0]['proxyaddresses'][$i]);
+ }
+ if ($user[0]['proxyaddresses'][$i] != '') {
+ $modAddresses['proxyAddresses'][$i] = $user[0]['proxyaddresses'][$i];
+ }
+ }
+ $modAddresses['proxyAddresses'][(sizeof($user[0]['proxyaddresses'])-1)] = 'SMTP:' . $emailAddress;
+
+ $result = @ldap_mod_replace($this->adldap->getLdapConnection(), $userDn, $modAddresses);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+ else {
+ // We do not have to demote an email address from the default so we can just add the new proxy address
+ $attributes['exchange_proxyaddress'] = $proxyValue . $emailAddress;
+
+ // Translate the update to the LDAP schema
+ $add = $this->adldap->adldap_schema($attributes);
+
+ if (!$add) {
+ return false;
+ }
+
+ // Do the update
+ // Take out the @ to see any errors, usually this error might occur because the address already
+ // exists in the list of proxyAddresses
+ $result = @ldap_mod_add($this->adldap->getLdapConnection(), $userDn,$add);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ /**
+ * Remove an address to Exchange
+ * If you remove a default address the account will no longer have a default,
+ * we recommend changing the default address first
+ *
+ * @param string $username The username of the user to add the Exchange account to
+ * @param string $emailAddress The email address to add to this user
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function deleteAddress($username, $emailAddress, $isGUID=false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ if ($emailAddress === NULL) { return "Missing compulsory fields [emailAddress]"; }
+
+ // Find the dn of the user
+ $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+ if ($user[0]["dn"] === NULL) { return false; }
+ $userDn = $user[0]["dn"];
+
+ if (is_array($user[0]["proxyaddresses"])) {
+ $mod = array();
+ for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) {
+ if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false && $user[0]['proxyaddresses'][$i] == 'SMTP:' . $emailAddress) {
+ $mod['proxyAddresses'][0] = 'SMTP:' . $emailAddress;
+ }
+ elseif (strstr($user[0]['proxyaddresses'][$i], 'smtp:') !== false && $user[0]['proxyaddresses'][$i] == 'smtp:' . $emailAddress) {
+ $mod['proxyAddresses'][0] = 'smtp:' . $emailAddress;
+ }
+ }
+
+ $result = @ldap_mod_del($this->adldap->getLdapConnection(), $userDn,$mod);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
+ /**
+ * Change the default address
+ *
+ * @param string $username The username of the user to add the Exchange account to
+ * @param string $emailAddress The email address to make default
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function primaryAddress($username, $emailAddress, $isGUID = false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ if ($emailAddress === NULL) { return "Missing compulsory fields [emailAddress]"; }
+
+ // Find the dn of the user
+ $user = $this->adldap->user()->info($username, array("cn","proxyaddresses"), $isGUID);
+ if ($user[0]["dn"] === NULL){ return false; }
+ $userDn = $user[0]["dn"];
+
+ if (is_array($user[0]["proxyaddresses"])) {
+ $modAddresses = array();
+ for ($i=0;$i<sizeof($user[0]['proxyaddresses']);$i++) {
+ if (strstr($user[0]['proxyaddresses'][$i], 'SMTP:') !== false) {
+ $user[0]['proxyaddresses'][$i] = str_replace('SMTP:', 'smtp:', $user[0]['proxyaddresses'][$i]);
+ }
+ if ($user[0]['proxyaddresses'][$i] == 'smtp:' . $emailAddress) {
+ $user[0]['proxyaddresses'][$i] = str_replace('smtp:', 'SMTP:', $user[0]['proxyaddresses'][$i]);
+ }
+ if ($user[0]['proxyaddresses'][$i] != '') {
+ $modAddresses['proxyAddresses'][$i] = $user[0]['proxyaddresses'][$i];
+ }
+ }
+
+ $result = @ldap_mod_replace($this->adldap->getLdapConnection(), $userDn, $modAddresses);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+
+ }
+
+ /**
+ * Mail enable a contact
+ * Allows email to be sent to them through Exchange
+ *
+ * @param string $distinguishedName The contact to mail enable
+ * @param string $emailAddress The email address to allow emails to be sent through
+ * @param string $mailNickname The mailnickname for the contact in Exchange. If NULL this will be set to the display name
+ * @return bool
+ */
+ public function contactMailEnable($distinguishedName, $emailAddress, $mailNickname = NULL)
+ {
+ if ($distinguishedName === NULL) { return "Missing compulsory field [distinguishedName]"; }
+ if ($emailAddress === NULL) { return "Missing compulsory field [emailAddress]"; }
+
+ if ($mailNickname !== NULL) {
+ // Find the dn of the user
+ $user = $this->adldap->contact()->info($distinguishedName, array("cn","displayname"));
+ if ($user[0]["displayname"] === NULL) { return false; }
+ $mailNickname = $user[0]['displayname'][0];
+ }
+
+ $attributes = array("email"=>$emailAddress,"contact_email"=>"SMTP:" . $emailAddress,"exchange_proxyaddress"=>"SMTP:" . $emailAddress,"exchange_mailnickname" => $mailNickname);
+
+ // Translate the update to the LDAP schema
+ $mod = $this->adldap->adldap_schema($attributes);
+
+ // Check to see if this is an enabled status update
+ if (!$mod) { return false; }
+
+ // Do the update
+ $result = ldap_modify($this->adldap->getLdapConnection(), $distinguishedName, $mod);
+ if ($result == false) { return false; }
+
+ return true;
+ }
+
+ /**
+ * Returns a list of Exchange Servers in the ConfigurationNamingContext of the domain
+ *
+ * @param array $attributes An array of the AD attributes you wish to return
+ * @return array
+ */
+ public function servers($attributes = array('cn','distinguishedname','serialnumber'))
+ {
+ if (!$this->adldap->getLdapBind()){ return false; }
+
+ $configurationNamingContext = $this->adldap->getRootDse(array('configurationnamingcontext'));
+ $sr = @ldap_search($this->adldap->getLdapConnection(), $configurationNamingContext[0]['configurationnamingcontext'][0],'(&(objectCategory=msExchExchangeServer))', $attributes);
+ $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ return $entries;
+ }
+
+ /**
+ * Returns a list of Storage Groups in Exchange for a given mail server
+ *
+ * @param string $exchangeServer The full DN of an Exchange server. You can use exchange_servers() to find the DN for your server
+ * @param array $attributes An array of the AD attributes you wish to return
+ * @param bool $recursive If enabled this will automatically query the databases within a storage group
+ * @return array
+ */
+ public function storageGroups($exchangeServer, $attributes = array('cn','distinguishedname'), $recursive = NULL)
+ {
+ if (!$this->adldap->getLdapBind()){ return false; }
+ if ($exchangeServer === NULL) { return "Missing compulsory field [exchangeServer]"; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); }
+
+ $filter = '(&(objectCategory=msExchStorageGroup))';
+ $sr = @ldap_search($this->adldap->getLdapConnection(), $exchangeServer, $filter, $attributes);
+ $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ if ($recursive === true) {
+ for ($i=0; $i<$entries['count']; $i++) {
+ $entries[$i]['msexchprivatemdb'] = $this->storageDatabases($entries[$i]['distinguishedname'][0]);
+ }
+ }
+
+ return $entries;
+ }
+
+ /**
+ * Returns a list of Databases within any given storage group in Exchange for a given mail server
+ *
+ * @param string $storageGroup The full DN of an Storage Group. You can use exchange_storage_groups() to find the DN
+ * @param array $attributes An array of the AD attributes you wish to return
+ * @return array
+ */
+ public function storageDatabases($storageGroup, $attributes = array('cn','distinguishedname','displayname')) {
+ if (!$this->adldap->getLdapBind()){ return false; }
+ if ($storageGroup === NULL) { return "Missing compulsory field [storageGroup]"; }
+
+ $filter = '(&(objectCategory=msExchPrivateMDB))';
+ $sr = @ldap_search($this->adldap->getLdapConnection(), $storageGroup, $filter, $attributes);
+ $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ return $entries;
+ }
+}
+?>
\ No newline at end of file diff --git a/inc/adLDAP/classes/adLDAPFolders.php b/inc/adLDAP/classes/adLDAPFolders.php new file mode 100644 index 000000000..55120152d --- /dev/null +++ b/inc/adLDAP/classes/adLDAPFolders.php @@ -0,0 +1,179 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Folders
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+
+/**
+* FOLDER / OU MANAGEMENT FUNCTIONS
+*/
+class adLDAPFolders {
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+ /**
+ * Delete a distinguished name from Active Directory
+ * You should never need to call this yourself, just use the wrapper functions user_delete and contact_delete
+ *
+ * @param string $dn The distinguished name to delete
+ * @return bool
+ */
+ public function delete($dn){
+ $result = ldap_delete($this->adldap->getLdapConnection(), $dn);
+ if ($result != true) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Returns a folder listing for a specific OU
+ * See http://adldap.sourceforge.net/wiki/doku.php?id=api_folder_functions
+ *
+ * @param array $folderName An array to the OU you wish to list.
+ * If set to NULL will list the root, strongly recommended to set
+ * $recursive to false in that instance!
+ * @param string $dnType The type of record to list. This can be ADLDAP_FOLDER or ADLDAP_CONTAINER.
+ * @param bool $recursive Recursively search sub folders
+ * @param bool $type Specify a type of object to search for
+ * @return array
+ */
+ public function listing($folderName = NULL, $dnType = adLDAP::ADLDAP_FOLDER, $recursive = NULL, $type = NULL)
+ {
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } //use the default option if they haven't set it
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $filter = '(&';
+ if ($type !== NULL) {
+ switch ($type) {
+ case 'contact':
+ $filter .= '(objectClass=contact)';
+ break;
+ case 'computer':
+ $filter .= '(objectClass=computer)';
+ break;
+ case 'group':
+ $filter .= '(objectClass=group)';
+ break;
+ case 'folder':
+ $filter .= '(objectClass=organizationalUnit)';
+ break;
+ case 'container':
+ $filter .= '(objectClass=container)';
+ break;
+ case 'domain':
+ $filter .= '(objectClass=builtinDomain)';
+ break;
+ default:
+ $filter .= '(objectClass=user)';
+ break;
+ }
+ }
+ else {
+ $filter .= '(objectClass=*)';
+ }
+ // If the folder name is null then we will search the root level of AD
+ // This requires us to not have an OU= part, just the base_dn
+ $searchOu = $this->adldap->getBaseDn();
+ if (is_array($folderName)) {
+ $ou = $dnType . "=" . implode("," . $dnType . "=", $folderName);
+ $filter .= '(!(distinguishedname=' . $ou . ',' . $this->adldap->getBaseDn() . ')))';
+ $searchOu = $ou . ',' . $this->adldap->getBaseDn();
+ }
+ else {
+ $filter .= '(!(distinguishedname=' . $this->adldap->getBaseDn() . ')))';
+ }
+
+ if ($recursive === true) {
+ $sr = ldap_search($this->adldap->getLdapConnection(), $searchOu, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
+ $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ if (is_array($entries)) {
+ return $entries;
+ }
+ }
+ else {
+ $sr = ldap_list($this->adldap->getLdapConnection(), $searchOu, $filter, array('objectclass', 'distinguishedname', 'samaccountname'));
+ $entries = @ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ if (is_array($entries)) {
+ return $entries;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Create an organizational unit
+ *
+ * @param array $attributes Default attributes of the ou
+ * @return bool
+ */
+ public function create($attributes)
+ {
+ if (!is_array($attributes)){ return "Attributes must be an array"; }
+ if (!is_array($attributes["container"])) { return "Container attribute must be an array."; }
+ if (!array_key_exists("ou_name",$attributes)) { return "Missing compulsory field [ou_name]"; }
+ if (!array_key_exists("container",$attributes)) { return "Missing compulsory field [container]"; }
+
+ $attributes["container"] = array_reverse($attributes["container"]);
+
+ $add=array();
+ $add["objectClass"] = "organizationalUnit";
+ $add["OU"] = $attributes['ou_name'];
+ $containers = "";
+ if (count($attributes['container']) > 0) {
+ $containers = "OU=" . implode(",OU=", $attributes["container"]) . ",";
+ }
+
+ $containers = "OU=" . implode(",OU=", $attributes["container"]);
+ $result = ldap_add($this->adldap->getLdapConnection(), "OU=" . $add["OU"] . ", " . $containers . $this->adldap->getBaseDn(), $add);
+ if ($result != true) {
+ return false;
+ }
+
+ return true;
+ }
+
+}
+
+?>
\ No newline at end of file diff --git a/inc/adLDAP/classes/adLDAPGroups.php b/inc/adLDAP/classes/adLDAPGroups.php new file mode 100644 index 000000000..05e4cc93b --- /dev/null +++ b/inc/adLDAP/classes/adLDAPGroups.php @@ -0,0 +1,631 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Groups
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPGroupCollection.php');
+
+/**
+* GROUP FUNCTIONS
+*/
+class adLDAPGroups {
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+ /**
+ * Add a group to a group
+ *
+ * @param string $parent The parent group name
+ * @param string $child The child group name
+ * @return bool
+ */
+ public function addGroup($parent,$child){
+
+ // Find the parent group's dn
+ $parentGroup = $this->ginfo($parent, array("cn"));
+ if ($parentGroup[0]["dn"] === NULL){
+ return false;
+ }
+ $parentDn = $parentGroup[0]["dn"];
+
+ // Find the child group's dn
+ $childGroup = $this->info($child, array("cn"));
+ if ($childGroup[0]["dn"] === NULL){
+ return false;
+ }
+ $childDn = $childGroup[0]["dn"];
+
+ $add = array();
+ $add["member"] = $childDn;
+
+ $result = @ldap_mod_add($this->adldap->getLdapConnection(), $parentDn, $add);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Add a user to a group
+ *
+ * @param string $group The group to add the user to
+ * @param string $user The user to add to the group
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function addUser($group, $user, $isGUID = false)
+ {
+ // Adding a user is a bit fiddly, we need to get the full DN of the user
+ // and add it using the full DN of the group
+
+ // Find the user's dn
+ $userDn = $this->adldap->user()->dn($user, $isGUID);
+ if ($userDn === false) {
+ return false;
+ }
+
+ // Find the group's dn
+ $groupInfo = $this->info($group, array("cn"));
+ if ($groupInfo[0]["dn"] === NULL) {
+ return false;
+ }
+ $groupDn = $groupInfo[0]["dn"];
+
+ $add = array();
+ $add["member"] = $userDn;
+
+ $result = @ldap_mod_add($this->adldap->getLdapConnection(), $groupDn, $add);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Add a contact to a group
+ *
+ * @param string $group The group to add the contact to
+ * @param string $contactDn The DN of the contact to add
+ * @return bool
+ */
+ public function addContact($group, $contactDn)
+ {
+ // To add a contact we take the contact's DN
+ // and add it using the full DN of the group
+
+ // Find the group's dn
+ $groupInfo = $this->info($group, array("cn"));
+ if ($groupInfo[0]["dn"] === NULL) {
+ return false;
+ }
+ $groupDn = $groupInfo[0]["dn"];
+
+ $add = array();
+ $add["member"] = $contactDn;
+
+ $result = @ldap_mod_add($this->adldap->getLdapConnection(), $groupDn, $add);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Create a group
+ *
+ * @param array $attributes Default attributes of the group
+ * @return bool
+ */
+ public function create($attributes)
+ {
+ if (!is_array($attributes)){ return "Attributes must be an array"; }
+ if (!array_key_exists("group_name", $attributes)){ return "Missing compulsory field [group_name]"; }
+ if (!array_key_exists("container", $attributes)){ return "Missing compulsory field [container]"; }
+ if (!array_key_exists("description", $attributes)){ return "Missing compulsory field [description]"; }
+ if (!is_array($attributes["container"])){ return "Container attribute must be an array."; }
+ $attributes["container"] = array_reverse($attributes["container"]);
+
+ //$member_array = array();
+ //$member_array[0] = "cn=user1,cn=Users,dc=yourdomain,dc=com";
+ //$member_array[1] = "cn=administrator,cn=Users,dc=yourdomain,dc=com";
+
+ $add = array();
+ $add["cn"] = $attributes["group_name"];
+ $add["samaccountname"] = $attributes["group_name"];
+ $add["objectClass"] = "Group";
+ $add["description"] = $attributes["description"];
+ //$add["member"] = $member_array; UNTESTED
+
+ $container = "OU=" . implode(",OU=", $attributes["container"]);
+ $result = ldap_add($this->adldap->getLdapConnection(), "CN=" . $add["cn"] . ", " . $container . "," . $this->adldap->getBaseDn(), $add);
+ if ($result != true) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Delete a group account
+ *
+ * @param string $group The group to delete (please be careful here!)
+ *
+ * @return array
+ */
+ public function delete($group) {
+ if (!$this->adldap->getLdapBind()){ return false; }
+ if ($group === null){ return "Missing compulsory field [group]"; }
+
+ $groupInfo = $this->info($group, array("*"));
+ $dn = $groupInfo[0]['distinguishedname'][0];
+ $result = $this->adldap->folder()->delete($dn);
+ if ($result !== true) {
+ return false;
+ } return true;
+ }
+
+ /**
+ * Remove a group from a group
+ *
+ * @param string $parent The parent group name
+ * @param string $child The child group name
+ * @return bool
+ */
+ public function removeGroup($parent , $child)
+ {
+
+ // Find the parent dn
+ $parentGroup = $this->info($parent, array("cn"));
+ if ($parentGroup[0]["dn"] === NULL) {
+ return false;
+ }
+ $parentDn = $parentGroup[0]["dn"];
+
+ // Find the child dn
+ $childGroup = $this->info($child, array("cn"));
+ if ($childGroup[0]["dn"] === NULL) {
+ return false;
+ }
+ $childDn = $childGroup[0]["dn"];
+
+ $del = array();
+ $del["member"] = $childDn;
+
+ $result = @ldap_mod_del($this->adldap->getLdapConnection(), $parentDn, $del);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Remove a user from a group
+ *
+ * @param string $group The group to remove a user from
+ * @param string $user The AD user to remove from the group
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function removeUser($group, $user, $isGUID = false)
+ {
+
+ // Find the parent dn
+ $groupInfo = $this->info($group, array("cn"));
+ if ($groupInfo[0]["dn"] === NULL){
+ return false;
+ }
+ $groupDn = $groupInfo[0]["dn"];
+
+ // Find the users dn
+ $userDn = $this->adldap->user()->dn($user, $isGUID);
+ if ($userDn === false) {
+ return false;
+ }
+
+ $del = array();
+ $del["member"] = $userDn;
+
+ $result = @ldap_mod_del($this->adldap->getLdapConnection(), $groupDn, $del);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Remove a contact from a group
+ *
+ * @param string $group The group to remove a user from
+ * @param string $contactDn The DN of a contact to remove from the group
+ * @return bool
+ */
+ public function removeContact($group, $contactDn)
+ {
+
+ // Find the parent dn
+ $groupInfo = $this->info($group, array("cn"));
+ if ($groupInfo[0]["dn"] === NULL) {
+ return false;
+ }
+ $groupDn = $groupInfo[0]["dn"];
+
+ $del = array();
+ $del["member"] = $contactDn;
+
+ $result = @ldap_mod_del($this->adldap->getLdapConnection(), $groupDn, $del);
+ if ($result == false) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Return a list of groups in a group
+ *
+ * @param string $group The group to query
+ * @param bool $recursive Recursively get groups
+ * @return array
+ */
+ public function inGroup($group, $recursive = NULL)
+ {
+ if (!$this->adldap->getLdapBind()){ return false; }
+ if ($recursive === NULL){ $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it
+
+ // Search the directory for the members of a group
+ $info = $this->info($group, array("member","cn"));
+ $groups = $info[0]["member"];
+ if (!is_array($groups)) {
+ return false;
+ }
+
+ $groupArray = array();
+
+ for ($i=0; $i<$groups["count"]; $i++){
+ $filter = "(&(objectCategory=group)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($groups[$i]) . "))";
+ $fields = array("samaccountname", "distinguishedname", "objectClass");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ // not a person, look for a group
+ if ($entries['count'] == 0 && $recursive == true) {
+ $filter = "(&(objectCategory=group)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($groups[$i]) . "))";
+ $fields = array("distinguishedname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ if (!isset($entries[0]['distinguishedname'][0])) {
+ continue;
+ }
+ $subGroups = $this->inGroup($entries[0]['distinguishedname'][0], $recursive);
+ if (is_array($subGroups)) {
+ $groupArray = array_merge($groupArray, $subGroups);
+ $groupArray = array_unique($groupArray);
+ }
+ continue;
+ }
+
+ $groupArray[] = $entries[0]['distinguishedname'][0];
+ }
+ return $groupArray;
+ }
+
+ /**
+ * Return a list of members in a group
+ *
+ * @param string $group The group to query
+ * @param bool $recursive Recursively get group members
+ * @return array
+ */
+ public function members($group, $recursive = NULL)
+ {
+ if (!$this->adldap->getLdapBind()){ return false; }
+ if ($recursive === NULL){ $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it
+ // Search the directory for the members of a group
+ $info = $this->info($group, array("member","cn"));
+ $users = $info[0]["member"];
+ if (!is_array($users)) {
+ return false;
+ }
+
+ $userArray = array();
+
+ for ($i=0; $i<$users["count"]; $i++){
+ $filter = "(&(objectCategory=person)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($users[$i]) . "))";
+ $fields = array("samaccountname", "distinguishedname", "objectClass");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ // not a person, look for a group
+ if ($entries['count'] == 0 && $recursive == true) {
+ $filter = "(&(objectCategory=group)(distinguishedName=" . $this->adldap->utilities()->ldapSlashes($users[$i]) . "))";
+ $fields = array("samaccountname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ if (!isset($entries[0]['samaccountname'][0])) {
+ continue;
+ }
+ $subUsers = $this->members($entries[0]['samaccountname'][0], $recursive);
+ if (is_array($subUsers)) {
+ $userArray = array_merge($userArray, $subUsers);
+ $userArray = array_unique($userArray);
+ }
+ continue;
+ }
+ else if ($entries['count'] == 0) {
+ continue;
+ }
+
+ if ((!isset($entries[0]['samaccountname'][0]) || $entries[0]['samaccountname'][0] === NULL) && $entries[0]['distinguishedname'][0] !== NULL) {
+ $userArray[] = $entries[0]['distinguishedname'][0];
+ }
+ else if ($entries[0]['samaccountname'][0] !== NULL) {
+ $userArray[] = $entries[0]['samaccountname'][0];
+ }
+ }
+ return $userArray;
+ }
+
+ /**
+ * Group Information. Returns an array of raw information about a group.
+ * The group name is case sensitive
+ *
+ * @param string $groupName The group name to retrieve info about
+ * @param array $fields Fields to retrieve
+ * @return array
+ */
+ public function info($groupName, $fields = NULL)
+ {
+ if ($groupName === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ if (stristr($groupName, '+')) {
+ $groupName = stripslashes($groupName);
+ }
+
+ $filter = "(&(objectCategory=group)(name=" . $this->adldap->utilities()->ldapSlashes($groupName) . "))";
+ if ($fields === NULL) {
+ $fields = array("member","memberof","cn","description","distinguishedname","objectcategory","samaccountname");
+ }
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ return $entries;
+ }
+
+ /**
+ * Group Information. Returns an collection
+ * The group name is case sensitive
+ *
+ * @param string $groupName The group name to retrieve info about
+ * @param array $fields Fields to retrieve
+ * @return adLDAPGroupCollection
+ */
+ public function infoCollection($groupName, $fields = NULL)
+ {
+ if ($groupName === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $info = $this->info($groupName, $fields);
+ if ($info !== false) {
+ $collection = new adLDAPGroupCollection($info, $this->adldap);
+ return $collection;
+ }
+ return false;
+ }
+
+ /**
+ * Return a complete list of "groups in groups"
+ *
+ * @param string $group The group to get the list from
+ * @return array
+ */
+ public function recursiveGroups($group)
+ {
+ if ($group === NULL) { return false; }
+
+ $stack = array();
+ $processed = array();
+ $retGroups = array();
+
+ array_push($stack, $group); // Initial Group to Start with
+ while (count($stack) > 0) {
+ $parent = array_pop($stack);
+ array_push($processed, $parent);
+
+ $info = $this->info($parent, array("memberof"));
+
+ if (isset($info[0]["memberof"]) && is_array($info[0]["memberof"])) {
+ $groups = $info[0]["memberof"];
+ if ($groups) {
+ $groupNames = $this->adldap->utilities()->niceNames($groups);
+ $retGroups = array_merge($retGroups, $groupNames); //final groups to return
+ foreach ($groupNames as $id => $groupName) {
+ if (!in_array($groupName, $processed)) {
+ array_push($stack, $groupName);
+ }
+ }
+ }
+ }
+ }
+
+ return $retGroups;
+ }
+
+ /**
+ * Returns a complete list of the groups in AD based on a SAM Account Type
+ *
+ * @param string $sAMAaccountType The account type to return
+ * @param bool $includeDescription Whether to return a description
+ * @param string $search Search parameters
+ * @param bool $sorted Whether to sort the results
+ * @return array
+ */
+ public function search($sAMAaccountType = adLDAP::ADLDAP_SECURITY_GLOBAL_GROUP, $includeDescription = false, $search = "*", $sorted = true) {
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $filter = '(&(objectCategory=group)';
+ if ($sAMAaccountType !== null) {
+ $filter .= '(samaccounttype='. $sAMAaccountType .')';
+ }
+ $filter .= '(cn=' . $search . '))';
+ // Perform the search and grab all their details
+ $fields = array("samaccountname", "description");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ $groupsArray = array();
+ for ($i=0; $i<$entries["count"]; $i++){
+ if ($includeDescription && strlen($entries[$i]["description"][0]) > 0 ) {
+ $groupsArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["description"][0];
+ }
+ else if ($includeDescription){
+ $groupsArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["samaccountname"][0];
+ }
+ else {
+ array_push($groupsArray, $entries[$i]["samaccountname"][0]);
+ }
+ }
+ if ($sorted) {
+ asort($groupsArray);
+ }
+ return $groupsArray;
+ }
+
+ /**
+ * Returns a complete list of all groups in AD
+ *
+ * @param bool $includeDescription Whether to return a description
+ * @param string $search Search parameters
+ * @param bool $sorted Whether to sort the results
+ * @return array
+ */
+ public function all($includeDescription = false, $search = "*", $sorted = true){
+ $groupsArray = $this->search(null, $includeDescription, $search, $sorted);
+ return $groupsArray;
+ }
+
+ /**
+ * Returns a complete list of security groups in AD
+ *
+ * @param bool $includeDescription Whether to return a description
+ * @param string $search Search parameters
+ * @param bool $sorted Whether to sort the results
+ * @return array
+ */
+ public function allSecurity($includeDescription = false, $search = "*", $sorted = true){
+ $groupsArray = $this->search(adLDAP::ADLDAP_SECURITY_GLOBAL_GROUP, $includeDescription, $search, $sorted);
+ return $groupsArray;
+ }
+
+ /**
+ * Returns a complete list of distribution lists in AD
+ *
+ * @param bool $includeDescription Whether to return a description
+ * @param string $search Search parameters
+ * @param bool $sorted Whether to sort the results
+ * @return array
+ */
+ public function allDistribution($includeDescription = false, $search = "*", $sorted = true){
+ $groupsArray = $this->search(adLDAP::ADLDAP_DISTRIBUTION_GROUP, $includeDescription, $search, $sorted);
+ return $groupsArray;
+ }
+
+ /**
+ * Coping with AD not returning the primary group
+ * http://support.microsoft.com/?kbid=321360
+ *
+ * This is a re-write based on code submitted by Bruce which prevents the
+ * need to search each security group to find the true primary group
+ *
+ * @param string $gid Group ID
+ * @param string $usersid User's Object SID
+ * @return mixed
+ */
+ public function getPrimaryGroup($gid, $usersid)
+ {
+ if ($gid === NULL || $usersid === NULL) { return false; }
+ $sr = false;
+
+ $gsid = substr_replace($usersid, pack('V',$gid), strlen($usersid)-4,4);
+ $filter = '(objectsid=' . $this->adldap->utilities()->getTextSID($gsid).')';
+ $fields = array("samaccountname","distinguishedname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ if (isset($entries[0]['distinguishedname'][0])) {
+ return $entries[0]['distinguishedname'][0];
+ }
+ return false;
+ }
+
+ /**
+ * Coping with AD not returning the primary group
+ * http://support.microsoft.com/?kbid=321360
+ *
+ * For some reason it's not possible to search on primarygrouptoken=XXX
+ * If someone can show otherwise, I'd like to know about it :)
+ * this way is resource intensive and generally a pain in the @#%^
+ *
+ * @deprecated deprecated since version 3.1, see get get_primary_group
+ * @param string $gid Group ID
+ * @return string
+ */
+ public function cn($gid){
+ if ($gid === NULL) { return false; }
+ $sr = false;
+ $r = '';
+
+ $filter = "(&(objectCategory=group)(samaccounttype=" . adLDAP::ADLDAP_SECURITY_GLOBAL_GROUP . "))";
+ $fields = array("primarygrouptoken", "samaccountname", "distinguishedname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ for ($i=0; $i<$entries["count"]; $i++){
+ if ($entries[$i]["primarygrouptoken"][0] == $gid) {
+ $r = $entries[$i]["distinguishedname"][0];
+ $i = $entries["count"];
+ }
+ }
+
+ return $r;
+ }
+}
+?>
diff --git a/inc/adLDAP/classes/adLDAPUsers.php b/inc/adLDAP/classes/adLDAPUsers.php new file mode 100644 index 000000000..96a93b512 --- /dev/null +++ b/inc/adLDAP/classes/adLDAPUsers.php @@ -0,0 +1,682 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage User
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+require_once(dirname(__FILE__) . '/../collections/adLDAPUserCollection.php');
+
+/**
+* USER FUNCTIONS
+*/
+class adLDAPUsers {
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+ /**
+ * Validate a user's login credentials
+ *
+ * @param string $username A user's AD username
+ * @param string $password A user's AD password
+ * @param bool optional $prevent_rebind
+ * @return bool
+ */
+ public function authenticate($username, $password, $preventRebind = false) {
+ return $this->adldap->authenticate($username, $password, $preventRebind);
+ }
+
+ /**
+ * Create a user
+ *
+ * If you specify a password here, this can only be performed over SSL
+ *
+ * @param array $attributes The attributes to set to the user account
+ * @return bool
+ */
+ public function create($attributes)
+ {
+ // Check for compulsory fields
+ if (!array_key_exists("username", $attributes)){ return "Missing compulsory field [username]"; }
+ if (!array_key_exists("firstname", $attributes)){ return "Missing compulsory field [firstname]"; }
+ if (!array_key_exists("surname", $attributes)){ return "Missing compulsory field [surname]"; }
+ if (!array_key_exists("email", $attributes)){ return "Missing compulsory field [email]"; }
+ if (!array_key_exists("container", $attributes)){ return "Missing compulsory field [container]"; }
+ if (!is_array($attributes["container"])){ return "Container attribute must be an array."; }
+
+ if (array_key_exists("password",$attributes) && (!$this->adldap->getUseSSL() && !$this->adldap->getUseTLS())){
+ throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
+ }
+
+ if (!array_key_exists("display_name", $attributes)) {
+ $attributes["display_name"] = $attributes["firstname"] . " " . $attributes["surname"];
+ }
+
+ // Translate the schema
+ $add = $this->adldap->adldap_schema($attributes);
+
+ // Additional stuff only used for adding accounts
+ $add["cn"][0] = $attributes["display_name"];
+ $add["samaccountname"][0] = $attributes["username"];
+ $add["objectclass"][0] = "top";
+ $add["objectclass"][1] = "person";
+ $add["objectclass"][2] = "organizationalPerson";
+ $add["objectclass"][3] = "user"; //person?
+ //$add["name"][0]=$attributes["firstname"]." ".$attributes["surname"];
+
+ // Set the account control attribute
+ $control_options = array("NORMAL_ACCOUNT");
+ if (!$attributes["enabled"]) {
+ $control_options[] = "ACCOUNTDISABLE";
+ }
+ $add["userAccountControl"][0] = $this->accountControl($control_options);
+
+ // Determine the container
+ $attributes["container"] = array_reverse($attributes["container"]);
+ $container = "OU=" . implode(", OU=",$attributes["container"]);
+
+ // Add the entry
+ $result = @ldap_add($this->adldap->getLdapConnection(), "CN=" . $add["cn"][0] . ", " . $container . "," . $this->adldap->getBaseDn(), $add);
+ if ($result != true) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Account control options
+ *
+ * @param array $options The options to convert to int
+ * @return int
+ */
+ protected function accountControl($options)
+ {
+ $val=0;
+
+ if (is_array($options)) {
+ if (in_array("SCRIPT",$options)){ $val=$val+1; }
+ if (in_array("ACCOUNTDISABLE",$options)){ $val=$val+2; }
+ if (in_array("HOMEDIR_REQUIRED",$options)){ $val=$val+8; }
+ if (in_array("LOCKOUT",$options)){ $val=$val+16; }
+ if (in_array("PASSWD_NOTREQD",$options)){ $val=$val+32; }
+ //PASSWD_CANT_CHANGE Note You cannot assign this permission by directly modifying the UserAccountControl attribute.
+ //For information about how to set the permission programmatically, see the "Property flag descriptions" section.
+ if (in_array("ENCRYPTED_TEXT_PWD_ALLOWED",$options)){ $val=$val+128; }
+ if (in_array("TEMP_DUPLICATE_ACCOUNT",$options)){ $val=$val+256; }
+ if (in_array("NORMAL_ACCOUNT",$options)){ $val=$val+512; }
+ if (in_array("INTERDOMAIN_TRUST_ACCOUNT",$options)){ $val=$val+2048; }
+ if (in_array("WORKSTATION_TRUST_ACCOUNT",$options)){ $val=$val+4096; }
+ if (in_array("SERVER_TRUST_ACCOUNT",$options)){ $val=$val+8192; }
+ if (in_array("DONT_EXPIRE_PASSWORD",$options)){ $val=$val+65536; }
+ if (in_array("MNS_LOGON_ACCOUNT",$options)){ $val=$val+131072; }
+ if (in_array("SMARTCARD_REQUIRED",$options)){ $val=$val+262144; }
+ if (in_array("TRUSTED_FOR_DELEGATION",$options)){ $val=$val+524288; }
+ if (in_array("NOT_DELEGATED",$options)){ $val=$val+1048576; }
+ if (in_array("USE_DES_KEY_ONLY",$options)){ $val=$val+2097152; }
+ if (in_array("DONT_REQ_PREAUTH",$options)){ $val=$val+4194304; }
+ if (in_array("PASSWORD_EXPIRED",$options)){ $val=$val+8388608; }
+ if (in_array("TRUSTED_TO_AUTH_FOR_DELEGATION",$options)){ $val=$val+16777216; }
+ }
+ return $val;
+ }
+
+ /**
+ * Delete a user account
+ *
+ * @param string $username The username to delete (please be careful here!)
+ * @param bool $isGUID Is the username a GUID or a samAccountName
+ * @return array
+ */
+ public function delete($username, $isGUID = false)
+ {
+ $userinfo = $this->info($username, array("*"), $isGUID);
+ $dn = $userinfo[0]['distinguishedname'][0];
+ $result = $this->adldap->folder()->delete($dn);
+ if ($result != true) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Groups the user is a member of
+ *
+ * @param string $username The username to query
+ * @param bool $recursive Recursive list of groups
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return array
+ */
+ public function groups($username, $recursive = NULL, $isGUID = false)
+ {
+ if ($username === NULL) { return false; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ // Search the directory for their information
+ $info = @$this->info($username, array("memberof", "primarygroupid"), $isGUID);
+ $groups = $this->adldap->utilities()->niceNames($info[0]["memberof"]); // Presuming the entry returned is our guy (unique usernames)
+
+ if ($recursive === true){
+ foreach ($groups as $id => $groupName){
+ $extraGroups = $this->adldap->group()->recursiveGroups($groupName);
+ $groups = array_merge($groups, $extraGroups);
+ }
+ }
+
+ return $groups;
+ }
+
+ /**
+ * Find information about the users. Returned in a raw array format from AD
+ *
+ * @param string $username The username to query
+ * @param array $fields Array of parameters to query
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return array
+ */
+ public function info($username, $fields = NULL, $isGUID = false)
+ {
+ if ($username === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ if ($isGUID === true) {
+ $username = $this->adldap->utilities()->strGuidToHex($username);
+ $filter = "objectguid=" . $username;
+ }
+ else if (strstr($username, "@")) {
+ $filter = "userPrincipalName=" . $username;
+ }
+ else {
+ $filter = "samaccountname=" . $username;
+ }
+ $filter = "(&(objectCategory=person)({$filter}))";
+ if ($fields === NULL) {
+ $fields = array("samaccountname","mail","memberof","department","displayname","telephonenumber","primarygroupid","objectsid");
+ }
+ if (!in_array("objectsid", $fields)) {
+ $fields[] = "objectsid";
+ }
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ if (isset($entries[0])) {
+ if ($entries[0]['count'] >= 1) {
+ if (in_array("memberof", $fields)) {
+ // AD does not return the primary group in the ldap query, we may need to fudge it
+ if ($this->adldap->getRealPrimaryGroup() && isset($entries[0]["primarygroupid"][0]) && isset($entries[0]["objectsid"][0])){
+ //$entries[0]["memberof"][]=$this->group_cn($entries[0]["primarygroupid"][0]);
+ $entries[0]["memberof"][] = $this->adldap->group()->getPrimaryGroup($entries[0]["primarygroupid"][0], $entries[0]["objectsid"][0]);
+ } else {
+ $entries[0]["memberof"][] = "CN=Domain Users,CN=Users," . $this->adldap->getBaseDn();
+ }
+ if (!isset($entries[0]["memberof"]["count"])) {
+ $entries[0]["memberof"]["count"] = 0;
+ }
+ $entries[0]["memberof"]["count"]++;
+ }
+ }
+
+ return $entries;
+ }
+ return false;
+ }
+
+ /**
+ * Find information about the users. Returned in a raw array format from AD
+ *
+ * @param string $username The username to query
+ * @param array $fields Array of parameters to query
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return mixed
+ */
+ public function infoCollection($username, $fields = NULL, $isGUID = false)
+ {
+ if ($username === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ $info = $this->info($username, $fields, $isGUID);
+
+ if ($info !== false) {
+ $collection = new adLDAPUserCollection($info, $this->adldap);
+ return $collection;
+ }
+ return false;
+ }
+
+ /**
+ * Determine if a user is in a specific group
+ *
+ * @param string $username The username to query
+ * @param string $group The name of the group to check against
+ * @param bool $recursive Check groups recursively
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function inGroup($username, $group, $recursive = NULL, $isGUID = false)
+ {
+ if ($username === NULL) { return false; }
+ if ($group === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if ($recursive === NULL) { $recursive = $this->adldap->getRecursiveGroups(); } // Use the default option if they haven't set it
+
+ // Get a list of the groups
+ $groups = $this->groups($username, $recursive, $isGUID);
+
+ // Return true if the specified group is in the group list
+ if (in_array($group, $groups)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Determine a user's password expiry date
+ *
+ * @param string $username The username to query
+ * @param book $isGUID Is the username passed a GUID or a samAccountName
+ * @requires bcmath http://www.php.net/manual/en/book.bc.php
+ * @return array
+ */
+ public function passwordExpiry($username, $isGUID = false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if (!function_exists('bcmod')) { throw new adLDAPException("Missing function support [bcmod] http://www.php.net/manual/en/book.bc.php"); };
+
+ $userInfo = $this->info($username, array("pwdlastset", "useraccountcontrol"), $isGUID);
+ $pwdLastSet = $userInfo[0]['pwdlastset'][0];
+ $status = array();
+
+ if ($userInfo[0]['useraccountcontrol'][0] == '66048') {
+ // Password does not expire
+ return "Does not expire";
+ }
+ if ($pwdLastSet === '0') {
+ // Password has already expired
+ return "Password has expired";
+ }
+
+ // Password expiry in AD can be calculated from TWO values:
+ // - User's own pwdLastSet attribute: stores the last time the password was changed
+ // - Domain's maxPwdAge attribute: how long passwords last in the domain
+ //
+ // Although Microsoft chose to use a different base and unit for time measurements.
+ // This function will convert them to Unix timestamps
+ $sr = ldap_read($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), 'objectclass=*', array('maxPwdAge'));
+ if (!$sr) {
+ return false;
+ }
+ $info = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+ $maxPwdAge = $info[0]['maxpwdage'][0];
+
+
+ // See MSDN: http://msdn.microsoft.com/en-us/library/ms974598.aspx
+ //
+ // pwdLastSet contains the number of 100 nanosecond intervals since January 1, 1601 (UTC),
+ // stored in a 64 bit integer.
+ //
+ // The number of seconds between this date and Unix epoch is 11644473600.
+ //
+ // maxPwdAge is stored as a large integer that represents the number of 100 nanosecond
+ // intervals from the time the password was set before the password expires.
+ //
+ // We also need to scale this to seconds but also this value is a _negative_ quantity!
+ //
+ // If the low 32 bits of maxPwdAge are equal to 0 passwords do not expire
+ //
+ // Unfortunately the maths involved are too big for PHP integers, so I've had to require
+ // BCMath functions to work with arbitrary precision numbers.
+ if (bcmod($maxPwdAge, 4294967296) === '0') {
+ return "Domain does not expire passwords";
+ }
+
+ // Add maxpwdage and pwdlastset and we get password expiration time in Microsoft's
+ // time units. Because maxpwd age is negative we need to subtract it.
+ $pwdExpire = bcsub($pwdLastSet, $maxPwdAge);
+
+ // Convert MS's time to Unix time
+ $status['expiryts'] = bcsub(bcdiv($pwdExpire, '10000000'), '11644473600');
+ $status['expiryformat'] = date('Y-m-d H:i:s', bcsub(bcdiv($pwdExpire, '10000000'), '11644473600'));
+
+ return $status;
+ }
+
+ /**
+ * Modify a user
+ *
+ * @param string $username The username to query
+ * @param array $attributes The attributes to modify. Note if you set the enabled attribute you must not specify any other attributes
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function modify($username, $attributes, $isGUID = false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ if (array_key_exists("password", $attributes) && !$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) {
+ throw new adLDAPException('SSL/TLS must be configured on your webserver and enabled in the class to set passwords.');
+ }
+
+ // Find the dn of the user
+ $userDn = $this->dn($username, $isGUID);
+ if ($userDn === false) {
+ return false;
+ }
+
+ // Translate the update to the LDAP schema
+ $mod = $this->adldap->adldap_schema($attributes);
+
+ // Check to see if this is an enabled status update
+ if (!$mod && !array_key_exists("enabled", $attributes)){
+ return false;
+ }
+
+ // Set the account control attribute (only if specified)
+ if (array_key_exists("enabled", $attributes)){
+ if ($attributes["enabled"]){
+ $controlOptions = array("NORMAL_ACCOUNT");
+ }
+ else {
+ $controlOptions = array("NORMAL_ACCOUNT", "ACCOUNTDISABLE");
+ }
+ $mod["userAccountControl"][0] = $this->accountControl($controlOptions);
+ }
+
+ // Do the update
+ $result = @ldap_modify($this->adldap->getLdapConnection(), $userDn, $mod);
+ if ($result == false) {
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Disable a user account
+ *
+ * @param string $username The username to disable
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function disable($username, $isGUID = false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ $attributes = array("enabled" => 0);
+ $result = $this->modify($username, $attributes, $isGUID);
+ if ($result == false) { return false; }
+
+ return true;
+ }
+
+ /**
+ * Enable a user account
+ *
+ * @param string $username The username to enable
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function enable($username, $isGUID = false)
+ {
+ if ($username === NULL) { return "Missing compulsory field [username]"; }
+ $attributes = array("enabled" => 1);
+ $result = $this->modify($username, $attributes, $isGUID);
+ if ($result == false) { return false; }
+
+ return true;
+ }
+
+ /**
+ * Set the password of a user - This must be performed over SSL
+ *
+ * @param string $username The username to modify
+ * @param string $password The new password
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return bool
+ */
+ public function password($username, $password, $isGUID = false)
+ {
+ if ($username === NULL) { return false; }
+ if ($password === NULL) { return false; }
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if (!$this->adldap->getUseSSL() && !$this->adldap->getUseTLS()) {
+ throw new adLDAPException('SSL must be configured on your webserver and enabled in the class to set passwords.');
+ }
+
+ $userDn = $this->dn($username, $isGUID);
+ if ($userDn === false) {
+ return false;
+ }
+
+ $add=array();
+ $add["unicodePwd"][0] = $this->encodePassword($password);
+
+ $result = @ldap_mod_replace($this->adldap->getLdapConnection(), $userDn, $add);
+ if ($result === false){
+ $err = ldap_errno($this->adldap->getLdapConnection());
+ if ($err) {
+ $msg = 'Error ' . $err . ': ' . ldap_err2str($err) . '.';
+ if($err == 53) {
+ $msg .= ' Your password might not match the password policy.';
+ }
+ throw new adLDAPException($msg);
+ }
+ else {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Encode a password for transmission over LDAP
+ *
+ * @param string $password The password to encode
+ * @return string
+ */
+ public function encodePassword($password)
+ {
+ $password="\"".$password."\"";
+ $encoded="";
+ for ($i=0; $i <strlen($password); $i++){ $encoded.="{$password{$i}}\000"; }
+ return $encoded;
+ }
+
+ /**
+ * Obtain the user's distinguished name based on their userid
+ *
+ *
+ * @param string $username The username
+ * @param bool $isGUID Is the username passed a GUID or a samAccountName
+ * @return string
+ */
+ public function dn($username, $isGUID=false)
+ {
+ $user = $this->info($username, array("cn"), $isGUID);
+ if ($user[0]["dn"] === NULL) {
+ return false;
+ }
+ $userDn = $user[0]["dn"];
+ return $userDn;
+ }
+
+ /**
+ * Return a list of all users in AD
+ *
+ * @param bool $includeDescription Return a description of the user
+ * @param string $search Search parameter
+ * @param bool $sorted Sort the user accounts
+ * @return array
+ */
+ public function all($includeDescription = false, $search = "*", $sorted = true)
+ {
+ if (!$this->adldap->getLdapBind()) { return false; }
+
+ // Perform the search and grab all their details
+ $filter = "(&(objectClass=user)(samaccounttype=" . adLDAP::ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)(cn=" . $search . "))";
+ $fields = array("samaccountname","displayname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ $usersArray = array();
+ for ($i=0; $i<$entries["count"]; $i++){
+ if ($includeDescription && strlen($entries[$i]["displayname"][0])>0){
+ $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["displayname"][0];
+ } elseif ($includeDescription){
+ $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["samaccountname"][0];
+ } else {
+ array_push($usersArray, $entries[$i]["samaccountname"][0]);
+ }
+ }
+ if ($sorted) {
+ asort($usersArray);
+ }
+ return $usersArray;
+ }
+
+ /**
+ * Converts a username (samAccountName) to a GUID
+ *
+ * @param string $username The username to query
+ * @return string
+ */
+ public function usernameToGuid($username)
+ {
+ if (!$this->adldap->getLdapBind()){ return false; }
+ if ($username === null){ return "Missing compulsory field [username]"; }
+
+ $filter = "samaccountname=" . $username;
+ $fields = array("objectGUID");
+ $sr = @ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ if (ldap_count_entries($this->adldap->getLdapConnection(), $sr) > 0) {
+ $entry = @ldap_first_entry($this->adldap->getLdapConnection(), $sr);
+ $guid = @ldap_get_values_len($this->adldap->getLdapConnection(), $entry, 'objectGUID');
+ $strGUID = $this->adldap->utilities()->binaryToText($guid[0]);
+ return $strGUID;
+ }
+ return false;
+ }
+
+ /**
+ * Return a list of all users in AD that have a specific value in a field
+ *
+ * @param bool $includeDescription Return a description of the user
+ * @param string $searchField Field to search search for
+ * @param string $searchFilter Value to search for in the specified field
+ * @param bool $sorted Sort the user accounts
+ * @return array
+ */
+ public function find($includeDescription = false, $searchField = false, $searchFilter = false, $sorted = true){
+ if (!$this->adldap->getLdapBind()){ return false; }
+
+ // Perform the search and grab all their details
+ $searchParams = "";
+ if ($searchField) {
+ $searchParams = "(" . $searchField . "=" . $searchFilter . ")";
+ }
+ $filter = "(&(objectClass=user)(samaccounttype=" . adLDAP::ADLDAP_NORMAL_ACCOUNT .")(objectCategory=person)" . $searchParams . ")";
+ $fields = array("samaccountname","displayname");
+ $sr = ldap_search($this->adldap->getLdapConnection(), $this->adldap->getBaseDn(), $filter, $fields);
+ $entries = ldap_get_entries($this->adldap->getLdapConnection(), $sr);
+
+ $usersArray = array();
+ for ($i=0; $i < $entries["count"]; $i++) {
+ if ($includeDescription && strlen($entries[$i]["displayname"][0]) > 0) {
+ $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["displayname"][0];
+ }
+ else if ($includeDescription) {
+ $usersArray[$entries[$i]["samaccountname"][0]] = $entries[$i]["samaccountname"][0];
+ }
+ else {
+ array_push($usersArray, $entries[$i]["samaccountname"][0]);
+ }
+ }
+ if ($sorted){
+ asort($usersArray);
+ }
+ return ($usersArray);
+ }
+
+ /**
+ * Move a user account to a different OU
+ *
+ * @param string $username The username to move (please be careful here!)
+ * @param array $container The container or containers to move the user to (please be careful here!).
+ * accepts containers in 1. parent 2. child order
+ * @return array
+ */
+ public function move($username, $container)
+ {
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if ($username === null) { return "Missing compulsory field [username]"; }
+ if ($container === null) { return "Missing compulsory field [container]"; }
+ if (!is_array($container)) { return "Container must be an array"; }
+
+ $userInfo = $this->info($username, array("*"));
+ $dn = $userInfo[0]['distinguishedname'][0];
+ $newRDn = "cn=" . $username;
+ $container = array_reverse($container);
+ $newContainer = "ou=" . implode(",ou=",$container);
+ $newBaseDn = strtolower($newContainer) . "," . $this->adldap->getBaseDn();
+ $result = @ldap_rename($this->adldap->getLdapConnection(), $dn, $newRDn, $newBaseDn, true);
+ if ($result !== true) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Get the last logon time of any user as a Unix timestamp
+ *
+ * @param string $username
+ * @return long $unixTimestamp
+ */
+ public function getLastLogon($username) {
+ if (!$this->adldap->getLdapBind()) { return false; }
+ if ($username === null) { return "Missing compulsory field [username]"; }
+ $userInfo = $this->info($username, array("lastLogonTimestamp"));
+ $lastLogon = adLDAPUtils::convertWindowsTimeToUnixTime($userInfo[0]['lastLogonTimestamp'][0]);
+ return $lastLogon;
+ }
+
+}
+?>
diff --git a/inc/adLDAP/classes/adLDAPUtils.php b/inc/adLDAP/classes/adLDAPUtils.php new file mode 100644 index 000000000..f039a4290 --- /dev/null +++ b/inc/adLDAP/classes/adLDAPUtils.php @@ -0,0 +1,264 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Utils
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+ */
+require_once(dirname(__FILE__) . '/../adLDAP.php');
+
+/**
+* UTILITY FUNCTIONS
+*/
+class adLDAPUtils {
+ const ADLDAP_VERSION = '4.0.4';
+
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ public function __construct(adLDAP $adldap) {
+ $this->adldap = $adldap;
+ }
+
+
+ /**
+ * Take an LDAP query and return the nice names, without all the LDAP prefixes (eg. CN, DN)
+ *
+ * @param array $groups
+ * @return array
+ */
+ public function niceNames($groups)
+ {
+
+ $groupArray = array();
+ for ($i=0; $i<$groups["count"]; $i++){ // For each group
+ $line = $groups[$i];
+
+ if (strlen($line)>0) {
+ // More presumptions, they're all prefixed with CN=
+ // so we ditch the first three characters and the group
+ // name goes up to the first comma
+ $bits=explode(",", $line);
+ $groupArray[] = substr($bits[0], 3, (strlen($bits[0])-3));
+ }
+ }
+ return $groupArray;
+ }
+
+ /**
+ * Escape characters for use in an ldap_create function
+ *
+ * @param string $str
+ * @return string
+ */
+ public function escapeCharacters($str) {
+ $str = str_replace(",", "\,", $str);
+ return $str;
+ }
+
+ /**
+ * Escape strings for the use in LDAP filters
+ *
+ * DEVELOPERS SHOULD BE DOING PROPER FILTERING IF THEY'RE ACCEPTING USER INPUT
+ * Ported from Perl's Net::LDAP::Util escape_filter_value
+ *
+ * @param string $str The string the parse
+ * @author Port by Andreas Gohr <andi@splitbrain.org>
+ * @return string
+ */
+ public function ldapSlashes($str){
+ return preg_replace('/([\x00-\x1F\*\(\)\\\\])/e',
+ '"\\\\\".join("",unpack("H2","$1"))',
+ $str);
+ }
+
+ /**
+ * Converts a string GUID to a hexdecimal value so it can be queried
+ *
+ * @param string $strGUID A string representation of a GUID
+ * @return string
+ */
+ public function strGuidToHex($strGUID)
+ {
+ $strGUID = str_replace('-', '', $strGUID);
+
+ $octet_str = '\\' . substr($strGUID, 6, 2);
+ $octet_str .= '\\' . substr($strGUID, 4, 2);
+ $octet_str .= '\\' . substr($strGUID, 2, 2);
+ $octet_str .= '\\' . substr($strGUID, 0, 2);
+ $octet_str .= '\\' . substr($strGUID, 10, 2);
+ $octet_str .= '\\' . substr($strGUID, 8, 2);
+ $octet_str .= '\\' . substr($strGUID, 14, 2);
+ $octet_str .= '\\' . substr($strGUID, 12, 2);
+ //$octet_str .= '\\' . substr($strGUID, 16, strlen($strGUID));
+ for ($i=16; $i<=(strlen($strGUID)-2); $i++) {
+ if (($i % 2) == 0) {
+ $octet_str .= '\\' . substr($strGUID, $i, 2);
+ }
+ }
+
+ return $octet_str;
+ }
+
+ /**
+ * Convert a binary SID to a text SID
+ *
+ * @param string $binsid A Binary SID
+ * @return string
+ */
+ public function getTextSID($binsid) {
+ $hex_sid = bin2hex($binsid);
+ $rev = hexdec(substr($hex_sid, 0, 2));
+ $subcount = hexdec(substr($hex_sid, 2, 2));
+ $auth = hexdec(substr($hex_sid, 4, 12));
+ $result = "$rev-$auth";
+
+ for ($x=0;$x < $subcount; $x++) {
+ $subauth[$x] =
+ hexdec($this->littleEndian(substr($hex_sid, 16 + ($x * 8), 8)));
+ $result .= "-" . $subauth[$x];
+ }
+
+ // Cheat by tacking on the S-
+ return 'S-' . $result;
+ }
+
+ /**
+ * Converts a little-endian hex number to one that hexdec() can convert
+ *
+ * @param string $hex A hex code
+ * @return string
+ */
+ public function littleEndian($hex)
+ {
+ $result = '';
+ for ($x = strlen($hex) - 2; $x >= 0; $x = $x - 2) {
+ $result .= substr($hex, $x, 2);
+ }
+ return $result;
+ }
+
+ /**
+ * Converts a binary attribute to a string
+ *
+ * @param string $bin A binary LDAP attribute
+ * @return string
+ */
+ public function binaryToText($bin)
+ {
+ $hex_guid = bin2hex($bin);
+ $hex_guid_to_guid_str = '';
+ for($k = 1; $k <= 4; ++$k) {
+ $hex_guid_to_guid_str .= substr($hex_guid, 8 - 2 * $k, 2);
+ }
+ $hex_guid_to_guid_str .= '-';
+ for($k = 1; $k <= 2; ++$k) {
+ $hex_guid_to_guid_str .= substr($hex_guid, 12 - 2 * $k, 2);
+ }
+ $hex_guid_to_guid_str .= '-';
+ for($k = 1; $k <= 2; ++$k) {
+ $hex_guid_to_guid_str .= substr($hex_guid, 16 - 2 * $k, 2);
+ }
+ $hex_guid_to_guid_str .= '-' . substr($hex_guid, 16, 4);
+ $hex_guid_to_guid_str .= '-' . substr($hex_guid, 20);
+ return strtoupper($hex_guid_to_guid_str);
+ }
+
+ /**
+ * Converts a binary GUID to a string GUID
+ *
+ * @param string $binaryGuid The binary GUID attribute to convert
+ * @return string
+ */
+ public function decodeGuid($binaryGuid)
+ {
+ if ($binaryGuid === null){ return "Missing compulsory field [binaryGuid]"; }
+
+ $strGUID = $this->binaryToText($binaryGuid);
+ return $strGUID;
+ }
+
+ /**
+ * Convert a boolean value to a string
+ * You should never need to call this yourself
+ *
+ * @param bool $bool Boolean value
+ * @return string
+ */
+ public function boolToStr($bool)
+ {
+ return ($bool) ? 'TRUE' : 'FALSE';
+ }
+
+ /**
+ * Convert 8bit characters e.g. accented characters to UTF8 encoded characters
+ */
+ public function encode8Bit(&$item, $key) {
+ $encode = false;
+ if (is_string($item)) {
+ for ($i=0; $i<strlen($item); $i++) {
+ if (ord($item[$i]) >> 7) {
+ $encode = true;
+ }
+ }
+ }
+ if ($encode === true && $key != 'password') {
+ $item = utf8_encode($item);
+ }
+ }
+
+ /**
+ * Get the current class version number
+ *
+ * @return string
+ */
+ public function getVersion() {
+ return self::ADLDAP_VERSION;
+ }
+
+ /**
+ * Round a Windows timestamp down to seconds and remove the seconds between 1601-01-01 and 1970-01-01
+ *
+ * @param long $windowsTime
+ * @return long $unixTime
+ */
+ public static function convertWindowsTimeToUnixTime($windowsTime) {
+ $unixTime = round($windowsTime / 10000000) - 11644477200;
+ return $unixTime;
+ }
+}
+
+?>
\ No newline at end of file diff --git a/inc/adLDAP/collections/adLDAPCollection.php b/inc/adLDAP/collections/adLDAPCollection.php new file mode 100644 index 000000000..c0a2eb2fa --- /dev/null +++ b/inc/adLDAP/collections/adLDAPCollection.php @@ -0,0 +1,137 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage Collection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+abstract class adLDAPCollection
+{
+ /**
+ * The current adLDAP connection via dependency injection
+ *
+ * @var adLDAP
+ */
+ protected $adldap;
+
+ /**
+ * The current object being modifed / called
+ *
+ * @var mixed
+ */
+ protected $currentObject;
+
+ /**
+ * The raw info array from Active Directory
+ *
+ * @var array
+ */
+ protected $info;
+
+ public function __construct($info, adLDAP $adldap)
+ {
+ $this->setInfo($info);
+ $this->adldap = $adldap;
+ }
+
+ /**
+ * Set the raw info array from Active Directory
+ *
+ * @param array $info
+ */
+ public function setInfo(array $info)
+ {
+ if ($this->info && sizeof($info) >= 1) {
+ unset($this->info);
+ }
+ $this->info = $info;
+ }
+
+ /**
+ * Magic get method to retrieve data from the raw array in a formatted way
+ *
+ * @param string $attribute
+ * @return mixed
+ */
+ public function __get($attribute)
+ {
+ if (isset($this->info[0]) && is_array($this->info[0])) {
+ foreach ($this->info[0] as $keyAttr => $valueAttr) {
+ if (strtolower($keyAttr) == strtolower($attribute)) {
+ if ($this->info[0][strtolower($attribute)]['count'] == 1) {
+ return $this->info[0][strtolower($attribute)][0];
+ }
+ else {
+ $array = array();
+ foreach ($this->info[0][strtolower($attribute)] as $key => $value) {
+ if ((string)$key != 'count') {
+ $array[$key] = $value;
+ }
+ }
+ return $array;
+ }
+ }
+ }
+ }
+ else {
+ return NULL;
+ }
+ }
+
+ /**
+ * Magic set method to update an attribute
+ *
+ * @param string $attribute
+ * @param string $value
+ * @return bool
+ */
+ abstract public function __set($attribute, $value);
+
+ /**
+ * Magic isset method to check for the existence of an attribute
+ *
+ * @param string $attribute
+ * @return bool
+ */
+ public function __isset($attribute) {
+ if (isset($this->info[0]) && is_array($this->info[0])) {
+ foreach ($this->info[0] as $keyAttr => $valueAttr) {
+ if (strtolower($keyAttr) == strtolower($attribute)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
+?>
diff --git a/inc/adLDAP/collections/adLDAPComputerCollection.php b/inc/adLDAP/collections/adLDAPComputerCollection.php new file mode 100644 index 000000000..4f11d8f41 --- /dev/null +++ b/inc/adLDAP/collections/adLDAPComputerCollection.php @@ -0,0 +1,46 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage ComputerCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPComputerCollection extends adLDAPCollection
+{
+
+ public function __set($attribute, $value)
+ {
+
+ }
+}
+?>
diff --git a/inc/adLDAP/collections/adLDAPContactCollection.php b/inc/adLDAP/collections/adLDAPContactCollection.php new file mode 100644 index 000000000..d42fe6d4c --- /dev/null +++ b/inc/adLDAP/collections/adLDAPContactCollection.php @@ -0,0 +1,46 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage ContactCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPContactCollection extends adLDAPCollection
+{
+
+ public function __set($attribute, $value)
+ {
+
+ }
+}
+?>
diff --git a/inc/adLDAP/collections/adLDAPGroupCollection.php b/inc/adLDAP/collections/adLDAPGroupCollection.php new file mode 100644 index 000000000..cff12fc20 --- /dev/null +++ b/inc/adLDAP/collections/adLDAPGroupCollection.php @@ -0,0 +1,46 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage GroupCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPGroupCollection extends adLDAPCollection
+{
+
+ public function __set($attribute, $value)
+ {
+
+ }
+}
+?>
diff --git a/inc/adLDAP/collections/adLDAPUserCollection.php b/inc/adLDAP/collections/adLDAPUserCollection.php new file mode 100644 index 000000000..801d90296 --- /dev/null +++ b/inc/adLDAP/collections/adLDAPUserCollection.php @@ -0,0 +1,46 @@ +<?php
+/**
+ * PHP LDAP CLASS FOR MANIPULATING ACTIVE DIRECTORY
+ * Version 4.0.4
+ *
+ * PHP Version 5 with SSL and LDAP support
+ *
+ * Written by Scott Barnett, Richard Hyland
+ * email: scott@wiggumworld.com, adldap@richardhyland.com
+ * http://adldap.sourceforge.net/
+ *
+ * Copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ *
+ * We'd appreciate any improvements or additions to be submitted back
+ * to benefit the entire community :)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * @category ToolsAndUtilities
+ * @package adLDAP
+ * @subpackage UserCollection
+ * @author Scott Barnett, Richard Hyland
+ * @copyright (c) 2006-2012 Scott Barnett, Richard Hyland
+ * @license http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html LGPLv2.1
+ * @revision $Revision: 97 $
+ * @version 4.0.4
+ * @link http://adldap.sourceforge.net/
+*/
+
+class adLDAPUserCollection extends adLDAPCollection
+{
+
+ public function __set($attribute, $value)
+ {
+
+ }
+}
+?>
diff --git a/inc/auth.php b/inc/auth.php index cedfdee36..99adfa791 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -65,7 +65,7 @@ function auth_setup() { nice_die($lang['authmodfailed']); } - if(!$auth) return false; + if(!isset($auth) || !$auth) return false; // do the login either by cookie or provided credentials XXX $INPUT->set('http_credentials', false); @@ -733,68 +733,62 @@ function register() { global $conf; /* @var auth_basic $auth */ global $auth; + global $INPUT; - if(!$_POST['save']) return false; + if(!$INPUT->post->bool('save')) return false; if(!actionOK('register')) return false; - //clean username - $_POST['login'] = trim($auth->cleanUser($_POST['login'])); - - //clean fullname and email - $_POST['fullname'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $_POST['fullname'])); - $_POST['email'] = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $_POST['email'])); + // gather input + $login = trim($auth->cleanUser($INPUT->post->str('login'))); + $fullname = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $INPUT->post->str('fullname'))); + $email = trim(preg_replace('/[\x00-\x1f:<>&%,;]+/', '', $INPUT->post->str('email'))); + $pass = $INPUT->post->str('pass'); + $passchk = $INPUT->post->str('passchk'); - if(empty($_POST['login']) || - empty($_POST['fullname']) || - empty($_POST['email']) - ) { + if(empty($login) || empty($fullname) || empty($email)) { msg($lang['regmissing'], -1); return false; } if($conf['autopasswd']) { $pass = auth_pwgen(); // automatically generate password - } elseif(empty($_POST['pass']) || - empty($_POST['passchk']) - ) { + } elseif(empty($pass) || empty($passchk)) { msg($lang['regmissing'], -1); // complain about missing passwords return false; - } elseif($_POST['pass'] != $_POST['passchk']) { + } elseif($pass != $passchk) { msg($lang['regbadpass'], -1); // complain about misspelled passwords return false; - } else { - $pass = $_POST['pass']; // accept checked and valid password } //check mail - if(!mail_isvalid($_POST['email'])) { + if(!mail_isvalid($email)) { msg($lang['regbadmail'], -1); return false; } //okay try to create the user - if(!$auth->triggerUserMod('create', array($_POST['login'], $pass, $_POST['fullname'], $_POST['email']))) { + if(!$auth->triggerUserMod('create', array($login, $pass, $fullname, $email))) { msg($lang['reguexists'], -1); return false; } // create substitutions for use in notification email $substitutions = array( - 'NEWUSER' => $_POST['login'], - 'NEWNAME' => $_POST['fullname'], - 'NEWEMAIL' => $_POST['email'], + 'NEWUSER' => $login, + 'NEWNAME' => $fullname, + 'NEWEMAIL' => $email, ); if(!$conf['autopasswd']) { msg($lang['regsuccess2'], 1); - notify('', 'register', '', $_POST['login'], false, $substitutions); + notify('', 'register', '', $login, false, $substitutions); return true; } // autogenerated password? then send him the password - if(auth_sendPassword($_POST['login'], $pass)) { + if(auth_sendPassword($login, $pass)) { msg($lang['regsuccess'], 1); - notify('', 'register', '', $_POST['login'], false, $substitutions); + notify('', 'register', '', $login, false, $substitutions); return true; } else { msg($lang['regmailfail'], -1); diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php index f535556a8..a6f3b0513 100644 --- a/inc/auth/ad.class.php +++ b/inc/auth/ad.class.php @@ -41,7 +41,7 @@ * @author Andreas Gohr <andi@splitbrain.org> */ -require_once(DOKU_INC.'inc/adLDAP.php'); +require_once(DOKU_INC.'inc/adLDAP/adLDAP.php'); class auth_ad extends auth_basic { /** @@ -176,8 +176,8 @@ class auth_ad extends auth_basic { $fields = array_unique($fields); //get info for given user - $result = $adldap->user_info($this->_userName($user), $fields); - if($result == false) { + $result = $this->adldap->user()->info($this->_userName($user), $fields); + if($result == false){ return array(); } @@ -199,7 +199,7 @@ class auth_ad extends auth_basic { } // handle ActiveDirectory memberOf - $info['grps'] = $adldap->user_groups($this->_userName($user), (bool) $this->opts['recursive_groups']); + $info['grps'] = $this->adldap->user()->groups($this->_userName($user),(bool) $this->opts['recursive_groups']); if(is_array($info['grps'])) { foreach($info['grps'] as $ndx => $group) { @@ -219,11 +219,9 @@ class auth_ad extends auth_basic { } // check expiry time - if($info['expires'] && $this->cnf['expirywarn']) { - $result = $adldap->domain_info(array('maxpwdage')); // maximum pass age - $maxage = -1 * $result['maxpwdage'][0] / 10000000; // negative 100 nanosecs - $timeleft = $maxage - (time() - $info['lastpwd']); - $timeleft = round($timeleft / (24 * 60 * 60)); + if($info['expires'] && $this->cnf['expirywarn']){ + $timeleft = $this->adldap->user()->passwordExpiry($user); // returns unixtime + $timeleft = round($timeleft/(24*60*60)); $info['expiresin'] = $timeleft; // if this is the current user, warn him (once per request only) @@ -318,8 +316,8 @@ class auth_ad extends auth_basic { if($this->users === null) { //get info for given user - $result = $adldap->all_users(); - if(!$result) return array(); + $result = $this->adldap->user()->all(); + if (!$result) return array(); $this->users = array_fill_keys($result, false); } @@ -358,9 +356,9 @@ class auth_ad extends auth_basic { // password changing if(isset($changes['pass'])) { try { - $return = $adldap->user_password($this->_userName($user), $changes['pass']); - } catch(adLDAPException $e) { - if($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1); + $return = $this->adldap->user()->password($this->_userName($user),$changes['pass']); + } catch (adLDAPException $e) { + if ($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1); $return = false; } if(!$return) msg('AD Auth: failed to change the password. Maybe the password policy was not met?', -1); @@ -380,9 +378,9 @@ class auth_ad extends auth_basic { } if(count($adchanges)) { try { - $return = $return & $adldap->user_modify($this->_userName($user), $adchanges); - } catch(adLDAPException $e) { - if($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1); + $return = $return & $this->adldap->user()->modify($this->_userName($user),$adchanges); + } catch (adLDAPException $e) { + if ($this->cnf['debug']) msg('AD Auth: '.$e->getMessage(), -1); $return = false; } } diff --git a/inc/changelog.php b/inc/changelog.php index 24583b341..688aebfd6 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -157,7 +157,8 @@ function addMediaLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', * @param int $first number of first entry returned (for paginating * @param int $num return $num entries * @param string $ns restrict to given namespace - * @param bool $flags see above + * @param int $flags see above + * @return array recently changed files * * @author Ben Coburn <btcoburn@silicodon.net> * @author Kate Arzamastseva <pshns@ukr.net> @@ -177,6 +178,8 @@ function getRecents($first,$num,$ns='',$flags=0){ $lines = @file($conf['changelog']); } $lines_position = count($lines)-1; + $media_lines_position = 0; + $media_lines = array(); if ($flags & RECENTS_MEDIA_PAGES_MIXED) { $media_lines = @file($conf['media_changelog']); @@ -236,7 +239,8 @@ function getRecents($first,$num,$ns='',$flags=0){ * @param int $from date of the oldest entry to return * @param int $to date of the newest entry to return (for pagination, optional) * @param string $ns restrict to given namespace (optional) - * @param bool $flags see above (optional) + * @param int $flags see above (optional) + * @return array of files * * @author Michael Hamann <michael@content-space.de> * @author Ben Coburn <btcoburn@silicodon.net> diff --git a/inc/common.php b/inc/common.php index ac7e744d8..20baed6c0 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1150,14 +1150,18 @@ function notify($id, $who, $rev = '', $summary = '', $minor = false, $replace = } elseif($rev) { $subject = $lang['mail_changed'].' '.$id; $trep['OLDPAGE'] = wl($id, "rev=$rev", true, '&'); - $df = new Diff(explode("\n", rawWiki($id, $rev)), - explode("\n", rawWiki($id))); + $old_content = rawWiki($id, $rev); + $new_content = rawWiki($id); + $df = new Diff(explode("\n", $old_content), + explode("\n", $new_content)); $dformat = new UnifiedDiffFormatter(); $tdiff = $dformat->format($df); $DIFF_INLINESTYLES = true; + $hdf = new Diff(explode("\n", hsc($old_content)), + explode("\n", hsc($new_content))); $dformat = new InlineDiffFormatter(); - $hdiff = $dformat->format($df); + $hdiff = $dformat->format($hdf); $hdiff = '<table>'.$hdiff.'</table>'; $DIFF_INLINESTYLES = false; } else { diff --git a/inc/confutils.php b/inc/confutils.php index edea80092..404cc6050 100644 --- a/inc/confutils.php +++ b/inc/confutils.php @@ -143,6 +143,9 @@ function getSchemes() { */ function linesToHash($lines, $lower=false) { $conf = array(); + // remove BOM + if (isset($lines[0]) && substr($lines[0],0,3) == pack('CCC',0xef,0xbb,0xbf)) + $lines[0] = substr($lines[0],3); foreach ( $lines as $line ) { //ignore comments (except escaped ones) $line = preg_replace('/(?<![&\\\\])#.*$/','',$line); diff --git a/inc/geshi/4cs.php b/inc/geshi/4cs.php index 7b1efec9a..5209c51e8 100644 --- a/inc/geshi/4cs.php +++ b/inc/geshi/4cs.php @@ -4,7 +4,7 @@ * ------ * Author: Jason Curl (jason.curl@continental-corporation.com) * Copyright: (c) 2009 Jason Curl - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/09/05 * * 4CS language file for GeSHi. diff --git a/inc/geshi/6502acme.php b/inc/geshi/6502acme.php index 880211d5b..203e04dfa 100644 --- a/inc/geshi/6502acme.php +++ b/inc/geshi/6502acme.php @@ -4,7 +4,7 @@ * ------- * Author: Warren Willmey * Copyright: (c) 2010 Warren Willmey. - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/05/26 * * MOS 6502 (more specifically 6510) ACME Cross Assembler 0.93 by Marco Baye language file for GeSHi. diff --git a/inc/geshi/6502kickass.php b/inc/geshi/6502kickass.php index b1edcaa5b..804282629 100644 --- a/inc/geshi/6502kickass.php +++ b/inc/geshi/6502kickass.php @@ -4,7 +4,7 @@ * ------- * Author: Warren Willmey * Copyright: (c) 2010 Warren Willmey. - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/06/07 * * MOS 6502 (6510) Kick Assembler 3.13 language file for GeSHi. diff --git a/inc/geshi/6502tasm.php b/inc/geshi/6502tasm.php index 5f9f2b9be..86aa479df 100644 --- a/inc/geshi/6502tasm.php +++ b/inc/geshi/6502tasm.php @@ -4,7 +4,7 @@ * ------- * Author: Warren Willmey * Copyright: (c) 2010 Warren Willmey. - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/06/02 * * MOS 6502 (6510) TASM/64TASS (64TASS being the super set of TASM) language file for GeSHi. diff --git a/inc/geshi/68000devpac.php b/inc/geshi/68000devpac.php index efd800809..f46387ae9 100644 --- a/inc/geshi/68000devpac.php +++ b/inc/geshi/68000devpac.php @@ -4,7 +4,7 @@ * ------- * Author: Warren Willmey * Copyright: (c) 2010 Warren Willmey. - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/06/09 * * Motorola 68000 - HiSoft Devpac ST 2 Assembler language file for GeSHi. diff --git a/inc/geshi/abap.php b/inc/geshi/abap.php index 6ce930c7c..5acd261c6 100644 --- a/inc/geshi/abap.php +++ b/inc/geshi/abap.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * ABAP language file for GeSHi. diff --git a/inc/geshi/actionscript.php b/inc/geshi/actionscript.php index 47eec3950..08e5b49ac 100644 --- a/inc/geshi/actionscript.php +++ b/inc/geshi/actionscript.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/20 * * Actionscript language file for GeSHi. diff --git a/inc/geshi/actionscript3.php b/inc/geshi/actionscript3.php index ba27573cc..189d714b3 100644 --- a/inc/geshi/actionscript3.php +++ b/inc/geshi/actionscript3.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2007/11/26 * * ActionScript3 language file for GeSHi. @@ -72,7 +72,7 @@ $language_data = array ( 'private', 'null', 'new', 'is', 'internal', 'instanceof', 'in', 'import', 'if', 'get', 'for', 'false', 'else', 'each', 'do', 'delete', 'default', 'continue', 'catch', 'case', 'break', 'as', - 'extends' + 'extends', 'override' ), 2 => array( 'var' diff --git a/inc/geshi/ada.php b/inc/geshi/ada.php index 8f8390952..c4ef2c395 100644 --- a/inc/geshi/ada.php +++ b/inc/geshi/ada.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/29 * * Ada language file for GeSHi. diff --git a/inc/geshi/algol68.php b/inc/geshi/algol68.php index 1f79f10eb..5b1e5aa7f 100644 --- a/inc/geshi/algol68.php +++ b/inc/geshi/algol68.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2010/04/24 * * ALGOL 68 language file for GeSHi. diff --git a/inc/geshi/apache.php b/inc/geshi/apache.php index ace3862ef..c944443c7 100644 --- a/inc/geshi/apache.php +++ b/inc/geshi/apache.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/29/07 * * Apache language file for GeSHi. diff --git a/inc/geshi/applescript.php b/inc/geshi/applescript.php index c64a4974d..603fa4a3e 100644 --- a/inc/geshi/applescript.php +++ b/inc/geshi/applescript.php @@ -4,7 +4,7 @@ * -------- * Author: Stephan Klimek (http://www.initware.org) * Copyright: Stephan Klimek (http://www.initware.org) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/07/20 * * AppleScript language file for GeSHi. diff --git a/inc/geshi/apt_sources.php b/inc/geshi/apt_sources.php index 9feefceaf..9f1ed045e 100644 --- a/inc/geshi/apt_sources.php +++ b/inc/geshi/apt_sources.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/06/17 * * Apt sources.list language file for GeSHi. diff --git a/inc/geshi/arm.php b/inc/geshi/arm.php new file mode 100644 index 000000000..8e3c0a37e --- /dev/null +++ b/inc/geshi/arm.php @@ -0,0 +1,3318 @@ +<?php +/************************************************************************************* + * arm.php + * ------- + * Author: Marat Dukhan (mdukhan3.at.gatech.dot.edu) + * Copyright: (c) Marat Dukhan (mdukhan3.at.gatech.dot.edu) + * Release Version: 1.0.8.11 + * Date Started: 2011/10/06 + * + * ARM Assembler language file for GeSHi. + * Based on the following documents: + * - "ARM Architecture Reference Manual: ARMv7-A and ARMv7-R edition" + * - "Intel XScale Technology: Intel Wireless MMX2 Coprocessor", + * Revision 1.5, July 2006 + * + * CHANGES + * ------- + * 2011/10/06 + * - First Release (supported UAL syntax for up to ARMv7 A/R, VFPv3, NEON, WMMX/WMMX2) + * + * TODO (updated 2011/10/06) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'ARM ASSEMBLER', + 'COMMENT_SINGLE' => array( + 1 => ';' + ), + 'COMMENT_MULTI' => array(), + //Line address prefix suppression + 'COMMENT_REGEXP' => array( + 2 => "/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* Unconditional Data Processing Instructions */ + 1 => array( + /* Data Processing: Unconditional Addition & Subtraction */ + 'adc.w','adcal.w', + 'adc','adcal', + 'add.w','addal.w', + 'add','addal', + 'addw','addwal', + 'rsb.w','rsbal.w', + 'rsb','rsbal', + 'rsc','rscal', + 'sbc.w','sbcal.w', + 'sbc','sbcal', + 'sub.w','subal.w', + 'sub','subal', + 'neg.w','negal.w', + 'neg','negal', + 'adr.w','adral.w', + 'adr','adral', + /* Data Processing: Unconditional Logical */ + 'and.w','andal.w', + 'and','andal', + 'bic.w','bical.w', + 'bic','bical', + 'orr.w','orral.w', + 'orr','orral', + 'orn.w','ornal.w', + 'orn','ornal', + 'eor.w','eoral.w', + 'eor','eoral', + 'mov.w','moval.w', + 'mov','moval', + 'movw','movwal', + 'movt','movtal', + 'cpy','cpyal', + 'mvn.w','mvnal.w', + 'mvn','mvnal', + /* Data Processing: Unconditional Shifts and Rotates */ + 'asr.w','asral.w', + 'asr','asral', + 'lsl.w','lslal.w', + 'lsl','lslal', + 'lsr.w','lsral.w', + 'lsr','lsral', + 'ror.w','roral.w', + 'ror','roral', + 'rrx','rrxal', + /* Data Processing: Unconditional Word Multiply and Multiply-Add */ + 'mul','mulal', + 'mla','mlaal', + 'mls','mlsal', + 'smull','smullal', + 'muls','mulsal', + 'umull','umullal', + 'smlal','smlalal', + 'umlal','umlalal', + /* Data Processing: Unconditional Halfword Multiply and Multiply-Add (ARMv5TE) */ + 'smulbb','smulbbal', + 'smulbt','smulbtal', + 'smultb','smultbal', + 'smultt','smulttal', + 'smulwb','smulwbal', + 'smulwt','smulwtal', + 'smlalbb','smlalbbal', + 'smlalbt','smlalbtal', + 'smlaltb','smlaltbal', + 'smlaltt','smlalttal', + 'smlabb','smlabbal', + 'smlabt','smlabtal', + 'smlatb','smlatbal', + 'smlatt','smlattal', + 'smlawb','smlawbal', + 'smlawt','smlawtal', + /* Data Processing: Unconditional Bit Operations */ + 'ubfx','ubfxal', + 'sbfx','sbfxal', + 'bfc','bfcal', + 'bfi','bfial', + 'clz','clzal', + /* Data Processing: Unconditional Divide (ARMv7-R) */ + 'sdiv','sdival', + 'udiv','udival' + ), + /* Conditional Data Processing Instructions */ + 2 => array( + /* Data Processing: Conditional Addition & Subtraction */ + 'adceq.w','adcne.w','adccs.w','adchs.w','adccc.w','adclo.w','adcmi.w','adcpl.w','adcvs.w','adcvc.w','adchi.w','adcls.w','adcge.w','adclt.w','adcgt.w','adcle.w', + 'adceq','adcne','adccs','adchs','adccc','adclo','adcmi','adcpl','adcvs','adcvc','adchi','adcls','adcge','adclt','adcgt','adcle', + 'addeq.w','addne.w','addcs.w','addhs.w','addcc.w','addlo.w','addmi.w','addpl.w','addvs.w','addvc.w','addhi.w','addls.w','addge.w','addlt.w','addgt.w','addle.w', + 'addeq','addne','addcs','addhs','addcc','addlo','addmi','addpl','addvs','addvc','addhi','addls','addge','addlt','addgt','addle', + 'addweq','addwne','addwcs','addwhs','addwcc','addwlo','addwmi','addwpl','addwvs','addwvc','addwhi','addwls','addwge','addwlt','addwgt','addwle', + 'rsbeq.w','rsbne.w','rsbcs.w','rsbhs.w','rsbcc.w','rsblo.w','rsbmi.w','rsbpl.w','rsbvs.w','rsbvc.w','rsbhi.w','rsbls.w','rsbge.w','rsblt.w','rsbgt.w','rsble.w', + 'rsbeq','rsbne','rsbcs','rsbhs','rsbcc','rsblo','rsbmi','rsbpl','rsbvs','rsbvc','rsbhi','rsbls','rsbge','rsblt','rsbgt','rsble', + 'rsceq','rscne','rsccs','rschs','rsccc','rsclo','rscmi','rscpl','rscvs','rscvc','rschi','rscls','rscge','rsclt','rscgt','rscle', + 'sbceq.w','sbcne.w','sbccs.w','sbchs.w','sbccc.w','sbclo.w','sbcmi.w','sbcpl.w','sbcvs.w','sbcvc.w','sbchi.w','sbcls.w','sbcge.w','sbclt.w','sbcgt.w','sbcle.w', + 'sbceq','sbcne','sbccs','sbchs','sbccc','sbclo','sbcmi','sbcpl','sbcvs','sbcvc','sbchi','sbcls','sbcge','sbclt','sbcgt','sbcle', + 'subeq.w','subne.w','subcs.w','subhs.w','subcc.w','sublo.w','submi.w','subpl.w','subvs.w','subvc.w','subhi.w','subls.w','subge.w','sublt.w','subgt.w','suble.w', + 'subeq','subne','subcs','subhs','subcc','sublo','submi','subpl','subvs','subvc','subhi','subls','subge','sublt','subgt','suble', + 'negeq.w','negne.w','negcs.w','neghs.w','negcc.w','neglo.w','negmi.w','negpl.w','negvs.w','negvc.w','neghi.w','negls.w','negge.w','neglt.w','neggt.w','negle.w', + 'negeq','negne','negcs','neghs','negcc','neglo','negmi','negpl','negvs','negvc','neghi','negls','negge','neglt','neggt','negle', + 'adreq.w','adrne.w','adrcs.w','adrhs.w','adrcc.w','adrlo.w','adrmi.w','adrpl.w','adrvs.w','adrvc.w','adrhi.w','adrls.w','adrge.w','adrlt.w','adrgt.w','adrle.w', + 'adreq','adrne','adrcs','adrhs','adrcc','adrlo','adrmi','adrpl','adrvs','adrvc','adrhi','adrls','adrge','adrlt','adrgt','adrle', + /* Data Processing: Conditional Logical */ + 'andeq.w','andne.w','andcs.w','andhs.w','andcc.w','andlo.w','andmi.w','andpl.w','andvs.w','andvc.w','andhi.w','andls.w','andge.w','andlt.w','andgt.w','andle.w', + 'andeq','andne','andcs','andhs','andcc','andlo','andmi','andpl','andvs','andvc','andhi','andls','andge','andlt','andgt','andle', + 'biceq.w','bicne.w','biccs.w','bichs.w','biccc.w','biclo.w','bicmi.w','bicpl.w','bicvs.w','bicvc.w','bichi.w','bicls.w','bicge.w','biclt.w','bicgt.w','bicle.w', + 'biceq','bicne','biccs','bichs','biccc','biclo','bicmi','bicpl','bicvs','bicvc','bichi','bicls','bicge','biclt','bicgt','bicle', + 'orreq.w','orrne.w','orrcs.w','orrhs.w','orrcc.w','orrlo.w','orrmi.w','orrpl.w','orrvs.w','orrvc.w','orrhi.w','orrls.w','orrge.w','orrlt.w','orrgt.w','orrle.w', + 'orreq','orrne','orrcs','orrhs','orrcc','orrlo','orrmi','orrpl','orrvs','orrvc','orrhi','orrls','orrge','orrlt','orrgt','orrle', + 'orneq.w','ornne.w','orncs.w','ornhs.w','orncc.w','ornlo.w','ornmi.w','ornpl.w','ornvs.w','ornvc.w','ornhi.w','ornls.w','ornge.w','ornlt.w','orngt.w','ornle.w', + 'orneq','ornne','orncs','ornhs','orncc','ornlo','ornmi','ornpl','ornvs','ornvc','ornhi','ornls','ornge','ornlt','orngt','ornle', + 'eoreq.w','eorne.w','eorcs.w','eorhs.w','eorcc.w','eorlo.w','eormi.w','eorpl.w','eorvs.w','eorvc.w','eorhi.w','eorls.w','eorge.w','eorlt.w','eorgt.w','eorle.w', + 'eoreq','eorne','eorcs','eorhs','eorcc','eorlo','eormi','eorpl','eorvs','eorvc','eorhi','eorls','eorge','eorlt','eorgt','eorle', + 'moveq.w','movne.w','movcs.w','movhs.w','movcc.w','movlo.w','movmi.w','movpl.w','movvs.w','movvc.w','movhi.w','movls.w','movge.w','movlt.w','movgt.w','movle.w', + 'moveq','movne','movcs','movhs','movcc','movlo','movmi','movpl','movvs','movvc','movhi','movls','movge','movlt','movgt','movle', + 'movweq','movwne','movwcs','movwhs','movwcc','movwlo','movwmi','movwpl','movwvs','movwvc','movwhi','movwls','movwge','movwlt','movwgt','movwle', + 'movteq','movtne','movtcs','movths','movtcc','movtlo','movtmi','movtpl','movtvs','movtvc','movthi','movtls','movtge','movtlt','movtgt','movtle', + 'cpyeq','cpyne','cpycs','cpyhs','cpycc','cpylo','cpymi','cpypl','cpyvs','cpyvc','cpyhi','cpyls','cpyge','cpylt','cpygt','cpyle', + 'mvneq.w','mvnne.w','mvncs.w','mvnhs.w','mvncc.w','mvnlo.w','mvnmi.w','mvnpl.w','mvnvs.w','mvnvc.w','mvnhi.w','mvnls.w','mvnge.w','mvnlt.w','mvngt.w','mvnle.w', + 'mvneq','mvnne','mvncs','mvnhs','mvncc','mvnlo','mvnmi','mvnpl','mvnvs','mvnvc','mvnhi','mvnls','mvnge','mvnlt','mvngt','mvnle', + /* Data Processing: Conditional Shifts and Rotates */ + 'asreq.w','asrne.w','asrcs.w','asrhs.w','asrcc.w','asrlo.w','asrmi.w','asrpl.w','asrvs.w','asrvc.w','asrhi.w','asrls.w','asrge.w','asrlt.w','asrgt.w','asrle.w', + 'asreq','asrne','asrcs','asrhs','asrcc','asrlo','asrmi','asrpl','asrvs','asrvc','asrhi','asrls','asrge','asrlt','asrgt','asrle', + 'lsleq.w','lslne.w','lslcs.w','lslhs.w','lslcc.w','lsllo.w','lslmi.w','lslpl.w','lslvs.w','lslvc.w','lslhi.w','lslls.w','lslge.w','lsllt.w','lslgt.w','lslle.w', + 'lsleq','lslne','lslcs','lslhs','lslcc','lsllo','lslmi','lslpl','lslvs','lslvc','lslhi','lslls','lslge','lsllt','lslgt','lslle', + 'lsreq.w','lsrne.w','lsrcs.w','lsrhs.w','lsrcc.w','lsrlo.w','lsrmi.w','lsrpl.w','lsrvs.w','lsrvc.w','lsrhi.w','lsrls.w','lsrge.w','lsrlt.w','lsrgt.w','lsrle.w', + 'lsreq','lsrne','lsrcs','lsrhs','lsrcc','lsrlo','lsrmi','lsrpl','lsrvs','lsrvc','lsrhi','lsrls','lsrge','lsrlt','lsrgt','lsrle', + 'roreq.w','rorne.w','rorcs.w','rorhs.w','rorcc.w','rorlo.w','rormi.w','rorpl.w','rorvs.w','rorvc.w','rorhi.w','rorls.w','rorge.w','rorlt.w','rorgt.w','rorle.w', + 'roreq','rorne','rorcs','rorhs','rorcc','rorlo','rormi','rorpl','rorvs','rorvc','rorhi','rorls','rorge','rorlt','rorgt','rorle', + 'rrxeq','rrxne','rrxcs','rrxhs','rrxcc','rrxlo','rrxmi','rrxpl','rrxvs','rrxvc','rrxhi','rrxls','rrxge','rrxlt','rrxgt','rrxle', + /* Data Processing: Conditional Word Multiply and Multiply-Add */ + 'muleq','mulne','mulcs','mulhs','mulcc','mullo','mulmi','mulpl','mulvs','mulvc','mulhi','mulls','mulge','mullt','mulgt','mulle', + 'mlaeq','mlane','mlacs','mlahs','mlacc','mlalo','mlami','mlapl','mlavs','mlavc','mlahi','mlals','mlage','mlalt','mlagt','mlale', + 'mlseq','mlsne','mlscs','mlshs','mlscc','mlslo','mlsmi','mlspl','mlsvs','mlsvc','mlshi','mlsls','mlsge','mlslt','mlsgt','mlsle', + 'smulleq','smullne','smullcs','smullhs','smullcc','smulllo','smullmi','smullpl','smullvs','smullvc','smullhi','smullls','smullge','smulllt','smullgt','smullle', + 'mulseq','mulsne','mulscs','mulshs','mulscc','mulslo','mulsmi','mulspl','mulsvs','mulsvc','mulshi','mulsls','mulsge','mulslt','mulsgt','mulsle', + 'umulleq','umullne','umullcs','umullhs','umullcc','umulllo','umullmi','umullpl','umullvs','umullvc','umullhi','umullls','umullge','umulllt','umullgt','umullle', + 'smlaleq','smlalne','smlalcs','smlalhs','smlalcc','smlallo','smlalmi','smlalpl','smlalvs','smlalvc','smlalhi','smlalls','smlalge','smlallt','smlalgt','smlalle', + 'umlaleq','umlalne','umlalcs','umlalhs','umlalcc','umlallo','umlalmi','umlalpl','umlalvs','umlalvc','umlalhi','umlalls','umlalge','umlallt','umlalgt','umlalle', + /* Data Processing: Conditional Halfword Multiply and Multiply-Add (ARMv5TE) */ + 'smulbbeq','smulbbne','smulbbcs','smulbbhs','smulbbcc','smulbblo','smulbbmi','smulbbpl','smulbbvs','smulbbvc','smulbbhi','smulbbls','smulbbge','smulbblt','smulbbgt','smulbble', + 'smulbteq','smulbtne','smulbtcs','smulbths','smulbtcc','smulbtlo','smulbtmi','smulbtpl','smulbtvs','smulbtvc','smulbthi','smulbtls','smulbtge','smulbtlt','smulbtgt','smulbtle', + 'smultbeq','smultbne','smultbcs','smultbhs','smultbcc','smultblo','smultbmi','smultbpl','smultbvs','smultbvc','smultbhi','smultbls','smultbge','smultblt','smultbgt','smultble', + 'smultteq','smulttne','smulttcs','smultths','smulttcc','smulttlo','smulttmi','smulttpl','smulttvs','smulttvc','smultthi','smulttls','smulttge','smulttlt','smulttgt','smulttle', + 'smulwbeq','smulwbne','smulwbcs','smulwbhs','smulwbcc','smulwblo','smulwbmi','smulwbpl','smulwbvs','smulwbvc','smulwbhi','smulwbls','smulwbge','smulwblt','smulwbgt','smulwble', + 'smulwteq','smulwtne','smulwtcs','smulwths','smulwtcc','smulwtlo','smulwtmi','smulwtpl','smulwtvs','smulwtvc','smulwthi','smulwtls','smulwtge','smulwtlt','smulwtgt','smulwtle', + 'smlalbbeq','smlalbbne','smlalbbcs','smlalbbhs','smlalbbcc','smlalbblo','smlalbbmi','smlalbbpl','smlalbbvs','smlalbbvc','smlalbbhi','smlalbbls','smlalbbge','smlalbblt','smlalbbgt','smlalbble', + 'smlalbteq','smlalbtne','smlalbtcs','smlalbths','smlalbtcc','smlalbtlo','smlalbtmi','smlalbtpl','smlalbtvs','smlalbtvc','smlalbthi','smlalbtls','smlalbtge','smlalbtlt','smlalbtgt','smlalbtle', + 'smlaltbeq','smlaltbne','smlaltbcs','smlaltbhs','smlaltbcc','smlaltblo','smlaltbmi','smlaltbpl','smlaltbvs','smlaltbvc','smlaltbhi','smlaltbls','smlaltbge','smlaltblt','smlaltbgt','smlaltble', + 'smlaltteq','smlalttne','smlalttcs','smlaltths','smlalttcc','smlalttlo','smlalttmi','smlalttpl','smlalttvs','smlalttvc','smlaltthi','smlalttls','smlalttge','smlalttlt','smlalttgt','smlalttle', + 'smlabbeq','smlabbne','smlabbcs','smlabbhs','smlabbcc','smlabblo','smlabbmi','smlabbpl','smlabbvs','smlabbvc','smlabbhi','smlabbls','smlabbge','smlabblt','smlabbgt','smlabble', + 'smlabteq','smlabtne','smlabtcs','smlabths','smlabtcc','smlabtlo','smlabtmi','smlabtpl','smlabtvs','smlabtvc','smlabthi','smlabtls','smlabtge','smlabtlt','smlabtgt','smlabtle', + 'smlatbeq','smlatbne','smlatbcs','smlatbhs','smlatbcc','smlatblo','smlatbmi','smlatbpl','smlatbvs','smlatbvc','smlatbhi','smlatbls','smlatbge','smlatblt','smlatbgt','smlatble', + 'smlatteq','smlattne','smlattcs','smlatths','smlattcc','smlattlo','smlattmi','smlattpl','smlattvs','smlattvc','smlatthi','smlattls','smlattge','smlattlt','smlattgt','smlattle', + 'smlawbeq','smlawbne','smlawbcs','smlawbhs','smlawbcc','smlawblo','smlawbmi','smlawbpl','smlawbvs','smlawbvc','smlawbhi','smlawbls','smlawbge','smlawblt','smlawbgt','smlawble', + 'smlawteq','smlawtne','smlawtcs','smlawths','smlawtcc','smlawtlo','smlawtmi','smlawtpl','smlawtvs','smlawtvc','smlawthi','smlawtls','smlawtge','smlawtlt','smlawtgt','smlawtle', + /* Data Processing: Conditional Bit Operations */ + 'ubfxeq','ubfxne','ubfxcs','ubfxhs','ubfxcc','ubfxlo','ubfxmi','ubfxpl','ubfxvs','ubfxvc','ubfxhi','ubfxls','ubfxge','ubfxlt','ubfxgt','ubfxle', + 'sbfxeq','sbfxne','sbfxcs','sbfxhs','sbfxcc','sbfxlo','sbfxmi','sbfxpl','sbfxvs','sbfxvc','sbfxhi','sbfxls','sbfxge','sbfxlt','sbfxgt','sbfxle', + 'bfceq','bfcne','bfccs','bfchs','bfccc','bfclo','bfcmi','bfcpl','bfcvs','bfcvc','bfchi','bfcls','bfcge','bfclt','bfcgt','bfcle', + 'bfieq','bfine','bfics','bfihs','bficc','bfilo','bfimi','bfipl','bfivs','bfivc','bfihi','bfils','bfige','bfilt','bfigt','bfile', + 'clzeq','clzne','clzcs','clzhs','clzcc','clzlo','clzmi','clzpl','clzvs','clzvc','clzhi','clzls','clzge','clzlt','clzgt','clzle', + /* ARMv7-R: Conditional Divide */ + 'sdiveq','sdivne','sdivcs','sdivhs','sdivcc','sdivlo','sdivmi','sdivpl','sdivvs','sdivvc','sdivhi','sdivls','sdivge','sdivlt','sdivgt','sdivle', + 'udiveq','udivne','udivcs','udivhs','udivcc','udivlo','udivmi','udivpl','udivvs','udivvc','udivhi','udivls','udivge','udivlt','udivgt','udivle' + ), + /* Unconditional Memory Access */ + 3 => array( + /* Memory Access: Unconditional Memory Loads and Prefetches */ + 'ldm.w','ldmal.w', + 'ldm','ldmal', + 'ldmda','ldmdaal', + 'ldmdb','ldmdbal', + 'ldmib','ldmibal', + 'ldmia','ldmiaal', + 'ldmea','ldmeaal', + 'ldmed','ldmedal', + 'ldmfa','ldmfaal', + 'ldmfd','ldmfdal', + 'ldrd','ldrdal', + 'ldr.w','ldral.w', + 'ldr','ldral', + 'ldrh.w','ldrhal.w', + 'ldrh','ldrhal', + 'ldrb.w','ldrbal.w', + 'ldrb','ldrbal', + 'ldrsh.w','ldrshal.w', + 'ldrsh','ldrshal', + 'ldrsb.w','ldrsbal.w', + 'ldrsb','ldrsbal', + 'ldrt','ldrtal', + 'ldrht','ldrhtal', + 'ldrbt','ldrbtal', + 'ldrsht','ldrshtal', + 'ldrsbt','ldrsbtal', + 'pop.w','popal.w', + 'pop','popal', + 'pld','pldal', + 'pldw','pldwal', + 'pli','plial', + /* Memory Access: Unconditional Memory Stores */ + 'stm.w','stmal.w', + 'stm','stmal', + 'stmda','stmdaal', + 'stmdb','stmdbal', + 'stmib','stmibal', + 'stmia','stmiaal', + 'stmea','stmeaal', + 'stmed','stmedal', + 'stdfa','stdfaal', + 'stdfd','stdfdal', + 'strd','strdal', + 'str.w','stral.w', + 'str','stral', + 'strh.w','strhal.w', + 'strh','strhal', + 'strb.w','strbal.w', + 'strb','strbal', + 'strt','strtal', + 'strht','strhtal', + 'strbt','strbtal', + 'push.w','pushal.w', + 'push','pushal' + ), + /* Conditional Memory Access */ + 4 => array( + /* Memory Access: Conditional Memory Loads and Prefetches */ + 'ldmeq.w','ldmne.w','ldmcs.w','ldmhs.w','ldmcc.w','ldmlo.w','ldmmi.w','ldmpl.w','ldmvs.w','ldmvc.w','ldmhi.w','ldmls.w','ldmge.w','ldmlt.w','ldmgt.w','ldmle.w', + 'ldmeq','ldmne','ldmcs','ldmhs','ldmcc','ldmlo','ldmmi','ldmpl','ldmvs','ldmvc','ldmhi','ldmls','ldmge','ldmlt','ldmgt','ldmle', + 'ldmdaeq','ldmdane','ldmdacs','ldmdahs','ldmdacc','ldmdalo','ldmdami','ldmdapl','ldmdavs','ldmdavc','ldmdahi','ldmdals','ldmdage','ldmdalt','ldmdagt','ldmdale', + 'ldmdbeq','ldmdbne','ldmdbcs','ldmdbhs','ldmdbcc','ldmdblo','ldmdbmi','ldmdbpl','ldmdbvs','ldmdbvc','ldmdbhi','ldmdbls','ldmdbge','ldmdblt','ldmdbgt','ldmdble', + 'ldmibeq','ldmibne','ldmibcs','ldmibhs','ldmibcc','ldmiblo','ldmibmi','ldmibpl','ldmibvs','ldmibvc','ldmibhi','ldmibls','ldmibge','ldmiblt','ldmibgt','ldmible', + 'ldmiaeq','ldmiane','ldmiacs','ldmiahs','ldmiacc','ldmialo','ldmiami','ldmiapl','ldmiavs','ldmiavc','ldmiahi','ldmials','ldmiage','ldmialt','ldmiagt','ldmiale', + 'ldmeaeq','ldmeane','ldmeacs','ldmeahs','ldmeacc','ldmealo','ldmeami','ldmeapl','ldmeavs','ldmeavc','ldmeahi','ldmeals','ldmeage','ldmealt','ldmeagt','ldmeale', + 'ldmedeq','ldmedne','ldmedcs','ldmedhs','ldmedcc','ldmedlo','ldmedmi','ldmedpl','ldmedvs','ldmedvc','ldmedhi','ldmedls','ldmedge','ldmedlt','ldmedgt','ldmedle', + 'ldmfaeq','ldmfane','ldmfacs','ldmfahs','ldmfacc','ldmfalo','ldmfami','ldmfapl','ldmfavs','ldmfavc','ldmfahi','ldmfals','ldmfage','ldmfalt','ldmfagt','ldmfale', + 'ldmfdeq','ldmfdne','ldmfdcs','ldmfdhs','ldmfdcc','ldmfdlo','ldmfdmi','ldmfdpl','ldmfdvs','ldmfdvc','ldmfdhi','ldmfdls','ldmfdge','ldmfdlt','ldmfdgt','ldmfdle', + 'ldrdeq','ldrdne','ldrdcs','ldrdhs','ldrdcc','ldrdlo','ldrdmi','ldrdpl','ldrdvs','ldrdvc','ldrdhi','ldrdls','ldrdge','ldrdlt','ldrdgt','ldrdle', + 'ldreq.w','ldrne.w','ldrcs.w','ldrhs.w','ldrcc.w','ldrlo.w','ldrmi.w','ldrpl.w','ldrvs.w','ldrvc.w','ldrhi.w','ldrls.w','ldrge.w','ldrlt.w','ldrgt.w','ldrle.w', + 'ldreq','ldrne','ldrcs','ldrhs','ldrcc','ldrlo','ldrmi','ldrpl','ldrvs','ldrvc','ldrhi','ldrls','ldrge','ldrlt','ldrgt','ldrle', + 'ldrheq.w','ldrhne.w','ldrhcs.w','ldrhhs.w','ldrhcc.w','ldrhlo.w','ldrhmi.w','ldrhpl.w','ldrhvs.w','ldrhvc.w','ldrhhi.w','ldrhls.w','ldrhge.w','ldrhlt.w','ldrhgt.w','ldrhle.w', + 'ldrheq','ldrhne','ldrhcs','ldrhhs','ldrhcc','ldrhlo','ldrhmi','ldrhpl','ldrhvs','ldrhvc','ldrhhi','ldrhls','ldrhge','ldrhlt','ldrhgt','ldrhle', + 'ldrbeq.w','ldrbne.w','ldrbcs.w','ldrbhs.w','ldrbcc.w','ldrblo.w','ldrbmi.w','ldrbpl.w','ldrbvs.w','ldrbvc.w','ldrbhi.w','ldrbls.w','ldrbge.w','ldrblt.w','ldrbgt.w','ldrble.w', + 'ldrbeq','ldrbne','ldrbcs','ldrbhs','ldrbcc','ldrblo','ldrbmi','ldrbpl','ldrbvs','ldrbvc','ldrbhi','ldrbls','ldrbge','ldrblt','ldrbgt','ldrble', + 'ldrsheq.w','ldrshne.w','ldrshcs.w','ldrshhs.w','ldrshcc.w','ldrshlo.w','ldrshmi.w','ldrshpl.w','ldrshvs.w','ldrshvc.w','ldrshhi.w','ldrshls.w','ldrshge.w','ldrshlt.w','ldrshgt.w','ldrshle.w', + 'ldrsheq','ldrshne','ldrshcs','ldrshhs','ldrshcc','ldrshlo','ldrshmi','ldrshpl','ldrshvs','ldrshvc','ldrshhi','ldrshls','ldrshge','ldrshlt','ldrshgt','ldrshle', + 'ldrsbeq.w','ldrsbne.w','ldrsbcs.w','ldrsbhs.w','ldrsbcc.w','ldrsblo.w','ldrsbmi.w','ldrsbpl.w','ldrsbvs.w','ldrsbvc.w','ldrsbhi.w','ldrsbls.w','ldrsbge.w','ldrsblt.w','ldrsbgt.w','ldrsble.w', + 'ldrsbeq','ldrsbne','ldrsbcs','ldrsbhs','ldrsbcc','ldrsblo','ldrsbmi','ldrsbpl','ldrsbvs','ldrsbvc','ldrsbhi','ldrsbls','ldrsbge','ldrsblt','ldrsbgt','ldrsble', + 'ldrteq','ldrtne','ldrtcs','ldrths','ldrtcc','ldrtlo','ldrtmi','ldrtpl','ldrtvs','ldrtvc','ldrthi','ldrtls','ldrtge','ldrtlt','ldrtgt','ldrtle', + 'ldrhteq','ldrhtne','ldrhtcs','ldrhths','ldrhtcc','ldrhtlo','ldrhtmi','ldrhtpl','ldrhtvs','ldrhtvc','ldrhthi','ldrhtls','ldrhtge','ldrhtlt','ldrhtgt','ldrhtle', + 'ldrbteq','ldrbtne','ldrbtcs','ldrbths','ldrbtcc','ldrbtlo','ldrbtmi','ldrbtpl','ldrbtvs','ldrbtvc','ldrbthi','ldrbtls','ldrbtge','ldrbtlt','ldrbtgt','ldrbtle', + 'ldrshteq','ldrshtne','ldrshtcs','ldrshths','ldrshtcc','ldrshtlo','ldrshtmi','ldrshtpl','ldrshtvs','ldrshtvc','ldrshthi','ldrshtls','ldrshtge','ldrshtlt','ldrshtgt','ldrshtle', + 'ldrsbteq','ldrsbtne','ldrsbtcs','ldrsbths','ldrsbtcc','ldrsbtlo','ldrsbtmi','ldrsbtpl','ldrsbtvs','ldrsbtvc','ldrsbthi','ldrsbtls','ldrsbtge','ldrsbtlt','ldrsbtgt','ldrsbtle', + 'popeq.w','popne.w','popcs.w','pophs.w','popcc.w','poplo.w','popmi.w','poppl.w','popvs.w','popvc.w','pophi.w','popls.w','popge.w','poplt.w','popgt.w','pople.w', + 'popeq','popne','popcs','pophs','popcc','poplo','popmi','poppl','popvs','popvc','pophi','popls','popge','poplt','popgt','pople', + 'pldeq','pldne','pldcs','pldhs','pldcc','pldlo','pldmi','pldpl','pldvs','pldvc','pldhi','pldls','pldge','pldlt','pldgt','pldle', + 'pldweq','pldwne','pldwcs','pldwhs','pldwcc','pldwlo','pldwmi','pldwpl','pldwvs','pldwvc','pldwhi','pldwls','pldwge','pldwlt','pldwgt','pldwle', + 'plieq','pline','plics','plihs','plicc','plilo','plimi','plipl','plivs','plivc','plihi','plils','plige','plilt','pligt','plile', + /* Memory Access: Conditional Memory Stores */ + 'stmeq.w','stmne.w','stmcs.w','stmhs.w','stmcc.w','stmlo.w','stmmi.w','stmpl.w','stmvs.w','stmvc.w','stmhi.w','stmls.w','stmge.w','stmlt.w','stmgt.w','stmle.w', + 'stmeq','stmne','stmcs','stmhs','stmcc','stmlo','stmmi','stmpl','stmvs','stmvc','stmhi','stmls','stmge','stmlt','stmgt','stmle', + 'stmdaeq','stmdane','stmdacs','stmdahs','stmdacc','stmdalo','stmdami','stmdapl','stmdavs','stmdavc','stmdahi','stmdals','stmdage','stmdalt','stmdagt','stmdale', + 'stmdbeq','stmdbne','stmdbcs','stmdbhs','stmdbcc','stmdblo','stmdbmi','stmdbpl','stmdbvs','stmdbvc','stmdbhi','stmdbls','stmdbge','stmdblt','stmdbgt','stmdble', + 'stmibeq','stmibne','stmibcs','stmibhs','stmibcc','stmiblo','stmibmi','stmibpl','stmibvs','stmibvc','stmibhi','stmibls','stmibge','stmiblt','stmibgt','stmible', + 'stmiaeq','stmiane','stmiacs','stmiahs','stmiacc','stmialo','stmiami','stmiapl','stmiavs','stmiavc','stmiahi','stmials','stmiage','stmialt','stmiagt','stmiale', + 'stmeaeq','stmeane','stmeacs','stmeahs','stmeacc','stmealo','stmeami','stmeapl','stmeavs','stmeavc','stmeahi','stmeals','stmeage','stmealt','stmeagt','stmeale', + 'stmedeq','stmedne','stmedcs','stmedhs','stmedcc','stmedlo','stmedmi','stmedpl','stmedvs','stmedvc','stmedhi','stmedls','stmedge','stmedlt','stmedgt','stmedle', + 'stdfaeq','stdfane','stdfacs','stdfahs','stdfacc','stdfalo','stdfami','stdfapl','stdfavs','stdfavc','stdfahi','stdfals','stdfage','stdfalt','stdfagt','stdfale', + 'stdfdeq','stdfdne','stdfdcs','stdfdhs','stdfdcc','stdfdlo','stdfdmi','stdfdpl','stdfdvs','stdfdvc','stdfdhi','stdfdls','stdfdge','stdfdlt','stdfdgt','stdfdle', + 'strdeq','strdne','strdcs','strdhs','strdcc','strdlo','strdmi','strdpl','strdvs','strdvc','strdhi','strdls','strdge','strdlt','strdgt','strdle', + 'streq.w','strne.w','strcs.w','strhs.w','strcc.w','strlo.w','strmi.w','strpl.w','strvs.w','strvc.w','strhi.w','strls.w','strge.w','strlt.w','strgt.w','strle.w', + 'streq','strne','strcs','strhs','strcc','strlo','strmi','strpl','strvs','strvc','strhi','strls','strge','strlt','strgt','strle', + 'strheq.w','strhne.w','strhcs.w','strhhs.w','strhcc.w','strhlo.w','strhmi.w','strhpl.w','strhvs.w','strhvc.w','strhhi.w','strhls.w','strhge.w','strhlt.w','strhgt.w','strhle.w', + 'strheq','strhne','strhcs','strhhs','strhcc','strhlo','strhmi','strhpl','strhvs','strhvc','strhhi','strhls','strhge','strhlt','strhgt','strhle', + 'strbeq.w','strbne.w','strbcs.w','strbhs.w','strbcc.w','strblo.w','strbmi.w','strbpl.w','strbvs.w','strbvc.w','strbhi.w','strbls.w','strbge.w','strblt.w','strbgt.w','strble.w', + 'strbeq','strbne','strbcs','strbhs','strbcc','strblo','strbmi','strbpl','strbvs','strbvc','strbhi','strbls','strbge','strblt','strbgt','strble', + 'strteq','strtne','strtcs','strths','strtcc','strtlo','strtmi','strtpl','strtvs','strtvc','strthi','strtls','strtge','strtlt','strtgt','strtle', + 'strhteq','strhtne','strhtcs','strhths','strhtcc','strhtlo','strhtmi','strhtpl','strhtvs','strhtvc','strhthi','strhtls','strhtge','strhtlt','strhtgt','strhtle', + 'strbteq','strbtne','strbtcs','strbths','strbtcc','strbtlo','strbtmi','strbtpl','strbtvs','strbtvc','strbthi','strbtls','strbtge','strbtlt','strbtgt','strbtle', + 'pusheq.w','pushne.w','pushcs.w','pushhs.w','pushcc.w','pushlo.w','pushmi.w','pushpl.w','pushvs.w','pushvc.w','pushhi.w','pushls.w','pushge.w','pushlt.w','pushgt.w','pushle.w', + 'pusheq','pushne','pushcs','pushhs','pushcc','pushlo','pushmi','pushpl','pushvs','pushvc','pushhi','pushls','pushge','pushlt','pushgt','pushle' + ), + /* Unconditional Flags-Affecting Instructions */ + 5 => array( + /* Set Flags: Unconditional Addition and Subtraction */ + 'adds.w','addsal.w', + 'adds','addsal', + 'subs.w','subsal.w', + 'subs','subsal', + 'rsbs.w','rsbsal.w', + 'rsbs','rsbsal', + 'negs.w','negsal.w', + 'negs','negsal', + 'adcs.w','adcsal.w', + 'adcs','adcsal', + 'sbcs.w','sbcsal.w', + 'sbcs','sbcsal', + 'rscs','rscsal', + 'cmp.w','cmpal.w', + 'cmp','cmpal', + 'cmn.w','cmnal.w', + 'cmn','cmnal', + /* Set Flags: Unconditional Logical */ + 'ands.w','andsal.w', + 'ands','andsal', + 'bics.w','bicsal.w', + 'bics','bicsal', + 'orrs.w','orrsal.w', + 'orrs','orrsal', + 'orns.w','ornsal.w', + 'orns','ornsal', + 'eors.w','eorsal.w', + 'eors','eorsal', + 'mvns.w','mvnsal.w', + 'mvns','mvnsal', + 'movs.w','movsal.w', + 'movs','movsal', + 'teq','teqal', + 'tst.w','tstal.w', + 'tst','tstal', + 'mrs','mrsal', + 'msr','msral', + /* Set Flags: Unconditional Shifts and Rotates */ + 'asrs.w','asrsal.w', + 'asrs','asrsal', + 'lsls.w','lslsal.w', + 'lsls','lslsal', + 'lsrs.w','lsrsal.w', + 'lsrs','lsrsal', + 'rors.w','rorsal.w', + 'rors','rorsal', + 'rrxs','rrxsal', + /* Set Flags: Unconditional Multiply and Multiply-Add */ + 'mlas','mlasal', + 'smulls','smullsal', + 'umulls','umullsal', + 'smlals','smlalsal', + 'umlals','umlalsal' + ), + /* Conditional Flags-Affecting Instructions */ + 6 => array( + /* Set Flags: Conditional Addition and Subtraction */ + 'addseq.w','addsne.w','addscs.w','addshs.w','addscc.w','addslo.w','addsmi.w','addspl.w','addsvs.w','addsvc.w','addshi.w','addsls.w','addsge.w','addslt.w','addsgt.w','addsle.w', + 'addseq','addsne','addscs','addshs','addscc','addslo','addsmi','addspl','addsvs','addsvc','addshi','addsls','addsge','addslt','addsgt','addsle', + 'subseq.w','subsne.w','subscs.w','subshs.w','subscc.w','subslo.w','subsmi.w','subspl.w','subsvs.w','subsvc.w','subshi.w','subsls.w','subsge.w','subslt.w','subsgt.w','subsle.w', + 'subseq','subsne','subscs','subshs','subscc','subslo','subsmi','subspl','subsvs','subsvc','subshi','subsls','subsge','subslt','subsgt','subsle', + 'rsbseq.w','rsbsne.w','rsbscs.w','rsbshs.w','rsbscc.w','rsbslo.w','rsbsmi.w','rsbspl.w','rsbsvs.w','rsbsvc.w','rsbshi.w','rsbsls.w','rsbsge.w','rsbslt.w','rsbsgt.w','rsbsle.w', + 'rsbseq','rsbsne','rsbscs','rsbshs','rsbscc','rsbslo','rsbsmi','rsbspl','rsbsvs','rsbsvc','rsbshi','rsbsls','rsbsge','rsbslt','rsbsgt','rsbsle', + 'negseq.w','negsne.w','negscs.w','negshs.w','negscc.w','negslo.w','negsmi.w','negspl.w','negsvs.w','negsvc.w','negshi.w','negsls.w','negsge.w','negslt.w','negsgt.w','negsle.w', + 'negseq','negsne','negscs','negshs','negscc','negslo','negsmi','negspl','negsvs','negsvc','negshi','negsls','negsge','negslt','negsgt','negsle', + 'adcseq.w','adcsne.w','adcscs.w','adcshs.w','adcscc.w','adcslo.w','adcsmi.w','adcspl.w','adcsvs.w','adcsvc.w','adcshi.w','adcsls.w','adcsge.w','adcslt.w','adcsgt.w','adcsle.w', + 'adcseq','adcsne','adcscs','adcshs','adcscc','adcslo','adcsmi','adcspl','adcsvs','adcsvc','adcshi','adcsls','adcsge','adcslt','adcsgt','adcsle', + 'sbcseq.w','sbcsne.w','sbcscs.w','sbcshs.w','sbcscc.w','sbcslo.w','sbcsmi.w','sbcspl.w','sbcsvs.w','sbcsvc.w','sbcshi.w','sbcsls.w','sbcsge.w','sbcslt.w','sbcsgt.w','sbcsle.w', + 'sbcseq','sbcsne','sbcscs','sbcshs','sbcscc','sbcslo','sbcsmi','sbcspl','sbcsvs','sbcsvc','sbcshi','sbcsls','sbcsge','sbcslt','sbcsgt','sbcsle', + 'rscseq','rscsne','rscscs','rscshs','rscscc','rscslo','rscsmi','rscspl','rscsvs','rscsvc','rscshi','rscsls','rscsge','rscslt','rscsgt','rscsle', + 'cmpeq.w','cmpne.w','cmpcs.w','cmphs.w','cmpcc.w','cmplo.w','cmpmi.w','cmppl.w','cmpvs.w','cmpvc.w','cmphi.w','cmpls.w','cmpge.w','cmplt.w','cmpgt.w','cmple.w', + 'cmpeq','cmpne','cmpcs','cmphs','cmpcc','cmplo','cmpmi','cmppl','cmpvs','cmpvc','cmphi','cmpls','cmpge','cmplt','cmpgt','cmple', + 'cmneq.w','cmnne.w','cmncs.w','cmnhs.w','cmncc.w','cmnlo.w','cmnmi.w','cmnpl.w','cmnvs.w','cmnvc.w','cmnhi.w','cmnls.w','cmnge.w','cmnlt.w','cmngt.w','cmnle.w', + 'cmneq','cmnne','cmncs','cmnhs','cmncc','cmnlo','cmnmi','cmnpl','cmnvs','cmnvc','cmnhi','cmnls','cmnge','cmnlt','cmngt','cmnle', + /* Set Flags: Conditional Logical */ + 'andseq.w','andsne.w','andscs.w','andshs.w','andscc.w','andslo.w','andsmi.w','andspl.w','andsvs.w','andsvc.w','andshi.w','andsls.w','andsge.w','andslt.w','andsgt.w','andsle.w', + 'andseq','andsne','andscs','andshs','andscc','andslo','andsmi','andspl','andsvs','andsvc','andshi','andsls','andsge','andslt','andsgt','andsle', + 'bicseq.w','bicsne.w','bicscs.w','bicshs.w','bicscc.w','bicslo.w','bicsmi.w','bicspl.w','bicsvs.w','bicsvc.w','bicshi.w','bicsls.w','bicsge.w','bicslt.w','bicsgt.w','bicsle.w', + 'bicseq','bicsne','bicscs','bicshs','bicscc','bicslo','bicsmi','bicspl','bicsvs','bicsvc','bicshi','bicsls','bicsge','bicslt','bicsgt','bicsle', + 'orrseq.w','orrsne.w','orrscs.w','orrshs.w','orrscc.w','orrslo.w','orrsmi.w','orrspl.w','orrsvs.w','orrsvc.w','orrshi.w','orrsls.w','orrsge.w','orrslt.w','orrsgt.w','orrsle.w', + 'orrseq','orrsne','orrscs','orrshs','orrscc','orrslo','orrsmi','orrspl','orrsvs','orrsvc','orrshi','orrsls','orrsge','orrslt','orrsgt','orrsle', + 'ornseq.w','ornsne.w','ornscs.w','ornshs.w','ornscc.w','ornslo.w','ornsmi.w','ornspl.w','ornsvs.w','ornsvc.w','ornshi.w','ornsls.w','ornsge.w','ornslt.w','ornsgt.w','ornsle.w', + 'ornseq','ornsne','ornscs','ornshs','ornscc','ornslo','ornsmi','ornspl','ornsvs','ornsvc','ornshi','ornsls','ornsge','ornslt','ornsgt','ornsle', + 'eorseq.w','eorsne.w','eorscs.w','eorshs.w','eorscc.w','eorslo.w','eorsmi.w','eorspl.w','eorsvs.w','eorsvc.w','eorshi.w','eorsls.w','eorsge.w','eorslt.w','eorsgt.w','eorsle.w', + 'eorseq','eorsne','eorscs','eorshs','eorscc','eorslo','eorsmi','eorspl','eorsvs','eorsvc','eorshi','eorsls','eorsge','eorslt','eorsgt','eorsle', + 'mvnseq.w','mvnsne.w','mvnscs.w','mvnshs.w','mvnscc.w','mvnslo.w','mvnsmi.w','mvnspl.w','mvnsvs.w','mvnsvc.w','mvnshi.w','mvnsls.w','mvnsge.w','mvnslt.w','mvnsgt.w','mvnsle.w', + 'mvnseq','mvnsne','mvnscs','mvnshs','mvnscc','mvnslo','mvnsmi','mvnspl','mvnsvs','mvnsvc','mvnshi','mvnsls','mvnsge','mvnslt','mvnsgt','mvnsle', + 'movseq.w','movsne.w','movscs.w','movshs.w','movscc.w','movslo.w','movsmi.w','movspl.w','movsvs.w','movsvc.w','movshi.w','movsls.w','movsge.w','movslt.w','movsgt.w','movsle.w', + 'movseq','movsne','movscs','movshs','movscc','movslo','movsmi','movspl','movsvs','movsvc','movshi','movsls','movsge','movslt','movsgt','movsle', + 'teqeq','teqne','teqcs','teqhs','teqcc','teqlo','teqmi','teqpl','teqvs','teqvc','teqhi','teqls','teqge','teqlt','teqgt','teqle', + 'tsteq.w','tstne.w','tstcs.w','tsths.w','tstcc.w','tstlo.w','tstmi.w','tstpl.w','tstvs.w','tstvc.w','tsthi.w','tstls.w','tstge.w','tstlt.w','tstgt.w','tstle.w', + 'tsteq','tstne','tstcs','tsths','tstcc','tstlo','tstmi','tstpl','tstvs','tstvc','tsthi','tstls','tstge','tstlt','tstgt','tstle', + 'mrseq','mrsne','mrscs','mrshs','mrscc','mrslo','mrsmi','mrspl','mrsvs','mrsvc','mrshi','mrsls','mrsge','mrslt','mrsgt','mrsle', + 'msreq','msrne','msrcs','msrhs','msrcc','msrlo','msrmi','msrpl','msrvs','msrvc','msrhi','msrls','msrge','msrlt','msrgt','msrle', + /* Set Flags: Conditional Shifts and Rotates */ + 'asrseq.w','asrsne.w','asrscs.w','asrshs.w','asrscc.w','asrslo.w','asrsmi.w','asrspl.w','asrsvs.w','asrsvc.w','asrshi.w','asrsls.w','asrsge.w','asrslt.w','asrsgt.w','asrsle.w', + 'asrseq','asrsne','asrscs','asrshs','asrscc','asrslo','asrsmi','asrspl','asrsvs','asrsvc','asrshi','asrsls','asrsge','asrslt','asrsgt','asrsle', + 'lslseq.w','lslsne.w','lslscs.w','lslshs.w','lslscc.w','lslslo.w','lslsmi.w','lslspl.w','lslsvs.w','lslsvc.w','lslshi.w','lslsls.w','lslsge.w','lslslt.w','lslsgt.w','lslsle.w', + 'lslseq','lslsne','lslscs','lslshs','lslscc','lslslo','lslsmi','lslspl','lslsvs','lslsvc','lslshi','lslsls','lslsge','lslslt','lslsgt','lslsle', + 'lsrseq.w','lsrsne.w','lsrscs.w','lsrshs.w','lsrscc.w','lsrslo.w','lsrsmi.w','lsrspl.w','lsrsvs.w','lsrsvc.w','lsrshi.w','lsrsls.w','lsrsge.w','lsrslt.w','lsrsgt.w','lsrsle.w', + 'lsrseq','lsrsne','lsrscs','lsrshs','lsrscc','lsrslo','lsrsmi','lsrspl','lsrsvs','lsrsvc','lsrshi','lsrsls','lsrsge','lsrslt','lsrsgt','lsrsle', + 'rorseq.w','rorsne.w','rorscs.w','rorshs.w','rorscc.w','rorslo.w','rorsmi.w','rorspl.w','rorsvs.w','rorsvc.w','rorshi.w','rorsls.w','rorsge.w','rorslt.w','rorsgt.w','rorsle.w', + 'rorseq','rorsne','rorscs','rorshs','rorscc','rorslo','rorsmi','rorspl','rorsvs','rorsvc','rorshi','rorsls','rorsge','rorslt','rorsgt','rorsle', + 'rrxseq','rrxsne','rrxscs','rrxshs','rrxscc','rrxslo','rrxsmi','rrxspl','rrxsvs','rrxsvc','rrxshi','rrxsls','rrxsge','rrxslt','rrxsgt','rrxsle', + /* Set Flags: Conditional Multiply and Multiply-Add */ + 'mlaseq','mlasne','mlascs','mlashs','mlascc','mlaslo','mlasmi','mlaspl','mlasvs','mlasvc','mlashi','mlasls','mlasge','mlaslt','mlasgt','mlasle', + 'smullseq','smullsne','smullscs','smullshs','smullscc','smullslo','smullsmi','smullspl','smullsvs','smullsvc','smullshi','smullsls','smullsge','smullslt','smullsgt','smullsle', + 'umullseq','umullsne','umullscs','umullshs','umullscc','umullslo','umullsmi','umullspl','umullsvs','umullsvc','umullshi','umullsls','umullsge','umullslt','umullsgt','umullsle', + 'smlalseq','smlalsne','smlalscs','smlalshs','smlalscc','smlalslo','smlalsmi','smlalspl','smlalsvs','smlalsvc','smlalshi','smlalsls','smlalsge','smlalslt','smlalsgt','smlalsle', + 'umlalseq','umlalsne','umlalscs','umlalshs','umlalscc','umlalslo','umlalsmi','umlalspl','umlalsvs','umlalsvc','umlalshi','umlalsls','umlalsge','umlalslt','umlalsgt','umlalsle' + ), + /* Unconditional Flow Control Instructions */ + 7 => array( + /* Flow Control: Unconditional Branch and If-Then-Else */ + 'b.w','bal.w', + 'b','bal', + 'bl','blal', + 'bx','bxal', + 'blx','blxal', + 'bxj','bxjal', + 'cbnz', + 'cbz', + 'tbb','tbbal', + 'tbh','tbhal', + 'it', + 'itt', + 'ite', + 'ittt', + 'itet', + 'itte', + 'itee', + 'itttt', + 'itett', + 'ittet', + 'iteet', + 'ittte', + 'itete', + 'ittee', + 'iteee' + ), + /* Conditional Flow Control Instructions */ + 8 => array( + /* Flow Control: Conditional Branch and If-Then-Else */ + 'beq.w','bne.w','bcs.w','bhs.w','bcc.w','blo.w','bmi.w','bpl.w','bvs.w','bvc.w','bhi.w','bls.w','bge.w','blt.w','bgt.w','ble.w', + 'beq','bne','bcs','bhs','bcc','blo','bmi','bpl','bvs','bvc','bhi','bls','bge','blt','bgt','ble', + 'bleq','blne','blcs','blhs','blcc','bllo','blmi','blpl','blvs','blvc','blhi','blls','blge','bllt','blgt','blle', + 'bxeq','bxne','bxcs','bxhs','bxcc','bxlo','bxmi','bxpl','bxvs','bxvc','bxhi','bxls','bxge','bxlt','bxgt','bxle', + 'blxeq','blxne','blxcs','blxhs','blxcc','blxlo','blxmi','blxpl','blxvs','blxvc','blxhi','blxls','blxge','blxlt','blxgt','blxle', + 'bxjeq','bxjne','bxjcs','bxjhs','bxjcc','bxjlo','bxjmi','bxjpl','bxjvs','bxjvc','bxjhi','bxjls','bxjge','bxjlt','bxjgt','bxjle', + 'tbbeq','tbbne','tbbcs','tbbhs','tbbcc','tbblo','tbbmi','tbbpl','tbbvs','tbbvc','tbbhi','tbbls','tbbge','tbblt','tbbgt','tbble', + 'tbheq','tbhne','tbhcs','tbhhs','tbhcc','tbhlo','tbhmi','tbhpl','tbhvs','tbhvc','tbhhi','tbhls','tbhge','tbhlt','tbhgt','tbhle' + ), + /* Unconditional Syncronization Instructions */ + 9 => array( + /* Synchronization: Unconditional Loads, Stores and Barriers */ + 'ldrexd','ldrexdal', + 'ldrex','ldrexal', + 'ldrexh','ldrexhal', + 'ldrexb','ldrexbal', + 'strexd','strexdal', + 'strex','strexal', + 'strexh','strexhal', + 'strexb','strexbal', + 'clrex','clrexal', + 'swp','swpal', + 'swpb','swpbal', + 'dbc','dbcal', + 'dsb','dsbal', + 'isb','isbal', + 'yield.w','yieldal.w', + 'yield','yieldal', + 'nop.w','nopal.w', + 'nop','nopal' + ), + /* Conditional Syncronization Instructions */ + 10 => array( + /* Synchronization: Conditional Loads, Stores and Barriers */ + 'ldrexdeq','ldrexdne','ldrexdcs','ldrexdhs','ldrexdcc','ldrexdlo','ldrexdmi','ldrexdpl','ldrexdvs','ldrexdvc','ldrexdhi','ldrexdls','ldrexdge','ldrexdlt','ldrexdgt','ldrexdle', + 'ldrexeq','ldrexne','ldrexcs','ldrexhs','ldrexcc','ldrexlo','ldrexmi','ldrexpl','ldrexvs','ldrexvc','ldrexhi','ldrexls','ldrexge','ldrexlt','ldrexgt','ldrexle', + 'ldrexheq','ldrexhne','ldrexhcs','ldrexhhs','ldrexhcc','ldrexhlo','ldrexhmi','ldrexhpl','ldrexhvs','ldrexhvc','ldrexhhi','ldrexhls','ldrexhge','ldrexhlt','ldrexhgt','ldrexhle', + 'ldrexbeq','ldrexbne','ldrexbcs','ldrexbhs','ldrexbcc','ldrexblo','ldrexbmi','ldrexbpl','ldrexbvs','ldrexbvc','ldrexbhi','ldrexbls','ldrexbge','ldrexblt','ldrexbgt','ldrexble', + 'strexdeq','strexdne','strexdcs','strexdhs','strexdcc','strexdlo','strexdmi','strexdpl','strexdvs','strexdvc','strexdhi','strexdls','strexdge','strexdlt','strexdgt','strexdle', + 'strexeq','strexne','strexcs','strexhs','strexcc','strexlo','strexmi','strexpl','strexvs','strexvc','strexhi','strexls','strexge','strexlt','strexgt','strexle', + 'strexheq','strexhne','strexhcs','strexhhs','strexhcc','strexhlo','strexhmi','strexhpl','strexhvs','strexhvc','strexhhi','strexhls','strexhge','strexhlt','strexhgt','strexhle', + 'strexbeq','strexbne','strexbcs','strexbhs','strexbcc','strexblo','strexbmi','strexbpl','strexbvs','strexbvc','strexbhi','strexbls','strexbge','strexblt','strexbgt','strexble', + 'clrexeq','clrexne','clrexcs','clrexhs','clrexcc','clrexlo','clrexmi','clrexpl','clrexvs','clrexvc','clrexhi','clrexls','clrexge','clrexlt','clrexgt','clrexle', + 'swpeq','swpne','swpcs','swphs','swpcc','swplo','swpmi','swppl','swpvs','swpvc','swphi','swpls','swpge','swplt','swpgt','swple', + 'swpbeq','swpbne','swpbcs','swpbhs','swpbcc','swpblo','swpbmi','swpbpl','swpbvs','swpbvc','swpbhi','swpbls','swpbge','swpblt','swpbgt','swpble', + 'dbceq','dbcne','dbccs','dbchs','dbccc','dbclo','dbcmi','dbcpl','dbcvs','dbcvc','dbchi','dbcls','dbcge','dbclt','dbcgt','dbcle', + 'dsbeq','dsbne','dsbcs','dsbhs','dsbcc','dsblo','dsbmi','dsbpl','dsbvs','dsbvc','dsbhi','dsbls','dsbge','dsblt','dsbgt','dsble', + 'isbeq','isbne','isbcs','isbhs','isbcc','isblo','isbmi','isbpl','isbvs','isbvc','isbhi','isbls','isbge','isblt','isbgt','isble', + 'yieldeq.w','yieldne.w','yieldcs.w','yieldhs.w','yieldcc.w','yieldlo.w','yieldmi.w','yieldpl.w','yieldvs.w','yieldvc.w','yieldhi.w','yieldls.w','yieldge.w','yieldlt.w','yieldgt.w','yieldle.w', + 'yieldeq','yieldne','yieldcs','yieldhs','yieldcc','yieldlo','yieldmi','yieldpl','yieldvs','yieldvc','yieldhi','yieldls','yieldge','yieldlt','yieldgt','yieldle', + 'nopeq.w','nopne.w','nopcs.w','nophs.w','nopcc.w','noplo.w','nopmi.w','noppl.w','nopvs.w','nopvc.w','nophi.w','nopls.w','nopge.w','noplt.w','nopgt.w','nople.w', + 'nopeq','nopne','nopcs','nophs','nopcc','noplo','nopmi','noppl','nopvs','nopvc','nophi','nopls','nopge','noplt','nopgt','nople' + ), + /* Unconditional ARMv6 SIMD */ + 11 => array( + /* ARMv6 SIMD: Unconditional Addition, Subtraction & Saturation */ + 'sadd16','sadd16al', + 'sadd8','sadd8al', + 'uadd16','uadd16al', + 'uadd8','uadd8al', + 'ssub16','ssub16al', + 'ssub8','ssub8al', + 'usub16','usub16al', + 'usub8','usub8al', + 'sasx','sasxal', + 'ssax','ssaxal', + 'uasx','uasxal', + 'usax','usaxal', + 'usad8','usad8al', + 'usada8','usada8al', + /* ARMv6 SIMD: Unconditional Halving Addition & Subtraction */ + 'shadd16','shadd16al', + 'shadd8','shadd8al', + 'uhadd16','uhadd16al', + 'uhadd8','uhadd8al', + 'shsub16','shsub16al', + 'shsub8','shsub8al', + 'uhsub16','uhsub16al', + 'uhsub8','uhsub8al', + 'shasx','shasxal', + 'shsax','shsaxal', + 'uhasx','uhasxal', + 'uhsax','uhsaxal', + /* ARMv6 SIMD: Unconditional Saturating Operations */ + 'qadd','qaddal', + 'qadd16','qadd16al', + 'qadd8','qadd8al', + 'uqadd16','uqadd16al', + 'uqadd8','uqadd8al', + 'qsub','qsubal', + 'qsub16','qsub16al', + 'qsub8','qsub8al', + 'uqsub16','uqsub16al', + 'uqsub8','uqsub8al', + 'qasx','qasxal', + 'qsax','qsaxal', + 'uqasx','uqasxal', + 'uqsax','uqsaxal', + 'qdadd','qdaddal', + 'qdsub','qdsubal', + 'ssat','ssatal', + 'ssat16','ssat16al', + 'usat','usatal', + 'usat16','usat16al', + /* ARMv6 SIMD: Unconditional Permutation and Combine Operations */ + 'sxtah','sxtahal', + 'sxtab','sxtabal', + 'sxtab16','sxtab16al', + 'uxtah','uxtahal', + 'uxtab','uxtabal', + 'uxtab16','uxtab16al', + 'sxth.w','sxthal.w', + 'sxth','sxthal', + 'sxtb.w','sxtbal.w', + 'sxtb','sxtbal', + 'sxtb16','sxtb16al', + 'uxth.w','uxthal.w', + 'uxth','uxthal', + 'uxtb.w','uxtbal.w', + 'uxtb','uxtbal', + 'uxtb16','uxtb16al', + 'pkhbt','pkhbtal', + 'pkhtb','pkhtbal', + 'rbit','rbital', + 'rev.w','reval.w', + 'rev','reval', + 'rev16.w','rev16al.w', + 'rev16','rev16al', + 'revsh.w','revshal.w', + 'revsh','revshal', + 'sel','selal', + /* ARMv6 SIMD: Unconditional Multiply and Multiply-Add */ + 'smlad','smladal', + 'smladx','smladxal', + 'smlsd','smlsdal', + 'smlsdx','smlsdxal', + 'smlald','smlaldal', + 'smlaldx','smlaldxal', + 'smlsld','smlsldal', + 'smlsldx','smlsldxal', + 'smmul','smmulal', + 'smmulr','smmulral', + 'smmla','smmlaal', + 'smmlar','smmlaral', + 'smmls','smmlsal', + 'smmlsr','smmlsral', + 'smuad','smuadal', + 'smuadx','smuadxal', + 'smusd','smusdal', + 'smusdx','smusdxal', + 'umaal','umaalal' + ), + /* Conditional ARMv6 SIMD */ + 12 => array( + /* ARMv6 SIMD: Conditional Addition, Subtraction & Saturation */ + 'sadd16eq','sadd16ne','sadd16cs','sadd16hs','sadd16cc','sadd16lo','sadd16mi','sadd16pl','sadd16vs','sadd16vc','sadd16hi','sadd16ls','sadd16ge','sadd16lt','sadd16gt','sadd16le', + 'sadd8eq','sadd8ne','sadd8cs','sadd8hs','sadd8cc','sadd8lo','sadd8mi','sadd8pl','sadd8vs','sadd8vc','sadd8hi','sadd8ls','sadd8ge','sadd8lt','sadd8gt','sadd8le', + 'uadd16eq','uadd16ne','uadd16cs','uadd16hs','uadd16cc','uadd16lo','uadd16mi','uadd16pl','uadd16vs','uadd16vc','uadd16hi','uadd16ls','uadd16ge','uadd16lt','uadd16gt','uadd16le', + 'uadd8eq','uadd8ne','uadd8cs','uadd8hs','uadd8cc','uadd8lo','uadd8mi','uadd8pl','uadd8vs','uadd8vc','uadd8hi','uadd8ls','uadd8ge','uadd8lt','uadd8gt','uadd8le', + 'ssub16eq','ssub16ne','ssub16cs','ssub16hs','ssub16cc','ssub16lo','ssub16mi','ssub16pl','ssub16vs','ssub16vc','ssub16hi','ssub16ls','ssub16ge','ssub16lt','ssub16gt','ssub16le', + 'ssub8eq','ssub8ne','ssub8cs','ssub8hs','ssub8cc','ssub8lo','ssub8mi','ssub8pl','ssub8vs','ssub8vc','ssub8hi','ssub8ls','ssub8ge','ssub8lt','ssub8gt','ssub8le', + 'usub16eq','usub16ne','usub16cs','usub16hs','usub16cc','usub16lo','usub16mi','usub16pl','usub16vs','usub16vc','usub16hi','usub16ls','usub16ge','usub16lt','usub16gt','usub16le', + 'usub8eq','usub8ne','usub8cs','usub8hs','usub8cc','usub8lo','usub8mi','usub8pl','usub8vs','usub8vc','usub8hi','usub8ls','usub8ge','usub8lt','usub8gt','usub8le', + 'sasxeq','sasxne','sasxcs','sasxhs','sasxcc','sasxlo','sasxmi','sasxpl','sasxvs','sasxvc','sasxhi','sasxls','sasxge','sasxlt','sasxgt','sasxle', + 'ssaxeq','ssaxne','ssaxcs','ssaxhs','ssaxcc','ssaxlo','ssaxmi','ssaxpl','ssaxvs','ssaxvc','ssaxhi','ssaxls','ssaxge','ssaxlt','ssaxgt','ssaxle', + 'uasxeq','uasxne','uasxcs','uasxhs','uasxcc','uasxlo','uasxmi','uasxpl','uasxvs','uasxvc','uasxhi','uasxls','uasxge','uasxlt','uasxgt','uasxle', + 'usaxeq','usaxne','usaxcs','usaxhs','usaxcc','usaxlo','usaxmi','usaxpl','usaxvs','usaxvc','usaxhi','usaxls','usaxge','usaxlt','usaxgt','usaxle', + 'usad8eq','usad8ne','usad8cs','usad8hs','usad8cc','usad8lo','usad8mi','usad8pl','usad8vs','usad8vc','usad8hi','usad8ls','usad8ge','usad8lt','usad8gt','usad8le', + 'usada8eq','usada8ne','usada8cs','usada8hs','usada8cc','usada8lo','usada8mi','usada8pl','usada8vs','usada8vc','usada8hi','usada8ls','usada8ge','usada8lt','usada8gt','usada8le', + /* ARMv6 SIMD: Conditional Halving Addition & Subtraction */ + 'shadd16eq','shadd16ne','shadd16cs','shadd16hs','shadd16cc','shadd16lo','shadd16mi','shadd16pl','shadd16vs','shadd16vc','shadd16hi','shadd16ls','shadd16ge','shadd16lt','shadd16gt','shadd16le', + 'shadd8eq','shadd8ne','shadd8cs','shadd8hs','shadd8cc','shadd8lo','shadd8mi','shadd8pl','shadd8vs','shadd8vc','shadd8hi','shadd8ls','shadd8ge','shadd8lt','shadd8gt','shadd8le', + 'uhadd16eq','uhadd16ne','uhadd16cs','uhadd16hs','uhadd16cc','uhadd16lo','uhadd16mi','uhadd16pl','uhadd16vs','uhadd16vc','uhadd16hi','uhadd16ls','uhadd16ge','uhadd16lt','uhadd16gt','uhadd16le', + 'uhadd8eq','uhadd8ne','uhadd8cs','uhadd8hs','uhadd8cc','uhadd8lo','uhadd8mi','uhadd8pl','uhadd8vs','uhadd8vc','uhadd8hi','uhadd8ls','uhadd8ge','uhadd8lt','uhadd8gt','uhadd8le', + 'shsub16eq','shsub16ne','shsub16cs','shsub16hs','shsub16cc','shsub16lo','shsub16mi','shsub16pl','shsub16vs','shsub16vc','shsub16hi','shsub16ls','shsub16ge','shsub16lt','shsub16gt','shsub16le', + 'shsub8eq','shsub8ne','shsub8cs','shsub8hs','shsub8cc','shsub8lo','shsub8mi','shsub8pl','shsub8vs','shsub8vc','shsub8hi','shsub8ls','shsub8ge','shsub8lt','shsub8gt','shsub8le', + 'uhsub16eq','uhsub16ne','uhsub16cs','uhsub16hs','uhsub16cc','uhsub16lo','uhsub16mi','uhsub16pl','uhsub16vs','uhsub16vc','uhsub16hi','uhsub16ls','uhsub16ge','uhsub16lt','uhsub16gt','uhsub16le', + 'uhsub8eq','uhsub8ne','uhsub8cs','uhsub8hs','uhsub8cc','uhsub8lo','uhsub8mi','uhsub8pl','uhsub8vs','uhsub8vc','uhsub8hi','uhsub8ls','uhsub8ge','uhsub8lt','uhsub8gt','uhsub8le', + 'shasxeq','shasxne','shasxcs','shasxhs','shasxcc','shasxlo','shasxmi','shasxpl','shasxvs','shasxvc','shasxhi','shasxls','shasxge','shasxlt','shasxgt','shasxle', + 'shsaxeq','shsaxne','shsaxcs','shsaxhs','shsaxcc','shsaxlo','shsaxmi','shsaxpl','shsaxvs','shsaxvc','shsaxhi','shsaxls','shsaxge','shsaxlt','shsaxgt','shsaxle', + 'uhasxeq','uhasxne','uhasxcs','uhasxhs','uhasxcc','uhasxlo','uhasxmi','uhasxpl','uhasxvs','uhasxvc','uhasxhi','uhasxls','uhasxge','uhasxlt','uhasxgt','uhasxle', + 'uhsaxeq','uhsaxne','uhsaxcs','uhsaxhs','uhsaxcc','uhsaxlo','uhsaxmi','uhsaxpl','uhsaxvs','uhsaxvc','uhsaxhi','uhsaxls','uhsaxge','uhsaxlt','uhsaxgt','uhsaxle', + /* ARMv6 SIMD: Conditional Saturating Operations */ + 'qaddeq','qaddne','qaddcs','qaddhs','qaddcc','qaddlo','qaddmi','qaddpl','qaddvs','qaddvc','qaddhi','qaddls','qaddge','qaddlt','qaddgt','qaddle', + 'qadd16eq','qadd16ne','qadd16cs','qadd16hs','qadd16cc','qadd16lo','qadd16mi','qadd16pl','qadd16vs','qadd16vc','qadd16hi','qadd16ls','qadd16ge','qadd16lt','qadd16gt','qadd16le', + 'qadd8eq','qadd8ne','qadd8cs','qadd8hs','qadd8cc','qadd8lo','qadd8mi','qadd8pl','qadd8vs','qadd8vc','qadd8hi','qadd8ls','qadd8ge','qadd8lt','qadd8gt','qadd8le', + 'uqadd16eq','uqadd16ne','uqadd16cs','uqadd16hs','uqadd16cc','uqadd16lo','uqadd16mi','uqadd16pl','uqadd16vs','uqadd16vc','uqadd16hi','uqadd16ls','uqadd16ge','uqadd16lt','uqadd16gt','uqadd16le', + 'uqadd8eq','uqadd8ne','uqadd8cs','uqadd8hs','uqadd8cc','uqadd8lo','uqadd8mi','uqadd8pl','uqadd8vs','uqadd8vc','uqadd8hi','uqadd8ls','uqadd8ge','uqadd8lt','uqadd8gt','uqadd8le', + 'qsubeq','qsubne','qsubcs','qsubhs','qsubcc','qsublo','qsubmi','qsubpl','qsubvs','qsubvc','qsubhi','qsubls','qsubge','qsublt','qsubgt','qsuble', + 'qsub16eq','qsub16ne','qsub16cs','qsub16hs','qsub16cc','qsub16lo','qsub16mi','qsub16pl','qsub16vs','qsub16vc','qsub16hi','qsub16ls','qsub16ge','qsub16lt','qsub16gt','qsub16le', + 'qsub8eq','qsub8ne','qsub8cs','qsub8hs','qsub8cc','qsub8lo','qsub8mi','qsub8pl','qsub8vs','qsub8vc','qsub8hi','qsub8ls','qsub8ge','qsub8lt','qsub8gt','qsub8le', + 'uqsub16eq','uqsub16ne','uqsub16cs','uqsub16hs','uqsub16cc','uqsub16lo','uqsub16mi','uqsub16pl','uqsub16vs','uqsub16vc','uqsub16hi','uqsub16ls','uqsub16ge','uqsub16lt','uqsub16gt','uqsub16le', + 'uqsub8eq','uqsub8ne','uqsub8cs','uqsub8hs','uqsub8cc','uqsub8lo','uqsub8mi','uqsub8pl','uqsub8vs','uqsub8vc','uqsub8hi','uqsub8ls','uqsub8ge','uqsub8lt','uqsub8gt','uqsub8le', + 'qasxeq','qasxne','qasxcs','qasxhs','qasxcc','qasxlo','qasxmi','qasxpl','qasxvs','qasxvc','qasxhi','qasxls','qasxge','qasxlt','qasxgt','qasxle', + 'qsaxeq','qsaxne','qsaxcs','qsaxhs','qsaxcc','qsaxlo','qsaxmi','qsaxpl','qsaxvs','qsaxvc','qsaxhi','qsaxls','qsaxge','qsaxlt','qsaxgt','qsaxle', + 'uqasxeq','uqasxne','uqasxcs','uqasxhs','uqasxcc','uqasxlo','uqasxmi','uqasxpl','uqasxvs','uqasxvc','uqasxhi','uqasxls','uqasxge','uqasxlt','uqasxgt','uqasxle', + 'uqsaxeq','uqsaxne','uqsaxcs','uqsaxhs','uqsaxcc','uqsaxlo','uqsaxmi','uqsaxpl','uqsaxvs','uqsaxvc','uqsaxhi','uqsaxls','uqsaxge','uqsaxlt','uqsaxgt','uqsaxle', + 'qdaddeq','qdaddne','qdaddcs','qdaddhs','qdaddcc','qdaddlo','qdaddmi','qdaddpl','qdaddvs','qdaddvc','qdaddhi','qdaddls','qdaddge','qdaddlt','qdaddgt','qdaddle', + 'qdsubeq','qdsubne','qdsubcs','qdsubhs','qdsubcc','qdsublo','qdsubmi','qdsubpl','qdsubvs','qdsubvc','qdsubhi','qdsubls','qdsubge','qdsublt','qdsubgt','qdsuble', + 'ssateq','ssatne','ssatcs','ssaths','ssatcc','ssatlo','ssatmi','ssatpl','ssatvs','ssatvc','ssathi','ssatls','ssatge','ssatlt','ssatgt','ssatle', + 'ssat16eq','ssat16ne','ssat16cs','ssat16hs','ssat16cc','ssat16lo','ssat16mi','ssat16pl','ssat16vs','ssat16vc','ssat16hi','ssat16ls','ssat16ge','ssat16lt','ssat16gt','ssat16le', + 'usateq','usatne','usatcs','usaths','usatcc','usatlo','usatmi','usatpl','usatvs','usatvc','usathi','usatls','usatge','usatlt','usatgt','usatle', + 'usat16eq','usat16ne','usat16cs','usat16hs','usat16cc','usat16lo','usat16mi','usat16pl','usat16vs','usat16vc','usat16hi','usat16ls','usat16ge','usat16lt','usat16gt','usat16le', + /* ARMv6 SIMD: Conditional Permutation and Combine Operations */ + 'sxtaheq','sxtahne','sxtahcs','sxtahhs','sxtahcc','sxtahlo','sxtahmi','sxtahpl','sxtahvs','sxtahvc','sxtahhi','sxtahls','sxtahge','sxtahlt','sxtahgt','sxtahle', + 'sxtabeq','sxtabne','sxtabcs','sxtabhs','sxtabcc','sxtablo','sxtabmi','sxtabpl','sxtabvs','sxtabvc','sxtabhi','sxtabls','sxtabge','sxtablt','sxtabgt','sxtable', + 'sxtab16eq','sxtab16ne','sxtab16cs','sxtab16hs','sxtab16cc','sxtab16lo','sxtab16mi','sxtab16pl','sxtab16vs','sxtab16vc','sxtab16hi','sxtab16ls','sxtab16ge','sxtab16lt','sxtab16gt','sxtab16le', + 'uxtaheq','uxtahne','uxtahcs','uxtahhs','uxtahcc','uxtahlo','uxtahmi','uxtahpl','uxtahvs','uxtahvc','uxtahhi','uxtahls','uxtahge','uxtahlt','uxtahgt','uxtahle', + 'uxtabeq','uxtabne','uxtabcs','uxtabhs','uxtabcc','uxtablo','uxtabmi','uxtabpl','uxtabvs','uxtabvc','uxtabhi','uxtabls','uxtabge','uxtablt','uxtabgt','uxtable', + 'uxtab16eq','uxtab16ne','uxtab16cs','uxtab16hs','uxtab16cc','uxtab16lo','uxtab16mi','uxtab16pl','uxtab16vs','uxtab16vc','uxtab16hi','uxtab16ls','uxtab16ge','uxtab16lt','uxtab16gt','uxtab16le', + 'sxtheq.w','sxthne.w','sxthcs.w','sxthhs.w','sxthcc.w','sxthlo.w','sxthmi.w','sxthpl.w','sxthvs.w','sxthvc.w','sxthhi.w','sxthls.w','sxthge.w','sxthlt.w','sxthgt.w','sxthle.w', + 'sxtheq','sxthne','sxthcs','sxthhs','sxthcc','sxthlo','sxthmi','sxthpl','sxthvs','sxthvc','sxthhi','sxthls','sxthge','sxthlt','sxthgt','sxthle', + 'sxtbeq.w','sxtbne.w','sxtbcs.w','sxtbhs.w','sxtbcc.w','sxtblo.w','sxtbmi.w','sxtbpl.w','sxtbvs.w','sxtbvc.w','sxtbhi.w','sxtbls.w','sxtbge.w','sxtblt.w','sxtbgt.w','sxtble.w', + 'sxtbeq','sxtbne','sxtbcs','sxtbhs','sxtbcc','sxtblo','sxtbmi','sxtbpl','sxtbvs','sxtbvc','sxtbhi','sxtbls','sxtbge','sxtblt','sxtbgt','sxtble', + 'sxtb16eq','sxtb16ne','sxtb16cs','sxtb16hs','sxtb16cc','sxtb16lo','sxtb16mi','sxtb16pl','sxtb16vs','sxtb16vc','sxtb16hi','sxtb16ls','sxtb16ge','sxtb16lt','sxtb16gt','sxtb16le', + 'uxtheq.w','uxthne.w','uxthcs.w','uxthhs.w','uxthcc.w','uxthlo.w','uxthmi.w','uxthpl.w','uxthvs.w','uxthvc.w','uxthhi.w','uxthls.w','uxthge.w','uxthlt.w','uxthgt.w','uxthle.w', + 'uxtheq','uxthne','uxthcs','uxthhs','uxthcc','uxthlo','uxthmi','uxthpl','uxthvs','uxthvc','uxthhi','uxthls','uxthge','uxthlt','uxthgt','uxthle', + 'uxtbeq.w','uxtbne.w','uxtbcs.w','uxtbhs.w','uxtbcc.w','uxtblo.w','uxtbmi.w','uxtbpl.w','uxtbvs.w','uxtbvc.w','uxtbhi.w','uxtbls.w','uxtbge.w','uxtblt.w','uxtbgt.w','uxtble.w', + 'uxtbeq','uxtbne','uxtbcs','uxtbhs','uxtbcc','uxtblo','uxtbmi','uxtbpl','uxtbvs','uxtbvc','uxtbhi','uxtbls','uxtbge','uxtblt','uxtbgt','uxtble', + 'uxtb16eq','uxtb16ne','uxtb16cs','uxtb16hs','uxtb16cc','uxtb16lo','uxtb16mi','uxtb16pl','uxtb16vs','uxtb16vc','uxtb16hi','uxtb16ls','uxtb16ge','uxtb16lt','uxtb16gt','uxtb16le', + 'pkhbteq','pkhbtne','pkhbtcs','pkhbths','pkhbtcc','pkhbtlo','pkhbtmi','pkhbtpl','pkhbtvs','pkhbtvc','pkhbthi','pkhbtls','pkhbtge','pkhbtlt','pkhbtgt','pkhbtle', + 'pkhtbeq','pkhtbne','pkhtbcs','pkhtbhs','pkhtbcc','pkhtblo','pkhtbmi','pkhtbpl','pkhtbvs','pkhtbvc','pkhtbhi','pkhtbls','pkhtbge','pkhtblt','pkhtbgt','pkhtble', + 'rbiteq','rbitne','rbitcs','rbiths','rbitcc','rbitlo','rbitmi','rbitpl','rbitvs','rbitvc','rbithi','rbitls','rbitge','rbitlt','rbitgt','rbitle', + 'reveq.w','revne.w','revcs.w','revhs.w','revcc.w','revlo.w','revmi.w','revpl.w','revvs.w','revvc.w','revhi.w','revls.w','revge.w','revlt.w','revgt.w','revle.w', + 'reveq','revne','revcs','revhs','revcc','revlo','revmi','revpl','revvs','revvc','revhi','revls','revge','revlt','revgt','revle', + 'rev16eq.w','rev16ne.w','rev16cs.w','rev16hs.w','rev16cc.w','rev16lo.w','rev16mi.w','rev16pl.w','rev16vs.w','rev16vc.w','rev16hi.w','rev16ls.w','rev16ge.w','rev16lt.w','rev16gt.w','rev16le.w', + 'rev16eq','rev16ne','rev16cs','rev16hs','rev16cc','rev16lo','rev16mi','rev16pl','rev16vs','rev16vc','rev16hi','rev16ls','rev16ge','rev16lt','rev16gt','rev16le', + 'revsheq.w','revshne.w','revshcs.w','revshhs.w','revshcc.w','revshlo.w','revshmi.w','revshpl.w','revshvs.w','revshvc.w','revshhi.w','revshls.w','revshge.w','revshlt.w','revshgt.w','revshle.w', + 'revsheq','revshne','revshcs','revshhs','revshcc','revshlo','revshmi','revshpl','revshvs','revshvc','revshhi','revshls','revshge','revshlt','revshgt','revshle', + 'seleq','selne','selcs','selhs','selcc','sello','selmi','selpl','selvs','selvc','selhi','sells','selge','sellt','selgt','selle', + /* ARMv6 SIMD: Conditional Multiply and Multiply-Add */ + 'smladeq','smladne','smladcs','smladhs','smladcc','smladlo','smladmi','smladpl','smladvs','smladvc','smladhi','smladls','smladge','smladlt','smladgt','smladle', + 'smladxeq','smladxne','smladxcs','smladxhs','smladxcc','smladxlo','smladxmi','smladxpl','smladxvs','smladxvc','smladxhi','smladxls','smladxge','smladxlt','smladxgt','smladxle', + 'smlsdeq','smlsdne','smlsdcs','smlsdhs','smlsdcc','smlsdlo','smlsdmi','smlsdpl','smlsdvs','smlsdvc','smlsdhi','smlsdls','smlsdge','smlsdlt','smlsdgt','smlsdle', + 'smlsdxeq','smlsdxne','smlsdxcs','smlsdxhs','smlsdxcc','smlsdxlo','smlsdxmi','smlsdxpl','smlsdxvs','smlsdxvc','smlsdxhi','smlsdxls','smlsdxge','smlsdxlt','smlsdxgt','smlsdxle', + 'smlaldeq','smlaldne','smlaldcs','smlaldhs','smlaldcc','smlaldlo','smlaldmi','smlaldpl','smlaldvs','smlaldvc','smlaldhi','smlaldls','smlaldge','smlaldlt','smlaldgt','smlaldle', + 'smlaldxeq','smlaldxne','smlaldxcs','smlaldxhs','smlaldxcc','smlaldxlo','smlaldxmi','smlaldxpl','smlaldxvs','smlaldxvc','smlaldxhi','smlaldxls','smlaldxge','smlaldxlt','smlaldxgt','smlaldxle', + 'smlsldeq','smlsldne','smlsldcs','smlsldhs','smlsldcc','smlsldlo','smlsldmi','smlsldpl','smlsldvs','smlsldvc','smlsldhi','smlsldls','smlsldge','smlsldlt','smlsldgt','smlsldle', + 'smlsldxeq','smlsldxne','smlsldxcs','smlsldxhs','smlsldxcc','smlsldxlo','smlsldxmi','smlsldxpl','smlsldxvs','smlsldxvc','smlsldxhi','smlsldxls','smlsldxge','smlsldxlt','smlsldxgt','smlsldxle', + 'smmuleq','smmulne','smmulcs','smmulhs','smmulcc','smmullo','smmulmi','smmulpl','smmulvs','smmulvc','smmulhi','smmulls','smmulge','smmullt','smmulgt','smmulle', + 'smmulreq','smmulrne','smmulrcs','smmulrhs','smmulrcc','smmulrlo','smmulrmi','smmulrpl','smmulrvs','smmulrvc','smmulrhi','smmulrls','smmulrge','smmulrlt','smmulrgt','smmulrle', + 'smmlaeq','smmlane','smmlacs','smmlahs','smmlacc','smmlalo','smmlami','smmlapl','smmlavs','smmlavc','smmlahi','smmlals','smmlage','smmlalt','smmlagt','smmlale', + 'smmlareq','smmlarne','smmlarcs','smmlarhs','smmlarcc','smmlarlo','smmlarmi','smmlarpl','smmlarvs','smmlarvc','smmlarhi','smmlarls','smmlarge','smmlarlt','smmlargt','smmlarle', + 'smmlseq','smmlsne','smmlscs','smmlshs','smmlscc','smmlslo','smmlsmi','smmlspl','smmlsvs','smmlsvc','smmlshi','smmlsls','smmlsge','smmlslt','smmlsgt','smmlsle', + 'smmlsreq','smmlsrne','smmlsrcs','smmlsrhs','smmlsrcc','smmlsrlo','smmlsrmi','smmlsrpl','smmlsrvs','smmlsrvc','smmlsrhi','smmlsrls','smmlsrge','smmlsrlt','smmlsrgt','smmlsrle', + 'smuadeq','smuadne','smuadcs','smuadhs','smuadcc','smuadlo','smuadmi','smuadpl','smuadvs','smuadvc','smuadhi','smuadls','smuadge','smuadlt','smuadgt','smuadle', + 'smuadxeq','smuadxne','smuadxcs','smuadxhs','smuadxcc','smuadxlo','smuadxmi','smuadxpl','smuadxvs','smuadxvc','smuadxhi','smuadxls','smuadxge','smuadxlt','smuadxgt','smuadxle', + 'smusdeq','smusdne','smusdcs','smusdhs','smusdcc','smusdlo','smusdmi','smusdpl','smusdvs','smusdvc','smusdhi','smusdls','smusdge','smusdlt','smusdgt','smusdle', + 'smusdxeq','smusdxne','smusdxcs','smusdxhs','smusdxcc','smusdxlo','smusdxmi','smusdxpl','smusdxvs','smusdxvc','smusdxhi','smusdxls','smusdxge','smusdxlt','smusdxgt','smusdxle', + 'umaaleq','umaalne','umaalcs','umaalhs','umaalcc','umaallo','umaalmi','umaalpl','umaalvs','umaalvc','umaalhi','umaalls','umaalge','umaallt','umaalgt','umaalle' + ), + /* Unconditional Coprocessor Instructions */ + 13 => array( + /* Data Processing: Unconditional Coprocessor Instructions */ + 'cdp','cdpal', + 'cdp2','cdp2al', + 'ldc','ldcal', + 'ldcl','ldclal', + 'ldc2','ldc2al', + 'ldc2l','ldc2lal', + 'stc','stcal', + 'stcl','stclal', + 'stc2','stc2al', + 'stc2l','stc2lal', + 'mcr','mcral', + 'mcr2','mcr2al', + 'mcrr','mcrral', + 'mcrr2','mcrr2al', + 'mrc','mrcal', + 'mrc2','mrc2al', + 'mrrc','mrrcal', + 'mrrc2','mrrc2al' + ), + /* Conditional Coprocessor Instructions */ + 14 => array( + /* Data Processing: Conditional Coprocessor Instructions */ + 'cdpeq','cdpne','cdpcs','cdphs','cdpcc','cdplo','cdpmi','cdppl','cdpvs','cdpvc','cdphi','cdpls','cdpge','cdplt','cdpgt','cdple', + 'cdp2eq','cdp2ne','cdp2cs','cdp2hs','cdp2cc','cdp2lo','cdp2mi','cdp2pl','cdp2vs','cdp2vc','cdp2hi','cdp2ls','cdp2ge','cdp2lt','cdp2gt','cdp2le', + 'ldceq','ldcne','ldccs','ldchs','ldccc','ldclo','ldcmi','ldcpl','ldcvs','ldcvc','ldchi','ldcls','ldcge','ldclt','ldcgt','ldcle', + 'ldcleq','ldclne','ldclcs','ldclhs','ldclcc','ldcllo','ldclmi','ldclpl','ldclvs','ldclvc','ldclhi','ldclls','ldclge','ldcllt','ldclgt','ldclle', + 'ldc2eq','ldc2ne','ldc2cs','ldc2hs','ldc2cc','ldc2lo','ldc2mi','ldc2pl','ldc2vs','ldc2vc','ldc2hi','ldc2ls','ldc2ge','ldc2lt','ldc2gt','ldc2le', + 'ldc2leq','ldc2lne','ldc2lcs','ldc2lhs','ldc2lcc','ldc2llo','ldc2lmi','ldc2lpl','ldc2lvs','ldc2lvc','ldc2lhi','ldc2lls','ldc2lge','ldc2llt','ldc2lgt','ldc2lle', + 'stceq','stcne','stccs','stchs','stccc','stclo','stcmi','stcpl','stcvs','stcvc','stchi','stcls','stcge','stclt','stcgt','stcle', + 'stcleq','stclne','stclcs','stclhs','stclcc','stcllo','stclmi','stclpl','stclvs','stclvc','stclhi','stclls','stclge','stcllt','stclgt','stclle', + 'stc2eq','stc2ne','stc2cs','stc2hs','stc2cc','stc2lo','stc2mi','stc2pl','stc2vs','stc2vc','stc2hi','stc2ls','stc2ge','stc2lt','stc2gt','stc2le', + 'stc2leq','stc2lne','stc2lcs','stc2lhs','stc2lcc','stc2llo','stc2lmi','stc2lpl','stc2lvs','stc2lvc','stc2lhi','stc2lls','stc2lge','stc2llt','stc2lgt','stc2lle', + 'mcreq','mcrne','mcrcs','mcrhs','mcrcc','mcrlo','mcrmi','mcrpl','mcrvs','mcrvc','mcrhi','mcrls','mcrge','mcrlt','mcrgt','mcrle', + 'mcr2eq','mcr2ne','mcr2cs','mcr2hs','mcr2cc','mcr2lo','mcr2mi','mcr2pl','mcr2vs','mcr2vc','mcr2hi','mcr2ls','mcr2ge','mcr2lt','mcr2gt','mcr2le', + 'mcrreq','mcrrne','mcrrcs','mcrrhs','mcrrcc','mcrrlo','mcrrmi','mcrrpl','mcrrvs','mcrrvc','mcrrhi','mcrrls','mcrrge','mcrrlt','mcrrgt','mcrrle', + 'mcrr2eq','mcrr2ne','mcrr2cs','mcrr2hs','mcrr2cc','mcrr2lo','mcrr2mi','mcrr2pl','mcrr2vs','mcrr2vc','mcrr2hi','mcrr2ls','mcrr2ge','mcrr2lt','mcrr2gt','mcrr2le', + 'mrceq','mrcne','mrccs','mrchs','mrccc','mrclo','mrcmi','mrcpl','mrcvs','mrcvc','mrchi','mrcls','mrcge','mrclt','mrcgt','mrcle', + 'mrc2eq','mrc2ne','mrc2cs','mrc2hs','mrc2cc','mrc2lo','mrc2mi','mrc2pl','mrc2vs','mrc2vc','mrc2hi','mrc2ls','mrc2ge','mrc2lt','mrc2gt','mrc2le', + 'mrrceq','mrrcne','mrrccs','mrrchs','mrrccc','mrrclo','mrrcmi','mrrcpl','mrrcvs','mrrcvc','mrrchi','mrrcls','mrrcge','mrrclt','mrrcgt','mrrcle', + 'mrrc2eq','mrrc2ne','mrrc2cs','mrrc2hs','mrrc2cc','mrrc2lo','mrrc2mi','mrrc2pl','mrrc2vs','mrrc2vc','mrrc2hi','mrrc2ls','mrrc2ge','mrrc2lt','mrrc2gt','mrrc2le' + ), + /* Unconditional System Instructions */ + 15 => array( + /* System: Unconditional Debug and State-Change Instructions */ + 'bkpt', + 'dbg','dbgal', + 'setend', + 'svc','svcal', + 'sev.w','seval.w', + 'sev','seval', + 'wfe.w','wfeal.w', + 'wfe','wfeal', + 'wfi.w','wfial.w', + 'wfi','wfial', + /* System: Unconditional ThumbEE Instructions */ + 'enterx', + 'leavex', + 'chka.n','chkaal.n', + 'chka','chkaal', + 'hb.n','hbal.n', + 'hb','hbal', + 'hbl.n','hblal.n', + 'hbl','hblal', + 'hblp.n','hblpal.n', + 'hblp','hblpal', + 'hbp.n','hbpal.n', + 'hbp','hbpal', + /* System: Unconditional Privileged Instructions */ + 'cpsie.n', + 'cpsie.w', + 'cpsie', + 'cpsid.n', + 'cpsid.w', + 'cpsid', + 'smc','smcal', + 'rfeda','rfedaal', + 'rfedb','rfedbal', + 'rfeia','rfeiaal', + 'rfeib','rfeibal', + 'srsda','srsdaal', + 'srsdb','srsdbal', + 'srsia','srsiaal', + 'srsib','srsibal' + ), + /* Conditional System Instructions */ + 16 => array( + /* System: Conditional Debug and State-Change Instructions */ + 'dbgeq','dbgne','dbgcs','dbghs','dbgcc','dbglo','dbgmi','dbgpl','dbgvs','dbgvc','dbghi','dbgls','dbgge','dbglt','dbggt','dbgle', + 'svceq','svcne','svccs','svchs','svccc','svclo','svcmi','svcpl','svcvs','svcvc','svchi','svcls','svcge','svclt','svcgt','svcle', + 'seveq.w','sevne.w','sevcs.w','sevhs.w','sevcc.w','sevlo.w','sevmi.w','sevpl.w','sevvs.w','sevvc.w','sevhi.w','sevls.w','sevge.w','sevlt.w','sevgt.w','sevle.w', + 'seveq','sevne','sevcs','sevhs','sevcc','sevlo','sevmi','sevpl','sevvs','sevvc','sevhi','sevls','sevge','sevlt','sevgt','sevle', + 'wfeeq.w','wfene.w','wfecs.w','wfehs.w','wfecc.w','wfelo.w','wfemi.w','wfepl.w','wfevs.w','wfevc.w','wfehi.w','wfels.w','wfege.w','wfelt.w','wfegt.w','wfele.w', + 'wfeeq','wfene','wfecs','wfehs','wfecc','wfelo','wfemi','wfepl','wfevs','wfevc','wfehi','wfels','wfege','wfelt','wfegt','wfele', + 'wfieq.w','wfine.w','wfics.w','wfihs.w','wficc.w','wfilo.w','wfimi.w','wfipl.w','wfivs.w','wfivc.w','wfihi.w','wfils.w','wfige.w','wfilt.w','wfigt.w','wfile.w', + 'wfieq','wfine','wfics','wfihs','wficc','wfilo','wfimi','wfipl','wfivs','wfivc','wfihi','wfils','wfige','wfilt','wfigt','wfile', + /* System: Conditional ThumbEE Instructions */ + 'chkaeq.n','chkane.n','chkacs.n','chkahs.n','chkacc.n','chkalo.n','chkami.n','chkapl.n','chkavs.n','chkavc.n','chkahi.n','chkals.n','chkage.n','chkalt.n','chkagt.n','chkale.n', + 'chkaeq','chkane','chkacs','chkahs','chkacc','chkalo','chkami','chkapl','chkavs','chkavc','chkahi','chkals','chkage','chkalt','chkagt','chkale', + 'hbeq.n','hbne.n','hbcs.n','hbhs.n','hbcc.n','hblo.n','hbmi.n','hbpl.n','hbvs.n','hbvc.n','hbhi.n','hbls.n','hbge.n','hblt.n','hbgt.n','hble.n', + 'hbeq','hbne','hbcs','hbhs','hbcc','hblo','hbmi','hbpl','hbvs','hbvc','hbhi','hbls','hbge','hblt','hbgt','hble', + 'hbleq.n','hblne.n','hblcs.n','hblhs.n','hblcc.n','hbllo.n','hblmi.n','hblpl.n','hblvs.n','hblvc.n','hblhi.n','hblls.n','hblge.n','hbllt.n','hblgt.n','hblle.n', + 'hbleq','hblne','hblcs','hblhs','hblcc','hbllo','hblmi','hblpl','hblvs','hblvc','hblhi','hblls','hblge','hbllt','hblgt','hblle', + 'hblpeq.n','hblpne.n','hblpcs.n','hblphs.n','hblpcc.n','hblplo.n','hblpmi.n','hblppl.n','hblpvs.n','hblpvc.n','hblphi.n','hblpls.n','hblpge.n','hblplt.n','hblpgt.n','hblple.n', + 'hblpeq','hblpne','hblpcs','hblphs','hblpcc','hblplo','hblpmi','hblppl','hblpvs','hblpvc','hblphi','hblpls','hblpge','hblplt','hblpgt','hblple', + 'hbpeq.n','hbpne.n','hbpcs.n','hbphs.n','hbpcc.n','hbplo.n','hbpmi.n','hbppl.n','hbpvs.n','hbpvc.n','hbphi.n','hbpls.n','hbpge.n','hbplt.n','hbpgt.n','hbple.n', + 'hbpeq','hbpne','hbpcs','hbphs','hbpcc','hbplo','hbpmi','hbppl','hbpvs','hbpvc','hbphi','hbpls','hbpge','hbplt','hbpgt','hbple', + /* System: Conditional Privileged Instructions */ + 'smceq','smcne','smccs','smchs','smccc','smclo','smcmi','smcpl','smcvs','smcvc','smchi','smcls','smcge','smclt','smcgt','smcle', + 'rfedaeq','rfedane','rfedacs','rfedahs','rfedacc','rfedalo','rfedami','rfedapl','rfedavs','rfedavc','rfedahi','rfedals','rfedage','rfedalt','rfedagt','rfedale', + 'rfedbeq','rfedbne','rfedbcs','rfedbhs','rfedbcc','rfedblo','rfedbmi','rfedbpl','rfedbvs','rfedbvc','rfedbhi','rfedbls','rfedbge','rfedblt','rfedbgt','rfedble', + 'rfeiaeq','rfeiane','rfeiacs','rfeiahs','rfeiacc','rfeialo','rfeiami','rfeiapl','rfeiavs','rfeiavc','rfeiahi','rfeials','rfeiage','rfeialt','rfeiagt','rfeiale', + 'rfeibeq','rfeibne','rfeibcs','rfeibhs','rfeibcc','rfeiblo','rfeibmi','rfeibpl','rfeibvs','rfeibvc','rfeibhi','rfeibls','rfeibge','rfeiblt','rfeibgt','rfeible', + 'srsdaeq','srsdane','srsdacs','srsdahs','srsdacc','srsdalo','srsdami','srsdapl','srsdavs','srsdavc','srsdahi','srsdals','srsdage','srsdalt','srsdagt','srsdale', + 'srsdbeq','srsdbne','srsdbcs','srsdbhs','srsdbcc','srsdblo','srsdbmi','srsdbpl','srsdbvs','srsdbvc','srsdbhi','srsdbls','srsdbge','srsdblt','srsdbgt','srsdble', + 'srsiaeq','srsiane','srsiacs','srsiahs','srsiacc','srsialo','srsiami','srsiapl','srsiavs','srsiavc','srsiahi','srsials','srsiage','srsialt','srsiagt','srsiale', + 'srsibeq','srsibne','srsibcs','srsibhs','srsibcc','srsiblo','srsibmi','srsibpl','srsibvs','srsibvc','srsibhi','srsibls','srsibge','srsiblt','srsibgt','srsible' + ), + /* Unconditional WMMX/WMMX2 instructions */ + 17 => array( + /* Unconditional WMMX/WMMX2 SIMD Instructions */ + 'tandcb','tandcbal', + 'tandch','tandchal', + 'tandcw','tandcwal', + 'tbcstb','tbcstbal', + 'tbcsth','tbcsthal', + 'tbcstw','tbcstwal', + 'textrcb','textrcbal', + 'textrch','textrchal', + 'textrcw','textrcwal', + 'textrmsb','textrmsbal', + 'textrmsh','textrmshal', + 'textrmsw','textrmswal', + 'textrmub','textrmubal', + 'textrmuh','textrmuhal', + 'textrmuw','textrmuwal', + 'tinsrb','tinsrbal', + 'tinsrh','tinsrhal', + 'tinsrw','tinsrwal', + 'tmcr','tmcral', + 'tmcrr','tmcrral', + 'tmia','tmiaal', + 'tmiaph','tmiaphal', + 'tmiabb','tmiabbal', + 'tmiabt','tmiabtal', + 'tmiatb','tmiatbal', + 'tmiatt','tmiattal', + 'tmovmskb','tmovmskbal', + 'tmovmskh','tmovmskhal', + 'tmovmskw','tmovmskwal', + 'tmrc','tmrcal', + 'tmrrc','tmrrcal', + 'torcb','torcbal', + 'torch','torchal', + 'torcw','torcwal', + 'torvscb','torvscbal', + 'torvsch','torvschal', + 'torvscw','torvscwal', + 'wabsb','wabsbal', + 'wabsh','wabshal', + 'wabsw','wabswal', + 'wabsdiffb','wabsdiffbal', + 'wabsdiffh','wabsdiffhal', + 'wabsdiffw','wabsdiffwal', + 'waccb','waccbal', + 'wacch','wacchal', + 'waccw','waccwal', + 'waddb','waddbal', + 'waddh','waddhal', + 'waddw','waddwal', + 'waddbc','waddbcal', + 'waddhc','waddhcal', + 'waddwc','waddwcal', + 'waddbss','waddbssal', + 'waddhss','waddhssal', + 'waddwss','waddwssal', + 'waddbus','waddbusal', + 'waddhus','waddhusal', + 'waddwus','waddwusal', + 'waddsubhx','waddsubhxal', + 'waligni','walignial', + 'walignr0','walignr0al', + 'walignr1','walignr1al', + 'walignr2','walignr2al', + 'walignr3','walignr3al', + 'wand','wandal', + 'wandn','wandnal', + 'wavg2b','wavg2bal', + 'wavg2h','wavg2hal', + 'wavg2br','wavg2bral', + 'wavg2hr','wavg2hral', + 'wavg4','wavg4al', + 'wavg4r','wavg4ral', + 'wcmpeqb','wcmpeqbal', + 'wcmpeqh','wcmpeqhal', + 'wcmpeqw','wcmpeqwal', + 'wcmpgtsb','wcmpgtsbal', + 'wcmpgtsh','wcmpgtshal', + 'wcmpgtsw','wcmpgtswal', + 'wcmpgtub','wcmpgtubal', + 'wcmpgtuh','wcmpgtuhal', + 'wcmpgtuw','wcmpgtuwal', + 'wldrb','wldrbal', + 'wldrh','wldrhal', + 'wldrw','wldrwal', + 'wldrd','wldrdal', + 'wmacs','wmacsal', + 'wmacu','wmacual', + 'wmacsz','wmacszal', + 'wmacuz','wmacuzal', + 'wmadds','wmaddsal', + 'wmaddu','wmaddual', + 'wmaddsx','wmaddsxal', + 'wmaddux','wmadduxal', + 'wmaddsn','wmaddsnal', + 'wmaddun','wmaddunal', + 'wmaxsb','wmaxsbal', + 'wmaxsh','wmaxshal', + 'wmaxsw','wmaxswal', + 'wmaxub','wmaxubal', + 'wmaxuh','wmaxuhal', + 'wmaxuw','wmaxuwal', + 'wmerge','wmergeal', + 'wmiabb','wmiabbal', + 'wmiabt','wmiabtal', + 'wmiatb','wmiatbal', + 'wmiatt','wmiattal', + 'wmiabbn','wmiabbnal', + 'wmiabtn','wmiabtnal', + 'wmiatbn','wmiatbnal', + 'wmiattn','wmiattnal', + 'wmiawbb','wmiawbbal', + 'wmiawbt','wmiawbtal', + 'wmiawtb','wmiawtbal', + 'wmiawtt','wmiawttal', + 'wmiawbbn','wmiawbbnal', + 'wmiawbtn','wmiawbtnal', + 'wmiawtbn','wmiawtbnal', + 'wmiawttn','wmiawttnal', + 'wminsb','wminsbal', + 'wminsh','wminshal', + 'wminsw','wminswal', + 'wminub','wminubal', + 'wminuh','wminuhal', + 'wminuw','wminuwal', + 'wmov','wmoval', + 'wmulsm','wmulsmal', + 'wmulsl','wmulslal', + 'wmulum','wmulumal', + 'wmulul','wmululal', + 'wmulsmr','wmulsmral', + 'wmulslr','wmulslral', + 'wmulumr','wmulumral', + 'wmululr','wmululral', + 'wmulwum','wmulwumal', + 'wmulwsm','wmulwsmal', + 'wmulwl','wmulwlal', + 'wmulwumr','wmulwumral', + 'wmulwsmr','wmulwsmral', + 'wor','woral', + 'wpackhss','wpackhssal', + 'wpackwss','wpackwssal', + 'wpackdss','wpackdssal', + 'wpackhus','wpackhusal', + 'wpackwus','wpackwusal', + 'wpackdus','wpackdusal', + 'wqmiabb','wqmiabbal', + 'wqmiabt','wqmiabtal', + 'wqmiatb','wqmiatbal', + 'wqmiatt','wqmiattal', + 'wqmiabbn','wqmiabbnal', + 'wqmiabtn','wqmiabtnal', + 'wqmiatbn','wqmiatbnal', + 'wqmiattn','wqmiattnal', + 'wqmulm','wqmulmal', + 'wqmulmr','wqmulmral', + 'wqmulwm','wqmulwmal', + 'wqmulwmr','wqmulwmral', + 'wrorh','wrorhal', + 'wrorw','wrorwal', + 'wrord','wrordal', + 'wrorhg','wrorhgal', + 'wrorwg','wrorwgal', + 'wrordg','wrordgal', + 'wsadb','wsadbal', + 'wsadh','wsadhal', + 'wsadbz','wsadbzal', + 'wsadhz','wsadhzal', + 'wshufh','wshufhal', + 'wsllh','wsllhal', + 'wsllw','wsllwal', + 'wslld','wslldal', + 'wsllhg','wsllhgal', + 'wsllwg','wsllwgal', + 'wslldg','wslldgal', + 'wsrah','wsrahal', + 'wsraw','wsrawal', + 'wsrad','wsradal', + 'wsrahg','wsrahgal', + 'wsrawg','wsrawgal', + 'wsradg','wsradgal', + 'wsrlh','wsrlhal', + 'wsrlw','wsrlwal', + 'wsrld','wsrldal', + 'wsrlhg','wsrlhgal', + 'wsrlwg','wsrlwgal', + 'wsrldg','wsrldgal', + 'wstrb','wstrbal', + 'wstrh','wstrhal', + 'wstrw','wstrwal', + 'wstrd','wstrdal', + 'wsubb','wsubbal', + 'wsubh','wsubhal', + 'wsubw','wsubwal', + 'wsubbss','wsubbssal', + 'wsubhss','wsubhssal', + 'wsubwss','wsubwssal', + 'wsubbus','wsubbusal', + 'wsubhus','wsubhusal', + 'wsubwus','wsubwusal', + 'wsubaddhx','wsubaddhxal', + 'wunpckehsb','wunpckehsbal', + 'wunpckehsh','wunpckehshal', + 'wunpckehsw','wunpckehswal', + 'wunpckehub','wunpckehubal', + 'wunpckehuh','wunpckehuhal', + 'wunpckehuw','wunpckehuwal', + 'wunpckihb','wunpckihbal', + 'wunpckihh','wunpckihhal', + 'wunpckihw','wunpckihwal', + 'wunpckelsb','wunpckelsbal', + 'wunpckelsh','wunpckelshal', + 'wunpckelsw','wunpckelswal', + 'wunpckelub','wunpckelubal', + 'wunpckeluh','wunpckeluhal', + 'wunpckeluw','wunpckeluwal', + 'wunpckilb','wunpckilbal', + 'wunpckilh','wunpckilhal', + 'wunpckilw','wunpckilwal', + 'wxor','wxoral', + 'wzero','wzeroal' + ), + /* Conditional WMMX/WMMX2 SIMD Instructions */ + 18 => array( + /* Conditional WMMX/WMMX2 SIMD Instructions */ + 'tandcbeq','tandcbne','tandcbcs','tandcbhs','tandcbcc','tandcblo','tandcbmi','tandcbpl','tandcbvs','tandcbvc','tandcbhi','tandcbls','tandcbge','tandcblt','tandcbgt','tandcble', + 'tandcheq','tandchne','tandchcs','tandchhs','tandchcc','tandchlo','tandchmi','tandchpl','tandchvs','tandchvc','tandchhi','tandchls','tandchge','tandchlt','tandchgt','tandchle', + 'tandcweq','tandcwne','tandcwcs','tandcwhs','tandcwcc','tandcwlo','tandcwmi','tandcwpl','tandcwvs','tandcwvc','tandcwhi','tandcwls','tandcwge','tandcwlt','tandcwgt','tandcwle', + 'tbcstbeq','tbcstbne','tbcstbcs','tbcstbhs','tbcstbcc','tbcstblo','tbcstbmi','tbcstbpl','tbcstbvs','tbcstbvc','tbcstbhi','tbcstbls','tbcstbge','tbcstblt','tbcstbgt','tbcstble', + 'tbcstheq','tbcsthne','tbcsthcs','tbcsthhs','tbcsthcc','tbcsthlo','tbcsthmi','tbcsthpl','tbcsthvs','tbcsthvc','tbcsthhi','tbcsthls','tbcsthge','tbcsthlt','tbcsthgt','tbcsthle', + 'tbcstweq','tbcstwne','tbcstwcs','tbcstwhs','tbcstwcc','tbcstwlo','tbcstwmi','tbcstwpl','tbcstwvs','tbcstwvc','tbcstwhi','tbcstwls','tbcstwge','tbcstwlt','tbcstwgt','tbcstwle', + 'textrcbeq','textrcbne','textrcbcs','textrcbhs','textrcbcc','textrcblo','textrcbmi','textrcbpl','textrcbvs','textrcbvc','textrcbhi','textrcbls','textrcbge','textrcblt','textrcbgt','textrcble', + 'textrcheq','textrchne','textrchcs','textrchhs','textrchcc','textrchlo','textrchmi','textrchpl','textrchvs','textrchvc','textrchhi','textrchls','textrchge','textrchlt','textrchgt','textrchle', + 'textrcweq','textrcwne','textrcwcs','textrcwhs','textrcwcc','textrcwlo','textrcwmi','textrcwpl','textrcwvs','textrcwvc','textrcwhi','textrcwls','textrcwge','textrcwlt','textrcwgt','textrcwle', + 'textrmsbeq','textrmsbne','textrmsbcs','textrmsbhs','textrmsbcc','textrmsblo','textrmsbmi','textrmsbpl','textrmsbvs','textrmsbvc','textrmsbhi','textrmsbls','textrmsbge','textrmsblt','textrmsbgt','textrmsble', + 'textrmsheq','textrmshne','textrmshcs','textrmshhs','textrmshcc','textrmshlo','textrmshmi','textrmshpl','textrmshvs','textrmshvc','textrmshhi','textrmshls','textrmshge','textrmshlt','textrmshgt','textrmshle', + 'textrmsweq','textrmswne','textrmswcs','textrmswhs','textrmswcc','textrmswlo','textrmswmi','textrmswpl','textrmswvs','textrmswvc','textrmswhi','textrmswls','textrmswge','textrmswlt','textrmswgt','textrmswle', + 'textrmubeq','textrmubne','textrmubcs','textrmubhs','textrmubcc','textrmublo','textrmubmi','textrmubpl','textrmubvs','textrmubvc','textrmubhi','textrmubls','textrmubge','textrmublt','textrmubgt','textrmuble', + 'textrmuheq','textrmuhne','textrmuhcs','textrmuhhs','textrmuhcc','textrmuhlo','textrmuhmi','textrmuhpl','textrmuhvs','textrmuhvc','textrmuhhi','textrmuhls','textrmuhge','textrmuhlt','textrmuhgt','textrmuhle', + 'textrmuweq','textrmuwne','textrmuwcs','textrmuwhs','textrmuwcc','textrmuwlo','textrmuwmi','textrmuwpl','textrmuwvs','textrmuwvc','textrmuwhi','textrmuwls','textrmuwge','textrmuwlt','textrmuwgt','textrmuwle', + 'tinsrbeq','tinsrbne','tinsrbcs','tinsrbhs','tinsrbcc','tinsrblo','tinsrbmi','tinsrbpl','tinsrbvs','tinsrbvc','tinsrbhi','tinsrbls','tinsrbge','tinsrblt','tinsrbgt','tinsrble', + 'tinsrheq','tinsrhne','tinsrhcs','tinsrhhs','tinsrhcc','tinsrhlo','tinsrhmi','tinsrhpl','tinsrhvs','tinsrhvc','tinsrhhi','tinsrhls','tinsrhge','tinsrhlt','tinsrhgt','tinsrhle', + 'tinsrweq','tinsrwne','tinsrwcs','tinsrwhs','tinsrwcc','tinsrwlo','tinsrwmi','tinsrwpl','tinsrwvs','tinsrwvc','tinsrwhi','tinsrwls','tinsrwge','tinsrwlt','tinsrwgt','tinsrwle', + 'tmcreq','tmcrne','tmcrcs','tmcrhs','tmcrcc','tmcrlo','tmcrmi','tmcrpl','tmcrvs','tmcrvc','tmcrhi','tmcrls','tmcrge','tmcrlt','tmcrgt','tmcrle', + 'tmcrreq','tmcrrne','tmcrrcs','tmcrrhs','tmcrrcc','tmcrrlo','tmcrrmi','tmcrrpl','tmcrrvs','tmcrrvc','tmcrrhi','tmcrrls','tmcrrge','tmcrrlt','tmcrrgt','tmcrrle', + 'tmiaeq','tmiane','tmiacs','tmiahs','tmiacc','tmialo','tmiami','tmiapl','tmiavs','tmiavc','tmiahi','tmials','tmiage','tmialt','tmiagt','tmiale', + 'tmiapheq','tmiaphne','tmiaphcs','tmiaphhs','tmiaphcc','tmiaphlo','tmiaphmi','tmiaphpl','tmiaphvs','tmiaphvc','tmiaphhi','tmiaphls','tmiaphge','tmiaphlt','tmiaphgt','tmiaphle', + 'tmiabbeq','tmiabbne','tmiabbcs','tmiabbhs','tmiabbcc','tmiabblo','tmiabbmi','tmiabbpl','tmiabbvs','tmiabbvc','tmiabbhi','tmiabbls','tmiabbge','tmiabblt','tmiabbgt','tmiabble', + 'tmiabteq','tmiabtne','tmiabtcs','tmiabths','tmiabtcc','tmiabtlo','tmiabtmi','tmiabtpl','tmiabtvs','tmiabtvc','tmiabthi','tmiabtls','tmiabtge','tmiabtlt','tmiabtgt','tmiabtle', + 'tmiatbeq','tmiatbne','tmiatbcs','tmiatbhs','tmiatbcc','tmiatblo','tmiatbmi','tmiatbpl','tmiatbvs','tmiatbvc','tmiatbhi','tmiatbls','tmiatbge','tmiatblt','tmiatbgt','tmiatble', + 'tmiatteq','tmiattne','tmiattcs','tmiatths','tmiattcc','tmiattlo','tmiattmi','tmiattpl','tmiattvs','tmiattvc','tmiatthi','tmiattls','tmiattge','tmiattlt','tmiattgt','tmiattle', + 'tmovmskbeq','tmovmskbne','tmovmskbcs','tmovmskbhs','tmovmskbcc','tmovmskblo','tmovmskbmi','tmovmskbpl','tmovmskbvs','tmovmskbvc','tmovmskbhi','tmovmskbls','tmovmskbge','tmovmskblt','tmovmskbgt','tmovmskble', + 'tmovmskheq','tmovmskhne','tmovmskhcs','tmovmskhhs','tmovmskhcc','tmovmskhlo','tmovmskhmi','tmovmskhpl','tmovmskhvs','tmovmskhvc','tmovmskhhi','tmovmskhls','tmovmskhge','tmovmskhlt','tmovmskhgt','tmovmskhle', + 'tmovmskweq','tmovmskwne','tmovmskwcs','tmovmskwhs','tmovmskwcc','tmovmskwlo','tmovmskwmi','tmovmskwpl','tmovmskwvs','tmovmskwvc','tmovmskwhi','tmovmskwls','tmovmskwge','tmovmskwlt','tmovmskwgt','tmovmskwle', + 'tmrceq','tmrcne','tmrccs','tmrchs','tmrccc','tmrclo','tmrcmi','tmrcpl','tmrcvs','tmrcvc','tmrchi','tmrcls','tmrcge','tmrclt','tmrcgt','tmrcle', + 'tmrrceq','tmrrcne','tmrrccs','tmrrchs','tmrrccc','tmrrclo','tmrrcmi','tmrrcpl','tmrrcvs','tmrrcvc','tmrrchi','tmrrcls','tmrrcge','tmrrclt','tmrrcgt','tmrrcle', + 'torcbeq','torcbne','torcbcs','torcbhs','torcbcc','torcblo','torcbmi','torcbpl','torcbvs','torcbvc','torcbhi','torcbls','torcbge','torcblt','torcbgt','torcble', + 'torcheq','torchne','torchcs','torchhs','torchcc','torchlo','torchmi','torchpl','torchvs','torchvc','torchhi','torchls','torchge','torchlt','torchgt','torchle', + 'torcweq','torcwne','torcwcs','torcwhs','torcwcc','torcwlo','torcwmi','torcwpl','torcwvs','torcwvc','torcwhi','torcwls','torcwge','torcwlt','torcwgt','torcwle', + 'torvscbeq','torvscbne','torvscbcs','torvscbhs','torvscbcc','torvscblo','torvscbmi','torvscbpl','torvscbvs','torvscbvc','torvscbhi','torvscbls','torvscbge','torvscblt','torvscbgt','torvscble', + 'torvscheq','torvschne','torvschcs','torvschhs','torvschcc','torvschlo','torvschmi','torvschpl','torvschvs','torvschvc','torvschhi','torvschls','torvschge','torvschlt','torvschgt','torvschle', + 'torvscweq','torvscwne','torvscwcs','torvscwhs','torvscwcc','torvscwlo','torvscwmi','torvscwpl','torvscwvs','torvscwvc','torvscwhi','torvscwls','torvscwge','torvscwlt','torvscwgt','torvscwle', + 'wabsbeq','wabsbne','wabsbcs','wabsbhs','wabsbcc','wabsblo','wabsbmi','wabsbpl','wabsbvs','wabsbvc','wabsbhi','wabsbls','wabsbge','wabsblt','wabsbgt','wabsble', + 'wabsheq','wabshne','wabshcs','wabshhs','wabshcc','wabshlo','wabshmi','wabshpl','wabshvs','wabshvc','wabshhi','wabshls','wabshge','wabshlt','wabshgt','wabshle', + 'wabsweq','wabswne','wabswcs','wabswhs','wabswcc','wabswlo','wabswmi','wabswpl','wabswvs','wabswvc','wabswhi','wabswls','wabswge','wabswlt','wabswgt','wabswle', + 'wabsdiffbeq','wabsdiffbne','wabsdiffbcs','wabsdiffbhs','wabsdiffbcc','wabsdiffblo','wabsdiffbmi','wabsdiffbpl','wabsdiffbvs','wabsdiffbvc','wabsdiffbhi','wabsdiffbls','wabsdiffbge','wabsdiffblt','wabsdiffbgt','wabsdiffble', + 'wabsdiffheq','wabsdiffhne','wabsdiffhcs','wabsdiffhhs','wabsdiffhcc','wabsdiffhlo','wabsdiffhmi','wabsdiffhpl','wabsdiffhvs','wabsdiffhvc','wabsdiffhhi','wabsdiffhls','wabsdiffhge','wabsdiffhlt','wabsdiffhgt','wabsdiffhle', + 'wabsdiffweq','wabsdiffwne','wabsdiffwcs','wabsdiffwhs','wabsdiffwcc','wabsdiffwlo','wabsdiffwmi','wabsdiffwpl','wabsdiffwvs','wabsdiffwvc','wabsdiffwhi','wabsdiffwls','wabsdiffwge','wabsdiffwlt','wabsdiffwgt','wabsdiffwle', + 'waccbeq','waccbne','waccbcs','waccbhs','waccbcc','waccblo','waccbmi','waccbpl','waccbvs','waccbvc','waccbhi','waccbls','waccbge','waccblt','waccbgt','waccble', + 'waccheq','wacchne','wacchcs','wacchhs','wacchcc','wacchlo','wacchmi','wacchpl','wacchvs','wacchvc','wacchhi','wacchls','wacchge','wacchlt','wacchgt','wacchle', + 'waccweq','waccwne','waccwcs','waccwhs','waccwcc','waccwlo','waccwmi','waccwpl','waccwvs','waccwvc','waccwhi','waccwls','waccwge','waccwlt','waccwgt','waccwle', + 'waddbeq','waddbne','waddbcs','waddbhs','waddbcc','waddblo','waddbmi','waddbpl','waddbvs','waddbvc','waddbhi','waddbls','waddbge','waddblt','waddbgt','waddble', + 'waddheq','waddhne','waddhcs','waddhhs','waddhcc','waddhlo','waddhmi','waddhpl','waddhvs','waddhvc','waddhhi','waddhls','waddhge','waddhlt','waddhgt','waddhle', + 'waddweq','waddwne','waddwcs','waddwhs','waddwcc','waddwlo','waddwmi','waddwpl','waddwvs','waddwvc','waddwhi','waddwls','waddwge','waddwlt','waddwgt','waddwle', + 'waddbceq','waddbcne','waddbccs','waddbchs','waddbccc','waddbclo','waddbcmi','waddbcpl','waddbcvs','waddbcvc','waddbchi','waddbcls','waddbcge','waddbclt','waddbcgt','waddbcle', + 'waddhceq','waddhcne','waddhccs','waddhchs','waddhccc','waddhclo','waddhcmi','waddhcpl','waddhcvs','waddhcvc','waddhchi','waddhcls','waddhcge','waddhclt','waddhcgt','waddhcle', + 'waddwceq','waddwcne','waddwccs','waddwchs','waddwccc','waddwclo','waddwcmi','waddwcpl','waddwcvs','waddwcvc','waddwchi','waddwcls','waddwcge','waddwclt','waddwcgt','waddwcle', + 'waddbsseq','waddbssne','waddbsscs','waddbsshs','waddbsscc','waddbsslo','waddbssmi','waddbsspl','waddbssvs','waddbssvc','waddbsshi','waddbssls','waddbssge','waddbsslt','waddbssgt','waddbssle', + 'waddhsseq','waddhssne','waddhsscs','waddhsshs','waddhsscc','waddhsslo','waddhssmi','waddhsspl','waddhssvs','waddhssvc','waddhsshi','waddhssls','waddhssge','waddhsslt','waddhssgt','waddhssle', + 'waddwsseq','waddwssne','waddwsscs','waddwsshs','waddwsscc','waddwsslo','waddwssmi','waddwsspl','waddwssvs','waddwssvc','waddwsshi','waddwssls','waddwssge','waddwsslt','waddwssgt','waddwssle', + 'waddbuseq','waddbusne','waddbuscs','waddbushs','waddbuscc','waddbuslo','waddbusmi','waddbuspl','waddbusvs','waddbusvc','waddbushi','waddbusls','waddbusge','waddbuslt','waddbusgt','waddbusle', + 'waddhuseq','waddhusne','waddhuscs','waddhushs','waddhuscc','waddhuslo','waddhusmi','waddhuspl','waddhusvs','waddhusvc','waddhushi','waddhusls','waddhusge','waddhuslt','waddhusgt','waddhusle', + 'waddwuseq','waddwusne','waddwuscs','waddwushs','waddwuscc','waddwuslo','waddwusmi','waddwuspl','waddwusvs','waddwusvc','waddwushi','waddwusls','waddwusge','waddwuslt','waddwusgt','waddwusle', + 'waddsubhxeq','waddsubhxne','waddsubhxcs','waddsubhxhs','waddsubhxcc','waddsubhxlo','waddsubhxmi','waddsubhxpl','waddsubhxvs','waddsubhxvc','waddsubhxhi','waddsubhxls','waddsubhxge','waddsubhxlt','waddsubhxgt','waddsubhxle', + 'walignieq','walignine','walignics','walignihs','walignicc','walignilo','walignimi','walignipl','walignivs','walignivc','walignihi','walignils','walignige','walignilt','walignigt','walignile', + 'walignr0eq','walignr0ne','walignr0cs','walignr0hs','walignr0cc','walignr0lo','walignr0mi','walignr0pl','walignr0vs','walignr0vc','walignr0hi','walignr0ls','walignr0ge','walignr0lt','walignr0gt','walignr0le', + 'walignr1eq','walignr1ne','walignr1cs','walignr1hs','walignr1cc','walignr1lo','walignr1mi','walignr1pl','walignr1vs','walignr1vc','walignr1hi','walignr1ls','walignr1ge','walignr1lt','walignr1gt','walignr1le', + 'walignr2eq','walignr2ne','walignr2cs','walignr2hs','walignr2cc','walignr2lo','walignr2mi','walignr2pl','walignr2vs','walignr2vc','walignr2hi','walignr2ls','walignr2ge','walignr2lt','walignr2gt','walignr2le', + 'walignr3eq','walignr3ne','walignr3cs','walignr3hs','walignr3cc','walignr3lo','walignr3mi','walignr3pl','walignr3vs','walignr3vc','walignr3hi','walignr3ls','walignr3ge','walignr3lt','walignr3gt','walignr3le', + 'wandeq','wandne','wandcs','wandhs','wandcc','wandlo','wandmi','wandpl','wandvs','wandvc','wandhi','wandls','wandge','wandlt','wandgt','wandle', + 'wandneq','wandnne','wandncs','wandnhs','wandncc','wandnlo','wandnmi','wandnpl','wandnvs','wandnvc','wandnhi','wandnls','wandnge','wandnlt','wandngt','wandnle', + 'wavg2beq','wavg2bne','wavg2bcs','wavg2bhs','wavg2bcc','wavg2blo','wavg2bmi','wavg2bpl','wavg2bvs','wavg2bvc','wavg2bhi','wavg2bls','wavg2bge','wavg2blt','wavg2bgt','wavg2ble', + 'wavg2heq','wavg2hne','wavg2hcs','wavg2hhs','wavg2hcc','wavg2hlo','wavg2hmi','wavg2hpl','wavg2hvs','wavg2hvc','wavg2hhi','wavg2hls','wavg2hge','wavg2hlt','wavg2hgt','wavg2hle', + 'wavg2breq','wavg2brne','wavg2brcs','wavg2brhs','wavg2brcc','wavg2brlo','wavg2brmi','wavg2brpl','wavg2brvs','wavg2brvc','wavg2brhi','wavg2brls','wavg2brge','wavg2brlt','wavg2brgt','wavg2brle', + 'wavg2hreq','wavg2hrne','wavg2hrcs','wavg2hrhs','wavg2hrcc','wavg2hrlo','wavg2hrmi','wavg2hrpl','wavg2hrvs','wavg2hrvc','wavg2hrhi','wavg2hrls','wavg2hrge','wavg2hrlt','wavg2hrgt','wavg2hrle', + 'wavg4eq','wavg4ne','wavg4cs','wavg4hs','wavg4cc','wavg4lo','wavg4mi','wavg4pl','wavg4vs','wavg4vc','wavg4hi','wavg4ls','wavg4ge','wavg4lt','wavg4gt','wavg4le', + 'wavg4req','wavg4rne','wavg4rcs','wavg4rhs','wavg4rcc','wavg4rlo','wavg4rmi','wavg4rpl','wavg4rvs','wavg4rvc','wavg4rhi','wavg4rls','wavg4rge','wavg4rlt','wavg4rgt','wavg4rle', + 'wcmpeqbeq','wcmpeqbne','wcmpeqbcs','wcmpeqbhs','wcmpeqbcc','wcmpeqblo','wcmpeqbmi','wcmpeqbpl','wcmpeqbvs','wcmpeqbvc','wcmpeqbhi','wcmpeqbls','wcmpeqbge','wcmpeqblt','wcmpeqbgt','wcmpeqble', + 'wcmpeqheq','wcmpeqhne','wcmpeqhcs','wcmpeqhhs','wcmpeqhcc','wcmpeqhlo','wcmpeqhmi','wcmpeqhpl','wcmpeqhvs','wcmpeqhvc','wcmpeqhhi','wcmpeqhls','wcmpeqhge','wcmpeqhlt','wcmpeqhgt','wcmpeqhle', + 'wcmpeqweq','wcmpeqwne','wcmpeqwcs','wcmpeqwhs','wcmpeqwcc','wcmpeqwlo','wcmpeqwmi','wcmpeqwpl','wcmpeqwvs','wcmpeqwvc','wcmpeqwhi','wcmpeqwls','wcmpeqwge','wcmpeqwlt','wcmpeqwgt','wcmpeqwle', + 'wcmpgtsbeq','wcmpgtsbne','wcmpgtsbcs','wcmpgtsbhs','wcmpgtsbcc','wcmpgtsblo','wcmpgtsbmi','wcmpgtsbpl','wcmpgtsbvs','wcmpgtsbvc','wcmpgtsbhi','wcmpgtsbls','wcmpgtsbge','wcmpgtsblt','wcmpgtsbgt','wcmpgtsble', + 'wcmpgtsheq','wcmpgtshne','wcmpgtshcs','wcmpgtshhs','wcmpgtshcc','wcmpgtshlo','wcmpgtshmi','wcmpgtshpl','wcmpgtshvs','wcmpgtshvc','wcmpgtshhi','wcmpgtshls','wcmpgtshge','wcmpgtshlt','wcmpgtshgt','wcmpgtshle', + 'wcmpgtsweq','wcmpgtswne','wcmpgtswcs','wcmpgtswhs','wcmpgtswcc','wcmpgtswlo','wcmpgtswmi','wcmpgtswpl','wcmpgtswvs','wcmpgtswvc','wcmpgtswhi','wcmpgtswls','wcmpgtswge','wcmpgtswlt','wcmpgtswgt','wcmpgtswle', + 'wcmpgtubeq','wcmpgtubne','wcmpgtubcs','wcmpgtubhs','wcmpgtubcc','wcmpgtublo','wcmpgtubmi','wcmpgtubpl','wcmpgtubvs','wcmpgtubvc','wcmpgtubhi','wcmpgtubls','wcmpgtubge','wcmpgtublt','wcmpgtubgt','wcmpgtuble', + 'wcmpgtuheq','wcmpgtuhne','wcmpgtuhcs','wcmpgtuhhs','wcmpgtuhcc','wcmpgtuhlo','wcmpgtuhmi','wcmpgtuhpl','wcmpgtuhvs','wcmpgtuhvc','wcmpgtuhhi','wcmpgtuhls','wcmpgtuhge','wcmpgtuhlt','wcmpgtuhgt','wcmpgtuhle', + 'wcmpgtuweq','wcmpgtuwne','wcmpgtuwcs','wcmpgtuwhs','wcmpgtuwcc','wcmpgtuwlo','wcmpgtuwmi','wcmpgtuwpl','wcmpgtuwvs','wcmpgtuwvc','wcmpgtuwhi','wcmpgtuwls','wcmpgtuwge','wcmpgtuwlt','wcmpgtuwgt','wcmpgtuwle', + 'wldrbeq','wldrbne','wldrbcs','wldrbhs','wldrbcc','wldrblo','wldrbmi','wldrbpl','wldrbvs','wldrbvc','wldrbhi','wldrbls','wldrbge','wldrblt','wldrbgt','wldrble', + 'wldrheq','wldrhne','wldrhcs','wldrhhs','wldrhcc','wldrhlo','wldrhmi','wldrhpl','wldrhvs','wldrhvc','wldrhhi','wldrhls','wldrhge','wldrhlt','wldrhgt','wldrhle', + 'wldrweq','wldrwne','wldrwcs','wldrwhs','wldrwcc','wldrwlo','wldrwmi','wldrwpl','wldrwvs','wldrwvc','wldrwhi','wldrwls','wldrwge','wldrwlt','wldrwgt','wldrwle', + 'wldrdeq','wldrdne','wldrdcs','wldrdhs','wldrdcc','wldrdlo','wldrdmi','wldrdpl','wldrdvs','wldrdvc','wldrdhi','wldrdls','wldrdge','wldrdlt','wldrdgt','wldrdle', + 'wmacseq','wmacsne','wmacscs','wmacshs','wmacscc','wmacslo','wmacsmi','wmacspl','wmacsvs','wmacsvc','wmacshi','wmacsls','wmacsge','wmacslt','wmacsgt','wmacsle', + 'wmacueq','wmacune','wmacucs','wmacuhs','wmacucc','wmaculo','wmacumi','wmacupl','wmacuvs','wmacuvc','wmacuhi','wmaculs','wmacuge','wmacult','wmacugt','wmacule', + 'wmacszeq','wmacszne','wmacszcs','wmacszhs','wmacszcc','wmacszlo','wmacszmi','wmacszpl','wmacszvs','wmacszvc','wmacszhi','wmacszls','wmacszge','wmacszlt','wmacszgt','wmacszle', + 'wmacuzeq','wmacuzne','wmacuzcs','wmacuzhs','wmacuzcc','wmacuzlo','wmacuzmi','wmacuzpl','wmacuzvs','wmacuzvc','wmacuzhi','wmacuzls','wmacuzge','wmacuzlt','wmacuzgt','wmacuzle', + 'wmaddseq','wmaddsne','wmaddscs','wmaddshs','wmaddscc','wmaddslo','wmaddsmi','wmaddspl','wmaddsvs','wmaddsvc','wmaddshi','wmaddsls','wmaddsge','wmaddslt','wmaddsgt','wmaddsle', + 'wmaddueq','wmaddune','wmadducs','wmadduhs','wmadducc','wmaddulo','wmaddumi','wmaddupl','wmadduvs','wmadduvc','wmadduhi','wmadduls','wmadduge','wmaddult','wmaddugt','wmaddule', + 'wmaddsxeq','wmaddsxne','wmaddsxcs','wmaddsxhs','wmaddsxcc','wmaddsxlo','wmaddsxmi','wmaddsxpl','wmaddsxvs','wmaddsxvc','wmaddsxhi','wmaddsxls','wmaddsxge','wmaddsxlt','wmaddsxgt','wmaddsxle', + 'wmadduxeq','wmadduxne','wmadduxcs','wmadduxhs','wmadduxcc','wmadduxlo','wmadduxmi','wmadduxpl','wmadduxvs','wmadduxvc','wmadduxhi','wmadduxls','wmadduxge','wmadduxlt','wmadduxgt','wmadduxle', + 'wmaddsneq','wmaddsnne','wmaddsncs','wmaddsnhs','wmaddsncc','wmaddsnlo','wmaddsnmi','wmaddsnpl','wmaddsnvs','wmaddsnvc','wmaddsnhi','wmaddsnls','wmaddsnge','wmaddsnlt','wmaddsngt','wmaddsnle', + 'wmadduneq','wmaddunne','wmadduncs','wmaddunhs','wmadduncc','wmaddunlo','wmaddunmi','wmaddunpl','wmaddunvs','wmaddunvc','wmaddunhi','wmaddunls','wmaddunge','wmaddunlt','wmaddungt','wmaddunle', + 'wmaxsbeq','wmaxsbne','wmaxsbcs','wmaxsbhs','wmaxsbcc','wmaxsblo','wmaxsbmi','wmaxsbpl','wmaxsbvs','wmaxsbvc','wmaxsbhi','wmaxsbls','wmaxsbge','wmaxsblt','wmaxsbgt','wmaxsble', + 'wmaxsheq','wmaxshne','wmaxshcs','wmaxshhs','wmaxshcc','wmaxshlo','wmaxshmi','wmaxshpl','wmaxshvs','wmaxshvc','wmaxshhi','wmaxshls','wmaxshge','wmaxshlt','wmaxshgt','wmaxshle', + 'wmaxsweq','wmaxswne','wmaxswcs','wmaxswhs','wmaxswcc','wmaxswlo','wmaxswmi','wmaxswpl','wmaxswvs','wmaxswvc','wmaxswhi','wmaxswls','wmaxswge','wmaxswlt','wmaxswgt','wmaxswle', + 'wmaxubeq','wmaxubne','wmaxubcs','wmaxubhs','wmaxubcc','wmaxublo','wmaxubmi','wmaxubpl','wmaxubvs','wmaxubvc','wmaxubhi','wmaxubls','wmaxubge','wmaxublt','wmaxubgt','wmaxuble', + 'wmaxuheq','wmaxuhne','wmaxuhcs','wmaxuhhs','wmaxuhcc','wmaxuhlo','wmaxuhmi','wmaxuhpl','wmaxuhvs','wmaxuhvc','wmaxuhhi','wmaxuhls','wmaxuhge','wmaxuhlt','wmaxuhgt','wmaxuhle', + 'wmaxuweq','wmaxuwne','wmaxuwcs','wmaxuwhs','wmaxuwcc','wmaxuwlo','wmaxuwmi','wmaxuwpl','wmaxuwvs','wmaxuwvc','wmaxuwhi','wmaxuwls','wmaxuwge','wmaxuwlt','wmaxuwgt','wmaxuwle', + 'wmergeeq','wmergene','wmergecs','wmergehs','wmergecc','wmergelo','wmergemi','wmergepl','wmergevs','wmergevc','wmergehi','wmergels','wmergege','wmergelt','wmergegt','wmergele', + 'wmiabbeq','wmiabbne','wmiabbcs','wmiabbhs','wmiabbcc','wmiabblo','wmiabbmi','wmiabbpl','wmiabbvs','wmiabbvc','wmiabbhi','wmiabbls','wmiabbge','wmiabblt','wmiabbgt','wmiabble', + 'wmiabteq','wmiabtne','wmiabtcs','wmiabths','wmiabtcc','wmiabtlo','wmiabtmi','wmiabtpl','wmiabtvs','wmiabtvc','wmiabthi','wmiabtls','wmiabtge','wmiabtlt','wmiabtgt','wmiabtle', + 'wmiatbeq','wmiatbne','wmiatbcs','wmiatbhs','wmiatbcc','wmiatblo','wmiatbmi','wmiatbpl','wmiatbvs','wmiatbvc','wmiatbhi','wmiatbls','wmiatbge','wmiatblt','wmiatbgt','wmiatble', + 'wmiatteq','wmiattne','wmiattcs','wmiatths','wmiattcc','wmiattlo','wmiattmi','wmiattpl','wmiattvs','wmiattvc','wmiatthi','wmiattls','wmiattge','wmiattlt','wmiattgt','wmiattle', + 'wmiabbneq','wmiabbnne','wmiabbncs','wmiabbnhs','wmiabbncc','wmiabbnlo','wmiabbnmi','wmiabbnpl','wmiabbnvs','wmiabbnvc','wmiabbnhi','wmiabbnls','wmiabbnge','wmiabbnlt','wmiabbngt','wmiabbnle', + 'wmiabtneq','wmiabtnne','wmiabtncs','wmiabtnhs','wmiabtncc','wmiabtnlo','wmiabtnmi','wmiabtnpl','wmiabtnvs','wmiabtnvc','wmiabtnhi','wmiabtnls','wmiabtnge','wmiabtnlt','wmiabtngt','wmiabtnle', + 'wmiatbneq','wmiatbnne','wmiatbncs','wmiatbnhs','wmiatbncc','wmiatbnlo','wmiatbnmi','wmiatbnpl','wmiatbnvs','wmiatbnvc','wmiatbnhi','wmiatbnls','wmiatbnge','wmiatbnlt','wmiatbngt','wmiatbnle', + 'wmiattneq','wmiattnne','wmiattncs','wmiattnhs','wmiattncc','wmiattnlo','wmiattnmi','wmiattnpl','wmiattnvs','wmiattnvc','wmiattnhi','wmiattnls','wmiattnge','wmiattnlt','wmiattngt','wmiattnle', + 'wmiawbbeq','wmiawbbne','wmiawbbcs','wmiawbbhs','wmiawbbcc','wmiawbblo','wmiawbbmi','wmiawbbpl','wmiawbbvs','wmiawbbvc','wmiawbbhi','wmiawbbls','wmiawbbge','wmiawbblt','wmiawbbgt','wmiawbble', + 'wmiawbteq','wmiawbtne','wmiawbtcs','wmiawbths','wmiawbtcc','wmiawbtlo','wmiawbtmi','wmiawbtpl','wmiawbtvs','wmiawbtvc','wmiawbthi','wmiawbtls','wmiawbtge','wmiawbtlt','wmiawbtgt','wmiawbtle', + 'wmiawtbeq','wmiawtbne','wmiawtbcs','wmiawtbhs','wmiawtbcc','wmiawtblo','wmiawtbmi','wmiawtbpl','wmiawtbvs','wmiawtbvc','wmiawtbhi','wmiawtbls','wmiawtbge','wmiawtblt','wmiawtbgt','wmiawtble', + 'wmiawtteq','wmiawttne','wmiawttcs','wmiawtths','wmiawttcc','wmiawttlo','wmiawttmi','wmiawttpl','wmiawttvs','wmiawttvc','wmiawtthi','wmiawttls','wmiawttge','wmiawttlt','wmiawttgt','wmiawttle', + 'wmiawbbneq','wmiawbbnne','wmiawbbncs','wmiawbbnhs','wmiawbbncc','wmiawbbnlo','wmiawbbnmi','wmiawbbnpl','wmiawbbnvs','wmiawbbnvc','wmiawbbnhi','wmiawbbnls','wmiawbbnge','wmiawbbnlt','wmiawbbngt','wmiawbbnle', + 'wmiawbtneq','wmiawbtnne','wmiawbtncs','wmiawbtnhs','wmiawbtncc','wmiawbtnlo','wmiawbtnmi','wmiawbtnpl','wmiawbtnvs','wmiawbtnvc','wmiawbtnhi','wmiawbtnls','wmiawbtnge','wmiawbtnlt','wmiawbtngt','wmiawbtnle', + 'wmiawtbneq','wmiawtbnne','wmiawtbncs','wmiawtbnhs','wmiawtbncc','wmiawtbnlo','wmiawtbnmi','wmiawtbnpl','wmiawtbnvs','wmiawtbnvc','wmiawtbnhi','wmiawtbnls','wmiawtbnge','wmiawtbnlt','wmiawtbngt','wmiawtbnle', + 'wmiawttneq','wmiawttnne','wmiawttncs','wmiawttnhs','wmiawttncc','wmiawttnlo','wmiawttnmi','wmiawttnpl','wmiawttnvs','wmiawttnvc','wmiawttnhi','wmiawttnls','wmiawttnge','wmiawttnlt','wmiawttngt','wmiawttnle', + 'wminsbeq','wminsbne','wminsbcs','wminsbhs','wminsbcc','wminsblo','wminsbmi','wminsbpl','wminsbvs','wminsbvc','wminsbhi','wminsbls','wminsbge','wminsblt','wminsbgt','wminsble', + 'wminsheq','wminshne','wminshcs','wminshhs','wminshcc','wminshlo','wminshmi','wminshpl','wminshvs','wminshvc','wminshhi','wminshls','wminshge','wminshlt','wminshgt','wminshle', + 'wminsweq','wminswne','wminswcs','wminswhs','wminswcc','wminswlo','wminswmi','wminswpl','wminswvs','wminswvc','wminswhi','wminswls','wminswge','wminswlt','wminswgt','wminswle', + 'wminubeq','wminubne','wminubcs','wminubhs','wminubcc','wminublo','wminubmi','wminubpl','wminubvs','wminubvc','wminubhi','wminubls','wminubge','wminublt','wminubgt','wminuble', + 'wminuheq','wminuhne','wminuhcs','wminuhhs','wminuhcc','wminuhlo','wminuhmi','wminuhpl','wminuhvs','wminuhvc','wminuhhi','wminuhls','wminuhge','wminuhlt','wminuhgt','wminuhle', + 'wminuweq','wminuwne','wminuwcs','wminuwhs','wminuwcc','wminuwlo','wminuwmi','wminuwpl','wminuwvs','wminuwvc','wminuwhi','wminuwls','wminuwge','wminuwlt','wminuwgt','wminuwle', + 'wmoveq','wmovne','wmovcs','wmovhs','wmovcc','wmovlo','wmovmi','wmovpl','wmovvs','wmovvc','wmovhi','wmovls','wmovge','wmovlt','wmovgt','wmovle', + 'wmulsmeq','wmulsmne','wmulsmcs','wmulsmhs','wmulsmcc','wmulsmlo','wmulsmmi','wmulsmpl','wmulsmvs','wmulsmvc','wmulsmhi','wmulsmls','wmulsmge','wmulsmlt','wmulsmgt','wmulsmle', + 'wmulsleq','wmulslne','wmulslcs','wmulslhs','wmulslcc','wmulsllo','wmulslmi','wmulslpl','wmulslvs','wmulslvc','wmulslhi','wmulslls','wmulslge','wmulsllt','wmulslgt','wmulslle', + 'wmulumeq','wmulumne','wmulumcs','wmulumhs','wmulumcc','wmulumlo','wmulummi','wmulumpl','wmulumvs','wmulumvc','wmulumhi','wmulumls','wmulumge','wmulumlt','wmulumgt','wmulumle', + 'wmululeq','wmululne','wmululcs','wmululhs','wmululcc','wmulullo','wmululmi','wmululpl','wmululvs','wmululvc','wmululhi','wmululls','wmululge','wmulullt','wmululgt','wmululle', + 'wmulsmreq','wmulsmrne','wmulsmrcs','wmulsmrhs','wmulsmrcc','wmulsmrlo','wmulsmrmi','wmulsmrpl','wmulsmrvs','wmulsmrvc','wmulsmrhi','wmulsmrls','wmulsmrge','wmulsmrlt','wmulsmrgt','wmulsmrle', + 'wmulslreq','wmulslrne','wmulslrcs','wmulslrhs','wmulslrcc','wmulslrlo','wmulslrmi','wmulslrpl','wmulslrvs','wmulslrvc','wmulslrhi','wmulslrls','wmulslrge','wmulslrlt','wmulslrgt','wmulslrle', + 'wmulumreq','wmulumrne','wmulumrcs','wmulumrhs','wmulumrcc','wmulumrlo','wmulumrmi','wmulumrpl','wmulumrvs','wmulumrvc','wmulumrhi','wmulumrls','wmulumrge','wmulumrlt','wmulumrgt','wmulumrle', + 'wmululreq','wmululrne','wmululrcs','wmululrhs','wmululrcc','wmululrlo','wmululrmi','wmululrpl','wmululrvs','wmululrvc','wmululrhi','wmululrls','wmululrge','wmululrlt','wmululrgt','wmululrle', + 'wmulwumeq','wmulwumne','wmulwumcs','wmulwumhs','wmulwumcc','wmulwumlo','wmulwummi','wmulwumpl','wmulwumvs','wmulwumvc','wmulwumhi','wmulwumls','wmulwumge','wmulwumlt','wmulwumgt','wmulwumle', + 'wmulwsmeq','wmulwsmne','wmulwsmcs','wmulwsmhs','wmulwsmcc','wmulwsmlo','wmulwsmmi','wmulwsmpl','wmulwsmvs','wmulwsmvc','wmulwsmhi','wmulwsmls','wmulwsmge','wmulwsmlt','wmulwsmgt','wmulwsmle', + 'wmulwleq','wmulwlne','wmulwlcs','wmulwlhs','wmulwlcc','wmulwllo','wmulwlmi','wmulwlpl','wmulwlvs','wmulwlvc','wmulwlhi','wmulwlls','wmulwlge','wmulwllt','wmulwlgt','wmulwlle', + 'wmulwumreq','wmulwumrne','wmulwumrcs','wmulwumrhs','wmulwumrcc','wmulwumrlo','wmulwumrmi','wmulwumrpl','wmulwumrvs','wmulwumrvc','wmulwumrhi','wmulwumrls','wmulwumrge','wmulwumrlt','wmulwumrgt','wmulwumrle', + 'wmulwsmreq','wmulwsmrne','wmulwsmrcs','wmulwsmrhs','wmulwsmrcc','wmulwsmrlo','wmulwsmrmi','wmulwsmrpl','wmulwsmrvs','wmulwsmrvc','wmulwsmrhi','wmulwsmrls','wmulwsmrge','wmulwsmrlt','wmulwsmrgt','wmulwsmrle', + 'woreq','worne','worcs','worhs','worcc','worlo','wormi','worpl','worvs','worvc','worhi','worls','worge','worlt','worgt','worle', + 'wpackhsseq','wpackhssne','wpackhsscs','wpackhsshs','wpackhsscc','wpackhsslo','wpackhssmi','wpackhsspl','wpackhssvs','wpackhssvc','wpackhsshi','wpackhssls','wpackhssge','wpackhsslt','wpackhssgt','wpackhssle', + 'wpackwsseq','wpackwssne','wpackwsscs','wpackwsshs','wpackwsscc','wpackwsslo','wpackwssmi','wpackwsspl','wpackwssvs','wpackwssvc','wpackwsshi','wpackwssls','wpackwssge','wpackwsslt','wpackwssgt','wpackwssle', + 'wpackdsseq','wpackdssne','wpackdsscs','wpackdsshs','wpackdsscc','wpackdsslo','wpackdssmi','wpackdsspl','wpackdssvs','wpackdssvc','wpackdsshi','wpackdssls','wpackdssge','wpackdsslt','wpackdssgt','wpackdssle', + 'wpackhuseq','wpackhusne','wpackhuscs','wpackhushs','wpackhuscc','wpackhuslo','wpackhusmi','wpackhuspl','wpackhusvs','wpackhusvc','wpackhushi','wpackhusls','wpackhusge','wpackhuslt','wpackhusgt','wpackhusle', + 'wpackwuseq','wpackwusne','wpackwuscs','wpackwushs','wpackwuscc','wpackwuslo','wpackwusmi','wpackwuspl','wpackwusvs','wpackwusvc','wpackwushi','wpackwusls','wpackwusge','wpackwuslt','wpackwusgt','wpackwusle', + 'wpackduseq','wpackdusne','wpackduscs','wpackdushs','wpackduscc','wpackduslo','wpackdusmi','wpackduspl','wpackdusvs','wpackdusvc','wpackdushi','wpackdusls','wpackdusge','wpackduslt','wpackdusgt','wpackdusle', + 'wqmiabbeq','wqmiabbne','wqmiabbcs','wqmiabbhs','wqmiabbcc','wqmiabblo','wqmiabbmi','wqmiabbpl','wqmiabbvs','wqmiabbvc','wqmiabbhi','wqmiabbls','wqmiabbge','wqmiabblt','wqmiabbgt','wqmiabble', + 'wqmiabteq','wqmiabtne','wqmiabtcs','wqmiabths','wqmiabtcc','wqmiabtlo','wqmiabtmi','wqmiabtpl','wqmiabtvs','wqmiabtvc','wqmiabthi','wqmiabtls','wqmiabtge','wqmiabtlt','wqmiabtgt','wqmiabtle', + 'wqmiatbeq','wqmiatbne','wqmiatbcs','wqmiatbhs','wqmiatbcc','wqmiatblo','wqmiatbmi','wqmiatbpl','wqmiatbvs','wqmiatbvc','wqmiatbhi','wqmiatbls','wqmiatbge','wqmiatblt','wqmiatbgt','wqmiatble', + 'wqmiatteq','wqmiattne','wqmiattcs','wqmiatths','wqmiattcc','wqmiattlo','wqmiattmi','wqmiattpl','wqmiattvs','wqmiattvc','wqmiatthi','wqmiattls','wqmiattge','wqmiattlt','wqmiattgt','wqmiattle', + 'wqmiabbneq','wqmiabbnne','wqmiabbncs','wqmiabbnhs','wqmiabbncc','wqmiabbnlo','wqmiabbnmi','wqmiabbnpl','wqmiabbnvs','wqmiabbnvc','wqmiabbnhi','wqmiabbnls','wqmiabbnge','wqmiabbnlt','wqmiabbngt','wqmiabbnle', + 'wqmiabtneq','wqmiabtnne','wqmiabtncs','wqmiabtnhs','wqmiabtncc','wqmiabtnlo','wqmiabtnmi','wqmiabtnpl','wqmiabtnvs','wqmiabtnvc','wqmiabtnhi','wqmiabtnls','wqmiabtnge','wqmiabtnlt','wqmiabtngt','wqmiabtnle', + 'wqmiatbneq','wqmiatbnne','wqmiatbncs','wqmiatbnhs','wqmiatbncc','wqmiatbnlo','wqmiatbnmi','wqmiatbnpl','wqmiatbnvs','wqmiatbnvc','wqmiatbnhi','wqmiatbnls','wqmiatbnge','wqmiatbnlt','wqmiatbngt','wqmiatbnle', + 'wqmiattneq','wqmiattnne','wqmiattncs','wqmiattnhs','wqmiattncc','wqmiattnlo','wqmiattnmi','wqmiattnpl','wqmiattnvs','wqmiattnvc','wqmiattnhi','wqmiattnls','wqmiattnge','wqmiattnlt','wqmiattngt','wqmiattnle', + 'wqmulmeq','wqmulmne','wqmulmcs','wqmulmhs','wqmulmcc','wqmulmlo','wqmulmmi','wqmulmpl','wqmulmvs','wqmulmvc','wqmulmhi','wqmulmls','wqmulmge','wqmulmlt','wqmulmgt','wqmulmle', + 'wqmulmreq','wqmulmrne','wqmulmrcs','wqmulmrhs','wqmulmrcc','wqmulmrlo','wqmulmrmi','wqmulmrpl','wqmulmrvs','wqmulmrvc','wqmulmrhi','wqmulmrls','wqmulmrge','wqmulmrlt','wqmulmrgt','wqmulmrle', + 'wqmulwmeq','wqmulwmne','wqmulwmcs','wqmulwmhs','wqmulwmcc','wqmulwmlo','wqmulwmmi','wqmulwmpl','wqmulwmvs','wqmulwmvc','wqmulwmhi','wqmulwmls','wqmulwmge','wqmulwmlt','wqmulwmgt','wqmulwmle', + 'wqmulwmreq','wqmulwmrne','wqmulwmrcs','wqmulwmrhs','wqmulwmrcc','wqmulwmrlo','wqmulwmrmi','wqmulwmrpl','wqmulwmrvs','wqmulwmrvc','wqmulwmrhi','wqmulwmrls','wqmulwmrge','wqmulwmrlt','wqmulwmrgt','wqmulwmrle', + 'wrorheq','wrorhne','wrorhcs','wrorhhs','wrorhcc','wrorhlo','wrorhmi','wrorhpl','wrorhvs','wrorhvc','wrorhhi','wrorhls','wrorhge','wrorhlt','wrorhgt','wrorhle', + 'wrorweq','wrorwne','wrorwcs','wrorwhs','wrorwcc','wrorwlo','wrorwmi','wrorwpl','wrorwvs','wrorwvc','wrorwhi','wrorwls','wrorwge','wrorwlt','wrorwgt','wrorwle', + 'wrordeq','wrordne','wrordcs','wrordhs','wrordcc','wrordlo','wrordmi','wrordpl','wrordvs','wrordvc','wrordhi','wrordls','wrordge','wrordlt','wrordgt','wrordle', + 'wrorhgeq','wrorhgne','wrorhgcs','wrorhghs','wrorhgcc','wrorhglo','wrorhgmi','wrorhgpl','wrorhgvs','wrorhgvc','wrorhghi','wrorhgls','wrorhgge','wrorhglt','wrorhggt','wrorhgle', + 'wrorwgeq','wrorwgne','wrorwgcs','wrorwghs','wrorwgcc','wrorwglo','wrorwgmi','wrorwgpl','wrorwgvs','wrorwgvc','wrorwghi','wrorwgls','wrorwgge','wrorwglt','wrorwggt','wrorwgle', + 'wrordgeq','wrordgne','wrordgcs','wrordghs','wrordgcc','wrordglo','wrordgmi','wrordgpl','wrordgvs','wrordgvc','wrordghi','wrordgls','wrordgge','wrordglt','wrordggt','wrordgle', + 'wsadbeq','wsadbne','wsadbcs','wsadbhs','wsadbcc','wsadblo','wsadbmi','wsadbpl','wsadbvs','wsadbvc','wsadbhi','wsadbls','wsadbge','wsadblt','wsadbgt','wsadble', + 'wsadheq','wsadhne','wsadhcs','wsadhhs','wsadhcc','wsadhlo','wsadhmi','wsadhpl','wsadhvs','wsadhvc','wsadhhi','wsadhls','wsadhge','wsadhlt','wsadhgt','wsadhle', + 'wsadbzeq','wsadbzne','wsadbzcs','wsadbzhs','wsadbzcc','wsadbzlo','wsadbzmi','wsadbzpl','wsadbzvs','wsadbzvc','wsadbzhi','wsadbzls','wsadbzge','wsadbzlt','wsadbzgt','wsadbzle', + 'wsadhzeq','wsadhzne','wsadhzcs','wsadhzhs','wsadhzcc','wsadhzlo','wsadhzmi','wsadhzpl','wsadhzvs','wsadhzvc','wsadhzhi','wsadhzls','wsadhzge','wsadhzlt','wsadhzgt','wsadhzle', + 'wshufheq','wshufhne','wshufhcs','wshufhhs','wshufhcc','wshufhlo','wshufhmi','wshufhpl','wshufhvs','wshufhvc','wshufhhi','wshufhls','wshufhge','wshufhlt','wshufhgt','wshufhle', + 'wsllheq','wsllhne','wsllhcs','wsllhhs','wsllhcc','wsllhlo','wsllhmi','wsllhpl','wsllhvs','wsllhvc','wsllhhi','wsllhls','wsllhge','wsllhlt','wsllhgt','wsllhle', + 'wsllweq','wsllwne','wsllwcs','wsllwhs','wsllwcc','wsllwlo','wsllwmi','wsllwpl','wsllwvs','wsllwvc','wsllwhi','wsllwls','wsllwge','wsllwlt','wsllwgt','wsllwle', + 'wslldeq','wslldne','wslldcs','wslldhs','wslldcc','wslldlo','wslldmi','wslldpl','wslldvs','wslldvc','wslldhi','wslldls','wslldge','wslldlt','wslldgt','wslldle', + 'wsllhgeq','wsllhgne','wsllhgcs','wsllhghs','wsllhgcc','wsllhglo','wsllhgmi','wsllhgpl','wsllhgvs','wsllhgvc','wsllhghi','wsllhgls','wsllhgge','wsllhglt','wsllhggt','wsllhgle', + 'wsllwgeq','wsllwgne','wsllwgcs','wsllwghs','wsllwgcc','wsllwglo','wsllwgmi','wsllwgpl','wsllwgvs','wsllwgvc','wsllwghi','wsllwgls','wsllwgge','wsllwglt','wsllwggt','wsllwgle', + 'wslldgeq','wslldgne','wslldgcs','wslldghs','wslldgcc','wslldglo','wslldgmi','wslldgpl','wslldgvs','wslldgvc','wslldghi','wslldgls','wslldgge','wslldglt','wslldggt','wslldgle', + 'wsraheq','wsrahne','wsrahcs','wsrahhs','wsrahcc','wsrahlo','wsrahmi','wsrahpl','wsrahvs','wsrahvc','wsrahhi','wsrahls','wsrahge','wsrahlt','wsrahgt','wsrahle', + 'wsraweq','wsrawne','wsrawcs','wsrawhs','wsrawcc','wsrawlo','wsrawmi','wsrawpl','wsrawvs','wsrawvc','wsrawhi','wsrawls','wsrawge','wsrawlt','wsrawgt','wsrawle', + 'wsradeq','wsradne','wsradcs','wsradhs','wsradcc','wsradlo','wsradmi','wsradpl','wsradvs','wsradvc','wsradhi','wsradls','wsradge','wsradlt','wsradgt','wsradle', + 'wsrahgeq','wsrahgne','wsrahgcs','wsrahghs','wsrahgcc','wsrahglo','wsrahgmi','wsrahgpl','wsrahgvs','wsrahgvc','wsrahghi','wsrahgls','wsrahgge','wsrahglt','wsrahggt','wsrahgle', + 'wsrawgeq','wsrawgne','wsrawgcs','wsrawghs','wsrawgcc','wsrawglo','wsrawgmi','wsrawgpl','wsrawgvs','wsrawgvc','wsrawghi','wsrawgls','wsrawgge','wsrawglt','wsrawggt','wsrawgle', + 'wsradgeq','wsradgne','wsradgcs','wsradghs','wsradgcc','wsradglo','wsradgmi','wsradgpl','wsradgvs','wsradgvc','wsradghi','wsradgls','wsradgge','wsradglt','wsradggt','wsradgle', + 'wsrlheq','wsrlhne','wsrlhcs','wsrlhhs','wsrlhcc','wsrlhlo','wsrlhmi','wsrlhpl','wsrlhvs','wsrlhvc','wsrlhhi','wsrlhls','wsrlhge','wsrlhlt','wsrlhgt','wsrlhle', + 'wsrlweq','wsrlwne','wsrlwcs','wsrlwhs','wsrlwcc','wsrlwlo','wsrlwmi','wsrlwpl','wsrlwvs','wsrlwvc','wsrlwhi','wsrlwls','wsrlwge','wsrlwlt','wsrlwgt','wsrlwle', + 'wsrldeq','wsrldne','wsrldcs','wsrldhs','wsrldcc','wsrldlo','wsrldmi','wsrldpl','wsrldvs','wsrldvc','wsrldhi','wsrldls','wsrldge','wsrldlt','wsrldgt','wsrldle', + 'wsrlhgeq','wsrlhgne','wsrlhgcs','wsrlhghs','wsrlhgcc','wsrlhglo','wsrlhgmi','wsrlhgpl','wsrlhgvs','wsrlhgvc','wsrlhghi','wsrlhgls','wsrlhgge','wsrlhglt','wsrlhggt','wsrlhgle', + 'wsrlwgeq','wsrlwgne','wsrlwgcs','wsrlwghs','wsrlwgcc','wsrlwglo','wsrlwgmi','wsrlwgpl','wsrlwgvs','wsrlwgvc','wsrlwghi','wsrlwgls','wsrlwgge','wsrlwglt','wsrlwggt','wsrlwgle', + 'wsrldgeq','wsrldgne','wsrldgcs','wsrldghs','wsrldgcc','wsrldglo','wsrldgmi','wsrldgpl','wsrldgvs','wsrldgvc','wsrldghi','wsrldgls','wsrldgge','wsrldglt','wsrldggt','wsrldgle', + 'wstrbeq','wstrbne','wstrbcs','wstrbhs','wstrbcc','wstrblo','wstrbmi','wstrbpl','wstrbvs','wstrbvc','wstrbhi','wstrbls','wstrbge','wstrblt','wstrbgt','wstrble', + 'wstrheq','wstrhne','wstrhcs','wstrhhs','wstrhcc','wstrhlo','wstrhmi','wstrhpl','wstrhvs','wstrhvc','wstrhhi','wstrhls','wstrhge','wstrhlt','wstrhgt','wstrhle', + 'wstrweq','wstrwne','wstrwcs','wstrwhs','wstrwcc','wstrwlo','wstrwmi','wstrwpl','wstrwvs','wstrwvc','wstrwhi','wstrwls','wstrwge','wstrwlt','wstrwgt','wstrwle', + 'wstrdeq','wstrdne','wstrdcs','wstrdhs','wstrdcc','wstrdlo','wstrdmi','wstrdpl','wstrdvs','wstrdvc','wstrdhi','wstrdls','wstrdge','wstrdlt','wstrdgt','wstrdle', + 'wsubbeq','wsubbne','wsubbcs','wsubbhs','wsubbcc','wsubblo','wsubbmi','wsubbpl','wsubbvs','wsubbvc','wsubbhi','wsubbls','wsubbge','wsubblt','wsubbgt','wsubble', + 'wsubheq','wsubhne','wsubhcs','wsubhhs','wsubhcc','wsubhlo','wsubhmi','wsubhpl','wsubhvs','wsubhvc','wsubhhi','wsubhls','wsubhge','wsubhlt','wsubhgt','wsubhle', + 'wsubweq','wsubwne','wsubwcs','wsubwhs','wsubwcc','wsubwlo','wsubwmi','wsubwpl','wsubwvs','wsubwvc','wsubwhi','wsubwls','wsubwge','wsubwlt','wsubwgt','wsubwle', + 'wsubbsseq','wsubbssne','wsubbsscs','wsubbsshs','wsubbsscc','wsubbsslo','wsubbssmi','wsubbsspl','wsubbssvs','wsubbssvc','wsubbsshi','wsubbssls','wsubbssge','wsubbsslt','wsubbssgt','wsubbssle', + 'wsubhsseq','wsubhssne','wsubhsscs','wsubhsshs','wsubhsscc','wsubhsslo','wsubhssmi','wsubhsspl','wsubhssvs','wsubhssvc','wsubhsshi','wsubhssls','wsubhssge','wsubhsslt','wsubhssgt','wsubhssle', + 'wsubwsseq','wsubwssne','wsubwsscs','wsubwsshs','wsubwsscc','wsubwsslo','wsubwssmi','wsubwsspl','wsubwssvs','wsubwssvc','wsubwsshi','wsubwssls','wsubwssge','wsubwsslt','wsubwssgt','wsubwssle', + 'wsubbuseq','wsubbusne','wsubbuscs','wsubbushs','wsubbuscc','wsubbuslo','wsubbusmi','wsubbuspl','wsubbusvs','wsubbusvc','wsubbushi','wsubbusls','wsubbusge','wsubbuslt','wsubbusgt','wsubbusle', + 'wsubhuseq','wsubhusne','wsubhuscs','wsubhushs','wsubhuscc','wsubhuslo','wsubhusmi','wsubhuspl','wsubhusvs','wsubhusvc','wsubhushi','wsubhusls','wsubhusge','wsubhuslt','wsubhusgt','wsubhusle', + 'wsubwuseq','wsubwusne','wsubwuscs','wsubwushs','wsubwuscc','wsubwuslo','wsubwusmi','wsubwuspl','wsubwusvs','wsubwusvc','wsubwushi','wsubwusls','wsubwusge','wsubwuslt','wsubwusgt','wsubwusle', + 'wsubaddhxeq','wsubaddhxne','wsubaddhxcs','wsubaddhxhs','wsubaddhxcc','wsubaddhxlo','wsubaddhxmi','wsubaddhxpl','wsubaddhxvs','wsubaddhxvc','wsubaddhxhi','wsubaddhxls','wsubaddhxge','wsubaddhxlt','wsubaddhxgt','wsubaddhxle', + 'wunpckehsbeq','wunpckehsbne','wunpckehsbcs','wunpckehsbhs','wunpckehsbcc','wunpckehsblo','wunpckehsbmi','wunpckehsbpl','wunpckehsbvs','wunpckehsbvc','wunpckehsbhi','wunpckehsbls','wunpckehsbge','wunpckehsblt','wunpckehsbgt','wunpckehsble', + 'wunpckehsheq','wunpckehshne','wunpckehshcs','wunpckehshhs','wunpckehshcc','wunpckehshlo','wunpckehshmi','wunpckehshpl','wunpckehshvs','wunpckehshvc','wunpckehshhi','wunpckehshls','wunpckehshge','wunpckehshlt','wunpckehshgt','wunpckehshle', + 'wunpckehsweq','wunpckehswne','wunpckehswcs','wunpckehswhs','wunpckehswcc','wunpckehswlo','wunpckehswmi','wunpckehswpl','wunpckehswvs','wunpckehswvc','wunpckehswhi','wunpckehswls','wunpckehswge','wunpckehswlt','wunpckehswgt','wunpckehswle', + 'wunpckehubeq','wunpckehubne','wunpckehubcs','wunpckehubhs','wunpckehubcc','wunpckehublo','wunpckehubmi','wunpckehubpl','wunpckehubvs','wunpckehubvc','wunpckehubhi','wunpckehubls','wunpckehubge','wunpckehublt','wunpckehubgt','wunpckehuble', + 'wunpckehuheq','wunpckehuhne','wunpckehuhcs','wunpckehuhhs','wunpckehuhcc','wunpckehuhlo','wunpckehuhmi','wunpckehuhpl','wunpckehuhvs','wunpckehuhvc','wunpckehuhhi','wunpckehuhls','wunpckehuhge','wunpckehuhlt','wunpckehuhgt','wunpckehuhle', + 'wunpckehuweq','wunpckehuwne','wunpckehuwcs','wunpckehuwhs','wunpckehuwcc','wunpckehuwlo','wunpckehuwmi','wunpckehuwpl','wunpckehuwvs','wunpckehuwvc','wunpckehuwhi','wunpckehuwls','wunpckehuwge','wunpckehuwlt','wunpckehuwgt','wunpckehuwle', + 'wunpckihbeq','wunpckihbne','wunpckihbcs','wunpckihbhs','wunpckihbcc','wunpckihblo','wunpckihbmi','wunpckihbpl','wunpckihbvs','wunpckihbvc','wunpckihbhi','wunpckihbls','wunpckihbge','wunpckihblt','wunpckihbgt','wunpckihble', + 'wunpckihheq','wunpckihhne','wunpckihhcs','wunpckihhhs','wunpckihhcc','wunpckihhlo','wunpckihhmi','wunpckihhpl','wunpckihhvs','wunpckihhvc','wunpckihhhi','wunpckihhls','wunpckihhge','wunpckihhlt','wunpckihhgt','wunpckihhle', + 'wunpckihweq','wunpckihwne','wunpckihwcs','wunpckihwhs','wunpckihwcc','wunpckihwlo','wunpckihwmi','wunpckihwpl','wunpckihwvs','wunpckihwvc','wunpckihwhi','wunpckihwls','wunpckihwge','wunpckihwlt','wunpckihwgt','wunpckihwle', + 'wunpckelsbeq','wunpckelsbne','wunpckelsbcs','wunpckelsbhs','wunpckelsbcc','wunpckelsblo','wunpckelsbmi','wunpckelsbpl','wunpckelsbvs','wunpckelsbvc','wunpckelsbhi','wunpckelsbls','wunpckelsbge','wunpckelsblt','wunpckelsbgt','wunpckelsble', + 'wunpckelsheq','wunpckelshne','wunpckelshcs','wunpckelshhs','wunpckelshcc','wunpckelshlo','wunpckelshmi','wunpckelshpl','wunpckelshvs','wunpckelshvc','wunpckelshhi','wunpckelshls','wunpckelshge','wunpckelshlt','wunpckelshgt','wunpckelshle', + 'wunpckelsweq','wunpckelswne','wunpckelswcs','wunpckelswhs','wunpckelswcc','wunpckelswlo','wunpckelswmi','wunpckelswpl','wunpckelswvs','wunpckelswvc','wunpckelswhi','wunpckelswls','wunpckelswge','wunpckelswlt','wunpckelswgt','wunpckelswle', + 'wunpckelubeq','wunpckelubne','wunpckelubcs','wunpckelubhs','wunpckelubcc','wunpckelublo','wunpckelubmi','wunpckelubpl','wunpckelubvs','wunpckelubvc','wunpckelubhi','wunpckelubls','wunpckelubge','wunpckelublt','wunpckelubgt','wunpckeluble', + 'wunpckeluheq','wunpckeluhne','wunpckeluhcs','wunpckeluhhs','wunpckeluhcc','wunpckeluhlo','wunpckeluhmi','wunpckeluhpl','wunpckeluhvs','wunpckeluhvc','wunpckeluhhi','wunpckeluhls','wunpckeluhge','wunpckeluhlt','wunpckeluhgt','wunpckeluhle', + 'wunpckeluweq','wunpckeluwne','wunpckeluwcs','wunpckeluwhs','wunpckeluwcc','wunpckeluwlo','wunpckeluwmi','wunpckeluwpl','wunpckeluwvs','wunpckeluwvc','wunpckeluwhi','wunpckeluwls','wunpckeluwge','wunpckeluwlt','wunpckeluwgt','wunpckeluwle', + 'wunpckilbeq','wunpckilbne','wunpckilbcs','wunpckilbhs','wunpckilbcc','wunpckilblo','wunpckilbmi','wunpckilbpl','wunpckilbvs','wunpckilbvc','wunpckilbhi','wunpckilbls','wunpckilbge','wunpckilblt','wunpckilbgt','wunpckilble', + 'wunpckilheq','wunpckilhne','wunpckilhcs','wunpckilhhs','wunpckilhcc','wunpckilhlo','wunpckilhmi','wunpckilhpl','wunpckilhvs','wunpckilhvc','wunpckilhhi','wunpckilhls','wunpckilhge','wunpckilhlt','wunpckilhgt','wunpckilhle', + 'wunpckilweq','wunpckilwne','wunpckilwcs','wunpckilwhs','wunpckilwcc','wunpckilwlo','wunpckilwmi','wunpckilwpl','wunpckilwvs','wunpckilwvc','wunpckilwhi','wunpckilwls','wunpckilwge','wunpckilwlt','wunpckilwgt','wunpckilwle', + 'wxoreq','wxorne','wxorcs','wxorhs','wxorcc','wxorlo','wxormi','wxorpl','wxorvs','wxorvc','wxorhi','wxorls','wxorge','wxorlt','wxorgt','wxorle', + 'wzeroeq','wzerone','wzerocs','wzerohs','wzerocc','wzerolo','wzeromi','wzeropl','wzerovs','wzerovc','wzerohi','wzerols','wzeroge','wzerolt','wzerogt','wzerole' + ), + /* Unconditional VFPv3 & NEON SIMD Memory Access Instructions */ + 19 => array( + /* Unconditional VFPv3 & NEON SIMD Memory Access: Loads */ + 'vld.8','vldal.8', + 'vld.16','vldal.16', + 'vld.32','vldal.32', + 'vld.64','vldal.64', + + 'vld1.8','vld1al.8', + 'vld1.16','vld1al.16', + 'vld1.32','vld1al.32', + + 'vld2.8','vld2al.8', + 'vld2.16','vld2al.16', + 'vld2.32','vld2al.32', + + 'vld3.8','vld3al.8', + 'vld3.16','vld3al.16', + 'vld3.32','vld3al.32', + + 'vld4.8','vld4al.8', + 'vld4.16','vld4al.16', + 'vld4.32','vld4al.32', + + 'vldm','vldmal', + 'vldm.32','vldmal.32', + 'vldm.64','vldmal.64', + + 'vldmia','vldmiaal', + 'vldmia.32','vldmiaal.32', + 'vldmia.64','vldmiaal.64', + + 'vldmdb','vldmdbal', + 'vldmdb.32','vldmdbal.32', + 'vldmdb.64','vldmdbal.64', + + 'vldr','vldral', + 'vldr.32','vldral.32', + 'vldr.64','vldral.64', + + 'vpop','vpopal', + 'vpop.32','vpopal.32', + 'vpop.64','vpopal.64', + + /* Unconditional VFPv3 & NEON SIMD Memory Access: Stores */ + 'vst1.8','vst1al.8', + 'vst1.16','vst1al.16', + 'vst1.32','vst1al.32', + 'vst1.64','vst1al.64', + + 'vst2.8','vst2al.8', + 'vst2.16','vst2al.16', + 'vst2.32','vst2al.32', + + 'vst3.8','vst3al.8', + 'vst3.16','vst3al.16', + 'vst3.32','vst3al.32', + + 'vst4.8','vst4al.8', + 'vst4.16','vst4al.16', + 'vst4.32','vst4al.32', + + 'vstm','vstmal', + 'vstm.32','vstmal.32', + 'vstm.64','vstmal.64', + + 'vstmia','vstmiaal', + 'vstmia.32','vstmiaal.32', + 'vstmia.64','vstmiaal.64', + + 'vstmdb','vstmdbal', + 'vstmdb.32','vstmdbal.32', + 'vstmdb.64','vstmdbal.64', + + 'vstr','vstral', + 'vstr.32','vstral.32', + 'vstr.64','vstral.64', + + 'vpush','vpushal', + 'vpush.32','vpushal.32', + 'vpush.64','vpushal.64' + ), + /* Unconditional NEON SIMD Logical Instructions */ + 20 => array( + 'vand','vandal', + 'vand.i8','vandal.i8', + 'vand.i16','vandal.i16', + 'vand.i32','vandal.i32', + 'vand.i64','vandal.i64', + 'vand.s8','vandal.s8', + 'vand.s16','vandal.s16', + 'vand.s32','vandal.s32', + 'vand.s64','vandal.s64', + 'vand.u8','vandal.u8', + 'vand.u16','vandal.u16', + 'vand.u32','vandal.u32', + 'vand.u64','vandal.u64', + 'vand.f32','vandal.f32', + 'vand.f64','vandal.f64', + + 'vbic','vbical', + 'vbic.i8','vbical.i8', + 'vbic.i16','vbical.i16', + 'vbic.i32','vbical.i32', + 'vbic.i64','vbical.i64', + 'vbic.s8','vbical.s8', + 'vbic.s16','vbical.s16', + 'vbic.s32','vbical.s32', + 'vbic.s64','vbical.s64', + 'vbic.u8','vbical.u8', + 'vbic.u16','vbical.u16', + 'vbic.u32','vbical.u32', + 'vbic.u64','vbical.u64', + 'vbic.f32','vbical.f32', + 'vbic.f64','vbical.f64', + + 'vbif','vbifal', + 'vbif.i8','vbifal.i8', + 'vbif.i16','vbifal.i16', + 'vbif.i32','vbifal.i32', + 'vbif.i64','vbifal.i64', + 'vbif.s8','vbifal.s8', + 'vbif.s16','vbifal.s16', + 'vbif.s32','vbifal.s32', + 'vbif.s64','vbifal.s64', + 'vbif.u8','vbifal.u8', + 'vbif.u16','vbifal.u16', + 'vbif.u32','vbifal.u32', + 'vbif.u64','vbifal.u64', + 'vbif.f32','vbifal.f32', + 'vbif.f64','vbifal.f64', + + 'vbit','vbital', + 'vbit.i8','vbital.i8', + 'vbit.i16','vbital.i16', + 'vbit.i32','vbital.i32', + 'vbit.i64','vbital.i64', + 'vbit.s8','vbital.s8', + 'vbit.s16','vbital.s16', + 'vbit.s32','vbital.s32', + 'vbit.s64','vbital.s64', + 'vbit.u8','vbital.u8', + 'vbit.u16','vbital.u16', + 'vbit.u32','vbital.u32', + 'vbit.u64','vbital.u64', + 'vbit.f32','vbital.f32', + 'vbit.f64','vbital.f64', + + 'vbsl','vbslal', + 'vbsl.i8','vbslal.i8', + 'vbsl.i16','vbslal.i16', + 'vbsl.i32','vbslal.i32', + 'vbsl.i64','vbslal.i64', + 'vbsl.s8','vbslal.s8', + 'vbsl.s16','vbslal.s16', + 'vbsl.s32','vbslal.s32', + 'vbsl.s64','vbslal.s64', + 'vbsl.u8','vbslal.u8', + 'vbsl.u16','vbslal.u16', + 'vbsl.u32','vbslal.u32', + 'vbsl.u64','vbslal.u64', + 'vbsl.f32','vbslal.f32', + 'vbsl.f64','vbslal.f64', + + 'veor','veoral', + 'veor.i8','veoral.i8', + 'veor.i16','veoral.i16', + 'veor.i32','veoral.i32', + 'veor.i64','veoral.i64', + 'veor.s8','veoral.s8', + 'veor.s16','veoral.s16', + 'veor.s32','veoral.s32', + 'veor.s64','veoral.s64', + 'veor.u8','veoral.u8', + 'veor.u16','veoral.u16', + 'veor.u32','veoral.u32', + 'veor.u64','veoral.u64', + 'veor.f32','veoral.f32', + 'veor.f64','veoral.f64', + + 'vmov','vmoval', + 'vmov.8','vmoval.8', + 'vmov.16','vmoval.16', + 'vmov.32','vmoval.32', + 'vmov.i8','vmoval.i8', + 'vmov.i16','vmoval.i16', + 'vmov.i32','vmoval.i32', + 'vmov.i64','vmoval.i64', + 'vmov.f32','vmoval.f32', + 'vmov.f64','vmoval.f64', + + 'vmvn','vmvnal', + 'vmvn.s8','vmvnal.s8', + 'vmvn.s16','vmvnal.s16', + 'vmvn.s32','vmvnal.s32', + 'vmvn.s64','vmvnal.s64', + 'vmvn.u8','vmvnal.u8', + 'vmvn.u16','vmvnal.u16', + 'vmvn.u32','vmvnal.u32', + 'vmvn.u64','vmvnal.u64', + 'vmvn.i8','vmvnal.i8', + 'vmvn.i16','vmvnal.i16', + 'vmvn.i32','vmvnal.i32', + 'vmvn.i64','vmvnal.i64', + 'vmvn.f32','vmvnal.f32', + 'vmvn.f64','vmvnal.f64', + + 'vorn','vornal', + 'vorn.s8','vornal.s8', + 'vorn.s16','vornal.s16', + 'vorn.s32','vornal.s32', + 'vorn.s64','vornal.s64', + 'vorn.u8','vornal.u8', + 'vorn.u16','vornal.u16', + 'vorn.u32','vornal.u32', + 'vorn.u64','vornal.u64', + 'vorn.i8','vornal.i8', + 'vorn.i16','vornal.i16', + 'vorn.i32','vornal.i32', + 'vorn.i64','vornal.i64', + 'vorn.f32','vornal.f32', + 'vorn.f64','vornal.f64', + + 'vorr','vorral', + 'vorr.s8','vorral.s8', + 'vorr.s16','vorral.s16', + 'vorr.s32','vorral.s32', + 'vorr.s64','vorral.s64', + 'vorr.u8','vorral.u8', + 'vorr.u16','vorral.u16', + 'vorr.u32','vorral.u32', + 'vorr.u64','vorral.u64', + 'vorr.i8','vorral.i8', + 'vorr.i16','vorral.i16', + 'vorr.i32','vorral.i32', + 'vorr.i64','vorral.i64', + 'vorr.f32','vorral.f32', + 'vorr.f64','vorral.f64', + + 'vswp','vswpal', + 'vswp.s8','vswpal.s8', + 'vswp.s16','vswpal.s16', + 'vswp.s32','vswpal.s32', + 'vswp.s64','vswpal.s64', + 'vswp.u8','vswpal.u8', + 'vswp.u16','vswpal.u16', + 'vswp.u32','vswpal.u32', + 'vswp.u64','vswpal.u64', + 'vswp.i8','vswpal.i8', + 'vswp.i16','vswpal.i16', + 'vswp.i32','vswpal.i32', + 'vswp.i64','vswpal.i64', + 'vswp.f32','vswpal.f32', + 'vswp.f64','vswpal.f64' + ), + /* Unconditional NEON SIMD ARM Registers Interop Instructions */ + 21 => array( + 'vmrs','vmrsal', + 'vmsr','vmsral' + ), + /* Unconditional NEON SIMD Bit/Byte-Level Instructions */ + 22 => array( + 'vcnt.8','vcntal.8', + 'vdup.8','vdupal.8', + + 'vdup.16','vdupal.16', + 'vdup.32','vdupal.32', + + 'vext.8','vextal.8', + 'vext.16','vextal.16', + + 'vext.32','vextal.32', + 'vext.64','vextal.64', + + 'vrev16.8','vrev16al.8', + 'vrev32.8','vrev32al.8', + 'vrev32.16','vrev32al.16', + 'vrev64.8','vrev64al.8', + 'vrev64.16','vrev64al.16', + 'vrev64.32','vrev64al.32', + + 'vsli.8','vslial.8', + 'vsli.16','vslial.16', + 'vsli.32','vslial.32', + 'vsli.64','vslial.64', + + 'vsri.8','vsrial.8', + 'vsri.16','vsrial.16', + 'vsri.32','vsrial.32', + 'vsri.64','vsrial.64', + + 'vtbl.8','vtblal.8', + + 'vtbx','vtbxal', + + 'vtrn.8','vtrnal.8', + 'vtrn.16','vtrnal.16', + 'vtrn.32','vtrnal.32', + + 'vtst.8','vtstal.8', + 'vtst.16','vtstal.16', + 'vtst.32','vtstal.32', + + 'vuzp.8','vuzpal.8', + 'vuzp.16','vuzpal.16', + 'vuzp.32','vuzpal.32', + + 'vzip.8','vzipal.8', + 'vzip.16','vzipal.16', + 'vzip.32','vzipal.32', + + 'vmull.p8','vmullal.p8' + ), + /* Unconditional NEON SIMD Universal Integer Instructions */ + 23 => array( + 'vadd.i8','vaddal.i8', + 'vadd.i16','vaddal.i16', + 'vadd.i32','vaddal.i32', + 'vadd.i64','vaddal.i64', + + 'vsub.i8','vsubal.i8', + 'vsub.i16','vsubal.i16', + 'vsub.i32','vsubal.i32', + 'vsub.i64','vsubal.i64', + + 'vaddhn.i16','vaddhnal.i16', + 'vaddhn.i32','vaddhnal.i32', + 'vaddhn.i64','vaddhnal.i64', + + 'vsubhn.i16','vsubhnal.i16', + 'vsubhn.i32','vsubhnal.i32', + 'vsubhn.i64','vsubhnal.i64', + + 'vraddhn.i16','vraddhnal.i16', + 'vraddhn.i32','vraddhnal.i32', + 'vraddhn.i64','vraddhnal.i64', + + 'vrsubhn.i16','vrsubhnal.i16', + 'vrsubhn.i32','vrsubhnal.i32', + 'vrsubhn.i64','vrsubhnal.i64', + + 'vpadd.i8','vpaddal.i8', + 'vpadd.i16','vpaddal.i16', + 'vpadd.i32','vpaddal.i32', + + 'vceq.i8','vceqal.i8', + 'vceq.i16','vceqal.i16', + 'vceq.i32','vceqal.i32', + + 'vclz.i8','vclzal.i8', + 'vclz.i16','vclzal.i16', + 'vclz.i32','vclzal.i32', + + 'vmovn.i16','vmovnal.i16', + 'vmovn.i32','vmovnal.i32', + 'vmovn.i64','vmovnal.i64', + + 'vmla.s8','vmlaal.s8', + 'vmla.s16','vmlaal.s16', + 'vmla.s32','vmlaal.s32', + 'vmla.u8','vmlaal.u8', + 'vmla.u16','vmlaal.u16', + 'vmla.u32','vmlaal.u32', + 'vmla.i8','vmlaal.i8', + 'vmla.i16','vmlaal.i16', + 'vmla.i32','vmlaal.i32', + + 'vmls.s8','vmlsal.s8', + 'vmls.s16','vmlsal.s16', + 'vmls.s32','vmlsal.s32', + 'vmls.u8','vmlsal.u8', + 'vmls.u16','vmlsal.u16', + 'vmls.u32','vmlsal.u32', + 'vmls.i8','vmlsal.i8', + 'vmls.i16','vmlsal.i16', + 'vmls.i32','vmlsal.i32', + + 'vmul.s8','vmulal.s8', + 'vmul.s16','vmulal.s16', + 'vmul.s32','vmulal.s32', + 'vmul.u8','vmulal.u8', + 'vmul.u16','vmulal.u16', + 'vmul.u32','vmulal.u32', + 'vmul.i8','vmulal.i8', + 'vmul.i16','vmulal.i16', + 'vmul.i32','vmulal.i32', + 'vmul.p8','vmulal.p8', + + 'vrshrn.i16','vrshrnal.i16', + 'vrshrn.i32','vrshrnal.i32', + 'vrshrn.i64','vrshrnal.i64', + + 'vshrn.i16','vshrnal.i16', + 'vshrn.i32','vshrnal.i32', + 'vshrn.i64','vshrnal.i64', + + 'vshl.i8','vshlal.i8', + 'vshl.i16','vshlal.i16', + 'vshl.i32','vshlal.i32', + 'vshl.i64','vshlal.i64', + + 'vshll.i8','vshllal.i8', + 'vshll.i16','vshllal.i16', + 'vshll.i32','vshllal.i32' + ), + /* Unconditional NEON SIMD Signed Integer Instructions */ + 24 => array( + 'vaba.s8','vabaal.s8', + 'vaba.s16','vabaal.s16', + 'vaba.s32','vabaal.s32', + + 'vabal.s8','vabalal.s8', + 'vabal.s16','vabalal.s16', + 'vabal.s32','vabalal.s32', + + 'vabd.s8','vabdal.s8', + 'vabd.s16','vabdal.s16', + 'vabd.s32','vabdal.s32', + + 'vabs.s8','vabsal.s8', + 'vabs.s16','vabsal.s16', + 'vabs.s32','vabsal.s32', + + 'vaddl.s8','vaddlal.s8', + 'vaddl.s16','vaddlal.s16', + 'vaddl.s32','vaddlal.s32', + + 'vcge.s8','vcgeal.s8', + 'vcge.s16','vcgeal.s16', + 'vcge.s32','vcgeal.s32', + + 'vcle.s8','vcleal.s8', + 'vcle.s16','vcleal.s16', + 'vcle.s32','vcleal.s32', + + 'vcgt.s8','vcgtal.s8', + 'vcgt.s16','vcgtal.s16', + 'vcgt.s32','vcgtal.s32', + + 'vclt.s8','vcltal.s8', + 'vclt.s16','vcltal.s16', + 'vclt.s32','vcltal.s32', + + 'vcls.s8','vclsal.s8', + 'vcls.s16','vclsal.s16', + 'vcls.s32','vclsal.s32', + + 'vaddw.s8','vaddwal.s8', + 'vaddw.s16','vaddwal.s16', + 'vaddw.s32','vaddwal.s32', + + 'vhadd.s8','vhaddal.s8', + 'vhadd.s16','vhaddal.s16', + 'vhadd.s32','vhaddal.s32', + + 'vhsub.s8','vhsubal.s8', + 'vhsub.s16','vhsubal.s16', + 'vhsub.s32','vhsubal.s32', + + 'vmax.s8','vmaxal.s8', + 'vmax.s16','vmaxal.s16', + 'vmax.s32','vmaxal.s32', + + 'vmin.s8','vminal.s8', + 'vmin.s16','vminal.s16', + 'vmin.s32','vminal.s32', + + 'vmlal.s8','vmlalal.s8', + 'vmlal.s16','vmlalal.s16', + 'vmlal.s32','vmlalal.s32', + + 'vmlsl.s8','vmlslal.s8', + 'vmlsl.s16','vmlslal.s16', + 'vmlsl.s32','vmlslal.s32', + + 'vneg.s8','vnegal.s8', + 'vneg.s16','vnegal.s16', + 'vneg.s32','vnegal.s32', + + 'vpadal.s8','vpadalal.s8', + 'vpadal.s16','vpadalal.s16', + 'vpadal.s32','vpadalal.s32', + + 'vmovl.s8','vmovlal.s8', + 'vmovl.s16','vmovlal.s16', + 'vmovl.s32','vmovlal.s32', + + 'vmull.s8','vmullal.s8', + 'vmull.s16','vmullal.s16', + 'vmull.s32','vmullal.s32', + + 'vpaddl.s8','vpaddlal.s8', + 'vpaddl.s16','vpaddlal.s16', + 'vpaddl.s32','vpaddlal.s32', + + 'vpmax.s8','vpmaxal.s8', + 'vpmax.s16','vpmaxal.s16', + 'vpmax.s32','vpmaxal.s32', + + 'vpmin.s8','vpminal.s8', + 'vpmin.s16','vpminal.s16', + 'vpmin.s32','vpminal.s32', + + 'vqabs.s8','vqabsal.s8', + 'vqabs.s16','vqabsal.s16', + 'vqabs.s32','vqabsal.s32', + + 'vqadd.s8','vqaddal.s8', + 'vqadd.s16','vqaddal.s16', + 'vqadd.s32','vqaddal.s32', + 'vqadd.s64','vqaddal.s64', + + 'vqdmlal.s16','vqdmlalal.s16', + 'vqdmlal.s32','vqdmlalal.s32', + + 'vqdmlsl.s16','vqdmlslal.s16', + 'vqdmlsl.s32','vqdmlslal.s32', + + 'vqdmulh.s16','vqdmulhal.s16', + 'vqdmulh.s32','vqdmulhal.s32', + + 'vqdmull.s16','vqdmullal.s16', + 'vqdmull.s32','vqdmullal.s32', + + 'vqmovn.s16','vqmovnal.s16', + 'vqmovn.s32','vqmovnal.s32', + 'vqmovn.s64','vqmovnal.s64', + + 'vqmovun.s16','vqmovunal.s16', + 'vqmovun.s32','vqmovunal.s32', + 'vqmovun.s64','vqmovunal.s64', + + 'vqneg.s8','vqnegal.s8', + 'vqneg.s16','vqnegal.s16', + 'vqneg.s32','vqnegal.s32', + + 'vqrdmulh.s16','vqrdmulhal.s16', + 'vqrdmulh.s32','vqrdmulhal.s32', + + 'vqrshl.s8','vqrshlal.s8', + 'vqrshl.s16','vqrshlal.s16', + 'vqrshl.s32','vqrshlal.s32', + 'vqrshl.s64','vqrshlal.s64', + + 'vqrshrn.s16','vqrshrnal.s16', + 'vqrshrn.s32','vqrshrnal.s32', + 'vqrshrn.s64','vqrshrnal.s64', + + 'vqrshrun.s16','vqrshrunal.s16', + 'vqrshrun.s32','vqrshrunal.s32', + 'vqrshrun.s64','vqrshrunal.s64', + + 'vqshl.s8','vqshlal.s8', + 'vqshl.s16','vqshlal.s16', + 'vqshl.s32','vqshlal.s32', + 'vqshl.s64','vqshlal.s64', + + 'vqshlu.s8','vqshlual.s8', + 'vqshlu.s16','vqshlual.s16', + 'vqshlu.s32','vqshlual.s32', + 'vqshlu.s64','vqshlual.s64', + + 'vqshrn.s16','vqshrnal.s16', + 'vqshrn.s32','vqshrnal.s32', + 'vqshrn.s64','vqshrnal.s64', + + 'vqshrun.s16','vqshrunal.s16', + 'vqshrun.s32','vqshrunal.s32', + 'vqshrun.s64','vqshrunal.s64', + + 'vqsub.s8','vqsubal.s8', + 'vqsub.s16','vqsubal.s16', + 'vqsub.s32','vqsubal.s32', + 'vqsub.s64','vqsubal.s64', + + 'vrhadd.s8','vrhaddal.s8', + 'vrhadd.s16','vrhaddal.s16', + 'vrhadd.s32','vrhaddal.s32', + + 'vrshl.s8','vrshlal.s8', + 'vrshl.s16','vrshlal.s16', + 'vrshl.s32','vrshlal.s32', + 'vrshl.s64','vrshlal.s64', + + 'vrshr.s8','vrshral.s8', + 'vrshr.s16','vrshral.s16', + 'vrshr.s32','vrshral.s32', + 'vrshr.s64','vrshral.s64', + + 'vrsra.s8','vrsraal.s8', + 'vrsra.s16','vrsraal.s16', + 'vrsra.s32','vrsraal.s32', + 'vrsra.s64','vrsraal.s64', + + 'vshl.s8','vshlal.s8', + 'vshl.s16','vshlal.s16', + 'vshl.s32','vshlal.s32', + 'vshl.s64','vshlal.s64', + + 'vshll.s8','vshllal.s8', + 'vshll.s16','vshllal.s16', + 'vshll.s32','vshllal.s32', + + 'vshr.s8','vshral.s8', + 'vshr.s16','vshral.s16', + 'vshr.s32','vshral.s32', + 'vshr.s64','vshral.s64', + + 'vsra.s8','vsraal.s8', + 'vsra.s16','vsraal.s16', + 'vsra.s32','vsraal.s32', + 'vsra.s64','vsraal.s64', + + 'vsubl.s8','vsublal.s8', + 'vsubl.s16','vsublal.s16', + 'vsubl.s32','vsublal.s32', + + 'vsubh.s8','vsubhal.s8', + 'vsubh.s16','vsubhal.s16', + 'vsubh.s32','vsubhal.s32' + ), + /* Unconditional NEON SIMD Unsigned Integer Instructions */ + 25 => array( + 'vaba.u8','vabaal.u8', + 'vaba.u16','vabaal.u16', + 'vaba.u32','vabaal.u32', + + 'vabal.u8','vabalal.u8', + 'vabal.u16','vabalal.u16', + 'vabal.u32','vabalal.u32', + + 'vabd.u8','vabdal.u8', + 'vabd.u16','vabdal.u16', + 'vabd.u32','vabdal.u32', + + 'vaddl.u8','vaddlal.u8', + 'vaddl.u16','vaddlal.u16', + 'vaddl.u32','vaddlal.u32', + + 'vsubl.u8','vsublal.u8', + 'vsubl.u16','vsublal.u16', + 'vsubl.u32','vsublal.u32', + + 'vaddw.u8','vaddwal.u8', + 'vaddw.u16','vaddwal.u16', + 'vaddw.u32','vaddwal.u32', + + 'vsubh.u8','vsubhal.u8', + 'vsubh.u16','vsubhal.u16', + 'vsubh.u32','vsubhal.u32', + + 'vhadd.u8','vhaddal.u8', + 'vhadd.u16','vhaddal.u16', + 'vhadd.u32','vhaddal.u32', + + 'vhsub.u8','vhsubal.u8', + 'vhsub.u16','vhsubal.u16', + 'vhsub.u32','vhsubal.u32', + + 'vpadal.u8','vpadalal.u8', + 'vpadal.u16','vpadalal.u16', + 'vpadal.u32','vpadalal.u32', + + 'vpaddl.u8','vpaddlal.u8', + 'vpaddl.u16','vpaddlal.u16', + 'vpaddl.u32','vpaddlal.u32', + + 'vcge.u8','vcgeal.u8', + 'vcge.u16','vcgeal.u16', + 'vcge.u32','vcgeal.u32', + + 'vcle.u8','vcleal.u8', + 'vcle.u16','vcleal.u16', + 'vcle.u32','vcleal.u32', + + 'vcgt.u8','vcgtal.u8', + 'vcgt.u16','vcgtal.u16', + 'vcgt.u32','vcgtal.u32', + + 'vclt.u8','vcltal.u8', + 'vclt.u16','vcltal.u16', + 'vclt.u32','vcltal.u32', + + 'vmax.u8','vmaxal.u8', + 'vmax.u16','vmaxal.u16', + 'vmax.u32','vmaxal.u32', + + 'vmin.u8','vminal.u8', + 'vmin.u16','vminal.u16', + 'vmin.u32','vminal.u32', + + 'vmlal.u8','vmlalal.u8', + 'vmlal.u16','vmlalal.u16', + 'vmlal.u32','vmlalal.u32', + + 'vmlsl.u8','vmlslal.u8', + 'vmlsl.u16','vmlslal.u16', + 'vmlsl.u32','vmlslal.u32', + + 'vmull.u8','vmullal.u8', + 'vmull.u16','vmullal.u16', + 'vmull.u32','vmullal.u32', + + 'vmovl.u8','vmovlal.u8', + 'vmovl.u16','vmovlal.u16', + 'vmovl.u32','vmovlal.u32', + + 'vshl.u8','vshlal.u8', + 'vshl.u16','vshlal.u16', + 'vshl.u32','vshlal.u32', + 'vshl.u64','vshlal.u64', + + 'vshll.u8','vshllal.u8', + 'vshll.u16','vshllal.u16', + 'vshll.u32','vshllal.u32', + + 'vshr.u8','vshral.u8', + 'vshr.u16','vshral.u16', + 'vshr.u32','vshral.u32', + 'vshr.u64','vshral.u64', + + 'vsra.u8','vsraal.u8', + 'vsra.u16','vsraal.u16', + 'vsra.u32','vsraal.u32', + 'vsra.u64','vsraal.u64', + + 'vpmax.u8','vpmaxal.u8', + 'vpmax.u16','vpmaxal.u16', + 'vpmax.u32','vpmaxal.u32', + + 'vpmin.u8','vpminal.u8', + 'vpmin.u16','vpminal.u16', + 'vpmin.u32','vpminal.u32', + + 'vqadd.u8','vqaddal.u8', + 'vqadd.u16','vqaddal.u16', + 'vqadd.u32','vqaddal.u32', + 'vqadd.u64','vqaddal.u64', + + 'vqsub.u8','vqsubal.u8', + 'vqsub.u16','vqsubal.u16', + 'vqsub.u32','vqsubal.u32', + 'vqsub.u64','vqsubal.u64', + + 'vqmovn.u16','vqmovnal.u16', + 'vqmovn.u32','vqmovnal.u32', + 'vqmovn.u64','vqmovnal.u64', + + 'vqshl.u8','vqshlal.u8', + 'vqshl.u16','vqshlal.u16', + 'vqshl.u32','vqshlal.u32', + 'vqshl.u64','vqshlal.u64', + + 'vqshrn.u16','vqshrnal.u16', + 'vqshrn.u32','vqshrnal.u32', + 'vqshrn.u64','vqshrnal.u64', + + 'vqrshl.u8','vqrshlal.u8', + 'vqrshl.u16','vqrshlal.u16', + 'vqrshl.u32','vqrshlal.u32', + 'vqrshl.u64','vqrshlal.u64', + + 'vqrshrn.u16','vqrshrnal.u16', + 'vqrshrn.u32','vqrshrnal.u32', + 'vqrshrn.u64','vqrshrnal.u64', + + 'vrhadd.u8','vrhaddal.u8', + 'vrhadd.u16','vrhaddal.u16', + 'vrhadd.u32','vrhaddal.u32', + + 'vrshl.u8','vrshlal.u8', + 'vrshl.u16','vrshlal.u16', + 'vrshl.u32','vrshlal.u32', + 'vrshl.u64','vrshlal.u64', + + 'vrshr.u8','vrshral.u8', + 'vrshr.u16','vrshral.u16', + 'vrshr.u32','vrshral.u32', + 'vrshr.u64','vrshral.u64', + + 'vrsra.u8','vrsraal.u8', + 'vrsra.u16','vrsraal.u16', + 'vrsra.u32','vrsraal.u32', + 'vrsra.u64','vrsraal.u64' + ), + /* Unconditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 26 => array( + 'vabd.f32','vabdal.f32', + + 'vabs.f32','vabsal.f32', + 'vabs.f64','vabsal.f64', + + 'vacge.f32','vacgeal.f32', + 'vacgt.f32','vacgtal.f32', + 'vacle.f32','vacleal.f32', + 'vaclt.f32','vacltal.f32', + + 'vadd.f32','vaddal.f32', + 'vadd.f64','vaddal.f64', + + 'vceq.f32','vceqal.f32', + 'vcge.f32','vcgeal.f32', + 'vcle.f32','vcleal.f32', + 'vcgt.f32','vcgtal.f32', + 'vclt.f32','vcltal.f32', + + 'vcmp.f32','vcmpal.f32', + 'vcmp.f64','vcmpal.f64', + + 'vcmpe.f32','vcmpeal.f32', + 'vcmpe.f64','vcmpeal.f64', + + 'vcvt.s16.f32','vcvtal.s16.f32', + 'vcvt.s16.f64','vcvtal.s16.f64', + 'vcvt.s32.f32','vcvtal.s32.f32', + 'vcvt.s32.f64','vcvtal.s32.f64', + 'vcvt.u16.f32','vcvtal.u16.f32', + 'vcvt.u16.f64','vcvtal.u16.f64', + 'vcvt.u32.f32','vcvtal.u32.f32', + 'vcvt.u32.f64','vcvtal.u32.f64', + 'vcvt.f16.f32','vcvtal.f16.f32', + 'vcvt.f32.s32','vcvtal.f32.s32', + 'vcvt.f32.u32','vcvtal.f32.u32', + 'vcvt.f32.f16','vcvtal.f32.f16', + 'vcvt.f32.f64','vcvtal.f32.f64', + 'vcvt.f64.s32','vcvtal.f64.s32', + 'vcvt.f64.u32','vcvtal.f64.u32', + 'vcvt.f64.f32','vcvtal.f64.f32', + + 'vcvtr.s32.f32','vcvtral.s32.f32', + 'vcvtr.s32.f64','vcvtral.s32.f64', + 'vcvtr.u32.f32','vcvtral.u32.f32', + 'vcvtr.u32.f64','vcvtral.u32.f64', + + 'vcvtb.f16.f32','vcvtbal.f16.f32', + 'vcvtb.f32.f16','vcvtbal.f32.f16', + + 'vcvtt.f16.f32','vcvttal.f16.f32', + 'vcvtt.f32.f16','vcvttal.f32.f16', + + 'vdiv.f32','vdival.f32', + 'vdiv.f64','vdival.f64', + + 'vmax.f32','vmaxal.f32', + 'vmin.f32','vminal.f32', + + 'vmla.f32','vmlaal.f32', + 'vmla.f64','vmlaal.f64', + + 'vmls.f32','vmlsal.f32', + 'vmls.f64','vmlsal.f64', + + 'vmul.f32','vmulal.f32', + 'vmul.f64','vmulal.f64', + + 'vneg.f32','vnegal.f32', + 'vneg.f64','vnegal.f64', + + 'vnmla.f32','vnmlaal.f32', + 'vnmla.f64','vnmlaal.f64', + + 'vnmls.f32','vnmlsal.f32', + 'vnmls.f64','vnmlsal.f64', + + 'vnmul.f64','vnmulal.f64', + 'vnmul.f32','vnmulal.f32', + + 'vpadd.f32','vpaddal.f32', + + 'vpmax.f32','vpmaxal.f32', + 'vpmin.f32','vpminal.f32', + + 'vrecpe.u32','vrecpeal.u32', + 'vrecpe.f32','vrecpeal.f32', + 'vrecps.f32','vrecpsal.f32', + + 'vrsqrte.u32','vrsqrteal.u32', + 'vrsqrte.f32','vrsqrteal.f32', + 'vrsqrts.f32','vrsqrtsal.f32', + + 'vsqrt.f32','vsqrtal.f32', + 'vsqrt.f64','vsqrtal.f64', + + 'vsub.f32','vsubal.f32', + 'vsub.f64','vsubal.f64' + ), + /* Conditional VFPv3 & NEON SIMD Memory Access Instructions */ + 27 => array( + /* Conditional VFPv3 & NEON SIMD Memory Access: Loads */ + 'vldeq.8','vldne.8','vldcs.8','vldhs.8','vldcc.8','vldlo.8','vldmi.8','vldpl.8','vldvs.8','vldvc.8','vldhi.8','vldls.8','vldge.8','vldlt.8','vldgt.8','vldle.8', + 'vldeq.16','vldne.16','vldcs.16','vldhs.16','vldcc.16','vldlo.16','vldmi.16','vldpl.16','vldvs.16','vldvc.16','vldhi.16','vldls.16','vldge.16','vldlt.16','vldgt.16','vldle.16', + 'vldeq.32','vldne.32','vldcs.32','vldhs.32','vldcc.32','vldlo.32','vldmi.32','vldpl.32','vldvs.32','vldvc.32','vldhi.32','vldls.32','vldge.32','vldlt.32','vldgt.32','vldle.32', + 'vldeq.64','vldne.64','vldcs.64','vldhs.64','vldcc.64','vldlo.64','vldmi.64','vldpl.64','vldvs.64','vldvc.64','vldhi.64','vldls.64','vldge.64','vldlt.64','vldgt.64','vldle.64', + + 'vld1eq.8','vld1ne.8','vld1cs.8','vld1hs.8','vld1cc.8','vld1lo.8','vld1mi.8','vld1pl.8','vld1vs.8','vld1vc.8','vld1hi.8','vld1ls.8','vld1ge.8','vld1lt.8','vld1gt.8','vld1le.8', + 'vld1eq.16','vld1ne.16','vld1cs.16','vld1hs.16','vld1cc.16','vld1lo.16','vld1mi.16','vld1pl.16','vld1vs.16','vld1vc.16','vld1hi.16','vld1ls.16','vld1ge.16','vld1lt.16','vld1gt.16','vld1le.16', + 'vld1eq.32','vld1ne.32','vld1cs.32','vld1hs.32','vld1cc.32','vld1lo.32','vld1mi.32','vld1pl.32','vld1vs.32','vld1vc.32','vld1hi.32','vld1ls.32','vld1ge.32','vld1lt.32','vld1gt.32','vld1le.32', + + 'vld2eq.8','vld2ne.8','vld2cs.8','vld2hs.8','vld2cc.8','vld2lo.8','vld2mi.8','vld2pl.8','vld2vs.8','vld2vc.8','vld2hi.8','vld2ls.8','vld2ge.8','vld2lt.8','vld2gt.8','vld2le.8', + 'vld2eq.16','vld2ne.16','vld2cs.16','vld2hs.16','vld2cc.16','vld2lo.16','vld2mi.16','vld2pl.16','vld2vs.16','vld2vc.16','vld2hi.16','vld2ls.16','vld2ge.16','vld2lt.16','vld2gt.16','vld2le.16', + 'vld2eq.32','vld2ne.32','vld2cs.32','vld2hs.32','vld2cc.32','vld2lo.32','vld2mi.32','vld2pl.32','vld2vs.32','vld2vc.32','vld2hi.32','vld2ls.32','vld2ge.32','vld2lt.32','vld2gt.32','vld2le.32', + + 'vld3eq.8','vld3ne.8','vld3cs.8','vld3hs.8','vld3cc.8','vld3lo.8','vld3mi.8','vld3pl.8','vld3vs.8','vld3vc.8','vld3hi.8','vld3ls.8','vld3ge.8','vld3lt.8','vld3gt.8','vld3le.8', + 'vld3eq.16','vld3ne.16','vld3cs.16','vld3hs.16','vld3cc.16','vld3lo.16','vld3mi.16','vld3pl.16','vld3vs.16','vld3vc.16','vld3hi.16','vld3ls.16','vld3ge.16','vld3lt.16','vld3gt.16','vld3le.16', + 'vld3eq.32','vld3ne.32','vld3cs.32','vld3hs.32','vld3cc.32','vld3lo.32','vld3mi.32','vld3pl.32','vld3vs.32','vld3vc.32','vld3hi.32','vld3ls.32','vld3ge.32','vld3lt.32','vld3gt.32','vld3le.32', + + 'vld4eq.8','vld4ne.8','vld4cs.8','vld4hs.8','vld4cc.8','vld4lo.8','vld4mi.8','vld4pl.8','vld4vs.8','vld4vc.8','vld4hi.8','vld4ls.8','vld4ge.8','vld4lt.8','vld4gt.8','vld4le.8', + 'vld4eq.16','vld4ne.16','vld4cs.16','vld4hs.16','vld4cc.16','vld4lo.16','vld4mi.16','vld4pl.16','vld4vs.16','vld4vc.16','vld4hi.16','vld4ls.16','vld4ge.16','vld4lt.16','vld4gt.16','vld4le.16', + 'vld4eq.32','vld4ne.32','vld4cs.32','vld4hs.32','vld4cc.32','vld4lo.32','vld4mi.32','vld4pl.32','vld4vs.32','vld4vc.32','vld4hi.32','vld4ls.32','vld4ge.32','vld4lt.32','vld4gt.32','vld4le.32', + + 'vldmeq','vldmne','vldmcs','vldmhs','vldmcc','vldmlo','vldmmi','vldmpl','vldmvs','vldmvc','vldmhi','vldmls','vldmge','vldmlt','vldmgt','vldmle', + 'vldmeq.32','vldmne.32','vldmcs.32','vldmhs.32','vldmcc.32','vldmlo.32','vldmmi.32','vldmpl.32','vldmvs.32','vldmvc.32','vldmhi.32','vldmls.32','vldmge.32','vldmlt.32','vldmgt.32','vldmle.32', + 'vldmeq.64','vldmne.64','vldmcs.64','vldmhs.64','vldmcc.64','vldmlo.64','vldmmi.64','vldmpl.64','vldmvs.64','vldmvc.64','vldmhi.64','vldmls.64','vldmge.64','vldmlt.64','vldmgt.64','vldmle.64', + + 'vldmiaeq','vldmiane','vldmiacs','vldmiahs','vldmiacc','vldmialo','vldmiami','vldmiapl','vldmiavs','vldmiavc','vldmiahi','vldmials','vldmiage','vldmialt','vldmiagt','vldmiale', + 'vldmiaeq.32','vldmiane.32','vldmiacs.32','vldmiahs.32','vldmiacc.32','vldmialo.32','vldmiami.32','vldmiapl.32','vldmiavs.32','vldmiavc.32','vldmiahi.32','vldmials.32','vldmiage.32','vldmialt.32','vldmiagt.32','vldmiale.32', + 'vldmiaeq.64','vldmiane.64','vldmiacs.64','vldmiahs.64','vldmiacc.64','vldmialo.64','vldmiami.64','vldmiapl.64','vldmiavs.64','vldmiavc.64','vldmiahi.64','vldmials.64','vldmiage.64','vldmialt.64','vldmiagt.64','vldmiale.64', + + 'vldmdbeq','vldmdbne','vldmdbcs','vldmdbhs','vldmdbcc','vldmdblo','vldmdbmi','vldmdbpl','vldmdbvs','vldmdbvc','vldmdbhi','vldmdbls','vldmdbge','vldmdblt','vldmdbgt','vldmdble', + 'vldmdbeq.32','vldmdbne.32','vldmdbcs.32','vldmdbhs.32','vldmdbcc.32','vldmdblo.32','vldmdbmi.32','vldmdbpl.32','vldmdbvs.32','vldmdbvc.32','vldmdbhi.32','vldmdbls.32','vldmdbge.32','vldmdblt.32','vldmdbgt.32','vldmdble.32', + 'vldmdbeq.64','vldmdbne.64','vldmdbcs.64','vldmdbhs.64','vldmdbcc.64','vldmdblo.64','vldmdbmi.64','vldmdbpl.64','vldmdbvs.64','vldmdbvc.64','vldmdbhi.64','vldmdbls.64','vldmdbge.64','vldmdblt.64','vldmdbgt.64','vldmdble.64', + + 'vldreq','vldrne','vldrcs','vldrhs','vldrcc','vldrlo','vldrmi','vldrpl','vldrvs','vldrvc','vldrhi','vldrls','vldrge','vldrlt','vldrgt','vldrle', + 'vldreq.32','vldrne.32','vldrcs.32','vldrhs.32','vldrcc.32','vldrlo.32','vldrmi.32','vldrpl.32','vldrvs.32','vldrvc.32','vldrhi.32','vldrls.32','vldrge.32','vldrlt.32','vldrgt.32','vldrle.32', + 'vldreq.64','vldrne.64','vldrcs.64','vldrhs.64','vldrcc.64','vldrlo.64','vldrmi.64','vldrpl.64','vldrvs.64','vldrvc.64','vldrhi.64','vldrls.64','vldrge.64','vldrlt.64','vldrgt.64','vldrle.64', + + 'vpopeq','vpopne','vpopcs','vpophs','vpopcc','vpoplo','vpopmi','vpoppl','vpopvs','vpopvc','vpophi','vpopls','vpopge','vpoplt','vpopgt','vpople', + 'vpopeq.32','vpopne.32','vpopcs.32','vpophs.32','vpopcc.32','vpoplo.32','vpopmi.32','vpoppl.32','vpopvs.32','vpopvc.32','vpophi.32','vpopls.32','vpopge.32','vpoplt.32','vpopgt.32','vpople.32', + 'vpopeq.64','vpopne.64','vpopcs.64','vpophs.64','vpopcc.64','vpoplo.64','vpopmi.64','vpoppl.64','vpopvs.64','vpopvc.64','vpophi.64','vpopls.64','vpopge.64','vpoplt.64','vpopgt.64','vpople.64', + + /* Conditional VFPv3 & NEON SIMD Memory Access: Stores */ + 'vst1eq.8','vst1ne.8','vst1cs.8','vst1hs.8','vst1cc.8','vst1lo.8','vst1mi.8','vst1pl.8','vst1vs.8','vst1vc.8','vst1hi.8','vst1ls.8','vst1ge.8','vst1lt.8','vst1gt.8','vst1le.8', + 'vst1eq.16','vst1ne.16','vst1cs.16','vst1hs.16','vst1cc.16','vst1lo.16','vst1mi.16','vst1pl.16','vst1vs.16','vst1vc.16','vst1hi.16','vst1ls.16','vst1ge.16','vst1lt.16','vst1gt.16','vst1le.16', + 'vst1eq.32','vst1ne.32','vst1cs.32','vst1hs.32','vst1cc.32','vst1lo.32','vst1mi.32','vst1pl.32','vst1vs.32','vst1vc.32','vst1hi.32','vst1ls.32','vst1ge.32','vst1lt.32','vst1gt.32','vst1le.32', + 'vst1eq.64','vst1ne.64','vst1cs.64','vst1hs.64','vst1cc.64','vst1lo.64','vst1mi.64','vst1pl.64','vst1vs.64','vst1vc.64','vst1hi.64','vst1ls.64','vst1ge.64','vst1lt.64','vst1gt.64','vst1le.64', + + 'vst2eq.8','vst2ne.8','vst2cs.8','vst2hs.8','vst2cc.8','vst2lo.8','vst2mi.8','vst2pl.8','vst2vs.8','vst2vc.8','vst2hi.8','vst2ls.8','vst2ge.8','vst2lt.8','vst2gt.8','vst2le.8', + 'vst2eq.16','vst2ne.16','vst2cs.16','vst2hs.16','vst2cc.16','vst2lo.16','vst2mi.16','vst2pl.16','vst2vs.16','vst2vc.16','vst2hi.16','vst2ls.16','vst2ge.16','vst2lt.16','vst2gt.16','vst2le.16', + 'vst2eq.32','vst2ne.32','vst2cs.32','vst2hs.32','vst2cc.32','vst2lo.32','vst2mi.32','vst2pl.32','vst2vs.32','vst2vc.32','vst2hi.32','vst2ls.32','vst2ge.32','vst2lt.32','vst2gt.32','vst2le.32', + + 'vst3eq.8','vst3ne.8','vst3cs.8','vst3hs.8','vst3cc.8','vst3lo.8','vst3mi.8','vst3pl.8','vst3vs.8','vst3vc.8','vst3hi.8','vst3ls.8','vst3ge.8','vst3lt.8','vst3gt.8','vst3le.8', + 'vst3eq.16','vst3ne.16','vst3cs.16','vst3hs.16','vst3cc.16','vst3lo.16','vst3mi.16','vst3pl.16','vst3vs.16','vst3vc.16','vst3hi.16','vst3ls.16','vst3ge.16','vst3lt.16','vst3gt.16','vst3le.16', + 'vst3eq.32','vst3ne.32','vst3cs.32','vst3hs.32','vst3cc.32','vst3lo.32','vst3mi.32','vst3pl.32','vst3vs.32','vst3vc.32','vst3hi.32','vst3ls.32','vst3ge.32','vst3lt.32','vst3gt.32','vst3le.32', + + 'vst4eq.8','vst4ne.8','vst4cs.8','vst4hs.8','vst4cc.8','vst4lo.8','vst4mi.8','vst4pl.8','vst4vs.8','vst4vc.8','vst4hi.8','vst4ls.8','vst4ge.8','vst4lt.8','vst4gt.8','vst4le.8', + 'vst4eq.16','vst4ne.16','vst4cs.16','vst4hs.16','vst4cc.16','vst4lo.16','vst4mi.16','vst4pl.16','vst4vs.16','vst4vc.16','vst4hi.16','vst4ls.16','vst4ge.16','vst4lt.16','vst4gt.16','vst4le.16', + 'vst4eq.32','vst4ne.32','vst4cs.32','vst4hs.32','vst4cc.32','vst4lo.32','vst4mi.32','vst4pl.32','vst4vs.32','vst4vc.32','vst4hi.32','vst4ls.32','vst4ge.32','vst4lt.32','vst4gt.32','vst4le.32', + + 'vstmeq','vstmne','vstmcs','vstmhs','vstmcc','vstmlo','vstmmi','vstmpl','vstmvs','vstmvc','vstmhi','vstmls','vstmge','vstmlt','vstmgt','vstmle', + 'vstmeq.32','vstmne.32','vstmcs.32','vstmhs.32','vstmcc.32','vstmlo.32','vstmmi.32','vstmpl.32','vstmvs.32','vstmvc.32','vstmhi.32','vstmls.32','vstmge.32','vstmlt.32','vstmgt.32','vstmle.32', + 'vstmeq.64','vstmne.64','vstmcs.64','vstmhs.64','vstmcc.64','vstmlo.64','vstmmi.64','vstmpl.64','vstmvs.64','vstmvc.64','vstmhi.64','vstmls.64','vstmge.64','vstmlt.64','vstmgt.64','vstmle.64', + + 'vstmiaeq','vstmiane','vstmiacs','vstmiahs','vstmiacc','vstmialo','vstmiami','vstmiapl','vstmiavs','vstmiavc','vstmiahi','vstmials','vstmiage','vstmialt','vstmiagt','vstmiale', + 'vstmiaeq.32','vstmiane.32','vstmiacs.32','vstmiahs.32','vstmiacc.32','vstmialo.32','vstmiami.32','vstmiapl.32','vstmiavs.32','vstmiavc.32','vstmiahi.32','vstmials.32','vstmiage.32','vstmialt.32','vstmiagt.32','vstmiale.32', + 'vstmiaeq.64','vstmiane.64','vstmiacs.64','vstmiahs.64','vstmiacc.64','vstmialo.64','vstmiami.64','vstmiapl.64','vstmiavs.64','vstmiavc.64','vstmiahi.64','vstmials.64','vstmiage.64','vstmialt.64','vstmiagt.64','vstmiale.64', + + 'vstmdbeq','vstmdbne','vstmdbcs','vstmdbhs','vstmdbcc','vstmdblo','vstmdbmi','vstmdbpl','vstmdbvs','vstmdbvc','vstmdbhi','vstmdbls','vstmdbge','vstmdblt','vstmdbgt','vstmdble', + 'vstmdbeq.32','vstmdbne.32','vstmdbcs.32','vstmdbhs.32','vstmdbcc.32','vstmdblo.32','vstmdbmi.32','vstmdbpl.32','vstmdbvs.32','vstmdbvc.32','vstmdbhi.32','vstmdbls.32','vstmdbge.32','vstmdblt.32','vstmdbgt.32','vstmdble.32', + 'vstmdbeq.64','vstmdbne.64','vstmdbcs.64','vstmdbhs.64','vstmdbcc.64','vstmdblo.64','vstmdbmi.64','vstmdbpl.64','vstmdbvs.64','vstmdbvc.64','vstmdbhi.64','vstmdbls.64','vstmdbge.64','vstmdblt.64','vstmdbgt.64','vstmdble.64', + + 'vstreq','vstrne','vstrcs','vstrhs','vstrcc','vstrlo','vstrmi','vstrpl','vstrvs','vstrvc','vstrhi','vstrls','vstrge','vstrlt','vstrgt','vstrle', + 'vstreq.32','vstrne.32','vstrcs.32','vstrhs.32','vstrcc.32','vstrlo.32','vstrmi.32','vstrpl.32','vstrvs.32','vstrvc.32','vstrhi.32','vstrls.32','vstrge.32','vstrlt.32','vstrgt.32','vstrle.32', + 'vstreq.64','vstrne.64','vstrcs.64','vstrhs.64','vstrcc.64','vstrlo.64','vstrmi.64','vstrpl.64','vstrvs.64','vstrvc.64','vstrhi.64','vstrls.64','vstrge.64','vstrlt.64','vstrgt.64','vstrle.64', + + 'vpusheq','vpushne','vpushcs','vpushhs','vpushcc','vpushlo','vpushmi','vpushpl','vpushvs','vpushvc','vpushhi','vpushls','vpushge','vpushlt','vpushgt','vpushle', + 'vpusheq.32','vpushne.32','vpushcs.32','vpushhs.32','vpushcc.32','vpushlo.32','vpushmi.32','vpushpl.32','vpushvs.32','vpushvc.32','vpushhi.32','vpushls.32','vpushge.32','vpushlt.32','vpushgt.32','vpushle.32', + 'vpusheq.64','vpushne.64','vpushcs.64','vpushhs.64','vpushcc.64','vpushlo.64','vpushmi.64','vpushpl.64','vpushvs.64','vpushvc.64','vpushhi.64','vpushls.64','vpushge.64','vpushlt.64','vpushgt.64','vpushle.64' + ), + /* Conditional NEON SIMD Logical Instructions */ + 28 => array( + 'vandeq','vandne','vandcs','vandhs','vandcc','vandlo','vandmi','vandpl','vandvs','vandvc','vandhi','vandls','vandge','vandlt','vandgt','vandle', + 'vandeq.i8','vandne.i8','vandcs.i8','vandhs.i8','vandcc.i8','vandlo.i8','vandmi.i8','vandpl.i8','vandvs.i8','vandvc.i8','vandhi.i8','vandls.i8','vandge.i8','vandlt.i8','vandgt.i8','vandle.i8', + 'vandeq.i16','vandne.i16','vandcs.i16','vandhs.i16','vandcc.i16','vandlo.i16','vandmi.i16','vandpl.i16','vandvs.i16','vandvc.i16','vandhi.i16','vandls.i16','vandge.i16','vandlt.i16','vandgt.i16','vandle.i16', + 'vandeq.i32','vandne.i32','vandcs.i32','vandhs.i32','vandcc.i32','vandlo.i32','vandmi.i32','vandpl.i32','vandvs.i32','vandvc.i32','vandhi.i32','vandls.i32','vandge.i32','vandlt.i32','vandgt.i32','vandle.i32', + 'vandeq.i64','vandne.i64','vandcs.i64','vandhs.i64','vandcc.i64','vandlo.i64','vandmi.i64','vandpl.i64','vandvs.i64','vandvc.i64','vandhi.i64','vandls.i64','vandge.i64','vandlt.i64','vandgt.i64','vandle.i64', + 'vandeq.s8','vandne.s8','vandcs.s8','vandhs.s8','vandcc.s8','vandlo.s8','vandmi.s8','vandpl.s8','vandvs.s8','vandvc.s8','vandhi.s8','vandls.s8','vandge.s8','vandlt.s8','vandgt.s8','vandle.s8', + 'vandeq.s16','vandne.s16','vandcs.s16','vandhs.s16','vandcc.s16','vandlo.s16','vandmi.s16','vandpl.s16','vandvs.s16','vandvc.s16','vandhi.s16','vandls.s16','vandge.s16','vandlt.s16','vandgt.s16','vandle.s16', + 'vandeq.s32','vandne.s32','vandcs.s32','vandhs.s32','vandcc.s32','vandlo.s32','vandmi.s32','vandpl.s32','vandvs.s32','vandvc.s32','vandhi.s32','vandls.s32','vandge.s32','vandlt.s32','vandgt.s32','vandle.s32', + 'vandeq.s64','vandne.s64','vandcs.s64','vandhs.s64','vandcc.s64','vandlo.s64','vandmi.s64','vandpl.s64','vandvs.s64','vandvc.s64','vandhi.s64','vandls.s64','vandge.s64','vandlt.s64','vandgt.s64','vandle.s64', + 'vandeq.u8','vandne.u8','vandcs.u8','vandhs.u8','vandcc.u8','vandlo.u8','vandmi.u8','vandpl.u8','vandvs.u8','vandvc.u8','vandhi.u8','vandls.u8','vandge.u8','vandlt.u8','vandgt.u8','vandle.u8', + 'vandeq.u16','vandne.u16','vandcs.u16','vandhs.u16','vandcc.u16','vandlo.u16','vandmi.u16','vandpl.u16','vandvs.u16','vandvc.u16','vandhi.u16','vandls.u16','vandge.u16','vandlt.u16','vandgt.u16','vandle.u16', + 'vandeq.u32','vandne.u32','vandcs.u32','vandhs.u32','vandcc.u32','vandlo.u32','vandmi.u32','vandpl.u32','vandvs.u32','vandvc.u32','vandhi.u32','vandls.u32','vandge.u32','vandlt.u32','vandgt.u32','vandle.u32', + 'vandeq.u64','vandne.u64','vandcs.u64','vandhs.u64','vandcc.u64','vandlo.u64','vandmi.u64','vandpl.u64','vandvs.u64','vandvc.u64','vandhi.u64','vandls.u64','vandge.u64','vandlt.u64','vandgt.u64','vandle.u64', + 'vandeq.f32','vandne.f32','vandcs.f32','vandhs.f32','vandcc.f32','vandlo.f32','vandmi.f32','vandpl.f32','vandvs.f32','vandvc.f32','vandhi.f32','vandls.f32','vandge.f32','vandlt.f32','vandgt.f32','vandle.f32', + 'vandeq.f64','vandne.f64','vandcs.f64','vandhs.f64','vandcc.f64','vandlo.f64','vandmi.f64','vandpl.f64','vandvs.f64','vandvc.f64','vandhi.f64','vandls.f64','vandge.f64','vandlt.f64','vandgt.f64','vandle.f64', + + 'vbiceq','vbicne','vbiccs','vbichs','vbiccc','vbiclo','vbicmi','vbicpl','vbicvs','vbicvc','vbichi','vbicls','vbicge','vbiclt','vbicgt','vbicle', + 'vbiceq.i8','vbicne.i8','vbiccs.i8','vbichs.i8','vbiccc.i8','vbiclo.i8','vbicmi.i8','vbicpl.i8','vbicvs.i8','vbicvc.i8','vbichi.i8','vbicls.i8','vbicge.i8','vbiclt.i8','vbicgt.i8','vbicle.i8', + 'vbiceq.i16','vbicne.i16','vbiccs.i16','vbichs.i16','vbiccc.i16','vbiclo.i16','vbicmi.i16','vbicpl.i16','vbicvs.i16','vbicvc.i16','vbichi.i16','vbicls.i16','vbicge.i16','vbiclt.i16','vbicgt.i16','vbicle.i16', + 'vbiceq.i32','vbicne.i32','vbiccs.i32','vbichs.i32','vbiccc.i32','vbiclo.i32','vbicmi.i32','vbicpl.i32','vbicvs.i32','vbicvc.i32','vbichi.i32','vbicls.i32','vbicge.i32','vbiclt.i32','vbicgt.i32','vbicle.i32', + 'vbiceq.i64','vbicne.i64','vbiccs.i64','vbichs.i64','vbiccc.i64','vbiclo.i64','vbicmi.i64','vbicpl.i64','vbicvs.i64','vbicvc.i64','vbichi.i64','vbicls.i64','vbicge.i64','vbiclt.i64','vbicgt.i64','vbicle.i64', + 'vbiceq.s8','vbicne.s8','vbiccs.s8','vbichs.s8','vbiccc.s8','vbiclo.s8','vbicmi.s8','vbicpl.s8','vbicvs.s8','vbicvc.s8','vbichi.s8','vbicls.s8','vbicge.s8','vbiclt.s8','vbicgt.s8','vbicle.s8', + 'vbiceq.s16','vbicne.s16','vbiccs.s16','vbichs.s16','vbiccc.s16','vbiclo.s16','vbicmi.s16','vbicpl.s16','vbicvs.s16','vbicvc.s16','vbichi.s16','vbicls.s16','vbicge.s16','vbiclt.s16','vbicgt.s16','vbicle.s16', + 'vbiceq.s32','vbicne.s32','vbiccs.s32','vbichs.s32','vbiccc.s32','vbiclo.s32','vbicmi.s32','vbicpl.s32','vbicvs.s32','vbicvc.s32','vbichi.s32','vbicls.s32','vbicge.s32','vbiclt.s32','vbicgt.s32','vbicle.s32', + 'vbiceq.s64','vbicne.s64','vbiccs.s64','vbichs.s64','vbiccc.s64','vbiclo.s64','vbicmi.s64','vbicpl.s64','vbicvs.s64','vbicvc.s64','vbichi.s64','vbicls.s64','vbicge.s64','vbiclt.s64','vbicgt.s64','vbicle.s64', + 'vbiceq.u8','vbicne.u8','vbiccs.u8','vbichs.u8','vbiccc.u8','vbiclo.u8','vbicmi.u8','vbicpl.u8','vbicvs.u8','vbicvc.u8','vbichi.u8','vbicls.u8','vbicge.u8','vbiclt.u8','vbicgt.u8','vbicle.u8', + 'vbiceq.u16','vbicne.u16','vbiccs.u16','vbichs.u16','vbiccc.u16','vbiclo.u16','vbicmi.u16','vbicpl.u16','vbicvs.u16','vbicvc.u16','vbichi.u16','vbicls.u16','vbicge.u16','vbiclt.u16','vbicgt.u16','vbicle.u16', + 'vbiceq.u32','vbicne.u32','vbiccs.u32','vbichs.u32','vbiccc.u32','vbiclo.u32','vbicmi.u32','vbicpl.u32','vbicvs.u32','vbicvc.u32','vbichi.u32','vbicls.u32','vbicge.u32','vbiclt.u32','vbicgt.u32','vbicle.u32', + 'vbiceq.u64','vbicne.u64','vbiccs.u64','vbichs.u64','vbiccc.u64','vbiclo.u64','vbicmi.u64','vbicpl.u64','vbicvs.u64','vbicvc.u64','vbichi.u64','vbicls.u64','vbicge.u64','vbiclt.u64','vbicgt.u64','vbicle.u64', + 'vbiceq.f32','vbicne.f32','vbiccs.f32','vbichs.f32','vbiccc.f32','vbiclo.f32','vbicmi.f32','vbicpl.f32','vbicvs.f32','vbicvc.f32','vbichi.f32','vbicls.f32','vbicge.f32','vbiclt.f32','vbicgt.f32','vbicle.f32', + 'vbiceq.f64','vbicne.f64','vbiccs.f64','vbichs.f64','vbiccc.f64','vbiclo.f64','vbicmi.f64','vbicpl.f64','vbicvs.f64','vbicvc.f64','vbichi.f64','vbicls.f64','vbicge.f64','vbiclt.f64','vbicgt.f64','vbicle.f64', + + 'vbifeq','vbifne','vbifcs','vbifhs','vbifcc','vbiflo','vbifmi','vbifpl','vbifvs','vbifvc','vbifhi','vbifls','vbifge','vbiflt','vbifgt','vbifle', + 'vbifeq.i8','vbifne.i8','vbifcs.i8','vbifhs.i8','vbifcc.i8','vbiflo.i8','vbifmi.i8','vbifpl.i8','vbifvs.i8','vbifvc.i8','vbifhi.i8','vbifls.i8','vbifge.i8','vbiflt.i8','vbifgt.i8','vbifle.i8', + 'vbifeq.i16','vbifne.i16','vbifcs.i16','vbifhs.i16','vbifcc.i16','vbiflo.i16','vbifmi.i16','vbifpl.i16','vbifvs.i16','vbifvc.i16','vbifhi.i16','vbifls.i16','vbifge.i16','vbiflt.i16','vbifgt.i16','vbifle.i16', + 'vbifeq.i32','vbifne.i32','vbifcs.i32','vbifhs.i32','vbifcc.i32','vbiflo.i32','vbifmi.i32','vbifpl.i32','vbifvs.i32','vbifvc.i32','vbifhi.i32','vbifls.i32','vbifge.i32','vbiflt.i32','vbifgt.i32','vbifle.i32', + 'vbifeq.i64','vbifne.i64','vbifcs.i64','vbifhs.i64','vbifcc.i64','vbiflo.i64','vbifmi.i64','vbifpl.i64','vbifvs.i64','vbifvc.i64','vbifhi.i64','vbifls.i64','vbifge.i64','vbiflt.i64','vbifgt.i64','vbifle.i64', + 'vbifeq.s8','vbifne.s8','vbifcs.s8','vbifhs.s8','vbifcc.s8','vbiflo.s8','vbifmi.s8','vbifpl.s8','vbifvs.s8','vbifvc.s8','vbifhi.s8','vbifls.s8','vbifge.s8','vbiflt.s8','vbifgt.s8','vbifle.s8', + 'vbifeq.s16','vbifne.s16','vbifcs.s16','vbifhs.s16','vbifcc.s16','vbiflo.s16','vbifmi.s16','vbifpl.s16','vbifvs.s16','vbifvc.s16','vbifhi.s16','vbifls.s16','vbifge.s16','vbiflt.s16','vbifgt.s16','vbifle.s16', + 'vbifeq.s32','vbifne.s32','vbifcs.s32','vbifhs.s32','vbifcc.s32','vbiflo.s32','vbifmi.s32','vbifpl.s32','vbifvs.s32','vbifvc.s32','vbifhi.s32','vbifls.s32','vbifge.s32','vbiflt.s32','vbifgt.s32','vbifle.s32', + 'vbifeq.s64','vbifne.s64','vbifcs.s64','vbifhs.s64','vbifcc.s64','vbiflo.s64','vbifmi.s64','vbifpl.s64','vbifvs.s64','vbifvc.s64','vbifhi.s64','vbifls.s64','vbifge.s64','vbiflt.s64','vbifgt.s64','vbifle.s64', + 'vbifeq.u8','vbifne.u8','vbifcs.u8','vbifhs.u8','vbifcc.u8','vbiflo.u8','vbifmi.u8','vbifpl.u8','vbifvs.u8','vbifvc.u8','vbifhi.u8','vbifls.u8','vbifge.u8','vbiflt.u8','vbifgt.u8','vbifle.u8', + 'vbifeq.u16','vbifne.u16','vbifcs.u16','vbifhs.u16','vbifcc.u16','vbiflo.u16','vbifmi.u16','vbifpl.u16','vbifvs.u16','vbifvc.u16','vbifhi.u16','vbifls.u16','vbifge.u16','vbiflt.u16','vbifgt.u16','vbifle.u16', + 'vbifeq.u32','vbifne.u32','vbifcs.u32','vbifhs.u32','vbifcc.u32','vbiflo.u32','vbifmi.u32','vbifpl.u32','vbifvs.u32','vbifvc.u32','vbifhi.u32','vbifls.u32','vbifge.u32','vbiflt.u32','vbifgt.u32','vbifle.u32', + 'vbifeq.u64','vbifne.u64','vbifcs.u64','vbifhs.u64','vbifcc.u64','vbiflo.u64','vbifmi.u64','vbifpl.u64','vbifvs.u64','vbifvc.u64','vbifhi.u64','vbifls.u64','vbifge.u64','vbiflt.u64','vbifgt.u64','vbifle.u64', + 'vbifeq.f32','vbifne.f32','vbifcs.f32','vbifhs.f32','vbifcc.f32','vbiflo.f32','vbifmi.f32','vbifpl.f32','vbifvs.f32','vbifvc.f32','vbifhi.f32','vbifls.f32','vbifge.f32','vbiflt.f32','vbifgt.f32','vbifle.f32', + 'vbifeq.f64','vbifne.f64','vbifcs.f64','vbifhs.f64','vbifcc.f64','vbiflo.f64','vbifmi.f64','vbifpl.f64','vbifvs.f64','vbifvc.f64','vbifhi.f64','vbifls.f64','vbifge.f64','vbiflt.f64','vbifgt.f64','vbifle.f64', + + 'vbiteq','vbitne','vbitcs','vbiths','vbitcc','vbitlo','vbitmi','vbitpl','vbitvs','vbitvc','vbithi','vbitls','vbitge','vbitlt','vbitgt','vbitle', + 'vbiteq.i8','vbitne.i8','vbitcs.i8','vbiths.i8','vbitcc.i8','vbitlo.i8','vbitmi.i8','vbitpl.i8','vbitvs.i8','vbitvc.i8','vbithi.i8','vbitls.i8','vbitge.i8','vbitlt.i8','vbitgt.i8','vbitle.i8', + 'vbiteq.i16','vbitne.i16','vbitcs.i16','vbiths.i16','vbitcc.i16','vbitlo.i16','vbitmi.i16','vbitpl.i16','vbitvs.i16','vbitvc.i16','vbithi.i16','vbitls.i16','vbitge.i16','vbitlt.i16','vbitgt.i16','vbitle.i16', + 'vbiteq.i32','vbitne.i32','vbitcs.i32','vbiths.i32','vbitcc.i32','vbitlo.i32','vbitmi.i32','vbitpl.i32','vbitvs.i32','vbitvc.i32','vbithi.i32','vbitls.i32','vbitge.i32','vbitlt.i32','vbitgt.i32','vbitle.i32', + 'vbiteq.i64','vbitne.i64','vbitcs.i64','vbiths.i64','vbitcc.i64','vbitlo.i64','vbitmi.i64','vbitpl.i64','vbitvs.i64','vbitvc.i64','vbithi.i64','vbitls.i64','vbitge.i64','vbitlt.i64','vbitgt.i64','vbitle.i64', + 'vbiteq.s8','vbitne.s8','vbitcs.s8','vbiths.s8','vbitcc.s8','vbitlo.s8','vbitmi.s8','vbitpl.s8','vbitvs.s8','vbitvc.s8','vbithi.s8','vbitls.s8','vbitge.s8','vbitlt.s8','vbitgt.s8','vbitle.s8', + 'vbiteq.s16','vbitne.s16','vbitcs.s16','vbiths.s16','vbitcc.s16','vbitlo.s16','vbitmi.s16','vbitpl.s16','vbitvs.s16','vbitvc.s16','vbithi.s16','vbitls.s16','vbitge.s16','vbitlt.s16','vbitgt.s16','vbitle.s16', + 'vbiteq.s32','vbitne.s32','vbitcs.s32','vbiths.s32','vbitcc.s32','vbitlo.s32','vbitmi.s32','vbitpl.s32','vbitvs.s32','vbitvc.s32','vbithi.s32','vbitls.s32','vbitge.s32','vbitlt.s32','vbitgt.s32','vbitle.s32', + 'vbiteq.s64','vbitne.s64','vbitcs.s64','vbiths.s64','vbitcc.s64','vbitlo.s64','vbitmi.s64','vbitpl.s64','vbitvs.s64','vbitvc.s64','vbithi.s64','vbitls.s64','vbitge.s64','vbitlt.s64','vbitgt.s64','vbitle.s64', + 'vbiteq.u8','vbitne.u8','vbitcs.u8','vbiths.u8','vbitcc.u8','vbitlo.u8','vbitmi.u8','vbitpl.u8','vbitvs.u8','vbitvc.u8','vbithi.u8','vbitls.u8','vbitge.u8','vbitlt.u8','vbitgt.u8','vbitle.u8', + 'vbiteq.u16','vbitne.u16','vbitcs.u16','vbiths.u16','vbitcc.u16','vbitlo.u16','vbitmi.u16','vbitpl.u16','vbitvs.u16','vbitvc.u16','vbithi.u16','vbitls.u16','vbitge.u16','vbitlt.u16','vbitgt.u16','vbitle.u16', + 'vbiteq.u32','vbitne.u32','vbitcs.u32','vbiths.u32','vbitcc.u32','vbitlo.u32','vbitmi.u32','vbitpl.u32','vbitvs.u32','vbitvc.u32','vbithi.u32','vbitls.u32','vbitge.u32','vbitlt.u32','vbitgt.u32','vbitle.u32', + 'vbiteq.u64','vbitne.u64','vbitcs.u64','vbiths.u64','vbitcc.u64','vbitlo.u64','vbitmi.u64','vbitpl.u64','vbitvs.u64','vbitvc.u64','vbithi.u64','vbitls.u64','vbitge.u64','vbitlt.u64','vbitgt.u64','vbitle.u64', + 'vbiteq.f32','vbitne.f32','vbitcs.f32','vbiths.f32','vbitcc.f32','vbitlo.f32','vbitmi.f32','vbitpl.f32','vbitvs.f32','vbitvc.f32','vbithi.f32','vbitls.f32','vbitge.f32','vbitlt.f32','vbitgt.f32','vbitle.f32', + 'vbiteq.f64','vbitne.f64','vbitcs.f64','vbiths.f64','vbitcc.f64','vbitlo.f64','vbitmi.f64','vbitpl.f64','vbitvs.f64','vbitvc.f64','vbithi.f64','vbitls.f64','vbitge.f64','vbitlt.f64','vbitgt.f64','vbitle.f64', + + 'vbsleq','vbslne','vbslcs','vbslhs','vbslcc','vbsllo','vbslmi','vbslpl','vbslvs','vbslvc','vbslhi','vbslls','vbslge','vbsllt','vbslgt','vbslle', + 'vbsleq.i8','vbslne.i8','vbslcs.i8','vbslhs.i8','vbslcc.i8','vbsllo.i8','vbslmi.i8','vbslpl.i8','vbslvs.i8','vbslvc.i8','vbslhi.i8','vbslls.i8','vbslge.i8','vbsllt.i8','vbslgt.i8','vbslle.i8', + 'vbsleq.i16','vbslne.i16','vbslcs.i16','vbslhs.i16','vbslcc.i16','vbsllo.i16','vbslmi.i16','vbslpl.i16','vbslvs.i16','vbslvc.i16','vbslhi.i16','vbslls.i16','vbslge.i16','vbsllt.i16','vbslgt.i16','vbslle.i16', + 'vbsleq.i32','vbslne.i32','vbslcs.i32','vbslhs.i32','vbslcc.i32','vbsllo.i32','vbslmi.i32','vbslpl.i32','vbslvs.i32','vbslvc.i32','vbslhi.i32','vbslls.i32','vbslge.i32','vbsllt.i32','vbslgt.i32','vbslle.i32', + 'vbsleq.i64','vbslne.i64','vbslcs.i64','vbslhs.i64','vbslcc.i64','vbsllo.i64','vbslmi.i64','vbslpl.i64','vbslvs.i64','vbslvc.i64','vbslhi.i64','vbslls.i64','vbslge.i64','vbsllt.i64','vbslgt.i64','vbslle.i64', + 'vbsleq.s8','vbslne.s8','vbslcs.s8','vbslhs.s8','vbslcc.s8','vbsllo.s8','vbslmi.s8','vbslpl.s8','vbslvs.s8','vbslvc.s8','vbslhi.s8','vbslls.s8','vbslge.s8','vbsllt.s8','vbslgt.s8','vbslle.s8', + 'vbsleq.s16','vbslne.s16','vbslcs.s16','vbslhs.s16','vbslcc.s16','vbsllo.s16','vbslmi.s16','vbslpl.s16','vbslvs.s16','vbslvc.s16','vbslhi.s16','vbslls.s16','vbslge.s16','vbsllt.s16','vbslgt.s16','vbslle.s16', + 'vbsleq.s32','vbslne.s32','vbslcs.s32','vbslhs.s32','vbslcc.s32','vbsllo.s32','vbslmi.s32','vbslpl.s32','vbslvs.s32','vbslvc.s32','vbslhi.s32','vbslls.s32','vbslge.s32','vbsllt.s32','vbslgt.s32','vbslle.s32', + 'vbsleq.s64','vbslne.s64','vbslcs.s64','vbslhs.s64','vbslcc.s64','vbsllo.s64','vbslmi.s64','vbslpl.s64','vbslvs.s64','vbslvc.s64','vbslhi.s64','vbslls.s64','vbslge.s64','vbsllt.s64','vbslgt.s64','vbslle.s64', + 'vbsleq.u8','vbslne.u8','vbslcs.u8','vbslhs.u8','vbslcc.u8','vbsllo.u8','vbslmi.u8','vbslpl.u8','vbslvs.u8','vbslvc.u8','vbslhi.u8','vbslls.u8','vbslge.u8','vbsllt.u8','vbslgt.u8','vbslle.u8', + 'vbsleq.u16','vbslne.u16','vbslcs.u16','vbslhs.u16','vbslcc.u16','vbsllo.u16','vbslmi.u16','vbslpl.u16','vbslvs.u16','vbslvc.u16','vbslhi.u16','vbslls.u16','vbslge.u16','vbsllt.u16','vbslgt.u16','vbslle.u16', + 'vbsleq.u32','vbslne.u32','vbslcs.u32','vbslhs.u32','vbslcc.u32','vbsllo.u32','vbslmi.u32','vbslpl.u32','vbslvs.u32','vbslvc.u32','vbslhi.u32','vbslls.u32','vbslge.u32','vbsllt.u32','vbslgt.u32','vbslle.u32', + 'vbsleq.u64','vbslne.u64','vbslcs.u64','vbslhs.u64','vbslcc.u64','vbsllo.u64','vbslmi.u64','vbslpl.u64','vbslvs.u64','vbslvc.u64','vbslhi.u64','vbslls.u64','vbslge.u64','vbsllt.u64','vbslgt.u64','vbslle.u64', + 'vbsleq.f32','vbslne.f32','vbslcs.f32','vbslhs.f32','vbslcc.f32','vbsllo.f32','vbslmi.f32','vbslpl.f32','vbslvs.f32','vbslvc.f32','vbslhi.f32','vbslls.f32','vbslge.f32','vbsllt.f32','vbslgt.f32','vbslle.f32', + 'vbsleq.f64','vbslne.f64','vbslcs.f64','vbslhs.f64','vbslcc.f64','vbsllo.f64','vbslmi.f64','vbslpl.f64','vbslvs.f64','vbslvc.f64','vbslhi.f64','vbslls.f64','vbslge.f64','vbsllt.f64','vbslgt.f64','vbslle.f64', + + 'veoreq','veorne','veorcs','veorhs','veorcc','veorlo','veormi','veorpl','veorvs','veorvc','veorhi','veorls','veorge','veorlt','veorgt','veorle', + 'veoreq.i8','veorne.i8','veorcs.i8','veorhs.i8','veorcc.i8','veorlo.i8','veormi.i8','veorpl.i8','veorvs.i8','veorvc.i8','veorhi.i8','veorls.i8','veorge.i8','veorlt.i8','veorgt.i8','veorle.i8', + 'veoreq.i16','veorne.i16','veorcs.i16','veorhs.i16','veorcc.i16','veorlo.i16','veormi.i16','veorpl.i16','veorvs.i16','veorvc.i16','veorhi.i16','veorls.i16','veorge.i16','veorlt.i16','veorgt.i16','veorle.i16', + 'veoreq.i32','veorne.i32','veorcs.i32','veorhs.i32','veorcc.i32','veorlo.i32','veormi.i32','veorpl.i32','veorvs.i32','veorvc.i32','veorhi.i32','veorls.i32','veorge.i32','veorlt.i32','veorgt.i32','veorle.i32', + 'veoreq.i64','veorne.i64','veorcs.i64','veorhs.i64','veorcc.i64','veorlo.i64','veormi.i64','veorpl.i64','veorvs.i64','veorvc.i64','veorhi.i64','veorls.i64','veorge.i64','veorlt.i64','veorgt.i64','veorle.i64', + 'veoreq.s8','veorne.s8','veorcs.s8','veorhs.s8','veorcc.s8','veorlo.s8','veormi.s8','veorpl.s8','veorvs.s8','veorvc.s8','veorhi.s8','veorls.s8','veorge.s8','veorlt.s8','veorgt.s8','veorle.s8', + 'veoreq.s16','veorne.s16','veorcs.s16','veorhs.s16','veorcc.s16','veorlo.s16','veormi.s16','veorpl.s16','veorvs.s16','veorvc.s16','veorhi.s16','veorls.s16','veorge.s16','veorlt.s16','veorgt.s16','veorle.s16', + 'veoreq.s32','veorne.s32','veorcs.s32','veorhs.s32','veorcc.s32','veorlo.s32','veormi.s32','veorpl.s32','veorvs.s32','veorvc.s32','veorhi.s32','veorls.s32','veorge.s32','veorlt.s32','veorgt.s32','veorle.s32', + 'veoreq.s64','veorne.s64','veorcs.s64','veorhs.s64','veorcc.s64','veorlo.s64','veormi.s64','veorpl.s64','veorvs.s64','veorvc.s64','veorhi.s64','veorls.s64','veorge.s64','veorlt.s64','veorgt.s64','veorle.s64', + 'veoreq.u8','veorne.u8','veorcs.u8','veorhs.u8','veorcc.u8','veorlo.u8','veormi.u8','veorpl.u8','veorvs.u8','veorvc.u8','veorhi.u8','veorls.u8','veorge.u8','veorlt.u8','veorgt.u8','veorle.u8', + 'veoreq.u16','veorne.u16','veorcs.u16','veorhs.u16','veorcc.u16','veorlo.u16','veormi.u16','veorpl.u16','veorvs.u16','veorvc.u16','veorhi.u16','veorls.u16','veorge.u16','veorlt.u16','veorgt.u16','veorle.u16', + 'veoreq.u32','veorne.u32','veorcs.u32','veorhs.u32','veorcc.u32','veorlo.u32','veormi.u32','veorpl.u32','veorvs.u32','veorvc.u32','veorhi.u32','veorls.u32','veorge.u32','veorlt.u32','veorgt.u32','veorle.u32', + 'veoreq.u64','veorne.u64','veorcs.u64','veorhs.u64','veorcc.u64','veorlo.u64','veormi.u64','veorpl.u64','veorvs.u64','veorvc.u64','veorhi.u64','veorls.u64','veorge.u64','veorlt.u64','veorgt.u64','veorle.u64', + 'veoreq.f32','veorne.f32','veorcs.f32','veorhs.f32','veorcc.f32','veorlo.f32','veormi.f32','veorpl.f32','veorvs.f32','veorvc.f32','veorhi.f32','veorls.f32','veorge.f32','veorlt.f32','veorgt.f32','veorle.f32', + 'veoreq.f64','veorne.f64','veorcs.f64','veorhs.f64','veorcc.f64','veorlo.f64','veormi.f64','veorpl.f64','veorvs.f64','veorvc.f64','veorhi.f64','veorls.f64','veorge.f64','veorlt.f64','veorgt.f64','veorle.f64', + + 'vmoveq','vmovne','vmovcs','vmovhs','vmovcc','vmovlo','vmovmi','vmovpl','vmovvs','vmovvc','vmovhi','vmovls','vmovge','vmovlt','vmovgt','vmovle', + 'vmoveq.8','vmovne.8','vmovcs.8','vmovhs.8','vmovcc.8','vmovlo.8','vmovmi.8','vmovpl.8','vmovvs.8','vmovvc.8','vmovhi.8','vmovls.8','vmovge.8','vmovlt.8','vmovgt.8','vmovle.8', + 'vmoveq.16','vmovne.16','vmovcs.16','vmovhs.16','vmovcc.16','vmovlo.16','vmovmi.16','vmovpl.16','vmovvs.16','vmovvc.16','vmovhi.16','vmovls.16','vmovge.16','vmovlt.16','vmovgt.16','vmovle.16', + 'vmoveq.32','vmovne.32','vmovcs.32','vmovhs.32','vmovcc.32','vmovlo.32','vmovmi.32','vmovpl.32','vmovvs.32','vmovvc.32','vmovhi.32','vmovls.32','vmovge.32','vmovlt.32','vmovgt.32','vmovle.32', + 'vmoveq.i8','vmovne.i8','vmovcs.i8','vmovhs.i8','vmovcc.i8','vmovlo.i8','vmovmi.i8','vmovpl.i8','vmovvs.i8','vmovvc.i8','vmovhi.i8','vmovls.i8','vmovge.i8','vmovlt.i8','vmovgt.i8','vmovle.i8', + 'vmoveq.i16','vmovne.i16','vmovcs.i16','vmovhs.i16','vmovcc.i16','vmovlo.i16','vmovmi.i16','vmovpl.i16','vmovvs.i16','vmovvc.i16','vmovhi.i16','vmovls.i16','vmovge.i16','vmovlt.i16','vmovgt.i16','vmovle.i16', + 'vmoveq.i32','vmovne.i32','vmovcs.i32','vmovhs.i32','vmovcc.i32','vmovlo.i32','vmovmi.i32','vmovpl.i32','vmovvs.i32','vmovvc.i32','vmovhi.i32','vmovls.i32','vmovge.i32','vmovlt.i32','vmovgt.i32','vmovle.i32', + 'vmoveq.i64','vmovne.i64','vmovcs.i64','vmovhs.i64','vmovcc.i64','vmovlo.i64','vmovmi.i64','vmovpl.i64','vmovvs.i64','vmovvc.i64','vmovhi.i64','vmovls.i64','vmovge.i64','vmovlt.i64','vmovgt.i64','vmovle.i64', + 'vmoveq.f32','vmovne.f32','vmovcs.f32','vmovhs.f32','vmovcc.f32','vmovlo.f32','vmovmi.f32','vmovpl.f32','vmovvs.f32','vmovvc.f32','vmovhi.f32','vmovls.f32','vmovge.f32','vmovlt.f32','vmovgt.f32','vmovle.f32', + 'vmoveq.f64','vmovne.f64','vmovcs.f64','vmovhs.f64','vmovcc.f64','vmovlo.f64','vmovmi.f64','vmovpl.f64','vmovvs.f64','vmovvc.f64','vmovhi.f64','vmovls.f64','vmovge.f64','vmovlt.f64','vmovgt.f64','vmovle.f64', + + 'vmvneq','vmvnne','vmvncs','vmvnhs','vmvncc','vmvnlo','vmvnmi','vmvnpl','vmvnvs','vmvnvc','vmvnhi','vmvnls','vmvnge','vmvnlt','vmvngt','vmvnle', + 'vmvneq.s8','vmvnne.s8','vmvncs.s8','vmvnhs.s8','vmvncc.s8','vmvnlo.s8','vmvnmi.s8','vmvnpl.s8','vmvnvs.s8','vmvnvc.s8','vmvnhi.s8','vmvnls.s8','vmvnge.s8','vmvnlt.s8','vmvngt.s8','vmvnle.s8', + 'vmvneq.s16','vmvnne.s16','vmvncs.s16','vmvnhs.s16','vmvncc.s16','vmvnlo.s16','vmvnmi.s16','vmvnpl.s16','vmvnvs.s16','vmvnvc.s16','vmvnhi.s16','vmvnls.s16','vmvnge.s16','vmvnlt.s16','vmvngt.s16','vmvnle.s16', + 'vmvneq.s32','vmvnne.s32','vmvncs.s32','vmvnhs.s32','vmvncc.s32','vmvnlo.s32','vmvnmi.s32','vmvnpl.s32','vmvnvs.s32','vmvnvc.s32','vmvnhi.s32','vmvnls.s32','vmvnge.s32','vmvnlt.s32','vmvngt.s32','vmvnle.s32', + 'vmvneq.s64','vmvnne.s64','vmvncs.s64','vmvnhs.s64','vmvncc.s64','vmvnlo.s64','vmvnmi.s64','vmvnpl.s64','vmvnvs.s64','vmvnvc.s64','vmvnhi.s64','vmvnls.s64','vmvnge.s64','vmvnlt.s64','vmvngt.s64','vmvnle.s64', + 'vmvneq.u8','vmvnne.u8','vmvncs.u8','vmvnhs.u8','vmvncc.u8','vmvnlo.u8','vmvnmi.u8','vmvnpl.u8','vmvnvs.u8','vmvnvc.u8','vmvnhi.u8','vmvnls.u8','vmvnge.u8','vmvnlt.u8','vmvngt.u8','vmvnle.u8', + 'vmvneq.u16','vmvnne.u16','vmvncs.u16','vmvnhs.u16','vmvncc.u16','vmvnlo.u16','vmvnmi.u16','vmvnpl.u16','vmvnvs.u16','vmvnvc.u16','vmvnhi.u16','vmvnls.u16','vmvnge.u16','vmvnlt.u16','vmvngt.u16','vmvnle.u16', + 'vmvneq.u32','vmvnne.u32','vmvncs.u32','vmvnhs.u32','vmvncc.u32','vmvnlo.u32','vmvnmi.u32','vmvnpl.u32','vmvnvs.u32','vmvnvc.u32','vmvnhi.u32','vmvnls.u32','vmvnge.u32','vmvnlt.u32','vmvngt.u32','vmvnle.u32', + 'vmvneq.u64','vmvnne.u64','vmvncs.u64','vmvnhs.u64','vmvncc.u64','vmvnlo.u64','vmvnmi.u64','vmvnpl.u64','vmvnvs.u64','vmvnvc.u64','vmvnhi.u64','vmvnls.u64','vmvnge.u64','vmvnlt.u64','vmvngt.u64','vmvnle.u64', + 'vmvneq.i8','vmvnne.i8','vmvncs.i8','vmvnhs.i8','vmvncc.i8','vmvnlo.i8','vmvnmi.i8','vmvnpl.i8','vmvnvs.i8','vmvnvc.i8','vmvnhi.i8','vmvnls.i8','vmvnge.i8','vmvnlt.i8','vmvngt.i8','vmvnle.i8', + 'vmvneq.i16','vmvnne.i16','vmvncs.i16','vmvnhs.i16','vmvncc.i16','vmvnlo.i16','vmvnmi.i16','vmvnpl.i16','vmvnvs.i16','vmvnvc.i16','vmvnhi.i16','vmvnls.i16','vmvnge.i16','vmvnlt.i16','vmvngt.i16','vmvnle.i16', + 'vmvneq.i32','vmvnne.i32','vmvncs.i32','vmvnhs.i32','vmvncc.i32','vmvnlo.i32','vmvnmi.i32','vmvnpl.i32','vmvnvs.i32','vmvnvc.i32','vmvnhi.i32','vmvnls.i32','vmvnge.i32','vmvnlt.i32','vmvngt.i32','vmvnle.i32', + 'vmvneq.i64','vmvnne.i64','vmvncs.i64','vmvnhs.i64','vmvncc.i64','vmvnlo.i64','vmvnmi.i64','vmvnpl.i64','vmvnvs.i64','vmvnvc.i64','vmvnhi.i64','vmvnls.i64','vmvnge.i64','vmvnlt.i64','vmvngt.i64','vmvnle.i64', + 'vmvneq.f32','vmvnne.f32','vmvncs.f32','vmvnhs.f32','vmvncc.f32','vmvnlo.f32','vmvnmi.f32','vmvnpl.f32','vmvnvs.f32','vmvnvc.f32','vmvnhi.f32','vmvnls.f32','vmvnge.f32','vmvnlt.f32','vmvngt.f32','vmvnle.f32', + 'vmvneq.f64','vmvnne.f64','vmvncs.f64','vmvnhs.f64','vmvncc.f64','vmvnlo.f64','vmvnmi.f64','vmvnpl.f64','vmvnvs.f64','vmvnvc.f64','vmvnhi.f64','vmvnls.f64','vmvnge.f64','vmvnlt.f64','vmvngt.f64','vmvnle.f64', + + 'vorneq','vornne','vorncs','vornhs','vorncc','vornlo','vornmi','vornpl','vornvs','vornvc','vornhi','vornls','vornge','vornlt','vorngt','vornle', + 'vorneq.s8','vornne.s8','vorncs.s8','vornhs.s8','vorncc.s8','vornlo.s8','vornmi.s8','vornpl.s8','vornvs.s8','vornvc.s8','vornhi.s8','vornls.s8','vornge.s8','vornlt.s8','vorngt.s8','vornle.s8', + 'vorneq.s16','vornne.s16','vorncs.s16','vornhs.s16','vorncc.s16','vornlo.s16','vornmi.s16','vornpl.s16','vornvs.s16','vornvc.s16','vornhi.s16','vornls.s16','vornge.s16','vornlt.s16','vorngt.s16','vornle.s16', + 'vorneq.s32','vornne.s32','vorncs.s32','vornhs.s32','vorncc.s32','vornlo.s32','vornmi.s32','vornpl.s32','vornvs.s32','vornvc.s32','vornhi.s32','vornls.s32','vornge.s32','vornlt.s32','vorngt.s32','vornle.s32', + 'vorneq.s64','vornne.s64','vorncs.s64','vornhs.s64','vorncc.s64','vornlo.s64','vornmi.s64','vornpl.s64','vornvs.s64','vornvc.s64','vornhi.s64','vornls.s64','vornge.s64','vornlt.s64','vorngt.s64','vornle.s64', + 'vorneq.u8','vornne.u8','vorncs.u8','vornhs.u8','vorncc.u8','vornlo.u8','vornmi.u8','vornpl.u8','vornvs.u8','vornvc.u8','vornhi.u8','vornls.u8','vornge.u8','vornlt.u8','vorngt.u8','vornle.u8', + 'vorneq.u16','vornne.u16','vorncs.u16','vornhs.u16','vorncc.u16','vornlo.u16','vornmi.u16','vornpl.u16','vornvs.u16','vornvc.u16','vornhi.u16','vornls.u16','vornge.u16','vornlt.u16','vorngt.u16','vornle.u16', + 'vorneq.u32','vornne.u32','vorncs.u32','vornhs.u32','vorncc.u32','vornlo.u32','vornmi.u32','vornpl.u32','vornvs.u32','vornvc.u32','vornhi.u32','vornls.u32','vornge.u32','vornlt.u32','vorngt.u32','vornle.u32', + 'vorneq.u64','vornne.u64','vorncs.u64','vornhs.u64','vorncc.u64','vornlo.u64','vornmi.u64','vornpl.u64','vornvs.u64','vornvc.u64','vornhi.u64','vornls.u64','vornge.u64','vornlt.u64','vorngt.u64','vornle.u64', + 'vorneq.i8','vornne.i8','vorncs.i8','vornhs.i8','vorncc.i8','vornlo.i8','vornmi.i8','vornpl.i8','vornvs.i8','vornvc.i8','vornhi.i8','vornls.i8','vornge.i8','vornlt.i8','vorngt.i8','vornle.i8', + 'vorneq.i16','vornne.i16','vorncs.i16','vornhs.i16','vorncc.i16','vornlo.i16','vornmi.i16','vornpl.i16','vornvs.i16','vornvc.i16','vornhi.i16','vornls.i16','vornge.i16','vornlt.i16','vorngt.i16','vornle.i16', + 'vorneq.i32','vornne.i32','vorncs.i32','vornhs.i32','vorncc.i32','vornlo.i32','vornmi.i32','vornpl.i32','vornvs.i32','vornvc.i32','vornhi.i32','vornls.i32','vornge.i32','vornlt.i32','vorngt.i32','vornle.i32', + 'vorneq.i64','vornne.i64','vorncs.i64','vornhs.i64','vorncc.i64','vornlo.i64','vornmi.i64','vornpl.i64','vornvs.i64','vornvc.i64','vornhi.i64','vornls.i64','vornge.i64','vornlt.i64','vorngt.i64','vornle.i64', + 'vorneq.f32','vornne.f32','vorncs.f32','vornhs.f32','vorncc.f32','vornlo.f32','vornmi.f32','vornpl.f32','vornvs.f32','vornvc.f32','vornhi.f32','vornls.f32','vornge.f32','vornlt.f32','vorngt.f32','vornle.f32', + 'vorneq.f64','vornne.f64','vorncs.f64','vornhs.f64','vorncc.f64','vornlo.f64','vornmi.f64','vornpl.f64','vornvs.f64','vornvc.f64','vornhi.f64','vornls.f64','vornge.f64','vornlt.f64','vorngt.f64','vornle.f64', + + 'vorreq','vorrne','vorrcs','vorrhs','vorrcc','vorrlo','vorrmi','vorrpl','vorrvs','vorrvc','vorrhi','vorrls','vorrge','vorrlt','vorrgt','vorrle', + 'vorreq.s8','vorrne.s8','vorrcs.s8','vorrhs.s8','vorrcc.s8','vorrlo.s8','vorrmi.s8','vorrpl.s8','vorrvs.s8','vorrvc.s8','vorrhi.s8','vorrls.s8','vorrge.s8','vorrlt.s8','vorrgt.s8','vorrle.s8', + 'vorreq.s16','vorrne.s16','vorrcs.s16','vorrhs.s16','vorrcc.s16','vorrlo.s16','vorrmi.s16','vorrpl.s16','vorrvs.s16','vorrvc.s16','vorrhi.s16','vorrls.s16','vorrge.s16','vorrlt.s16','vorrgt.s16','vorrle.s16', + 'vorreq.s32','vorrne.s32','vorrcs.s32','vorrhs.s32','vorrcc.s32','vorrlo.s32','vorrmi.s32','vorrpl.s32','vorrvs.s32','vorrvc.s32','vorrhi.s32','vorrls.s32','vorrge.s32','vorrlt.s32','vorrgt.s32','vorrle.s32', + 'vorreq.s64','vorrne.s64','vorrcs.s64','vorrhs.s64','vorrcc.s64','vorrlo.s64','vorrmi.s64','vorrpl.s64','vorrvs.s64','vorrvc.s64','vorrhi.s64','vorrls.s64','vorrge.s64','vorrlt.s64','vorrgt.s64','vorrle.s64', + 'vorreq.u8','vorrne.u8','vorrcs.u8','vorrhs.u8','vorrcc.u8','vorrlo.u8','vorrmi.u8','vorrpl.u8','vorrvs.u8','vorrvc.u8','vorrhi.u8','vorrls.u8','vorrge.u8','vorrlt.u8','vorrgt.u8','vorrle.u8', + 'vorreq.u16','vorrne.u16','vorrcs.u16','vorrhs.u16','vorrcc.u16','vorrlo.u16','vorrmi.u16','vorrpl.u16','vorrvs.u16','vorrvc.u16','vorrhi.u16','vorrls.u16','vorrge.u16','vorrlt.u16','vorrgt.u16','vorrle.u16', + 'vorreq.u32','vorrne.u32','vorrcs.u32','vorrhs.u32','vorrcc.u32','vorrlo.u32','vorrmi.u32','vorrpl.u32','vorrvs.u32','vorrvc.u32','vorrhi.u32','vorrls.u32','vorrge.u32','vorrlt.u32','vorrgt.u32','vorrle.u32', + 'vorreq.u64','vorrne.u64','vorrcs.u64','vorrhs.u64','vorrcc.u64','vorrlo.u64','vorrmi.u64','vorrpl.u64','vorrvs.u64','vorrvc.u64','vorrhi.u64','vorrls.u64','vorrge.u64','vorrlt.u64','vorrgt.u64','vorrle.u64', + 'vorreq.i8','vorrne.i8','vorrcs.i8','vorrhs.i8','vorrcc.i8','vorrlo.i8','vorrmi.i8','vorrpl.i8','vorrvs.i8','vorrvc.i8','vorrhi.i8','vorrls.i8','vorrge.i8','vorrlt.i8','vorrgt.i8','vorrle.i8', + 'vorreq.i16','vorrne.i16','vorrcs.i16','vorrhs.i16','vorrcc.i16','vorrlo.i16','vorrmi.i16','vorrpl.i16','vorrvs.i16','vorrvc.i16','vorrhi.i16','vorrls.i16','vorrge.i16','vorrlt.i16','vorrgt.i16','vorrle.i16', + 'vorreq.i32','vorrne.i32','vorrcs.i32','vorrhs.i32','vorrcc.i32','vorrlo.i32','vorrmi.i32','vorrpl.i32','vorrvs.i32','vorrvc.i32','vorrhi.i32','vorrls.i32','vorrge.i32','vorrlt.i32','vorrgt.i32','vorrle.i32', + 'vorreq.i64','vorrne.i64','vorrcs.i64','vorrhs.i64','vorrcc.i64','vorrlo.i64','vorrmi.i64','vorrpl.i64','vorrvs.i64','vorrvc.i64','vorrhi.i64','vorrls.i64','vorrge.i64','vorrlt.i64','vorrgt.i64','vorrle.i64', + 'vorreq.f32','vorrne.f32','vorrcs.f32','vorrhs.f32','vorrcc.f32','vorrlo.f32','vorrmi.f32','vorrpl.f32','vorrvs.f32','vorrvc.f32','vorrhi.f32','vorrls.f32','vorrge.f32','vorrlt.f32','vorrgt.f32','vorrle.f32', + 'vorreq.f64','vorrne.f64','vorrcs.f64','vorrhs.f64','vorrcc.f64','vorrlo.f64','vorrmi.f64','vorrpl.f64','vorrvs.f64','vorrvc.f64','vorrhi.f64','vorrls.f64','vorrge.f64','vorrlt.f64','vorrgt.f64','vorrle.f64', + + 'vswpeq','vswpne','vswpcs','vswphs','vswpcc','vswplo','vswpmi','vswppl','vswpvs','vswpvc','vswphi','vswpls','vswpge','vswplt','vswpgt','vswple', + 'vswpeq.s8','vswpne.s8','vswpcs.s8','vswphs.s8','vswpcc.s8','vswplo.s8','vswpmi.s8','vswppl.s8','vswpvs.s8','vswpvc.s8','vswphi.s8','vswpls.s8','vswpge.s8','vswplt.s8','vswpgt.s8','vswple.s8', + 'vswpeq.s16','vswpne.s16','vswpcs.s16','vswphs.s16','vswpcc.s16','vswplo.s16','vswpmi.s16','vswppl.s16','vswpvs.s16','vswpvc.s16','vswphi.s16','vswpls.s16','vswpge.s16','vswplt.s16','vswpgt.s16','vswple.s16', + 'vswpeq.s32','vswpne.s32','vswpcs.s32','vswphs.s32','vswpcc.s32','vswplo.s32','vswpmi.s32','vswppl.s32','vswpvs.s32','vswpvc.s32','vswphi.s32','vswpls.s32','vswpge.s32','vswplt.s32','vswpgt.s32','vswple.s32', + 'vswpeq.s64','vswpne.s64','vswpcs.s64','vswphs.s64','vswpcc.s64','vswplo.s64','vswpmi.s64','vswppl.s64','vswpvs.s64','vswpvc.s64','vswphi.s64','vswpls.s64','vswpge.s64','vswplt.s64','vswpgt.s64','vswple.s64', + 'vswpeq.u8','vswpne.u8','vswpcs.u8','vswphs.u8','vswpcc.u8','vswplo.u8','vswpmi.u8','vswppl.u8','vswpvs.u8','vswpvc.u8','vswphi.u8','vswpls.u8','vswpge.u8','vswplt.u8','vswpgt.u8','vswple.u8', + 'vswpeq.u16','vswpne.u16','vswpcs.u16','vswphs.u16','vswpcc.u16','vswplo.u16','vswpmi.u16','vswppl.u16','vswpvs.u16','vswpvc.u16','vswphi.u16','vswpls.u16','vswpge.u16','vswplt.u16','vswpgt.u16','vswple.u16', + 'vswpeq.u32','vswpne.u32','vswpcs.u32','vswphs.u32','vswpcc.u32','vswplo.u32','vswpmi.u32','vswppl.u32','vswpvs.u32','vswpvc.u32','vswphi.u32','vswpls.u32','vswpge.u32','vswplt.u32','vswpgt.u32','vswple.u32', + 'vswpeq.u64','vswpne.u64','vswpcs.u64','vswphs.u64','vswpcc.u64','vswplo.u64','vswpmi.u64','vswppl.u64','vswpvs.u64','vswpvc.u64','vswphi.u64','vswpls.u64','vswpge.u64','vswplt.u64','vswpgt.u64','vswple.u64', + 'vswpeq.i8','vswpne.i8','vswpcs.i8','vswphs.i8','vswpcc.i8','vswplo.i8','vswpmi.i8','vswppl.i8','vswpvs.i8','vswpvc.i8','vswphi.i8','vswpls.i8','vswpge.i8','vswplt.i8','vswpgt.i8','vswple.i8', + 'vswpeq.i16','vswpne.i16','vswpcs.i16','vswphs.i16','vswpcc.i16','vswplo.i16','vswpmi.i16','vswppl.i16','vswpvs.i16','vswpvc.i16','vswphi.i16','vswpls.i16','vswpge.i16','vswplt.i16','vswpgt.i16','vswple.i16', + 'vswpeq.i32','vswpne.i32','vswpcs.i32','vswphs.i32','vswpcc.i32','vswplo.i32','vswpmi.i32','vswppl.i32','vswpvs.i32','vswpvc.i32','vswphi.i32','vswpls.i32','vswpge.i32','vswplt.i32','vswpgt.i32','vswple.i32', + 'vswpeq.i64','vswpne.i64','vswpcs.i64','vswphs.i64','vswpcc.i64','vswplo.i64','vswpmi.i64','vswppl.i64','vswpvs.i64','vswpvc.i64','vswphi.i64','vswpls.i64','vswpge.i64','vswplt.i64','vswpgt.i64','vswple.i64', + 'vswpeq.f32','vswpne.f32','vswpcs.f32','vswphs.f32','vswpcc.f32','vswplo.f32','vswpmi.f32','vswppl.f32','vswpvs.f32','vswpvc.f32','vswphi.f32','vswpls.f32','vswpge.f32','vswplt.f32','vswpgt.f32','vswple.f32', + 'vswpeq.f64','vswpne.f64','vswpcs.f64','vswphs.f64','vswpcc.f64','vswplo.f64','vswpmi.f64','vswppl.f64','vswpvs.f64','vswpvc.f64','vswphi.f64','vswpls.f64','vswpge.f64','vswplt.f64','vswpgt.f64','vswple.f64' + ), + /* Conditional NEON SIMD ARM Registers Interop Instructions */ + 29 => array( + 'vmrseq','vmrsne','vmrscs','vmrshs','vmrscc','vmrslo','vmrsmi','vmrspl','vmrsvs','vmrsvc','vmrshi','vmrsls','vmrsge','vmrslt','vmrsgt','vmrsle', + 'vmsreq','vmsrne','vmsrcs','vmsrhs','vmsrcc','vmsrlo','vmsrmi','vmsrpl','vmsrvs','vmsrvc','vmsrhi','vmsrls','vmsrge','vmsrlt','vmsrgt','vmsrle' + ), + /* Conditional NEON SIMD Bit/Byte-Level Instructions */ + 30 => array( + 'vcnteq.8','vcntne.8','vcntcs.8','vcnths.8','vcntcc.8','vcntlo.8','vcntmi.8','vcntpl.8','vcntvs.8','vcntvc.8','vcnthi.8','vcntls.8','vcntge.8','vcntlt.8','vcntgt.8','vcntle.8', + 'vdupeq.8','vdupne.8','vdupcs.8','vduphs.8','vdupcc.8','vduplo.8','vdupmi.8','vduppl.8','vdupvs.8','vdupvc.8','vduphi.8','vdupls.8','vdupge.8','vduplt.8','vdupgt.8','vduple.8', + + 'vdupeq.16','vdupne.16','vdupcs.16','vduphs.16','vdupcc.16','vduplo.16','vdupmi.16','vduppl.16','vdupvs.16','vdupvc.16','vduphi.16','vdupls.16','vdupge.16','vduplt.16','vdupgt.16','vduple.16', + 'vdupeq.32','vdupne.32','vdupcs.32','vduphs.32','vdupcc.32','vduplo.32','vdupmi.32','vduppl.32','vdupvs.32','vdupvc.32','vduphi.32','vdupls.32','vdupge.32','vduplt.32','vdupgt.32','vduple.32', + + 'vexteq.8','vextne.8','vextcs.8','vexths.8','vextcc.8','vextlo.8','vextmi.8','vextpl.8','vextvs.8','vextvc.8','vexthi.8','vextls.8','vextge.8','vextlt.8','vextgt.8','vextle.8', + 'vexteq.16','vextne.16','vextcs.16','vexths.16','vextcc.16','vextlo.16','vextmi.16','vextpl.16','vextvs.16','vextvc.16','vexthi.16','vextls.16','vextge.16','vextlt.16','vextgt.16','vextle.16', + + 'vexteq.32','vextne.32','vextcs.32','vexths.32','vextcc.32','vextlo.32','vextmi.32','vextpl.32','vextvs.32','vextvc.32','vexthi.32','vextls.32','vextge.32','vextlt.32','vextgt.32','vextle.32', + 'vexteq.64','vextne.64','vextcs.64','vexths.64','vextcc.64','vextlo.64','vextmi.64','vextpl.64','vextvs.64','vextvc.64','vexthi.64','vextls.64','vextge.64','vextlt.64','vextgt.64','vextle.64', + + 'vrev16eq.8','vrev16ne.8','vrev16cs.8','vrev16hs.8','vrev16cc.8','vrev16lo.8','vrev16mi.8','vrev16pl.8','vrev16vs.8','vrev16vc.8','vrev16hi.8','vrev16ls.8','vrev16ge.8','vrev16lt.8','vrev16gt.8','vrev16le.8', + 'vrev32eq.8','vrev32ne.8','vrev32cs.8','vrev32hs.8','vrev32cc.8','vrev32lo.8','vrev32mi.8','vrev32pl.8','vrev32vs.8','vrev32vc.8','vrev32hi.8','vrev32ls.8','vrev32ge.8','vrev32lt.8','vrev32gt.8','vrev32le.8', + 'vrev32eq.16','vrev32ne.16','vrev32cs.16','vrev32hs.16','vrev32cc.16','vrev32lo.16','vrev32mi.16','vrev32pl.16','vrev32vs.16','vrev32vc.16','vrev32hi.16','vrev32ls.16','vrev32ge.16','vrev32lt.16','vrev32gt.16','vrev32le.16', + 'vrev64eq.8','vrev64ne.8','vrev64cs.8','vrev64hs.8','vrev64cc.8','vrev64lo.8','vrev64mi.8','vrev64pl.8','vrev64vs.8','vrev64vc.8','vrev64hi.8','vrev64ls.8','vrev64ge.8','vrev64lt.8','vrev64gt.8','vrev64le.8', + 'vrev64eq.16','vrev64ne.16','vrev64cs.16','vrev64hs.16','vrev64cc.16','vrev64lo.16','vrev64mi.16','vrev64pl.16','vrev64vs.16','vrev64vc.16','vrev64hi.16','vrev64ls.16','vrev64ge.16','vrev64lt.16','vrev64gt.16','vrev64le.16', + 'vrev64eq.32','vrev64ne.32','vrev64cs.32','vrev64hs.32','vrev64cc.32','vrev64lo.32','vrev64mi.32','vrev64pl.32','vrev64vs.32','vrev64vc.32','vrev64hi.32','vrev64ls.32','vrev64ge.32','vrev64lt.32','vrev64gt.32','vrev64le.32', + + 'vslieq.8','vsline.8','vslics.8','vslihs.8','vslicc.8','vslilo.8','vslimi.8','vslipl.8','vslivs.8','vslivc.8','vslihi.8','vslils.8','vslige.8','vslilt.8','vsligt.8','vslile.8', + 'vslieq.16','vsline.16','vslics.16','vslihs.16','vslicc.16','vslilo.16','vslimi.16','vslipl.16','vslivs.16','vslivc.16','vslihi.16','vslils.16','vslige.16','vslilt.16','vsligt.16','vslile.16', + 'vslieq.32','vsline.32','vslics.32','vslihs.32','vslicc.32','vslilo.32','vslimi.32','vslipl.32','vslivs.32','vslivc.32','vslihi.32','vslils.32','vslige.32','vslilt.32','vsligt.32','vslile.32', + 'vslieq.64','vsline.64','vslics.64','vslihs.64','vslicc.64','vslilo.64','vslimi.64','vslipl.64','vslivs.64','vslivc.64','vslihi.64','vslils.64','vslige.64','vslilt.64','vsligt.64','vslile.64', + + 'vsrieq.8','vsrine.8','vsrics.8','vsrihs.8','vsricc.8','vsrilo.8','vsrimi.8','vsripl.8','vsrivs.8','vsrivc.8','vsrihi.8','vsrils.8','vsrige.8','vsrilt.8','vsrigt.8','vsrile.8', + 'vsrieq.16','vsrine.16','vsrics.16','vsrihs.16','vsricc.16','vsrilo.16','vsrimi.16','vsripl.16','vsrivs.16','vsrivc.16','vsrihi.16','vsrils.16','vsrige.16','vsrilt.16','vsrigt.16','vsrile.16', + 'vsrieq.32','vsrine.32','vsrics.32','vsrihs.32','vsricc.32','vsrilo.32','vsrimi.32','vsripl.32','vsrivs.32','vsrivc.32','vsrihi.32','vsrils.32','vsrige.32','vsrilt.32','vsrigt.32','vsrile.32', + 'vsrieq.64','vsrine.64','vsrics.64','vsrihs.64','vsricc.64','vsrilo.64','vsrimi.64','vsripl.64','vsrivs.64','vsrivc.64','vsrihi.64','vsrils.64','vsrige.64','vsrilt.64','vsrigt.64','vsrile.64', + + 'vtbleq.8','vtblne.8','vtblcs.8','vtblhs.8','vtblcc.8','vtbllo.8','vtblmi.8','vtblpl.8','vtblvs.8','vtblvc.8','vtblhi.8','vtblls.8','vtblge.8','vtbllt.8','vtblgt.8','vtblle.8', + + 'vtbxeq','vtbxne','vtbxcs','vtbxhs','vtbxcc','vtbxlo','vtbxmi','vtbxpl','vtbxvs','vtbxvc','vtbxhi','vtbxls','vtbxge','vtbxlt','vtbxgt','vtbxle', + + 'vtrneq.8','vtrnne.8','vtrncs.8','vtrnhs.8','vtrncc.8','vtrnlo.8','vtrnmi.8','vtrnpl.8','vtrnvs.8','vtrnvc.8','vtrnhi.8','vtrnls.8','vtrnge.8','vtrnlt.8','vtrngt.8','vtrnle.8', + 'vtrneq.16','vtrnne.16','vtrncs.16','vtrnhs.16','vtrncc.16','vtrnlo.16','vtrnmi.16','vtrnpl.16','vtrnvs.16','vtrnvc.16','vtrnhi.16','vtrnls.16','vtrnge.16','vtrnlt.16','vtrngt.16','vtrnle.16', + 'vtrneq.32','vtrnne.32','vtrncs.32','vtrnhs.32','vtrncc.32','vtrnlo.32','vtrnmi.32','vtrnpl.32','vtrnvs.32','vtrnvc.32','vtrnhi.32','vtrnls.32','vtrnge.32','vtrnlt.32','vtrngt.32','vtrnle.32', + + 'vtsteq.8','vtstne.8','vtstcs.8','vtsths.8','vtstcc.8','vtstlo.8','vtstmi.8','vtstpl.8','vtstvs.8','vtstvc.8','vtsthi.8','vtstls.8','vtstge.8','vtstlt.8','vtstgt.8','vtstle.8', + 'vtsteq.16','vtstne.16','vtstcs.16','vtsths.16','vtstcc.16','vtstlo.16','vtstmi.16','vtstpl.16','vtstvs.16','vtstvc.16','vtsthi.16','vtstls.16','vtstge.16','vtstlt.16','vtstgt.16','vtstle.16', + 'vtsteq.32','vtstne.32','vtstcs.32','vtsths.32','vtstcc.32','vtstlo.32','vtstmi.32','vtstpl.32','vtstvs.32','vtstvc.32','vtsthi.32','vtstls.32','vtstge.32','vtstlt.32','vtstgt.32','vtstle.32', + + 'vuzpeq.8','vuzpne.8','vuzpcs.8','vuzphs.8','vuzpcc.8','vuzplo.8','vuzpmi.8','vuzppl.8','vuzpvs.8','vuzpvc.8','vuzphi.8','vuzpls.8','vuzpge.8','vuzplt.8','vuzpgt.8','vuzple.8', + 'vuzpeq.16','vuzpne.16','vuzpcs.16','vuzphs.16','vuzpcc.16','vuzplo.16','vuzpmi.16','vuzppl.16','vuzpvs.16','vuzpvc.16','vuzphi.16','vuzpls.16','vuzpge.16','vuzplt.16','vuzpgt.16','vuzple.16', + 'vuzpeq.32','vuzpne.32','vuzpcs.32','vuzphs.32','vuzpcc.32','vuzplo.32','vuzpmi.32','vuzppl.32','vuzpvs.32','vuzpvc.32','vuzphi.32','vuzpls.32','vuzpge.32','vuzplt.32','vuzpgt.32','vuzple.32', + + 'vzipeq.8','vzipne.8','vzipcs.8','vziphs.8','vzipcc.8','vziplo.8','vzipmi.8','vzippl.8','vzipvs.8','vzipvc.8','vziphi.8','vzipls.8','vzipge.8','vziplt.8','vzipgt.8','vziple.8', + 'vzipeq.16','vzipne.16','vzipcs.16','vziphs.16','vzipcc.16','vziplo.16','vzipmi.16','vzippl.16','vzipvs.16','vzipvc.16','vziphi.16','vzipls.16','vzipge.16','vziplt.16','vzipgt.16','vziple.16', + 'vzipeq.32','vzipne.32','vzipcs.32','vziphs.32','vzipcc.32','vziplo.32','vzipmi.32','vzippl.32','vzipvs.32','vzipvc.32','vziphi.32','vzipls.32','vzipge.32','vziplt.32','vzipgt.32','vziple.32', + + 'vmulleq.p8','vmullne.p8','vmullcs.p8','vmullhs.p8','vmullcc.p8','vmulllo.p8','vmullmi.p8','vmullpl.p8','vmullvs.p8','vmullvc.p8','vmullhi.p8','vmullls.p8','vmullge.p8','vmulllt.p8','vmullgt.p8','vmullle.p8' + ), + /* Conditional NEON SIMD Universal Integer Instructions */ + 31 => array( + 'vaddeq.i8','vaddne.i8','vaddcs.i8','vaddhs.i8','vaddcc.i8','vaddlo.i8','vaddmi.i8','vaddpl.i8','vaddvs.i8','vaddvc.i8','vaddhi.i8','vaddls.i8','vaddge.i8','vaddlt.i8','vaddgt.i8','vaddle.i8', + 'vaddeq.i16','vaddne.i16','vaddcs.i16','vaddhs.i16','vaddcc.i16','vaddlo.i16','vaddmi.i16','vaddpl.i16','vaddvs.i16','vaddvc.i16','vaddhi.i16','vaddls.i16','vaddge.i16','vaddlt.i16','vaddgt.i16','vaddle.i16', + 'vaddeq.i32','vaddne.i32','vaddcs.i32','vaddhs.i32','vaddcc.i32','vaddlo.i32','vaddmi.i32','vaddpl.i32','vaddvs.i32','vaddvc.i32','vaddhi.i32','vaddls.i32','vaddge.i32','vaddlt.i32','vaddgt.i32','vaddle.i32', + 'vaddeq.i64','vaddne.i64','vaddcs.i64','vaddhs.i64','vaddcc.i64','vaddlo.i64','vaddmi.i64','vaddpl.i64','vaddvs.i64','vaddvc.i64','vaddhi.i64','vaddls.i64','vaddge.i64','vaddlt.i64','vaddgt.i64','vaddle.i64', + + 'vsubeq.i8','vsubne.i8','vsubcs.i8','vsubhs.i8','vsubcc.i8','vsublo.i8','vsubmi.i8','vsubpl.i8','vsubvs.i8','vsubvc.i8','vsubhi.i8','vsubls.i8','vsubge.i8','vsublt.i8','vsubgt.i8','vsuble.i8', + 'vsubeq.i16','vsubne.i16','vsubcs.i16','vsubhs.i16','vsubcc.i16','vsublo.i16','vsubmi.i16','vsubpl.i16','vsubvs.i16','vsubvc.i16','vsubhi.i16','vsubls.i16','vsubge.i16','vsublt.i16','vsubgt.i16','vsuble.i16', + 'vsubeq.i32','vsubne.i32','vsubcs.i32','vsubhs.i32','vsubcc.i32','vsublo.i32','vsubmi.i32','vsubpl.i32','vsubvs.i32','vsubvc.i32','vsubhi.i32','vsubls.i32','vsubge.i32','vsublt.i32','vsubgt.i32','vsuble.i32', + 'vsubeq.i64','vsubne.i64','vsubcs.i64','vsubhs.i64','vsubcc.i64','vsublo.i64','vsubmi.i64','vsubpl.i64','vsubvs.i64','vsubvc.i64','vsubhi.i64','vsubls.i64','vsubge.i64','vsublt.i64','vsubgt.i64','vsuble.i64', + + 'vaddhneq.i16','vaddhnne.i16','vaddhncs.i16','vaddhnhs.i16','vaddhncc.i16','vaddhnlo.i16','vaddhnmi.i16','vaddhnpl.i16','vaddhnvs.i16','vaddhnvc.i16','vaddhnhi.i16','vaddhnls.i16','vaddhnge.i16','vaddhnlt.i16','vaddhngt.i16','vaddhnle.i16', + 'vaddhneq.i32','vaddhnne.i32','vaddhncs.i32','vaddhnhs.i32','vaddhncc.i32','vaddhnlo.i32','vaddhnmi.i32','vaddhnpl.i32','vaddhnvs.i32','vaddhnvc.i32','vaddhnhi.i32','vaddhnls.i32','vaddhnge.i32','vaddhnlt.i32','vaddhngt.i32','vaddhnle.i32', + 'vaddhneq.i64','vaddhnne.i64','vaddhncs.i64','vaddhnhs.i64','vaddhncc.i64','vaddhnlo.i64','vaddhnmi.i64','vaddhnpl.i64','vaddhnvs.i64','vaddhnvc.i64','vaddhnhi.i64','vaddhnls.i64','vaddhnge.i64','vaddhnlt.i64','vaddhngt.i64','vaddhnle.i64', + + 'vsubhneq.i16','vsubhnne.i16','vsubhncs.i16','vsubhnhs.i16','vsubhncc.i16','vsubhnlo.i16','vsubhnmi.i16','vsubhnpl.i16','vsubhnvs.i16','vsubhnvc.i16','vsubhnhi.i16','vsubhnls.i16','vsubhnge.i16','vsubhnlt.i16','vsubhngt.i16','vsubhnle.i16', + 'vsubhneq.i32','vsubhnne.i32','vsubhncs.i32','vsubhnhs.i32','vsubhncc.i32','vsubhnlo.i32','vsubhnmi.i32','vsubhnpl.i32','vsubhnvs.i32','vsubhnvc.i32','vsubhnhi.i32','vsubhnls.i32','vsubhnge.i32','vsubhnlt.i32','vsubhngt.i32','vsubhnle.i32', + 'vsubhneq.i64','vsubhnne.i64','vsubhncs.i64','vsubhnhs.i64','vsubhncc.i64','vsubhnlo.i64','vsubhnmi.i64','vsubhnpl.i64','vsubhnvs.i64','vsubhnvc.i64','vsubhnhi.i64','vsubhnls.i64','vsubhnge.i64','vsubhnlt.i64','vsubhngt.i64','vsubhnle.i64', + + 'vraddhneq.i16','vraddhnne.i16','vraddhncs.i16','vraddhnhs.i16','vraddhncc.i16','vraddhnlo.i16','vraddhnmi.i16','vraddhnpl.i16','vraddhnvs.i16','vraddhnvc.i16','vraddhnhi.i16','vraddhnls.i16','vraddhnge.i16','vraddhnlt.i16','vraddhngt.i16','vraddhnle.i16', + 'vraddhneq.i32','vraddhnne.i32','vraddhncs.i32','vraddhnhs.i32','vraddhncc.i32','vraddhnlo.i32','vraddhnmi.i32','vraddhnpl.i32','vraddhnvs.i32','vraddhnvc.i32','vraddhnhi.i32','vraddhnls.i32','vraddhnge.i32','vraddhnlt.i32','vraddhngt.i32','vraddhnle.i32', + 'vraddhneq.i64','vraddhnne.i64','vraddhncs.i64','vraddhnhs.i64','vraddhncc.i64','vraddhnlo.i64','vraddhnmi.i64','vraddhnpl.i64','vraddhnvs.i64','vraddhnvc.i64','vraddhnhi.i64','vraddhnls.i64','vraddhnge.i64','vraddhnlt.i64','vraddhngt.i64','vraddhnle.i64', + + 'vrsubhneq.i16','vrsubhnne.i16','vrsubhncs.i16','vrsubhnhs.i16','vrsubhncc.i16','vrsubhnlo.i16','vrsubhnmi.i16','vrsubhnpl.i16','vrsubhnvs.i16','vrsubhnvc.i16','vrsubhnhi.i16','vrsubhnls.i16','vrsubhnge.i16','vrsubhnlt.i16','vrsubhngt.i16','vrsubhnle.i16', + 'vrsubhneq.i32','vrsubhnne.i32','vrsubhncs.i32','vrsubhnhs.i32','vrsubhncc.i32','vrsubhnlo.i32','vrsubhnmi.i32','vrsubhnpl.i32','vrsubhnvs.i32','vrsubhnvc.i32','vrsubhnhi.i32','vrsubhnls.i32','vrsubhnge.i32','vrsubhnlt.i32','vrsubhngt.i32','vrsubhnle.i32', + 'vrsubhneq.i64','vrsubhnne.i64','vrsubhncs.i64','vrsubhnhs.i64','vrsubhncc.i64','vrsubhnlo.i64','vrsubhnmi.i64','vrsubhnpl.i64','vrsubhnvs.i64','vrsubhnvc.i64','vrsubhnhi.i64','vrsubhnls.i64','vrsubhnge.i64','vrsubhnlt.i64','vrsubhngt.i64','vrsubhnle.i64', + + 'vpaddeq.i8','vpaddne.i8','vpaddcs.i8','vpaddhs.i8','vpaddcc.i8','vpaddlo.i8','vpaddmi.i8','vpaddpl.i8','vpaddvs.i8','vpaddvc.i8','vpaddhi.i8','vpaddls.i8','vpaddge.i8','vpaddlt.i8','vpaddgt.i8','vpaddle.i8', + 'vpaddeq.i16','vpaddne.i16','vpaddcs.i16','vpaddhs.i16','vpaddcc.i16','vpaddlo.i16','vpaddmi.i16','vpaddpl.i16','vpaddvs.i16','vpaddvc.i16','vpaddhi.i16','vpaddls.i16','vpaddge.i16','vpaddlt.i16','vpaddgt.i16','vpaddle.i16', + 'vpaddeq.i32','vpaddne.i32','vpaddcs.i32','vpaddhs.i32','vpaddcc.i32','vpaddlo.i32','vpaddmi.i32','vpaddpl.i32','vpaddvs.i32','vpaddvc.i32','vpaddhi.i32','vpaddls.i32','vpaddge.i32','vpaddlt.i32','vpaddgt.i32','vpaddle.i32', + + 'vceqeq.i8','vceqne.i8','vceqcs.i8','vceqhs.i8','vceqcc.i8','vceqlo.i8','vceqmi.i8','vceqpl.i8','vceqvs.i8','vceqvc.i8','vceqhi.i8','vceqls.i8','vceqge.i8','vceqlt.i8','vceqgt.i8','vceqle.i8', + 'vceqeq.i16','vceqne.i16','vceqcs.i16','vceqhs.i16','vceqcc.i16','vceqlo.i16','vceqmi.i16','vceqpl.i16','vceqvs.i16','vceqvc.i16','vceqhi.i16','vceqls.i16','vceqge.i16','vceqlt.i16','vceqgt.i16','vceqle.i16', + 'vceqeq.i32','vceqne.i32','vceqcs.i32','vceqhs.i32','vceqcc.i32','vceqlo.i32','vceqmi.i32','vceqpl.i32','vceqvs.i32','vceqvc.i32','vceqhi.i32','vceqls.i32','vceqge.i32','vceqlt.i32','vceqgt.i32','vceqle.i32', + + 'vclzeq.i8','vclzne.i8','vclzcs.i8','vclzhs.i8','vclzcc.i8','vclzlo.i8','vclzmi.i8','vclzpl.i8','vclzvs.i8','vclzvc.i8','vclzhi.i8','vclzls.i8','vclzge.i8','vclzlt.i8','vclzgt.i8','vclzle.i8', + 'vclzeq.i16','vclzne.i16','vclzcs.i16','vclzhs.i16','vclzcc.i16','vclzlo.i16','vclzmi.i16','vclzpl.i16','vclzvs.i16','vclzvc.i16','vclzhi.i16','vclzls.i16','vclzge.i16','vclzlt.i16','vclzgt.i16','vclzle.i16', + 'vclzeq.i32','vclzne.i32','vclzcs.i32','vclzhs.i32','vclzcc.i32','vclzlo.i32','vclzmi.i32','vclzpl.i32','vclzvs.i32','vclzvc.i32','vclzhi.i32','vclzls.i32','vclzge.i32','vclzlt.i32','vclzgt.i32','vclzle.i32', + + 'vmovneq.i16','vmovnne.i16','vmovncs.i16','vmovnhs.i16','vmovncc.i16','vmovnlo.i16','vmovnmi.i16','vmovnpl.i16','vmovnvs.i16','vmovnvc.i16','vmovnhi.i16','vmovnls.i16','vmovnge.i16','vmovnlt.i16','vmovngt.i16','vmovnle.i16', + 'vmovneq.i32','vmovnne.i32','vmovncs.i32','vmovnhs.i32','vmovncc.i32','vmovnlo.i32','vmovnmi.i32','vmovnpl.i32','vmovnvs.i32','vmovnvc.i32','vmovnhi.i32','vmovnls.i32','vmovnge.i32','vmovnlt.i32','vmovngt.i32','vmovnle.i32', + 'vmovneq.i64','vmovnne.i64','vmovncs.i64','vmovnhs.i64','vmovncc.i64','vmovnlo.i64','vmovnmi.i64','vmovnpl.i64','vmovnvs.i64','vmovnvc.i64','vmovnhi.i64','vmovnls.i64','vmovnge.i64','vmovnlt.i64','vmovngt.i64','vmovnle.i64', + + 'vmlaeq.s8','vmlane.s8','vmlacs.s8','vmlahs.s8','vmlacc.s8','vmlalo.s8','vmlami.s8','vmlapl.s8','vmlavs.s8','vmlavc.s8','vmlahi.s8','vmlals.s8','vmlage.s8','vmlalt.s8','vmlagt.s8','vmlale.s8', + 'vmlaeq.s16','vmlane.s16','vmlacs.s16','vmlahs.s16','vmlacc.s16','vmlalo.s16','vmlami.s16','vmlapl.s16','vmlavs.s16','vmlavc.s16','vmlahi.s16','vmlals.s16','vmlage.s16','vmlalt.s16','vmlagt.s16','vmlale.s16', + 'vmlaeq.s32','vmlane.s32','vmlacs.s32','vmlahs.s32','vmlacc.s32','vmlalo.s32','vmlami.s32','vmlapl.s32','vmlavs.s32','vmlavc.s32','vmlahi.s32','vmlals.s32','vmlage.s32','vmlalt.s32','vmlagt.s32','vmlale.s32', + 'vmlaeq.u8','vmlane.u8','vmlacs.u8','vmlahs.u8','vmlacc.u8','vmlalo.u8','vmlami.u8','vmlapl.u8','vmlavs.u8','vmlavc.u8','vmlahi.u8','vmlals.u8','vmlage.u8','vmlalt.u8','vmlagt.u8','vmlale.u8', + 'vmlaeq.u16','vmlane.u16','vmlacs.u16','vmlahs.u16','vmlacc.u16','vmlalo.u16','vmlami.u16','vmlapl.u16','vmlavs.u16','vmlavc.u16','vmlahi.u16','vmlals.u16','vmlage.u16','vmlalt.u16','vmlagt.u16','vmlale.u16', + 'vmlaeq.u32','vmlane.u32','vmlacs.u32','vmlahs.u32','vmlacc.u32','vmlalo.u32','vmlami.u32','vmlapl.u32','vmlavs.u32','vmlavc.u32','vmlahi.u32','vmlals.u32','vmlage.u32','vmlalt.u32','vmlagt.u32','vmlale.u32', + 'vmlaeq.i8','vmlane.i8','vmlacs.i8','vmlahs.i8','vmlacc.i8','vmlalo.i8','vmlami.i8','vmlapl.i8','vmlavs.i8','vmlavc.i8','vmlahi.i8','vmlals.i8','vmlage.i8','vmlalt.i8','vmlagt.i8','vmlale.i8', + 'vmlaeq.i16','vmlane.i16','vmlacs.i16','vmlahs.i16','vmlacc.i16','vmlalo.i16','vmlami.i16','vmlapl.i16','vmlavs.i16','vmlavc.i16','vmlahi.i16','vmlals.i16','vmlage.i16','vmlalt.i16','vmlagt.i16','vmlale.i16', + 'vmlaeq.i32','vmlane.i32','vmlacs.i32','vmlahs.i32','vmlacc.i32','vmlalo.i32','vmlami.i32','vmlapl.i32','vmlavs.i32','vmlavc.i32','vmlahi.i32','vmlals.i32','vmlage.i32','vmlalt.i32','vmlagt.i32','vmlale.i32', + + 'vmlseq.s8','vmlsne.s8','vmlscs.s8','vmlshs.s8','vmlscc.s8','vmlslo.s8','vmlsmi.s8','vmlspl.s8','vmlsvs.s8','vmlsvc.s8','vmlshi.s8','vmlsls.s8','vmlsge.s8','vmlslt.s8','vmlsgt.s8','vmlsle.s8', + 'vmlseq.s16','vmlsne.s16','vmlscs.s16','vmlshs.s16','vmlscc.s16','vmlslo.s16','vmlsmi.s16','vmlspl.s16','vmlsvs.s16','vmlsvc.s16','vmlshi.s16','vmlsls.s16','vmlsge.s16','vmlslt.s16','vmlsgt.s16','vmlsle.s16', + 'vmlseq.s32','vmlsne.s32','vmlscs.s32','vmlshs.s32','vmlscc.s32','vmlslo.s32','vmlsmi.s32','vmlspl.s32','vmlsvs.s32','vmlsvc.s32','vmlshi.s32','vmlsls.s32','vmlsge.s32','vmlslt.s32','vmlsgt.s32','vmlsle.s32', + 'vmlseq.u8','vmlsne.u8','vmlscs.u8','vmlshs.u8','vmlscc.u8','vmlslo.u8','vmlsmi.u8','vmlspl.u8','vmlsvs.u8','vmlsvc.u8','vmlshi.u8','vmlsls.u8','vmlsge.u8','vmlslt.u8','vmlsgt.u8','vmlsle.u8', + 'vmlseq.u16','vmlsne.u16','vmlscs.u16','vmlshs.u16','vmlscc.u16','vmlslo.u16','vmlsmi.u16','vmlspl.u16','vmlsvs.u16','vmlsvc.u16','vmlshi.u16','vmlsls.u16','vmlsge.u16','vmlslt.u16','vmlsgt.u16','vmlsle.u16', + 'vmlseq.u32','vmlsne.u32','vmlscs.u32','vmlshs.u32','vmlscc.u32','vmlslo.u32','vmlsmi.u32','vmlspl.u32','vmlsvs.u32','vmlsvc.u32','vmlshi.u32','vmlsls.u32','vmlsge.u32','vmlslt.u32','vmlsgt.u32','vmlsle.u32', + 'vmlseq.i8','vmlsne.i8','vmlscs.i8','vmlshs.i8','vmlscc.i8','vmlslo.i8','vmlsmi.i8','vmlspl.i8','vmlsvs.i8','vmlsvc.i8','vmlshi.i8','vmlsls.i8','vmlsge.i8','vmlslt.i8','vmlsgt.i8','vmlsle.i8', + 'vmlseq.i16','vmlsne.i16','vmlscs.i16','vmlshs.i16','vmlscc.i16','vmlslo.i16','vmlsmi.i16','vmlspl.i16','vmlsvs.i16','vmlsvc.i16','vmlshi.i16','vmlsls.i16','vmlsge.i16','vmlslt.i16','vmlsgt.i16','vmlsle.i16', + 'vmlseq.i32','vmlsne.i32','vmlscs.i32','vmlshs.i32','vmlscc.i32','vmlslo.i32','vmlsmi.i32','vmlspl.i32','vmlsvs.i32','vmlsvc.i32','vmlshi.i32','vmlsls.i32','vmlsge.i32','vmlslt.i32','vmlsgt.i32','vmlsle.i32', + + 'vmuleq.s8','vmulne.s8','vmulcs.s8','vmulhs.s8','vmulcc.s8','vmullo.s8','vmulmi.s8','vmulpl.s8','vmulvs.s8','vmulvc.s8','vmulhi.s8','vmulls.s8','vmulge.s8','vmullt.s8','vmulgt.s8','vmulle.s8', + 'vmuleq.s16','vmulne.s16','vmulcs.s16','vmulhs.s16','vmulcc.s16','vmullo.s16','vmulmi.s16','vmulpl.s16','vmulvs.s16','vmulvc.s16','vmulhi.s16','vmulls.s16','vmulge.s16','vmullt.s16','vmulgt.s16','vmulle.s16', + 'vmuleq.s32','vmulne.s32','vmulcs.s32','vmulhs.s32','vmulcc.s32','vmullo.s32','vmulmi.s32','vmulpl.s32','vmulvs.s32','vmulvc.s32','vmulhi.s32','vmulls.s32','vmulge.s32','vmullt.s32','vmulgt.s32','vmulle.s32', + 'vmuleq.u8','vmulne.u8','vmulcs.u8','vmulhs.u8','vmulcc.u8','vmullo.u8','vmulmi.u8','vmulpl.u8','vmulvs.u8','vmulvc.u8','vmulhi.u8','vmulls.u8','vmulge.u8','vmullt.u8','vmulgt.u8','vmulle.u8', + 'vmuleq.u16','vmulne.u16','vmulcs.u16','vmulhs.u16','vmulcc.u16','vmullo.u16','vmulmi.u16','vmulpl.u16','vmulvs.u16','vmulvc.u16','vmulhi.u16','vmulls.u16','vmulge.u16','vmullt.u16','vmulgt.u16','vmulle.u16', + 'vmuleq.u32','vmulne.u32','vmulcs.u32','vmulhs.u32','vmulcc.u32','vmullo.u32','vmulmi.u32','vmulpl.u32','vmulvs.u32','vmulvc.u32','vmulhi.u32','vmulls.u32','vmulge.u32','vmullt.u32','vmulgt.u32','vmulle.u32', + 'vmuleq.i8','vmulne.i8','vmulcs.i8','vmulhs.i8','vmulcc.i8','vmullo.i8','vmulmi.i8','vmulpl.i8','vmulvs.i8','vmulvc.i8','vmulhi.i8','vmulls.i8','vmulge.i8','vmullt.i8','vmulgt.i8','vmulle.i8', + 'vmuleq.i16','vmulne.i16','vmulcs.i16','vmulhs.i16','vmulcc.i16','vmullo.i16','vmulmi.i16','vmulpl.i16','vmulvs.i16','vmulvc.i16','vmulhi.i16','vmulls.i16','vmulge.i16','vmullt.i16','vmulgt.i16','vmulle.i16', + 'vmuleq.i32','vmulne.i32','vmulcs.i32','vmulhs.i32','vmulcc.i32','vmullo.i32','vmulmi.i32','vmulpl.i32','vmulvs.i32','vmulvc.i32','vmulhi.i32','vmulls.i32','vmulge.i32','vmullt.i32','vmulgt.i32','vmulle.i32', + 'vmuleq.p8','vmulne.p8','vmulcs.p8','vmulhs.p8','vmulcc.p8','vmullo.p8','vmulmi.p8','vmulpl.p8','vmulvs.p8','vmulvc.p8','vmulhi.p8','vmulls.p8','vmulge.p8','vmullt.p8','vmulgt.p8','vmulle.p8', + + 'vrshrneq.i16','vrshrnne.i16','vrshrncs.i16','vrshrnhs.i16','vrshrncc.i16','vrshrnlo.i16','vrshrnmi.i16','vrshrnpl.i16','vrshrnvs.i16','vrshrnvc.i16','vrshrnhi.i16','vrshrnls.i16','vrshrnge.i16','vrshrnlt.i16','vrshrngt.i16','vrshrnle.i16', + 'vrshrneq.i32','vrshrnne.i32','vrshrncs.i32','vrshrnhs.i32','vrshrncc.i32','vrshrnlo.i32','vrshrnmi.i32','vrshrnpl.i32','vrshrnvs.i32','vrshrnvc.i32','vrshrnhi.i32','vrshrnls.i32','vrshrnge.i32','vrshrnlt.i32','vrshrngt.i32','vrshrnle.i32', + 'vrshrneq.i64','vrshrnne.i64','vrshrncs.i64','vrshrnhs.i64','vrshrncc.i64','vrshrnlo.i64','vrshrnmi.i64','vrshrnpl.i64','vrshrnvs.i64','vrshrnvc.i64','vrshrnhi.i64','vrshrnls.i64','vrshrnge.i64','vrshrnlt.i64','vrshrngt.i64','vrshrnle.i64', + + 'vshrneq.i16','vshrnne.i16','vshrncs.i16','vshrnhs.i16','vshrncc.i16','vshrnlo.i16','vshrnmi.i16','vshrnpl.i16','vshrnvs.i16','vshrnvc.i16','vshrnhi.i16','vshrnls.i16','vshrnge.i16','vshrnlt.i16','vshrngt.i16','vshrnle.i16', + 'vshrneq.i32','vshrnne.i32','vshrncs.i32','vshrnhs.i32','vshrncc.i32','vshrnlo.i32','vshrnmi.i32','vshrnpl.i32','vshrnvs.i32','vshrnvc.i32','vshrnhi.i32','vshrnls.i32','vshrnge.i32','vshrnlt.i32','vshrngt.i32','vshrnle.i32', + 'vshrneq.i64','vshrnne.i64','vshrncs.i64','vshrnhs.i64','vshrncc.i64','vshrnlo.i64','vshrnmi.i64','vshrnpl.i64','vshrnvs.i64','vshrnvc.i64','vshrnhi.i64','vshrnls.i64','vshrnge.i64','vshrnlt.i64','vshrngt.i64','vshrnle.i64', + + 'vshleq.i8','vshlne.i8','vshlcs.i8','vshlhs.i8','vshlcc.i8','vshllo.i8','vshlmi.i8','vshlpl.i8','vshlvs.i8','vshlvc.i8','vshlhi.i8','vshlls.i8','vshlge.i8','vshllt.i8','vshlgt.i8','vshlle.i8', + 'vshleq.i16','vshlne.i16','vshlcs.i16','vshlhs.i16','vshlcc.i16','vshllo.i16','vshlmi.i16','vshlpl.i16','vshlvs.i16','vshlvc.i16','vshlhi.i16','vshlls.i16','vshlge.i16','vshllt.i16','vshlgt.i16','vshlle.i16', + 'vshleq.i32','vshlne.i32','vshlcs.i32','vshlhs.i32','vshlcc.i32','vshllo.i32','vshlmi.i32','vshlpl.i32','vshlvs.i32','vshlvc.i32','vshlhi.i32','vshlls.i32','vshlge.i32','vshllt.i32','vshlgt.i32','vshlle.i32', + 'vshleq.i64','vshlne.i64','vshlcs.i64','vshlhs.i64','vshlcc.i64','vshllo.i64','vshlmi.i64','vshlpl.i64','vshlvs.i64','vshlvc.i64','vshlhi.i64','vshlls.i64','vshlge.i64','vshllt.i64','vshlgt.i64','vshlle.i64', + + 'vshlleq.i8','vshllne.i8','vshllcs.i8','vshllhs.i8','vshllcc.i8','vshlllo.i8','vshllmi.i8','vshllpl.i8','vshllvs.i8','vshllvc.i8','vshllhi.i8','vshllls.i8','vshllge.i8','vshlllt.i8','vshllgt.i8','vshllle.i8', + 'vshlleq.i16','vshllne.i16','vshllcs.i16','vshllhs.i16','vshllcc.i16','vshlllo.i16','vshllmi.i16','vshllpl.i16','vshllvs.i16','vshllvc.i16','vshllhi.i16','vshllls.i16','vshllge.i16','vshlllt.i16','vshllgt.i16','vshllle.i16', + 'vshlleq.i32','vshllne.i32','vshllcs.i32','vshllhs.i32','vshllcc.i32','vshlllo.i32','vshllmi.i32','vshllpl.i32','vshllvs.i32','vshllvc.i32','vshllhi.i32','vshllls.i32','vshllge.i32','vshlllt.i32','vshllgt.i32','vshllle.i32' + ), + /* Conditional NEON SIMD Signed Integer Instructions */ + 32 => array( + 'vabaeq.s8','vabane.s8','vabacs.s8','vabahs.s8','vabacc.s8','vabalo.s8','vabami.s8','vabapl.s8','vabavs.s8','vabavc.s8','vabahi.s8','vabals.s8','vabage.s8','vabalt.s8','vabagt.s8','vabale.s8', + 'vabaeq.s16','vabane.s16','vabacs.s16','vabahs.s16','vabacc.s16','vabalo.s16','vabami.s16','vabapl.s16','vabavs.s16','vabavc.s16','vabahi.s16','vabals.s16','vabage.s16','vabalt.s16','vabagt.s16','vabale.s16', + 'vabaeq.s32','vabane.s32','vabacs.s32','vabahs.s32','vabacc.s32','vabalo.s32','vabami.s32','vabapl.s32','vabavs.s32','vabavc.s32','vabahi.s32','vabals.s32','vabage.s32','vabalt.s32','vabagt.s32','vabale.s32', + + 'vabaleq.s8','vabalne.s8','vabalcs.s8','vabalhs.s8','vabalcc.s8','vaballo.s8','vabalmi.s8','vabalpl.s8','vabalvs.s8','vabalvc.s8','vabalhi.s8','vaballs.s8','vabalge.s8','vaballt.s8','vabalgt.s8','vaballe.s8', + 'vabaleq.s16','vabalne.s16','vabalcs.s16','vabalhs.s16','vabalcc.s16','vaballo.s16','vabalmi.s16','vabalpl.s16','vabalvs.s16','vabalvc.s16','vabalhi.s16','vaballs.s16','vabalge.s16','vaballt.s16','vabalgt.s16','vaballe.s16', + 'vabaleq.s32','vabalne.s32','vabalcs.s32','vabalhs.s32','vabalcc.s32','vaballo.s32','vabalmi.s32','vabalpl.s32','vabalvs.s32','vabalvc.s32','vabalhi.s32','vaballs.s32','vabalge.s32','vaballt.s32','vabalgt.s32','vaballe.s32', + + 'vabdeq.s8','vabdne.s8','vabdcs.s8','vabdhs.s8','vabdcc.s8','vabdlo.s8','vabdmi.s8','vabdpl.s8','vabdvs.s8','vabdvc.s8','vabdhi.s8','vabdls.s8','vabdge.s8','vabdlt.s8','vabdgt.s8','vabdle.s8', + 'vabdeq.s16','vabdne.s16','vabdcs.s16','vabdhs.s16','vabdcc.s16','vabdlo.s16','vabdmi.s16','vabdpl.s16','vabdvs.s16','vabdvc.s16','vabdhi.s16','vabdls.s16','vabdge.s16','vabdlt.s16','vabdgt.s16','vabdle.s16', + 'vabdeq.s32','vabdne.s32','vabdcs.s32','vabdhs.s32','vabdcc.s32','vabdlo.s32','vabdmi.s32','vabdpl.s32','vabdvs.s32','vabdvc.s32','vabdhi.s32','vabdls.s32','vabdge.s32','vabdlt.s32','vabdgt.s32','vabdle.s32', + + 'vabseq.s8','vabsne.s8','vabscs.s8','vabshs.s8','vabscc.s8','vabslo.s8','vabsmi.s8','vabspl.s8','vabsvs.s8','vabsvc.s8','vabshi.s8','vabsls.s8','vabsge.s8','vabslt.s8','vabsgt.s8','vabsle.s8', + 'vabseq.s16','vabsne.s16','vabscs.s16','vabshs.s16','vabscc.s16','vabslo.s16','vabsmi.s16','vabspl.s16','vabsvs.s16','vabsvc.s16','vabshi.s16','vabsls.s16','vabsge.s16','vabslt.s16','vabsgt.s16','vabsle.s16', + 'vabseq.s32','vabsne.s32','vabscs.s32','vabshs.s32','vabscc.s32','vabslo.s32','vabsmi.s32','vabspl.s32','vabsvs.s32','vabsvc.s32','vabshi.s32','vabsls.s32','vabsge.s32','vabslt.s32','vabsgt.s32','vabsle.s32', + + 'vaddleq.s8','vaddlne.s8','vaddlcs.s8','vaddlhs.s8','vaddlcc.s8','vaddllo.s8','vaddlmi.s8','vaddlpl.s8','vaddlvs.s8','vaddlvc.s8','vaddlhi.s8','vaddlls.s8','vaddlge.s8','vaddllt.s8','vaddlgt.s8','vaddlle.s8', + 'vaddleq.s16','vaddlne.s16','vaddlcs.s16','vaddlhs.s16','vaddlcc.s16','vaddllo.s16','vaddlmi.s16','vaddlpl.s16','vaddlvs.s16','vaddlvc.s16','vaddlhi.s16','vaddlls.s16','vaddlge.s16','vaddllt.s16','vaddlgt.s16','vaddlle.s16', + 'vaddleq.s32','vaddlne.s32','vaddlcs.s32','vaddlhs.s32','vaddlcc.s32','vaddllo.s32','vaddlmi.s32','vaddlpl.s32','vaddlvs.s32','vaddlvc.s32','vaddlhi.s32','vaddlls.s32','vaddlge.s32','vaddllt.s32','vaddlgt.s32','vaddlle.s32', + + 'vcgeeq.s8','vcgene.s8','vcgecs.s8','vcgehs.s8','vcgecc.s8','vcgelo.s8','vcgemi.s8','vcgepl.s8','vcgevs.s8','vcgevc.s8','vcgehi.s8','vcgels.s8','vcgege.s8','vcgelt.s8','vcgegt.s8','vcgele.s8', + 'vcgeeq.s16','vcgene.s16','vcgecs.s16','vcgehs.s16','vcgecc.s16','vcgelo.s16','vcgemi.s16','vcgepl.s16','vcgevs.s16','vcgevc.s16','vcgehi.s16','vcgels.s16','vcgege.s16','vcgelt.s16','vcgegt.s16','vcgele.s16', + 'vcgeeq.s32','vcgene.s32','vcgecs.s32','vcgehs.s32','vcgecc.s32','vcgelo.s32','vcgemi.s32','vcgepl.s32','vcgevs.s32','vcgevc.s32','vcgehi.s32','vcgels.s32','vcgege.s32','vcgelt.s32','vcgegt.s32','vcgele.s32', + + 'vcleeq.s8','vclene.s8','vclecs.s8','vclehs.s8','vclecc.s8','vclelo.s8','vclemi.s8','vclepl.s8','vclevs.s8','vclevc.s8','vclehi.s8','vclels.s8','vclege.s8','vclelt.s8','vclegt.s8','vclele.s8', + 'vcleeq.s16','vclene.s16','vclecs.s16','vclehs.s16','vclecc.s16','vclelo.s16','vclemi.s16','vclepl.s16','vclevs.s16','vclevc.s16','vclehi.s16','vclels.s16','vclege.s16','vclelt.s16','vclegt.s16','vclele.s16', + 'vcleeq.s32','vclene.s32','vclecs.s32','vclehs.s32','vclecc.s32','vclelo.s32','vclemi.s32','vclepl.s32','vclevs.s32','vclevc.s32','vclehi.s32','vclels.s32','vclege.s32','vclelt.s32','vclegt.s32','vclele.s32', + + 'vcgteq.s8','vcgtne.s8','vcgtcs.s8','vcgths.s8','vcgtcc.s8','vcgtlo.s8','vcgtmi.s8','vcgtpl.s8','vcgtvs.s8','vcgtvc.s8','vcgthi.s8','vcgtls.s8','vcgtge.s8','vcgtlt.s8','vcgtgt.s8','vcgtle.s8', + 'vcgteq.s16','vcgtne.s16','vcgtcs.s16','vcgths.s16','vcgtcc.s16','vcgtlo.s16','vcgtmi.s16','vcgtpl.s16','vcgtvs.s16','vcgtvc.s16','vcgthi.s16','vcgtls.s16','vcgtge.s16','vcgtlt.s16','vcgtgt.s16','vcgtle.s16', + 'vcgteq.s32','vcgtne.s32','vcgtcs.s32','vcgths.s32','vcgtcc.s32','vcgtlo.s32','vcgtmi.s32','vcgtpl.s32','vcgtvs.s32','vcgtvc.s32','vcgthi.s32','vcgtls.s32','vcgtge.s32','vcgtlt.s32','vcgtgt.s32','vcgtle.s32', + + 'vclteq.s8','vcltne.s8','vcltcs.s8','vclths.s8','vcltcc.s8','vcltlo.s8','vcltmi.s8','vcltpl.s8','vcltvs.s8','vcltvc.s8','vclthi.s8','vcltls.s8','vcltge.s8','vcltlt.s8','vcltgt.s8','vcltle.s8', + 'vclteq.s16','vcltne.s16','vcltcs.s16','vclths.s16','vcltcc.s16','vcltlo.s16','vcltmi.s16','vcltpl.s16','vcltvs.s16','vcltvc.s16','vclthi.s16','vcltls.s16','vcltge.s16','vcltlt.s16','vcltgt.s16','vcltle.s16', + 'vclteq.s32','vcltne.s32','vcltcs.s32','vclths.s32','vcltcc.s32','vcltlo.s32','vcltmi.s32','vcltpl.s32','vcltvs.s32','vcltvc.s32','vclthi.s32','vcltls.s32','vcltge.s32','vcltlt.s32','vcltgt.s32','vcltle.s32', + + 'vclseq.s8','vclsne.s8','vclscs.s8','vclshs.s8','vclscc.s8','vclslo.s8','vclsmi.s8','vclspl.s8','vclsvs.s8','vclsvc.s8','vclshi.s8','vclsls.s8','vclsge.s8','vclslt.s8','vclsgt.s8','vclsle.s8', + 'vclseq.s16','vclsne.s16','vclscs.s16','vclshs.s16','vclscc.s16','vclslo.s16','vclsmi.s16','vclspl.s16','vclsvs.s16','vclsvc.s16','vclshi.s16','vclsls.s16','vclsge.s16','vclslt.s16','vclsgt.s16','vclsle.s16', + 'vclseq.s32','vclsne.s32','vclscs.s32','vclshs.s32','vclscc.s32','vclslo.s32','vclsmi.s32','vclspl.s32','vclsvs.s32','vclsvc.s32','vclshi.s32','vclsls.s32','vclsge.s32','vclslt.s32','vclsgt.s32','vclsle.s32', + + 'vaddweq.s8','vaddwne.s8','vaddwcs.s8','vaddwhs.s8','vaddwcc.s8','vaddwlo.s8','vaddwmi.s8','vaddwpl.s8','vaddwvs.s8','vaddwvc.s8','vaddwhi.s8','vaddwls.s8','vaddwge.s8','vaddwlt.s8','vaddwgt.s8','vaddwle.s8', + 'vaddweq.s16','vaddwne.s16','vaddwcs.s16','vaddwhs.s16','vaddwcc.s16','vaddwlo.s16','vaddwmi.s16','vaddwpl.s16','vaddwvs.s16','vaddwvc.s16','vaddwhi.s16','vaddwls.s16','vaddwge.s16','vaddwlt.s16','vaddwgt.s16','vaddwle.s16', + 'vaddweq.s32','vaddwne.s32','vaddwcs.s32','vaddwhs.s32','vaddwcc.s32','vaddwlo.s32','vaddwmi.s32','vaddwpl.s32','vaddwvs.s32','vaddwvc.s32','vaddwhi.s32','vaddwls.s32','vaddwge.s32','vaddwlt.s32','vaddwgt.s32','vaddwle.s32', + + 'vhaddeq.s8','vhaddne.s8','vhaddcs.s8','vhaddhs.s8','vhaddcc.s8','vhaddlo.s8','vhaddmi.s8','vhaddpl.s8','vhaddvs.s8','vhaddvc.s8','vhaddhi.s8','vhaddls.s8','vhaddge.s8','vhaddlt.s8','vhaddgt.s8','vhaddle.s8', + 'vhaddeq.s16','vhaddne.s16','vhaddcs.s16','vhaddhs.s16','vhaddcc.s16','vhaddlo.s16','vhaddmi.s16','vhaddpl.s16','vhaddvs.s16','vhaddvc.s16','vhaddhi.s16','vhaddls.s16','vhaddge.s16','vhaddlt.s16','vhaddgt.s16','vhaddle.s16', + 'vhaddeq.s32','vhaddne.s32','vhaddcs.s32','vhaddhs.s32','vhaddcc.s32','vhaddlo.s32','vhaddmi.s32','vhaddpl.s32','vhaddvs.s32','vhaddvc.s32','vhaddhi.s32','vhaddls.s32','vhaddge.s32','vhaddlt.s32','vhaddgt.s32','vhaddle.s32', + + 'vhsubeq.s8','vhsubne.s8','vhsubcs.s8','vhsubhs.s8','vhsubcc.s8','vhsublo.s8','vhsubmi.s8','vhsubpl.s8','vhsubvs.s8','vhsubvc.s8','vhsubhi.s8','vhsubls.s8','vhsubge.s8','vhsublt.s8','vhsubgt.s8','vhsuble.s8', + 'vhsubeq.s16','vhsubne.s16','vhsubcs.s16','vhsubhs.s16','vhsubcc.s16','vhsublo.s16','vhsubmi.s16','vhsubpl.s16','vhsubvs.s16','vhsubvc.s16','vhsubhi.s16','vhsubls.s16','vhsubge.s16','vhsublt.s16','vhsubgt.s16','vhsuble.s16', + 'vhsubeq.s32','vhsubne.s32','vhsubcs.s32','vhsubhs.s32','vhsubcc.s32','vhsublo.s32','vhsubmi.s32','vhsubpl.s32','vhsubvs.s32','vhsubvc.s32','vhsubhi.s32','vhsubls.s32','vhsubge.s32','vhsublt.s32','vhsubgt.s32','vhsuble.s32', + + 'vmaxeq.s8','vmaxne.s8','vmaxcs.s8','vmaxhs.s8','vmaxcc.s8','vmaxlo.s8','vmaxmi.s8','vmaxpl.s8','vmaxvs.s8','vmaxvc.s8','vmaxhi.s8','vmaxls.s8','vmaxge.s8','vmaxlt.s8','vmaxgt.s8','vmaxle.s8', + 'vmaxeq.s16','vmaxne.s16','vmaxcs.s16','vmaxhs.s16','vmaxcc.s16','vmaxlo.s16','vmaxmi.s16','vmaxpl.s16','vmaxvs.s16','vmaxvc.s16','vmaxhi.s16','vmaxls.s16','vmaxge.s16','vmaxlt.s16','vmaxgt.s16','vmaxle.s16', + 'vmaxeq.s32','vmaxne.s32','vmaxcs.s32','vmaxhs.s32','vmaxcc.s32','vmaxlo.s32','vmaxmi.s32','vmaxpl.s32','vmaxvs.s32','vmaxvc.s32','vmaxhi.s32','vmaxls.s32','vmaxge.s32','vmaxlt.s32','vmaxgt.s32','vmaxle.s32', + + 'vmineq.s8','vminne.s8','vmincs.s8','vminhs.s8','vmincc.s8','vminlo.s8','vminmi.s8','vminpl.s8','vminvs.s8','vminvc.s8','vminhi.s8','vminls.s8','vminge.s8','vminlt.s8','vmingt.s8','vminle.s8', + 'vmineq.s16','vminne.s16','vmincs.s16','vminhs.s16','vmincc.s16','vminlo.s16','vminmi.s16','vminpl.s16','vminvs.s16','vminvc.s16','vminhi.s16','vminls.s16','vminge.s16','vminlt.s16','vmingt.s16','vminle.s16', + 'vmineq.s32','vminne.s32','vmincs.s32','vminhs.s32','vmincc.s32','vminlo.s32','vminmi.s32','vminpl.s32','vminvs.s32','vminvc.s32','vminhi.s32','vminls.s32','vminge.s32','vminlt.s32','vmingt.s32','vminle.s32', + + 'vmlaleq.s8','vmlalne.s8','vmlalcs.s8','vmlalhs.s8','vmlalcc.s8','vmlallo.s8','vmlalmi.s8','vmlalpl.s8','vmlalvs.s8','vmlalvc.s8','vmlalhi.s8','vmlalls.s8','vmlalge.s8','vmlallt.s8','vmlalgt.s8','vmlalle.s8', + 'vmlaleq.s16','vmlalne.s16','vmlalcs.s16','vmlalhs.s16','vmlalcc.s16','vmlallo.s16','vmlalmi.s16','vmlalpl.s16','vmlalvs.s16','vmlalvc.s16','vmlalhi.s16','vmlalls.s16','vmlalge.s16','vmlallt.s16','vmlalgt.s16','vmlalle.s16', + 'vmlaleq.s32','vmlalne.s32','vmlalcs.s32','vmlalhs.s32','vmlalcc.s32','vmlallo.s32','vmlalmi.s32','vmlalpl.s32','vmlalvs.s32','vmlalvc.s32','vmlalhi.s32','vmlalls.s32','vmlalge.s32','vmlallt.s32','vmlalgt.s32','vmlalle.s32', + + 'vmlsleq.s8','vmlslne.s8','vmlslcs.s8','vmlslhs.s8','vmlslcc.s8','vmlsllo.s8','vmlslmi.s8','vmlslpl.s8','vmlslvs.s8','vmlslvc.s8','vmlslhi.s8','vmlslls.s8','vmlslge.s8','vmlsllt.s8','vmlslgt.s8','vmlslle.s8', + 'vmlsleq.s16','vmlslne.s16','vmlslcs.s16','vmlslhs.s16','vmlslcc.s16','vmlsllo.s16','vmlslmi.s16','vmlslpl.s16','vmlslvs.s16','vmlslvc.s16','vmlslhi.s16','vmlslls.s16','vmlslge.s16','vmlsllt.s16','vmlslgt.s16','vmlslle.s16', + 'vmlsleq.s32','vmlslne.s32','vmlslcs.s32','vmlslhs.s32','vmlslcc.s32','vmlsllo.s32','vmlslmi.s32','vmlslpl.s32','vmlslvs.s32','vmlslvc.s32','vmlslhi.s32','vmlslls.s32','vmlslge.s32','vmlsllt.s32','vmlslgt.s32','vmlslle.s32', + + 'vnegeq.s8','vnegne.s8','vnegcs.s8','vneghs.s8','vnegcc.s8','vneglo.s8','vnegmi.s8','vnegpl.s8','vnegvs.s8','vnegvc.s8','vneghi.s8','vnegls.s8','vnegge.s8','vneglt.s8','vneggt.s8','vnegle.s8', + 'vnegeq.s16','vnegne.s16','vnegcs.s16','vneghs.s16','vnegcc.s16','vneglo.s16','vnegmi.s16','vnegpl.s16','vnegvs.s16','vnegvc.s16','vneghi.s16','vnegls.s16','vnegge.s16','vneglt.s16','vneggt.s16','vnegle.s16', + 'vnegeq.s32','vnegne.s32','vnegcs.s32','vneghs.s32','vnegcc.s32','vneglo.s32','vnegmi.s32','vnegpl.s32','vnegvs.s32','vnegvc.s32','vneghi.s32','vnegls.s32','vnegge.s32','vneglt.s32','vneggt.s32','vnegle.s32', + + 'vpadaleq.s8','vpadalne.s8','vpadalcs.s8','vpadalhs.s8','vpadalcc.s8','vpadallo.s8','vpadalmi.s8','vpadalpl.s8','vpadalvs.s8','vpadalvc.s8','vpadalhi.s8','vpadalls.s8','vpadalge.s8','vpadallt.s8','vpadalgt.s8','vpadalle.s8', + 'vpadaleq.s16','vpadalne.s16','vpadalcs.s16','vpadalhs.s16','vpadalcc.s16','vpadallo.s16','vpadalmi.s16','vpadalpl.s16','vpadalvs.s16','vpadalvc.s16','vpadalhi.s16','vpadalls.s16','vpadalge.s16','vpadallt.s16','vpadalgt.s16','vpadalle.s16', + 'vpadaleq.s32','vpadalne.s32','vpadalcs.s32','vpadalhs.s32','vpadalcc.s32','vpadallo.s32','vpadalmi.s32','vpadalpl.s32','vpadalvs.s32','vpadalvc.s32','vpadalhi.s32','vpadalls.s32','vpadalge.s32','vpadallt.s32','vpadalgt.s32','vpadalle.s32', + + 'vmovleq.s8','vmovlne.s8','vmovlcs.s8','vmovlhs.s8','vmovlcc.s8','vmovllo.s8','vmovlmi.s8','vmovlpl.s8','vmovlvs.s8','vmovlvc.s8','vmovlhi.s8','vmovlls.s8','vmovlge.s8','vmovllt.s8','vmovlgt.s8','vmovlle.s8', + 'vmovleq.s16','vmovlne.s16','vmovlcs.s16','vmovlhs.s16','vmovlcc.s16','vmovllo.s16','vmovlmi.s16','vmovlpl.s16','vmovlvs.s16','vmovlvc.s16','vmovlhi.s16','vmovlls.s16','vmovlge.s16','vmovllt.s16','vmovlgt.s16','vmovlle.s16', + 'vmovleq.s32','vmovlne.s32','vmovlcs.s32','vmovlhs.s32','vmovlcc.s32','vmovllo.s32','vmovlmi.s32','vmovlpl.s32','vmovlvs.s32','vmovlvc.s32','vmovlhi.s32','vmovlls.s32','vmovlge.s32','vmovllt.s32','vmovlgt.s32','vmovlle.s32', + + 'vmulleq.s8','vmullne.s8','vmullcs.s8','vmullhs.s8','vmullcc.s8','vmulllo.s8','vmullmi.s8','vmullpl.s8','vmullvs.s8','vmullvc.s8','vmullhi.s8','vmullls.s8','vmullge.s8','vmulllt.s8','vmullgt.s8','vmullle.s8', + 'vmulleq.s16','vmullne.s16','vmullcs.s16','vmullhs.s16','vmullcc.s16','vmulllo.s16','vmullmi.s16','vmullpl.s16','vmullvs.s16','vmullvc.s16','vmullhi.s16','vmullls.s16','vmullge.s16','vmulllt.s16','vmullgt.s16','vmullle.s16', + 'vmulleq.s32','vmullne.s32','vmullcs.s32','vmullhs.s32','vmullcc.s32','vmulllo.s32','vmullmi.s32','vmullpl.s32','vmullvs.s32','vmullvc.s32','vmullhi.s32','vmullls.s32','vmullge.s32','vmulllt.s32','vmullgt.s32','vmullle.s32', + + 'vpaddleq.s8','vpaddlne.s8','vpaddlcs.s8','vpaddlhs.s8','vpaddlcc.s8','vpaddllo.s8','vpaddlmi.s8','vpaddlpl.s8','vpaddlvs.s8','vpaddlvc.s8','vpaddlhi.s8','vpaddlls.s8','vpaddlge.s8','vpaddllt.s8','vpaddlgt.s8','vpaddlle.s8', + 'vpaddleq.s16','vpaddlne.s16','vpaddlcs.s16','vpaddlhs.s16','vpaddlcc.s16','vpaddllo.s16','vpaddlmi.s16','vpaddlpl.s16','vpaddlvs.s16','vpaddlvc.s16','vpaddlhi.s16','vpaddlls.s16','vpaddlge.s16','vpaddllt.s16','vpaddlgt.s16','vpaddlle.s16', + 'vpaddleq.s32','vpaddlne.s32','vpaddlcs.s32','vpaddlhs.s32','vpaddlcc.s32','vpaddllo.s32','vpaddlmi.s32','vpaddlpl.s32','vpaddlvs.s32','vpaddlvc.s32','vpaddlhi.s32','vpaddlls.s32','vpaddlge.s32','vpaddllt.s32','vpaddlgt.s32','vpaddlle.s32', + + 'vpmaxeq.s8','vpmaxne.s8','vpmaxcs.s8','vpmaxhs.s8','vpmaxcc.s8','vpmaxlo.s8','vpmaxmi.s8','vpmaxpl.s8','vpmaxvs.s8','vpmaxvc.s8','vpmaxhi.s8','vpmaxls.s8','vpmaxge.s8','vpmaxlt.s8','vpmaxgt.s8','vpmaxle.s8', + 'vpmaxeq.s16','vpmaxne.s16','vpmaxcs.s16','vpmaxhs.s16','vpmaxcc.s16','vpmaxlo.s16','vpmaxmi.s16','vpmaxpl.s16','vpmaxvs.s16','vpmaxvc.s16','vpmaxhi.s16','vpmaxls.s16','vpmaxge.s16','vpmaxlt.s16','vpmaxgt.s16','vpmaxle.s16', + 'vpmaxeq.s32','vpmaxne.s32','vpmaxcs.s32','vpmaxhs.s32','vpmaxcc.s32','vpmaxlo.s32','vpmaxmi.s32','vpmaxpl.s32','vpmaxvs.s32','vpmaxvc.s32','vpmaxhi.s32','vpmaxls.s32','vpmaxge.s32','vpmaxlt.s32','vpmaxgt.s32','vpmaxle.s32', + + 'vpmineq.s8','vpminne.s8','vpmincs.s8','vpminhs.s8','vpmincc.s8','vpminlo.s8','vpminmi.s8','vpminpl.s8','vpminvs.s8','vpminvc.s8','vpminhi.s8','vpminls.s8','vpminge.s8','vpminlt.s8','vpmingt.s8','vpminle.s8', + 'vpmineq.s16','vpminne.s16','vpmincs.s16','vpminhs.s16','vpmincc.s16','vpminlo.s16','vpminmi.s16','vpminpl.s16','vpminvs.s16','vpminvc.s16','vpminhi.s16','vpminls.s16','vpminge.s16','vpminlt.s16','vpmingt.s16','vpminle.s16', + 'vpmineq.s32','vpminne.s32','vpmincs.s32','vpminhs.s32','vpmincc.s32','vpminlo.s32','vpminmi.s32','vpminpl.s32','vpminvs.s32','vpminvc.s32','vpminhi.s32','vpminls.s32','vpminge.s32','vpminlt.s32','vpmingt.s32','vpminle.s32', + + 'vqabseq.s8','vqabsne.s8','vqabscs.s8','vqabshs.s8','vqabscc.s8','vqabslo.s8','vqabsmi.s8','vqabspl.s8','vqabsvs.s8','vqabsvc.s8','vqabshi.s8','vqabsls.s8','vqabsge.s8','vqabslt.s8','vqabsgt.s8','vqabsle.s8', + 'vqabseq.s16','vqabsne.s16','vqabscs.s16','vqabshs.s16','vqabscc.s16','vqabslo.s16','vqabsmi.s16','vqabspl.s16','vqabsvs.s16','vqabsvc.s16','vqabshi.s16','vqabsls.s16','vqabsge.s16','vqabslt.s16','vqabsgt.s16','vqabsle.s16', + 'vqabseq.s32','vqabsne.s32','vqabscs.s32','vqabshs.s32','vqabscc.s32','vqabslo.s32','vqabsmi.s32','vqabspl.s32','vqabsvs.s32','vqabsvc.s32','vqabshi.s32','vqabsls.s32','vqabsge.s32','vqabslt.s32','vqabsgt.s32','vqabsle.s32', + + 'vqaddeq.s8','vqaddne.s8','vqaddcs.s8','vqaddhs.s8','vqaddcc.s8','vqaddlo.s8','vqaddmi.s8','vqaddpl.s8','vqaddvs.s8','vqaddvc.s8','vqaddhi.s8','vqaddls.s8','vqaddge.s8','vqaddlt.s8','vqaddgt.s8','vqaddle.s8', + 'vqaddeq.s16','vqaddne.s16','vqaddcs.s16','vqaddhs.s16','vqaddcc.s16','vqaddlo.s16','vqaddmi.s16','vqaddpl.s16','vqaddvs.s16','vqaddvc.s16','vqaddhi.s16','vqaddls.s16','vqaddge.s16','vqaddlt.s16','vqaddgt.s16','vqaddle.s16', + 'vqaddeq.s32','vqaddne.s32','vqaddcs.s32','vqaddhs.s32','vqaddcc.s32','vqaddlo.s32','vqaddmi.s32','vqaddpl.s32','vqaddvs.s32','vqaddvc.s32','vqaddhi.s32','vqaddls.s32','vqaddge.s32','vqaddlt.s32','vqaddgt.s32','vqaddle.s32', + 'vqaddeq.s64','vqaddne.s64','vqaddcs.s64','vqaddhs.s64','vqaddcc.s64','vqaddlo.s64','vqaddmi.s64','vqaddpl.s64','vqaddvs.s64','vqaddvc.s64','vqaddhi.s64','vqaddls.s64','vqaddge.s64','vqaddlt.s64','vqaddgt.s64','vqaddle.s64', + + 'vqdmlaleq.s16','vqdmlalne.s16','vqdmlalcs.s16','vqdmlalhs.s16','vqdmlalcc.s16','vqdmlallo.s16','vqdmlalmi.s16','vqdmlalpl.s16','vqdmlalvs.s16','vqdmlalvc.s16','vqdmlalhi.s16','vqdmlalls.s16','vqdmlalge.s16','vqdmlallt.s16','vqdmlalgt.s16','vqdmlalle.s16', + 'vqdmlaleq.s32','vqdmlalne.s32','vqdmlalcs.s32','vqdmlalhs.s32','vqdmlalcc.s32','vqdmlallo.s32','vqdmlalmi.s32','vqdmlalpl.s32','vqdmlalvs.s32','vqdmlalvc.s32','vqdmlalhi.s32','vqdmlalls.s32','vqdmlalge.s32','vqdmlallt.s32','vqdmlalgt.s32','vqdmlalle.s32', + + 'vqdmlsleq.s16','vqdmlslne.s16','vqdmlslcs.s16','vqdmlslhs.s16','vqdmlslcc.s16','vqdmlsllo.s16','vqdmlslmi.s16','vqdmlslpl.s16','vqdmlslvs.s16','vqdmlslvc.s16','vqdmlslhi.s16','vqdmlslls.s16','vqdmlslge.s16','vqdmlsllt.s16','vqdmlslgt.s16','vqdmlslle.s16', + 'vqdmlsleq.s32','vqdmlslne.s32','vqdmlslcs.s32','vqdmlslhs.s32','vqdmlslcc.s32','vqdmlsllo.s32','vqdmlslmi.s32','vqdmlslpl.s32','vqdmlslvs.s32','vqdmlslvc.s32','vqdmlslhi.s32','vqdmlslls.s32','vqdmlslge.s32','vqdmlsllt.s32','vqdmlslgt.s32','vqdmlslle.s32', + + 'vqdmulheq.s16','vqdmulhne.s16','vqdmulhcs.s16','vqdmulhhs.s16','vqdmulhcc.s16','vqdmulhlo.s16','vqdmulhmi.s16','vqdmulhpl.s16','vqdmulhvs.s16','vqdmulhvc.s16','vqdmulhhi.s16','vqdmulhls.s16','vqdmulhge.s16','vqdmulhlt.s16','vqdmulhgt.s16','vqdmulhle.s16', + 'vqdmulheq.s32','vqdmulhne.s32','vqdmulhcs.s32','vqdmulhhs.s32','vqdmulhcc.s32','vqdmulhlo.s32','vqdmulhmi.s32','vqdmulhpl.s32','vqdmulhvs.s32','vqdmulhvc.s32','vqdmulhhi.s32','vqdmulhls.s32','vqdmulhge.s32','vqdmulhlt.s32','vqdmulhgt.s32','vqdmulhle.s32', + + 'vqdmulleq.s16','vqdmullne.s16','vqdmullcs.s16','vqdmullhs.s16','vqdmullcc.s16','vqdmulllo.s16','vqdmullmi.s16','vqdmullpl.s16','vqdmullvs.s16','vqdmullvc.s16','vqdmullhi.s16','vqdmullls.s16','vqdmullge.s16','vqdmulllt.s16','vqdmullgt.s16','vqdmullle.s16', + 'vqdmulleq.s32','vqdmullne.s32','vqdmullcs.s32','vqdmullhs.s32','vqdmullcc.s32','vqdmulllo.s32','vqdmullmi.s32','vqdmullpl.s32','vqdmullvs.s32','vqdmullvc.s32','vqdmullhi.s32','vqdmullls.s32','vqdmullge.s32','vqdmulllt.s32','vqdmullgt.s32','vqdmullle.s32', + + 'vqmovneq.s16','vqmovnne.s16','vqmovncs.s16','vqmovnhs.s16','vqmovncc.s16','vqmovnlo.s16','vqmovnmi.s16','vqmovnpl.s16','vqmovnvs.s16','vqmovnvc.s16','vqmovnhi.s16','vqmovnls.s16','vqmovnge.s16','vqmovnlt.s16','vqmovngt.s16','vqmovnle.s16', + 'vqmovneq.s32','vqmovnne.s32','vqmovncs.s32','vqmovnhs.s32','vqmovncc.s32','vqmovnlo.s32','vqmovnmi.s32','vqmovnpl.s32','vqmovnvs.s32','vqmovnvc.s32','vqmovnhi.s32','vqmovnls.s32','vqmovnge.s32','vqmovnlt.s32','vqmovngt.s32','vqmovnle.s32', + 'vqmovneq.s64','vqmovnne.s64','vqmovncs.s64','vqmovnhs.s64','vqmovncc.s64','vqmovnlo.s64','vqmovnmi.s64','vqmovnpl.s64','vqmovnvs.s64','vqmovnvc.s64','vqmovnhi.s64','vqmovnls.s64','vqmovnge.s64','vqmovnlt.s64','vqmovngt.s64','vqmovnle.s64', + + 'vqmovuneq.s16','vqmovunne.s16','vqmovuncs.s16','vqmovunhs.s16','vqmovuncc.s16','vqmovunlo.s16','vqmovunmi.s16','vqmovunpl.s16','vqmovunvs.s16','vqmovunvc.s16','vqmovunhi.s16','vqmovunls.s16','vqmovunge.s16','vqmovunlt.s16','vqmovungt.s16','vqmovunle.s16', + 'vqmovuneq.s32','vqmovunne.s32','vqmovuncs.s32','vqmovunhs.s32','vqmovuncc.s32','vqmovunlo.s32','vqmovunmi.s32','vqmovunpl.s32','vqmovunvs.s32','vqmovunvc.s32','vqmovunhi.s32','vqmovunls.s32','vqmovunge.s32','vqmovunlt.s32','vqmovungt.s32','vqmovunle.s32', + 'vqmovuneq.s64','vqmovunne.s64','vqmovuncs.s64','vqmovunhs.s64','vqmovuncc.s64','vqmovunlo.s64','vqmovunmi.s64','vqmovunpl.s64','vqmovunvs.s64','vqmovunvc.s64','vqmovunhi.s64','vqmovunls.s64','vqmovunge.s64','vqmovunlt.s64','vqmovungt.s64','vqmovunle.s64', + + 'vqnegeq.s8','vqnegne.s8','vqnegcs.s8','vqneghs.s8','vqnegcc.s8','vqneglo.s8','vqnegmi.s8','vqnegpl.s8','vqnegvs.s8','vqnegvc.s8','vqneghi.s8','vqnegls.s8','vqnegge.s8','vqneglt.s8','vqneggt.s8','vqnegle.s8', + 'vqnegeq.s16','vqnegne.s16','vqnegcs.s16','vqneghs.s16','vqnegcc.s16','vqneglo.s16','vqnegmi.s16','vqnegpl.s16','vqnegvs.s16','vqnegvc.s16','vqneghi.s16','vqnegls.s16','vqnegge.s16','vqneglt.s16','vqneggt.s16','vqnegle.s16', + 'vqnegeq.s32','vqnegne.s32','vqnegcs.s32','vqneghs.s32','vqnegcc.s32','vqneglo.s32','vqnegmi.s32','vqnegpl.s32','vqnegvs.s32','vqnegvc.s32','vqneghi.s32','vqnegls.s32','vqnegge.s32','vqneglt.s32','vqneggt.s32','vqnegle.s32', + + 'vqrdmulheq.s16','vqrdmulhne.s16','vqrdmulhcs.s16','vqrdmulhhs.s16','vqrdmulhcc.s16','vqrdmulhlo.s16','vqrdmulhmi.s16','vqrdmulhpl.s16','vqrdmulhvs.s16','vqrdmulhvc.s16','vqrdmulhhi.s16','vqrdmulhls.s16','vqrdmulhge.s16','vqrdmulhlt.s16','vqrdmulhgt.s16','vqrdmulhle.s16', + 'vqrdmulheq.s32','vqrdmulhne.s32','vqrdmulhcs.s32','vqrdmulhhs.s32','vqrdmulhcc.s32','vqrdmulhlo.s32','vqrdmulhmi.s32','vqrdmulhpl.s32','vqrdmulhvs.s32','vqrdmulhvc.s32','vqrdmulhhi.s32','vqrdmulhls.s32','vqrdmulhge.s32','vqrdmulhlt.s32','vqrdmulhgt.s32','vqrdmulhle.s32', + + 'vqrshleq.s8','vqrshlne.s8','vqrshlcs.s8','vqrshlhs.s8','vqrshlcc.s8','vqrshllo.s8','vqrshlmi.s8','vqrshlpl.s8','vqrshlvs.s8','vqrshlvc.s8','vqrshlhi.s8','vqrshlls.s8','vqrshlge.s8','vqrshllt.s8','vqrshlgt.s8','vqrshlle.s8', + 'vqrshleq.s16','vqrshlne.s16','vqrshlcs.s16','vqrshlhs.s16','vqrshlcc.s16','vqrshllo.s16','vqrshlmi.s16','vqrshlpl.s16','vqrshlvs.s16','vqrshlvc.s16','vqrshlhi.s16','vqrshlls.s16','vqrshlge.s16','vqrshllt.s16','vqrshlgt.s16','vqrshlle.s16', + 'vqrshleq.s32','vqrshlne.s32','vqrshlcs.s32','vqrshlhs.s32','vqrshlcc.s32','vqrshllo.s32','vqrshlmi.s32','vqrshlpl.s32','vqrshlvs.s32','vqrshlvc.s32','vqrshlhi.s32','vqrshlls.s32','vqrshlge.s32','vqrshllt.s32','vqrshlgt.s32','vqrshlle.s32', + 'vqrshleq.s64','vqrshlne.s64','vqrshlcs.s64','vqrshlhs.s64','vqrshlcc.s64','vqrshllo.s64','vqrshlmi.s64','vqrshlpl.s64','vqrshlvs.s64','vqrshlvc.s64','vqrshlhi.s64','vqrshlls.s64','vqrshlge.s64','vqrshllt.s64','vqrshlgt.s64','vqrshlle.s64', + + 'vqrshrneq.s16','vqrshrnne.s16','vqrshrncs.s16','vqrshrnhs.s16','vqrshrncc.s16','vqrshrnlo.s16','vqrshrnmi.s16','vqrshrnpl.s16','vqrshrnvs.s16','vqrshrnvc.s16','vqrshrnhi.s16','vqrshrnls.s16','vqrshrnge.s16','vqrshrnlt.s16','vqrshrngt.s16','vqrshrnle.s16', + 'vqrshrneq.s32','vqrshrnne.s32','vqrshrncs.s32','vqrshrnhs.s32','vqrshrncc.s32','vqrshrnlo.s32','vqrshrnmi.s32','vqrshrnpl.s32','vqrshrnvs.s32','vqrshrnvc.s32','vqrshrnhi.s32','vqrshrnls.s32','vqrshrnge.s32','vqrshrnlt.s32','vqrshrngt.s32','vqrshrnle.s32', + 'vqrshrneq.s64','vqrshrnne.s64','vqrshrncs.s64','vqrshrnhs.s64','vqrshrncc.s64','vqrshrnlo.s64','vqrshrnmi.s64','vqrshrnpl.s64','vqrshrnvs.s64','vqrshrnvc.s64','vqrshrnhi.s64','vqrshrnls.s64','vqrshrnge.s64','vqrshrnlt.s64','vqrshrngt.s64','vqrshrnle.s64', + + 'vqrshruneq.s16','vqrshrunne.s16','vqrshruncs.s16','vqrshrunhs.s16','vqrshruncc.s16','vqrshrunlo.s16','vqrshrunmi.s16','vqrshrunpl.s16','vqrshrunvs.s16','vqrshrunvc.s16','vqrshrunhi.s16','vqrshrunls.s16','vqrshrunge.s16','vqrshrunlt.s16','vqrshrungt.s16','vqrshrunle.s16', + 'vqrshruneq.s32','vqrshrunne.s32','vqrshruncs.s32','vqrshrunhs.s32','vqrshruncc.s32','vqrshrunlo.s32','vqrshrunmi.s32','vqrshrunpl.s32','vqrshrunvs.s32','vqrshrunvc.s32','vqrshrunhi.s32','vqrshrunls.s32','vqrshrunge.s32','vqrshrunlt.s32','vqrshrungt.s32','vqrshrunle.s32', + 'vqrshruneq.s64','vqrshrunne.s64','vqrshruncs.s64','vqrshrunhs.s64','vqrshruncc.s64','vqrshrunlo.s64','vqrshrunmi.s64','vqrshrunpl.s64','vqrshrunvs.s64','vqrshrunvc.s64','vqrshrunhi.s64','vqrshrunls.s64','vqrshrunge.s64','vqrshrunlt.s64','vqrshrungt.s64','vqrshrunle.s64', + + 'vqshleq.s8','vqshlne.s8','vqshlcs.s8','vqshlhs.s8','vqshlcc.s8','vqshllo.s8','vqshlmi.s8','vqshlpl.s8','vqshlvs.s8','vqshlvc.s8','vqshlhi.s8','vqshlls.s8','vqshlge.s8','vqshllt.s8','vqshlgt.s8','vqshlle.s8', + 'vqshleq.s16','vqshlne.s16','vqshlcs.s16','vqshlhs.s16','vqshlcc.s16','vqshllo.s16','vqshlmi.s16','vqshlpl.s16','vqshlvs.s16','vqshlvc.s16','vqshlhi.s16','vqshlls.s16','vqshlge.s16','vqshllt.s16','vqshlgt.s16','vqshlle.s16', + 'vqshleq.s32','vqshlne.s32','vqshlcs.s32','vqshlhs.s32','vqshlcc.s32','vqshllo.s32','vqshlmi.s32','vqshlpl.s32','vqshlvs.s32','vqshlvc.s32','vqshlhi.s32','vqshlls.s32','vqshlge.s32','vqshllt.s32','vqshlgt.s32','vqshlle.s32', + 'vqshleq.s64','vqshlne.s64','vqshlcs.s64','vqshlhs.s64','vqshlcc.s64','vqshllo.s64','vqshlmi.s64','vqshlpl.s64','vqshlvs.s64','vqshlvc.s64','vqshlhi.s64','vqshlls.s64','vqshlge.s64','vqshllt.s64','vqshlgt.s64','vqshlle.s64', + + 'vqshlueq.s8','vqshlune.s8','vqshlucs.s8','vqshluhs.s8','vqshlucc.s8','vqshlulo.s8','vqshlumi.s8','vqshlupl.s8','vqshluvs.s8','vqshluvc.s8','vqshluhi.s8','vqshluls.s8','vqshluge.s8','vqshlult.s8','vqshlugt.s8','vqshlule.s8', + 'vqshlueq.s16','vqshlune.s16','vqshlucs.s16','vqshluhs.s16','vqshlucc.s16','vqshlulo.s16','vqshlumi.s16','vqshlupl.s16','vqshluvs.s16','vqshluvc.s16','vqshluhi.s16','vqshluls.s16','vqshluge.s16','vqshlult.s16','vqshlugt.s16','vqshlule.s16', + 'vqshlueq.s32','vqshlune.s32','vqshlucs.s32','vqshluhs.s32','vqshlucc.s32','vqshlulo.s32','vqshlumi.s32','vqshlupl.s32','vqshluvs.s32','vqshluvc.s32','vqshluhi.s32','vqshluls.s32','vqshluge.s32','vqshlult.s32','vqshlugt.s32','vqshlule.s32', + 'vqshlueq.s64','vqshlune.s64','vqshlucs.s64','vqshluhs.s64','vqshlucc.s64','vqshlulo.s64','vqshlumi.s64','vqshlupl.s64','vqshluvs.s64','vqshluvc.s64','vqshluhi.s64','vqshluls.s64','vqshluge.s64','vqshlult.s64','vqshlugt.s64','vqshlule.s64', + + 'vqshrneq.s16','vqshrnne.s16','vqshrncs.s16','vqshrnhs.s16','vqshrncc.s16','vqshrnlo.s16','vqshrnmi.s16','vqshrnpl.s16','vqshrnvs.s16','vqshrnvc.s16','vqshrnhi.s16','vqshrnls.s16','vqshrnge.s16','vqshrnlt.s16','vqshrngt.s16','vqshrnle.s16', + 'vqshrneq.s32','vqshrnne.s32','vqshrncs.s32','vqshrnhs.s32','vqshrncc.s32','vqshrnlo.s32','vqshrnmi.s32','vqshrnpl.s32','vqshrnvs.s32','vqshrnvc.s32','vqshrnhi.s32','vqshrnls.s32','vqshrnge.s32','vqshrnlt.s32','vqshrngt.s32','vqshrnle.s32', + 'vqshrneq.s64','vqshrnne.s64','vqshrncs.s64','vqshrnhs.s64','vqshrncc.s64','vqshrnlo.s64','vqshrnmi.s64','vqshrnpl.s64','vqshrnvs.s64','vqshrnvc.s64','vqshrnhi.s64','vqshrnls.s64','vqshrnge.s64','vqshrnlt.s64','vqshrngt.s64','vqshrnle.s64', + + 'vqshruneq.s16','vqshrunne.s16','vqshruncs.s16','vqshrunhs.s16','vqshruncc.s16','vqshrunlo.s16','vqshrunmi.s16','vqshrunpl.s16','vqshrunvs.s16','vqshrunvc.s16','vqshrunhi.s16','vqshrunls.s16','vqshrunge.s16','vqshrunlt.s16','vqshrungt.s16','vqshrunle.s16', + 'vqshruneq.s32','vqshrunne.s32','vqshruncs.s32','vqshrunhs.s32','vqshruncc.s32','vqshrunlo.s32','vqshrunmi.s32','vqshrunpl.s32','vqshrunvs.s32','vqshrunvc.s32','vqshrunhi.s32','vqshrunls.s32','vqshrunge.s32','vqshrunlt.s32','vqshrungt.s32','vqshrunle.s32', + 'vqshruneq.s64','vqshrunne.s64','vqshruncs.s64','vqshrunhs.s64','vqshruncc.s64','vqshrunlo.s64','vqshrunmi.s64','vqshrunpl.s64','vqshrunvs.s64','vqshrunvc.s64','vqshrunhi.s64','vqshrunls.s64','vqshrunge.s64','vqshrunlt.s64','vqshrungt.s64','vqshrunle.s64', + + 'vqsubeq.s8','vqsubne.s8','vqsubcs.s8','vqsubhs.s8','vqsubcc.s8','vqsublo.s8','vqsubmi.s8','vqsubpl.s8','vqsubvs.s8','vqsubvc.s8','vqsubhi.s8','vqsubls.s8','vqsubge.s8','vqsublt.s8','vqsubgt.s8','vqsuble.s8', + 'vqsubeq.s16','vqsubne.s16','vqsubcs.s16','vqsubhs.s16','vqsubcc.s16','vqsublo.s16','vqsubmi.s16','vqsubpl.s16','vqsubvs.s16','vqsubvc.s16','vqsubhi.s16','vqsubls.s16','vqsubge.s16','vqsublt.s16','vqsubgt.s16','vqsuble.s16', + 'vqsubeq.s32','vqsubne.s32','vqsubcs.s32','vqsubhs.s32','vqsubcc.s32','vqsublo.s32','vqsubmi.s32','vqsubpl.s32','vqsubvs.s32','vqsubvc.s32','vqsubhi.s32','vqsubls.s32','vqsubge.s32','vqsublt.s32','vqsubgt.s32','vqsuble.s32', + 'vqsubeq.s64','vqsubne.s64','vqsubcs.s64','vqsubhs.s64','vqsubcc.s64','vqsublo.s64','vqsubmi.s64','vqsubpl.s64','vqsubvs.s64','vqsubvc.s64','vqsubhi.s64','vqsubls.s64','vqsubge.s64','vqsublt.s64','vqsubgt.s64','vqsuble.s64', + + 'vrhaddeq.s8','vrhaddne.s8','vrhaddcs.s8','vrhaddhs.s8','vrhaddcc.s8','vrhaddlo.s8','vrhaddmi.s8','vrhaddpl.s8','vrhaddvs.s8','vrhaddvc.s8','vrhaddhi.s8','vrhaddls.s8','vrhaddge.s8','vrhaddlt.s8','vrhaddgt.s8','vrhaddle.s8', + 'vrhaddeq.s16','vrhaddne.s16','vrhaddcs.s16','vrhaddhs.s16','vrhaddcc.s16','vrhaddlo.s16','vrhaddmi.s16','vrhaddpl.s16','vrhaddvs.s16','vrhaddvc.s16','vrhaddhi.s16','vrhaddls.s16','vrhaddge.s16','vrhaddlt.s16','vrhaddgt.s16','vrhaddle.s16', + 'vrhaddeq.s32','vrhaddne.s32','vrhaddcs.s32','vrhaddhs.s32','vrhaddcc.s32','vrhaddlo.s32','vrhaddmi.s32','vrhaddpl.s32','vrhaddvs.s32','vrhaddvc.s32','vrhaddhi.s32','vrhaddls.s32','vrhaddge.s32','vrhaddlt.s32','vrhaddgt.s32','vrhaddle.s32', + + 'vrshleq.s8','vrshlne.s8','vrshlcs.s8','vrshlhs.s8','vrshlcc.s8','vrshllo.s8','vrshlmi.s8','vrshlpl.s8','vrshlvs.s8','vrshlvc.s8','vrshlhi.s8','vrshlls.s8','vrshlge.s8','vrshllt.s8','vrshlgt.s8','vrshlle.s8', + 'vrshleq.s16','vrshlne.s16','vrshlcs.s16','vrshlhs.s16','vrshlcc.s16','vrshllo.s16','vrshlmi.s16','vrshlpl.s16','vrshlvs.s16','vrshlvc.s16','vrshlhi.s16','vrshlls.s16','vrshlge.s16','vrshllt.s16','vrshlgt.s16','vrshlle.s16', + 'vrshleq.s32','vrshlne.s32','vrshlcs.s32','vrshlhs.s32','vrshlcc.s32','vrshllo.s32','vrshlmi.s32','vrshlpl.s32','vrshlvs.s32','vrshlvc.s32','vrshlhi.s32','vrshlls.s32','vrshlge.s32','vrshllt.s32','vrshlgt.s32','vrshlle.s32', + 'vrshleq.s64','vrshlne.s64','vrshlcs.s64','vrshlhs.s64','vrshlcc.s64','vrshllo.s64','vrshlmi.s64','vrshlpl.s64','vrshlvs.s64','vrshlvc.s64','vrshlhi.s64','vrshlls.s64','vrshlge.s64','vrshllt.s64','vrshlgt.s64','vrshlle.s64', + + 'vrshreq.s8','vrshrne.s8','vrshrcs.s8','vrshrhs.s8','vrshrcc.s8','vrshrlo.s8','vrshrmi.s8','vrshrpl.s8','vrshrvs.s8','vrshrvc.s8','vrshrhi.s8','vrshrls.s8','vrshrge.s8','vrshrlt.s8','vrshrgt.s8','vrshrle.s8', + 'vrshreq.s16','vrshrne.s16','vrshrcs.s16','vrshrhs.s16','vrshrcc.s16','vrshrlo.s16','vrshrmi.s16','vrshrpl.s16','vrshrvs.s16','vrshrvc.s16','vrshrhi.s16','vrshrls.s16','vrshrge.s16','vrshrlt.s16','vrshrgt.s16','vrshrle.s16', + 'vrshreq.s32','vrshrne.s32','vrshrcs.s32','vrshrhs.s32','vrshrcc.s32','vrshrlo.s32','vrshrmi.s32','vrshrpl.s32','vrshrvs.s32','vrshrvc.s32','vrshrhi.s32','vrshrls.s32','vrshrge.s32','vrshrlt.s32','vrshrgt.s32','vrshrle.s32', + 'vrshreq.s64','vrshrne.s64','vrshrcs.s64','vrshrhs.s64','vrshrcc.s64','vrshrlo.s64','vrshrmi.s64','vrshrpl.s64','vrshrvs.s64','vrshrvc.s64','vrshrhi.s64','vrshrls.s64','vrshrge.s64','vrshrlt.s64','vrshrgt.s64','vrshrle.s64', + + 'vrsraeq.s8','vrsrane.s8','vrsracs.s8','vrsrahs.s8','vrsracc.s8','vrsralo.s8','vrsrami.s8','vrsrapl.s8','vrsravs.s8','vrsravc.s8','vrsrahi.s8','vrsrals.s8','vrsrage.s8','vrsralt.s8','vrsragt.s8','vrsrale.s8', + 'vrsraeq.s16','vrsrane.s16','vrsracs.s16','vrsrahs.s16','vrsracc.s16','vrsralo.s16','vrsrami.s16','vrsrapl.s16','vrsravs.s16','vrsravc.s16','vrsrahi.s16','vrsrals.s16','vrsrage.s16','vrsralt.s16','vrsragt.s16','vrsrale.s16', + 'vrsraeq.s32','vrsrane.s32','vrsracs.s32','vrsrahs.s32','vrsracc.s32','vrsralo.s32','vrsrami.s32','vrsrapl.s32','vrsravs.s32','vrsravc.s32','vrsrahi.s32','vrsrals.s32','vrsrage.s32','vrsralt.s32','vrsragt.s32','vrsrale.s32', + 'vrsraeq.s64','vrsrane.s64','vrsracs.s64','vrsrahs.s64','vrsracc.s64','vrsralo.s64','vrsrami.s64','vrsrapl.s64','vrsravs.s64','vrsravc.s64','vrsrahi.s64','vrsrals.s64','vrsrage.s64','vrsralt.s64','vrsragt.s64','vrsrale.s64', + + 'vshleq.s8','vshlne.s8','vshlcs.s8','vshlhs.s8','vshlcc.s8','vshllo.s8','vshlmi.s8','vshlpl.s8','vshlvs.s8','vshlvc.s8','vshlhi.s8','vshlls.s8','vshlge.s8','vshllt.s8','vshlgt.s8','vshlle.s8', + 'vshleq.s16','vshlne.s16','vshlcs.s16','vshlhs.s16','vshlcc.s16','vshllo.s16','vshlmi.s16','vshlpl.s16','vshlvs.s16','vshlvc.s16','vshlhi.s16','vshlls.s16','vshlge.s16','vshllt.s16','vshlgt.s16','vshlle.s16', + 'vshleq.s32','vshlne.s32','vshlcs.s32','vshlhs.s32','vshlcc.s32','vshllo.s32','vshlmi.s32','vshlpl.s32','vshlvs.s32','vshlvc.s32','vshlhi.s32','vshlls.s32','vshlge.s32','vshllt.s32','vshlgt.s32','vshlle.s32', + 'vshleq.s64','vshlne.s64','vshlcs.s64','vshlhs.s64','vshlcc.s64','vshllo.s64','vshlmi.s64','vshlpl.s64','vshlvs.s64','vshlvc.s64','vshlhi.s64','vshlls.s64','vshlge.s64','vshllt.s64','vshlgt.s64','vshlle.s64', + + 'vshlleq.s8','vshllne.s8','vshllcs.s8','vshllhs.s8','vshllcc.s8','vshlllo.s8','vshllmi.s8','vshllpl.s8','vshllvs.s8','vshllvc.s8','vshllhi.s8','vshllls.s8','vshllge.s8','vshlllt.s8','vshllgt.s8','vshllle.s8', + 'vshlleq.s16','vshllne.s16','vshllcs.s16','vshllhs.s16','vshllcc.s16','vshlllo.s16','vshllmi.s16','vshllpl.s16','vshllvs.s16','vshllvc.s16','vshllhi.s16','vshllls.s16','vshllge.s16','vshlllt.s16','vshllgt.s16','vshllle.s16', + 'vshlleq.s32','vshllne.s32','vshllcs.s32','vshllhs.s32','vshllcc.s32','vshlllo.s32','vshllmi.s32','vshllpl.s32','vshllvs.s32','vshllvc.s32','vshllhi.s32','vshllls.s32','vshllge.s32','vshlllt.s32','vshllgt.s32','vshllle.s32', + + 'vshreq.s8','vshrne.s8','vshrcs.s8','vshrhs.s8','vshrcc.s8','vshrlo.s8','vshrmi.s8','vshrpl.s8','vshrvs.s8','vshrvc.s8','vshrhi.s8','vshrls.s8','vshrge.s8','vshrlt.s8','vshrgt.s8','vshrle.s8', + 'vshreq.s16','vshrne.s16','vshrcs.s16','vshrhs.s16','vshrcc.s16','vshrlo.s16','vshrmi.s16','vshrpl.s16','vshrvs.s16','vshrvc.s16','vshrhi.s16','vshrls.s16','vshrge.s16','vshrlt.s16','vshrgt.s16','vshrle.s16', + 'vshreq.s32','vshrne.s32','vshrcs.s32','vshrhs.s32','vshrcc.s32','vshrlo.s32','vshrmi.s32','vshrpl.s32','vshrvs.s32','vshrvc.s32','vshrhi.s32','vshrls.s32','vshrge.s32','vshrlt.s32','vshrgt.s32','vshrle.s32', + 'vshreq.s64','vshrne.s64','vshrcs.s64','vshrhs.s64','vshrcc.s64','vshrlo.s64','vshrmi.s64','vshrpl.s64','vshrvs.s64','vshrvc.s64','vshrhi.s64','vshrls.s64','vshrge.s64','vshrlt.s64','vshrgt.s64','vshrle.s64', + + 'vsraeq.s8','vsrane.s8','vsracs.s8','vsrahs.s8','vsracc.s8','vsralo.s8','vsrami.s8','vsrapl.s8','vsravs.s8','vsravc.s8','vsrahi.s8','vsrals.s8','vsrage.s8','vsralt.s8','vsragt.s8','vsrale.s8', + 'vsraeq.s16','vsrane.s16','vsracs.s16','vsrahs.s16','vsracc.s16','vsralo.s16','vsrami.s16','vsrapl.s16','vsravs.s16','vsravc.s16','vsrahi.s16','vsrals.s16','vsrage.s16','vsralt.s16','vsragt.s16','vsrale.s16', + 'vsraeq.s32','vsrane.s32','vsracs.s32','vsrahs.s32','vsracc.s32','vsralo.s32','vsrami.s32','vsrapl.s32','vsravs.s32','vsravc.s32','vsrahi.s32','vsrals.s32','vsrage.s32','vsralt.s32','vsragt.s32','vsrale.s32', + 'vsraeq.s64','vsrane.s64','vsracs.s64','vsrahs.s64','vsracc.s64','vsralo.s64','vsrami.s64','vsrapl.s64','vsravs.s64','vsravc.s64','vsrahi.s64','vsrals.s64','vsrage.s64','vsralt.s64','vsragt.s64','vsrale.s64', + + 'vsubleq.s8','vsublne.s8','vsublcs.s8','vsublhs.s8','vsublcc.s8','vsubllo.s8','vsublmi.s8','vsublpl.s8','vsublvs.s8','vsublvc.s8','vsublhi.s8','vsublls.s8','vsublge.s8','vsubllt.s8','vsublgt.s8','vsublle.s8', + 'vsubleq.s16','vsublne.s16','vsublcs.s16','vsublhs.s16','vsublcc.s16','vsubllo.s16','vsublmi.s16','vsublpl.s16','vsublvs.s16','vsublvc.s16','vsublhi.s16','vsublls.s16','vsublge.s16','vsubllt.s16','vsublgt.s16','vsublle.s16', + 'vsubleq.s32','vsublne.s32','vsublcs.s32','vsublhs.s32','vsublcc.s32','vsubllo.s32','vsublmi.s32','vsublpl.s32','vsublvs.s32','vsublvc.s32','vsublhi.s32','vsublls.s32','vsublge.s32','vsubllt.s32','vsublgt.s32','vsublle.s32', + + 'vsubheq.s8','vsubhne.s8','vsubhcs.s8','vsubhhs.s8','vsubhcc.s8','vsubhlo.s8','vsubhmi.s8','vsubhpl.s8','vsubhvs.s8','vsubhvc.s8','vsubhhi.s8','vsubhls.s8','vsubhge.s8','vsubhlt.s8','vsubhgt.s8','vsubhle.s8', + 'vsubheq.s16','vsubhne.s16','vsubhcs.s16','vsubhhs.s16','vsubhcc.s16','vsubhlo.s16','vsubhmi.s16','vsubhpl.s16','vsubhvs.s16','vsubhvc.s16','vsubhhi.s16','vsubhls.s16','vsubhge.s16','vsubhlt.s16','vsubhgt.s16','vsubhle.s16', + 'vsubheq.s32','vsubhne.s32','vsubhcs.s32','vsubhhs.s32','vsubhcc.s32','vsubhlo.s32','vsubhmi.s32','vsubhpl.s32','vsubhvs.s32','vsubhvc.s32','vsubhhi.s32','vsubhls.s32','vsubhge.s32','vsubhlt.s32','vsubhgt.s32','vsubhle.s32' + ), + /* Conditional NEON SIMD Unsigned Integer Instructions */ + 33 => array( + 'vabaeq.u8','vabane.u8','vabacs.u8','vabahs.u8','vabacc.u8','vabalo.u8','vabami.u8','vabapl.u8','vabavs.u8','vabavc.u8','vabahi.u8','vabals.u8','vabage.u8','vabalt.u8','vabagt.u8','vabale.u8', + 'vabaeq.u16','vabane.u16','vabacs.u16','vabahs.u16','vabacc.u16','vabalo.u16','vabami.u16','vabapl.u16','vabavs.u16','vabavc.u16','vabahi.u16','vabals.u16','vabage.u16','vabalt.u16','vabagt.u16','vabale.u16', + 'vabaeq.u32','vabane.u32','vabacs.u32','vabahs.u32','vabacc.u32','vabalo.u32','vabami.u32','vabapl.u32','vabavs.u32','vabavc.u32','vabahi.u32','vabals.u32','vabage.u32','vabalt.u32','vabagt.u32','vabale.u32', + + 'vabaleq.u8','vabalne.u8','vabalcs.u8','vabalhs.u8','vabalcc.u8','vaballo.u8','vabalmi.u8','vabalpl.u8','vabalvs.u8','vabalvc.u8','vabalhi.u8','vaballs.u8','vabalge.u8','vaballt.u8','vabalgt.u8','vaballe.u8', + 'vabaleq.u16','vabalne.u16','vabalcs.u16','vabalhs.u16','vabalcc.u16','vaballo.u16','vabalmi.u16','vabalpl.u16','vabalvs.u16','vabalvc.u16','vabalhi.u16','vaballs.u16','vabalge.u16','vaballt.u16','vabalgt.u16','vaballe.u16', + 'vabaleq.u32','vabalne.u32','vabalcs.u32','vabalhs.u32','vabalcc.u32','vaballo.u32','vabalmi.u32','vabalpl.u32','vabalvs.u32','vabalvc.u32','vabalhi.u32','vaballs.u32','vabalge.u32','vaballt.u32','vabalgt.u32','vaballe.u32', + + 'vabdeq.u8','vabdne.u8','vabdcs.u8','vabdhs.u8','vabdcc.u8','vabdlo.u8','vabdmi.u8','vabdpl.u8','vabdvs.u8','vabdvc.u8','vabdhi.u8','vabdls.u8','vabdge.u8','vabdlt.u8','vabdgt.u8','vabdle.u8', + 'vabdeq.u16','vabdne.u16','vabdcs.u16','vabdhs.u16','vabdcc.u16','vabdlo.u16','vabdmi.u16','vabdpl.u16','vabdvs.u16','vabdvc.u16','vabdhi.u16','vabdls.u16','vabdge.u16','vabdlt.u16','vabdgt.u16','vabdle.u16', + 'vabdeq.u32','vabdne.u32','vabdcs.u32','vabdhs.u32','vabdcc.u32','vabdlo.u32','vabdmi.u32','vabdpl.u32','vabdvs.u32','vabdvc.u32','vabdhi.u32','vabdls.u32','vabdge.u32','vabdlt.u32','vabdgt.u32','vabdle.u32', + + 'vaddleq.u8','vaddlne.u8','vaddlcs.u8','vaddlhs.u8','vaddlcc.u8','vaddllo.u8','vaddlmi.u8','vaddlpl.u8','vaddlvs.u8','vaddlvc.u8','vaddlhi.u8','vaddlls.u8','vaddlge.u8','vaddllt.u8','vaddlgt.u8','vaddlle.u8', + 'vaddleq.u16','vaddlne.u16','vaddlcs.u16','vaddlhs.u16','vaddlcc.u16','vaddllo.u16','vaddlmi.u16','vaddlpl.u16','vaddlvs.u16','vaddlvc.u16','vaddlhi.u16','vaddlls.u16','vaddlge.u16','vaddllt.u16','vaddlgt.u16','vaddlle.u16', + 'vaddleq.u32','vaddlne.u32','vaddlcs.u32','vaddlhs.u32','vaddlcc.u32','vaddllo.u32','vaddlmi.u32','vaddlpl.u32','vaddlvs.u32','vaddlvc.u32','vaddlhi.u32','vaddlls.u32','vaddlge.u32','vaddllt.u32','vaddlgt.u32','vaddlle.u32', + + 'vsubleq.u8','vsublne.u8','vsublcs.u8','vsublhs.u8','vsublcc.u8','vsubllo.u8','vsublmi.u8','vsublpl.u8','vsublvs.u8','vsublvc.u8','vsublhi.u8','vsublls.u8','vsublge.u8','vsubllt.u8','vsublgt.u8','vsublle.u8', + 'vsubleq.u16','vsublne.u16','vsublcs.u16','vsublhs.u16','vsublcc.u16','vsubllo.u16','vsublmi.u16','vsublpl.u16','vsublvs.u16','vsublvc.u16','vsublhi.u16','vsublls.u16','vsublge.u16','vsubllt.u16','vsublgt.u16','vsublle.u16', + 'vsubleq.u32','vsublne.u32','vsublcs.u32','vsublhs.u32','vsublcc.u32','vsubllo.u32','vsublmi.u32','vsublpl.u32','vsublvs.u32','vsublvc.u32','vsublhi.u32','vsublls.u32','vsublge.u32','vsubllt.u32','vsublgt.u32','vsublle.u32', + + 'vaddweq.u8','vaddwne.u8','vaddwcs.u8','vaddwhs.u8','vaddwcc.u8','vaddwlo.u8','vaddwmi.u8','vaddwpl.u8','vaddwvs.u8','vaddwvc.u8','vaddwhi.u8','vaddwls.u8','vaddwge.u8','vaddwlt.u8','vaddwgt.u8','vaddwle.u8', + 'vaddweq.u16','vaddwne.u16','vaddwcs.u16','vaddwhs.u16','vaddwcc.u16','vaddwlo.u16','vaddwmi.u16','vaddwpl.u16','vaddwvs.u16','vaddwvc.u16','vaddwhi.u16','vaddwls.u16','vaddwge.u16','vaddwlt.u16','vaddwgt.u16','vaddwle.u16', + 'vaddweq.u32','vaddwne.u32','vaddwcs.u32','vaddwhs.u32','vaddwcc.u32','vaddwlo.u32','vaddwmi.u32','vaddwpl.u32','vaddwvs.u32','vaddwvc.u32','vaddwhi.u32','vaddwls.u32','vaddwge.u32','vaddwlt.u32','vaddwgt.u32','vaddwle.u32', + + 'vsubheq.u8','vsubhne.u8','vsubhcs.u8','vsubhhs.u8','vsubhcc.u8','vsubhlo.u8','vsubhmi.u8','vsubhpl.u8','vsubhvs.u8','vsubhvc.u8','vsubhhi.u8','vsubhls.u8','vsubhge.u8','vsubhlt.u8','vsubhgt.u8','vsubhle.u8', + 'vsubheq.u16','vsubhne.u16','vsubhcs.u16','vsubhhs.u16','vsubhcc.u16','vsubhlo.u16','vsubhmi.u16','vsubhpl.u16','vsubhvs.u16','vsubhvc.u16','vsubhhi.u16','vsubhls.u16','vsubhge.u16','vsubhlt.u16','vsubhgt.u16','vsubhle.u16', + 'vsubheq.u32','vsubhne.u32','vsubhcs.u32','vsubhhs.u32','vsubhcc.u32','vsubhlo.u32','vsubhmi.u32','vsubhpl.u32','vsubhvs.u32','vsubhvc.u32','vsubhhi.u32','vsubhls.u32','vsubhge.u32','vsubhlt.u32','vsubhgt.u32','vsubhle.u32', + + 'vhaddeq.u8','vhaddne.u8','vhaddcs.u8','vhaddhs.u8','vhaddcc.u8','vhaddlo.u8','vhaddmi.u8','vhaddpl.u8','vhaddvs.u8','vhaddvc.u8','vhaddhi.u8','vhaddls.u8','vhaddge.u8','vhaddlt.u8','vhaddgt.u8','vhaddle.u8', + 'vhaddeq.u16','vhaddne.u16','vhaddcs.u16','vhaddhs.u16','vhaddcc.u16','vhaddlo.u16','vhaddmi.u16','vhaddpl.u16','vhaddvs.u16','vhaddvc.u16','vhaddhi.u16','vhaddls.u16','vhaddge.u16','vhaddlt.u16','vhaddgt.u16','vhaddle.u16', + 'vhaddeq.u32','vhaddne.u32','vhaddcs.u32','vhaddhs.u32','vhaddcc.u32','vhaddlo.u32','vhaddmi.u32','vhaddpl.u32','vhaddvs.u32','vhaddvc.u32','vhaddhi.u32','vhaddls.u32','vhaddge.u32','vhaddlt.u32','vhaddgt.u32','vhaddle.u32', + + 'vhsubeq.u8','vhsubne.u8','vhsubcs.u8','vhsubhs.u8','vhsubcc.u8','vhsublo.u8','vhsubmi.u8','vhsubpl.u8','vhsubvs.u8','vhsubvc.u8','vhsubhi.u8','vhsubls.u8','vhsubge.u8','vhsublt.u8','vhsubgt.u8','vhsuble.u8', + 'vhsubeq.u16','vhsubne.u16','vhsubcs.u16','vhsubhs.u16','vhsubcc.u16','vhsublo.u16','vhsubmi.u16','vhsubpl.u16','vhsubvs.u16','vhsubvc.u16','vhsubhi.u16','vhsubls.u16','vhsubge.u16','vhsublt.u16','vhsubgt.u16','vhsuble.u16', + 'vhsubeq.u32','vhsubne.u32','vhsubcs.u32','vhsubhs.u32','vhsubcc.u32','vhsublo.u32','vhsubmi.u32','vhsubpl.u32','vhsubvs.u32','vhsubvc.u32','vhsubhi.u32','vhsubls.u32','vhsubge.u32','vhsublt.u32','vhsubgt.u32','vhsuble.u32', + + 'vpadaleq.u8','vpadalne.u8','vpadalcs.u8','vpadalhs.u8','vpadalcc.u8','vpadallo.u8','vpadalmi.u8','vpadalpl.u8','vpadalvs.u8','vpadalvc.u8','vpadalhi.u8','vpadalls.u8','vpadalge.u8','vpadallt.u8','vpadalgt.u8','vpadalle.u8', + 'vpadaleq.u16','vpadalne.u16','vpadalcs.u16','vpadalhs.u16','vpadalcc.u16','vpadallo.u16','vpadalmi.u16','vpadalpl.u16','vpadalvs.u16','vpadalvc.u16','vpadalhi.u16','vpadalls.u16','vpadalge.u16','vpadallt.u16','vpadalgt.u16','vpadalle.u16', + 'vpadaleq.u32','vpadalne.u32','vpadalcs.u32','vpadalhs.u32','vpadalcc.u32','vpadallo.u32','vpadalmi.u32','vpadalpl.u32','vpadalvs.u32','vpadalvc.u32','vpadalhi.u32','vpadalls.u32','vpadalge.u32','vpadallt.u32','vpadalgt.u32','vpadalle.u32', + + 'vpaddleq.u8','vpaddlne.u8','vpaddlcs.u8','vpaddlhs.u8','vpaddlcc.u8','vpaddllo.u8','vpaddlmi.u8','vpaddlpl.u8','vpaddlvs.u8','vpaddlvc.u8','vpaddlhi.u8','vpaddlls.u8','vpaddlge.u8','vpaddllt.u8','vpaddlgt.u8','vpaddlle.u8', + 'vpaddleq.u16','vpaddlne.u16','vpaddlcs.u16','vpaddlhs.u16','vpaddlcc.u16','vpaddllo.u16','vpaddlmi.u16','vpaddlpl.u16','vpaddlvs.u16','vpaddlvc.u16','vpaddlhi.u16','vpaddlls.u16','vpaddlge.u16','vpaddllt.u16','vpaddlgt.u16','vpaddlle.u16', + 'vpaddleq.u32','vpaddlne.u32','vpaddlcs.u32','vpaddlhs.u32','vpaddlcc.u32','vpaddllo.u32','vpaddlmi.u32','vpaddlpl.u32','vpaddlvs.u32','vpaddlvc.u32','vpaddlhi.u32','vpaddlls.u32','vpaddlge.u32','vpaddllt.u32','vpaddlgt.u32','vpaddlle.u32', + + 'vcgeeq.u8','vcgene.u8','vcgecs.u8','vcgehs.u8','vcgecc.u8','vcgelo.u8','vcgemi.u8','vcgepl.u8','vcgevs.u8','vcgevc.u8','vcgehi.u8','vcgels.u8','vcgege.u8','vcgelt.u8','vcgegt.u8','vcgele.u8', + 'vcgeeq.u16','vcgene.u16','vcgecs.u16','vcgehs.u16','vcgecc.u16','vcgelo.u16','vcgemi.u16','vcgepl.u16','vcgevs.u16','vcgevc.u16','vcgehi.u16','vcgels.u16','vcgege.u16','vcgelt.u16','vcgegt.u16','vcgele.u16', + 'vcgeeq.u32','vcgene.u32','vcgecs.u32','vcgehs.u32','vcgecc.u32','vcgelo.u32','vcgemi.u32','vcgepl.u32','vcgevs.u32','vcgevc.u32','vcgehi.u32','vcgels.u32','vcgege.u32','vcgelt.u32','vcgegt.u32','vcgele.u32', + + 'vcleeq.u8','vclene.u8','vclecs.u8','vclehs.u8','vclecc.u8','vclelo.u8','vclemi.u8','vclepl.u8','vclevs.u8','vclevc.u8','vclehi.u8','vclels.u8','vclege.u8','vclelt.u8','vclegt.u8','vclele.u8', + 'vcleeq.u16','vclene.u16','vclecs.u16','vclehs.u16','vclecc.u16','vclelo.u16','vclemi.u16','vclepl.u16','vclevs.u16','vclevc.u16','vclehi.u16','vclels.u16','vclege.u16','vclelt.u16','vclegt.u16','vclele.u16', + 'vcleeq.u32','vclene.u32','vclecs.u32','vclehs.u32','vclecc.u32','vclelo.u32','vclemi.u32','vclepl.u32','vclevs.u32','vclevc.u32','vclehi.u32','vclels.u32','vclege.u32','vclelt.u32','vclegt.u32','vclele.u32', + + 'vcgteq.u8','vcgtne.u8','vcgtcs.u8','vcgths.u8','vcgtcc.u8','vcgtlo.u8','vcgtmi.u8','vcgtpl.u8','vcgtvs.u8','vcgtvc.u8','vcgthi.u8','vcgtls.u8','vcgtge.u8','vcgtlt.u8','vcgtgt.u8','vcgtle.u8', + 'vcgteq.u16','vcgtne.u16','vcgtcs.u16','vcgths.u16','vcgtcc.u16','vcgtlo.u16','vcgtmi.u16','vcgtpl.u16','vcgtvs.u16','vcgtvc.u16','vcgthi.u16','vcgtls.u16','vcgtge.u16','vcgtlt.u16','vcgtgt.u16','vcgtle.u16', + 'vcgteq.u32','vcgtne.u32','vcgtcs.u32','vcgths.u32','vcgtcc.u32','vcgtlo.u32','vcgtmi.u32','vcgtpl.u32','vcgtvs.u32','vcgtvc.u32','vcgthi.u32','vcgtls.u32','vcgtge.u32','vcgtlt.u32','vcgtgt.u32','vcgtle.u32', + + 'vclteq.u8','vcltne.u8','vcltcs.u8','vclths.u8','vcltcc.u8','vcltlo.u8','vcltmi.u8','vcltpl.u8','vcltvs.u8','vcltvc.u8','vclthi.u8','vcltls.u8','vcltge.u8','vcltlt.u8','vcltgt.u8','vcltle.u8', + 'vclteq.u16','vcltne.u16','vcltcs.u16','vclths.u16','vcltcc.u16','vcltlo.u16','vcltmi.u16','vcltpl.u16','vcltvs.u16','vcltvc.u16','vclthi.u16','vcltls.u16','vcltge.u16','vcltlt.u16','vcltgt.u16','vcltle.u16', + 'vclteq.u32','vcltne.u32','vcltcs.u32','vclths.u32','vcltcc.u32','vcltlo.u32','vcltmi.u32','vcltpl.u32','vcltvs.u32','vcltvc.u32','vclthi.u32','vcltls.u32','vcltge.u32','vcltlt.u32','vcltgt.u32','vcltle.u32', + + 'vmaxeq.u8','vmaxne.u8','vmaxcs.u8','vmaxhs.u8','vmaxcc.u8','vmaxlo.u8','vmaxmi.u8','vmaxpl.u8','vmaxvs.u8','vmaxvc.u8','vmaxhi.u8','vmaxls.u8','vmaxge.u8','vmaxlt.u8','vmaxgt.u8','vmaxle.u8', + 'vmaxeq.u16','vmaxne.u16','vmaxcs.u16','vmaxhs.u16','vmaxcc.u16','vmaxlo.u16','vmaxmi.u16','vmaxpl.u16','vmaxvs.u16','vmaxvc.u16','vmaxhi.u16','vmaxls.u16','vmaxge.u16','vmaxlt.u16','vmaxgt.u16','vmaxle.u16', + 'vmaxeq.u32','vmaxne.u32','vmaxcs.u32','vmaxhs.u32','vmaxcc.u32','vmaxlo.u32','vmaxmi.u32','vmaxpl.u32','vmaxvs.u32','vmaxvc.u32','vmaxhi.u32','vmaxls.u32','vmaxge.u32','vmaxlt.u32','vmaxgt.u32','vmaxle.u32', + + 'vmineq.u8','vminne.u8','vmincs.u8','vminhs.u8','vmincc.u8','vminlo.u8','vminmi.u8','vminpl.u8','vminvs.u8','vminvc.u8','vminhi.u8','vminls.u8','vminge.u8','vminlt.u8','vmingt.u8','vminle.u8', + 'vmineq.u16','vminne.u16','vmincs.u16','vminhs.u16','vmincc.u16','vminlo.u16','vminmi.u16','vminpl.u16','vminvs.u16','vminvc.u16','vminhi.u16','vminls.u16','vminge.u16','vminlt.u16','vmingt.u16','vminle.u16', + 'vmineq.u32','vminne.u32','vmincs.u32','vminhs.u32','vmincc.u32','vminlo.u32','vminmi.u32','vminpl.u32','vminvs.u32','vminvc.u32','vminhi.u32','vminls.u32','vminge.u32','vminlt.u32','vmingt.u32','vminle.u32', + + 'vmlaleq.u8','vmlalne.u8','vmlalcs.u8','vmlalhs.u8','vmlalcc.u8','vmlallo.u8','vmlalmi.u8','vmlalpl.u8','vmlalvs.u8','vmlalvc.u8','vmlalhi.u8','vmlalls.u8','vmlalge.u8','vmlallt.u8','vmlalgt.u8','vmlalle.u8', + 'vmlaleq.u16','vmlalne.u16','vmlalcs.u16','vmlalhs.u16','vmlalcc.u16','vmlallo.u16','vmlalmi.u16','vmlalpl.u16','vmlalvs.u16','vmlalvc.u16','vmlalhi.u16','vmlalls.u16','vmlalge.u16','vmlallt.u16','vmlalgt.u16','vmlalle.u16', + 'vmlaleq.u32','vmlalne.u32','vmlalcs.u32','vmlalhs.u32','vmlalcc.u32','vmlallo.u32','vmlalmi.u32','vmlalpl.u32','vmlalvs.u32','vmlalvc.u32','vmlalhi.u32','vmlalls.u32','vmlalge.u32','vmlallt.u32','vmlalgt.u32','vmlalle.u32', + + 'vmlsleq.u8','vmlslne.u8','vmlslcs.u8','vmlslhs.u8','vmlslcc.u8','vmlsllo.u8','vmlslmi.u8','vmlslpl.u8','vmlslvs.u8','vmlslvc.u8','vmlslhi.u8','vmlslls.u8','vmlslge.u8','vmlsllt.u8','vmlslgt.u8','vmlslle.u8', + 'vmlsleq.u16','vmlslne.u16','vmlslcs.u16','vmlslhs.u16','vmlslcc.u16','vmlsllo.u16','vmlslmi.u16','vmlslpl.u16','vmlslvs.u16','vmlslvc.u16','vmlslhi.u16','vmlslls.u16','vmlslge.u16','vmlsllt.u16','vmlslgt.u16','vmlslle.u16', + 'vmlsleq.u32','vmlslne.u32','vmlslcs.u32','vmlslhs.u32','vmlslcc.u32','vmlsllo.u32','vmlslmi.u32','vmlslpl.u32','vmlslvs.u32','vmlslvc.u32','vmlslhi.u32','vmlslls.u32','vmlslge.u32','vmlsllt.u32','vmlslgt.u32','vmlslle.u32', + + 'vmulleq.u8','vmullne.u8','vmullcs.u8','vmullhs.u8','vmullcc.u8','vmulllo.u8','vmullmi.u8','vmullpl.u8','vmullvs.u8','vmullvc.u8','vmullhi.u8','vmullls.u8','vmullge.u8','vmulllt.u8','vmullgt.u8','vmullle.u8', + 'vmulleq.u16','vmullne.u16','vmullcs.u16','vmullhs.u16','vmullcc.u16','vmulllo.u16','vmullmi.u16','vmullpl.u16','vmullvs.u16','vmullvc.u16','vmullhi.u16','vmullls.u16','vmullge.u16','vmulllt.u16','vmullgt.u16','vmullle.u16', + 'vmulleq.u32','vmullne.u32','vmullcs.u32','vmullhs.u32','vmullcc.u32','vmulllo.u32','vmullmi.u32','vmullpl.u32','vmullvs.u32','vmullvc.u32','vmullhi.u32','vmullls.u32','vmullge.u32','vmulllt.u32','vmullgt.u32','vmullle.u32', + + 'vmovleq.u8','vmovlne.u8','vmovlcs.u8','vmovlhs.u8','vmovlcc.u8','vmovllo.u8','vmovlmi.u8','vmovlpl.u8','vmovlvs.u8','vmovlvc.u8','vmovlhi.u8','vmovlls.u8','vmovlge.u8','vmovllt.u8','vmovlgt.u8','vmovlle.u8', + 'vmovleq.u16','vmovlne.u16','vmovlcs.u16','vmovlhs.u16','vmovlcc.u16','vmovllo.u16','vmovlmi.u16','vmovlpl.u16','vmovlvs.u16','vmovlvc.u16','vmovlhi.u16','vmovlls.u16','vmovlge.u16','vmovllt.u16','vmovlgt.u16','vmovlle.u16', + 'vmovleq.u32','vmovlne.u32','vmovlcs.u32','vmovlhs.u32','vmovlcc.u32','vmovllo.u32','vmovlmi.u32','vmovlpl.u32','vmovlvs.u32','vmovlvc.u32','vmovlhi.u32','vmovlls.u32','vmovlge.u32','vmovllt.u32','vmovlgt.u32','vmovlle.u32', + + 'vshleq.u8','vshlne.u8','vshlcs.u8','vshlhs.u8','vshlcc.u8','vshllo.u8','vshlmi.u8','vshlpl.u8','vshlvs.u8','vshlvc.u8','vshlhi.u8','vshlls.u8','vshlge.u8','vshllt.u8','vshlgt.u8','vshlle.u8', + 'vshleq.u16','vshlne.u16','vshlcs.u16','vshlhs.u16','vshlcc.u16','vshllo.u16','vshlmi.u16','vshlpl.u16','vshlvs.u16','vshlvc.u16','vshlhi.u16','vshlls.u16','vshlge.u16','vshllt.u16','vshlgt.u16','vshlle.u16', + 'vshleq.u32','vshlne.u32','vshlcs.u32','vshlhs.u32','vshlcc.u32','vshllo.u32','vshlmi.u32','vshlpl.u32','vshlvs.u32','vshlvc.u32','vshlhi.u32','vshlls.u32','vshlge.u32','vshllt.u32','vshlgt.u32','vshlle.u32', + 'vshleq.u64','vshlne.u64','vshlcs.u64','vshlhs.u64','vshlcc.u64','vshllo.u64','vshlmi.u64','vshlpl.u64','vshlvs.u64','vshlvc.u64','vshlhi.u64','vshlls.u64','vshlge.u64','vshllt.u64','vshlgt.u64','vshlle.u64', + + 'vshlleq.u8','vshllne.u8','vshllcs.u8','vshllhs.u8','vshllcc.u8','vshlllo.u8','vshllmi.u8','vshllpl.u8','vshllvs.u8','vshllvc.u8','vshllhi.u8','vshllls.u8','vshllge.u8','vshlllt.u8','vshllgt.u8','vshllle.u8', + 'vshlleq.u16','vshllne.u16','vshllcs.u16','vshllhs.u16','vshllcc.u16','vshlllo.u16','vshllmi.u16','vshllpl.u16','vshllvs.u16','vshllvc.u16','vshllhi.u16','vshllls.u16','vshllge.u16','vshlllt.u16','vshllgt.u16','vshllle.u16', + 'vshlleq.u32','vshllne.u32','vshllcs.u32','vshllhs.u32','vshllcc.u32','vshlllo.u32','vshllmi.u32','vshllpl.u32','vshllvs.u32','vshllvc.u32','vshllhi.u32','vshllls.u32','vshllge.u32','vshlllt.u32','vshllgt.u32','vshllle.u32', + + 'vshreq.u8','vshrne.u8','vshrcs.u8','vshrhs.u8','vshrcc.u8','vshrlo.u8','vshrmi.u8','vshrpl.u8','vshrvs.u8','vshrvc.u8','vshrhi.u8','vshrls.u8','vshrge.u8','vshrlt.u8','vshrgt.u8','vshrle.u8', + 'vshreq.u16','vshrne.u16','vshrcs.u16','vshrhs.u16','vshrcc.u16','vshrlo.u16','vshrmi.u16','vshrpl.u16','vshrvs.u16','vshrvc.u16','vshrhi.u16','vshrls.u16','vshrge.u16','vshrlt.u16','vshrgt.u16','vshrle.u16', + 'vshreq.u32','vshrne.u32','vshrcs.u32','vshrhs.u32','vshrcc.u32','vshrlo.u32','vshrmi.u32','vshrpl.u32','vshrvs.u32','vshrvc.u32','vshrhi.u32','vshrls.u32','vshrge.u32','vshrlt.u32','vshrgt.u32','vshrle.u32', + 'vshreq.u64','vshrne.u64','vshrcs.u64','vshrhs.u64','vshrcc.u64','vshrlo.u64','vshrmi.u64','vshrpl.u64','vshrvs.u64','vshrvc.u64','vshrhi.u64','vshrls.u64','vshrge.u64','vshrlt.u64','vshrgt.u64','vshrle.u64', + + 'vsraeq.u8','vsrane.u8','vsracs.u8','vsrahs.u8','vsracc.u8','vsralo.u8','vsrami.u8','vsrapl.u8','vsravs.u8','vsravc.u8','vsrahi.u8','vsrals.u8','vsrage.u8','vsralt.u8','vsragt.u8','vsrale.u8', + 'vsraeq.u16','vsrane.u16','vsracs.u16','vsrahs.u16','vsracc.u16','vsralo.u16','vsrami.u16','vsrapl.u16','vsravs.u16','vsravc.u16','vsrahi.u16','vsrals.u16','vsrage.u16','vsralt.u16','vsragt.u16','vsrale.u16', + 'vsraeq.u32','vsrane.u32','vsracs.u32','vsrahs.u32','vsracc.u32','vsralo.u32','vsrami.u32','vsrapl.u32','vsravs.u32','vsravc.u32','vsrahi.u32','vsrals.u32','vsrage.u32','vsralt.u32','vsragt.u32','vsrale.u32', + 'vsraeq.u64','vsrane.u64','vsracs.u64','vsrahs.u64','vsracc.u64','vsralo.u64','vsrami.u64','vsrapl.u64','vsravs.u64','vsravc.u64','vsrahi.u64','vsrals.u64','vsrage.u64','vsralt.u64','vsragt.u64','vsrale.u64', + + 'vpmaxeq.u8','vpmaxne.u8','vpmaxcs.u8','vpmaxhs.u8','vpmaxcc.u8','vpmaxlo.u8','vpmaxmi.u8','vpmaxpl.u8','vpmaxvs.u8','vpmaxvc.u8','vpmaxhi.u8','vpmaxls.u8','vpmaxge.u8','vpmaxlt.u8','vpmaxgt.u8','vpmaxle.u8', + 'vpmaxeq.u16','vpmaxne.u16','vpmaxcs.u16','vpmaxhs.u16','vpmaxcc.u16','vpmaxlo.u16','vpmaxmi.u16','vpmaxpl.u16','vpmaxvs.u16','vpmaxvc.u16','vpmaxhi.u16','vpmaxls.u16','vpmaxge.u16','vpmaxlt.u16','vpmaxgt.u16','vpmaxle.u16', + 'vpmaxeq.u32','vpmaxne.u32','vpmaxcs.u32','vpmaxhs.u32','vpmaxcc.u32','vpmaxlo.u32','vpmaxmi.u32','vpmaxpl.u32','vpmaxvs.u32','vpmaxvc.u32','vpmaxhi.u32','vpmaxls.u32','vpmaxge.u32','vpmaxlt.u32','vpmaxgt.u32','vpmaxle.u32', + + 'vpmineq.u8','vpminne.u8','vpmincs.u8','vpminhs.u8','vpmincc.u8','vpminlo.u8','vpminmi.u8','vpminpl.u8','vpminvs.u8','vpminvc.u8','vpminhi.u8','vpminls.u8','vpminge.u8','vpminlt.u8','vpmingt.u8','vpminle.u8', + 'vpmineq.u16','vpminne.u16','vpmincs.u16','vpminhs.u16','vpmincc.u16','vpminlo.u16','vpminmi.u16','vpminpl.u16','vpminvs.u16','vpminvc.u16','vpminhi.u16','vpminls.u16','vpminge.u16','vpminlt.u16','vpmingt.u16','vpminle.u16', + 'vpmineq.u32','vpminne.u32','vpmincs.u32','vpminhs.u32','vpmincc.u32','vpminlo.u32','vpminmi.u32','vpminpl.u32','vpminvs.u32','vpminvc.u32','vpminhi.u32','vpminls.u32','vpminge.u32','vpminlt.u32','vpmingt.u32','vpminle.u32', + + 'vqaddeq.u8','vqaddne.u8','vqaddcs.u8','vqaddhs.u8','vqaddcc.u8','vqaddlo.u8','vqaddmi.u8','vqaddpl.u8','vqaddvs.u8','vqaddvc.u8','vqaddhi.u8','vqaddls.u8','vqaddge.u8','vqaddlt.u8','vqaddgt.u8','vqaddle.u8', + 'vqaddeq.u16','vqaddne.u16','vqaddcs.u16','vqaddhs.u16','vqaddcc.u16','vqaddlo.u16','vqaddmi.u16','vqaddpl.u16','vqaddvs.u16','vqaddvc.u16','vqaddhi.u16','vqaddls.u16','vqaddge.u16','vqaddlt.u16','vqaddgt.u16','vqaddle.u16', + 'vqaddeq.u32','vqaddne.u32','vqaddcs.u32','vqaddhs.u32','vqaddcc.u32','vqaddlo.u32','vqaddmi.u32','vqaddpl.u32','vqaddvs.u32','vqaddvc.u32','vqaddhi.u32','vqaddls.u32','vqaddge.u32','vqaddlt.u32','vqaddgt.u32','vqaddle.u32', + 'vqaddeq.u64','vqaddne.u64','vqaddcs.u64','vqaddhs.u64','vqaddcc.u64','vqaddlo.u64','vqaddmi.u64','vqaddpl.u64','vqaddvs.u64','vqaddvc.u64','vqaddhi.u64','vqaddls.u64','vqaddge.u64','vqaddlt.u64','vqaddgt.u64','vqaddle.u64', + + 'vqsubeq.u8','vqsubne.u8','vqsubcs.u8','vqsubhs.u8','vqsubcc.u8','vqsublo.u8','vqsubmi.u8','vqsubpl.u8','vqsubvs.u8','vqsubvc.u8','vqsubhi.u8','vqsubls.u8','vqsubge.u8','vqsublt.u8','vqsubgt.u8','vqsuble.u8', + 'vqsubeq.u16','vqsubne.u16','vqsubcs.u16','vqsubhs.u16','vqsubcc.u16','vqsublo.u16','vqsubmi.u16','vqsubpl.u16','vqsubvs.u16','vqsubvc.u16','vqsubhi.u16','vqsubls.u16','vqsubge.u16','vqsublt.u16','vqsubgt.u16','vqsuble.u16', + 'vqsubeq.u32','vqsubne.u32','vqsubcs.u32','vqsubhs.u32','vqsubcc.u32','vqsublo.u32','vqsubmi.u32','vqsubpl.u32','vqsubvs.u32','vqsubvc.u32','vqsubhi.u32','vqsubls.u32','vqsubge.u32','vqsublt.u32','vqsubgt.u32','vqsuble.u32', + 'vqsubeq.u64','vqsubne.u64','vqsubcs.u64','vqsubhs.u64','vqsubcc.u64','vqsublo.u64','vqsubmi.u64','vqsubpl.u64','vqsubvs.u64','vqsubvc.u64','vqsubhi.u64','vqsubls.u64','vqsubge.u64','vqsublt.u64','vqsubgt.u64','vqsuble.u64', + + 'vqmovneq.u16','vqmovnne.u16','vqmovncs.u16','vqmovnhs.u16','vqmovncc.u16','vqmovnlo.u16','vqmovnmi.u16','vqmovnpl.u16','vqmovnvs.u16','vqmovnvc.u16','vqmovnhi.u16','vqmovnls.u16','vqmovnge.u16','vqmovnlt.u16','vqmovngt.u16','vqmovnle.u16', + 'vqmovneq.u32','vqmovnne.u32','vqmovncs.u32','vqmovnhs.u32','vqmovncc.u32','vqmovnlo.u32','vqmovnmi.u32','vqmovnpl.u32','vqmovnvs.u32','vqmovnvc.u32','vqmovnhi.u32','vqmovnls.u32','vqmovnge.u32','vqmovnlt.u32','vqmovngt.u32','vqmovnle.u32', + 'vqmovneq.u64','vqmovnne.u64','vqmovncs.u64','vqmovnhs.u64','vqmovncc.u64','vqmovnlo.u64','vqmovnmi.u64','vqmovnpl.u64','vqmovnvs.u64','vqmovnvc.u64','vqmovnhi.u64','vqmovnls.u64','vqmovnge.u64','vqmovnlt.u64','vqmovngt.u64','vqmovnle.u64', + + 'vqshleq.u8','vqshlne.u8','vqshlcs.u8','vqshlhs.u8','vqshlcc.u8','vqshllo.u8','vqshlmi.u8','vqshlpl.u8','vqshlvs.u8','vqshlvc.u8','vqshlhi.u8','vqshlls.u8','vqshlge.u8','vqshllt.u8','vqshlgt.u8','vqshlle.u8', + 'vqshleq.u16','vqshlne.u16','vqshlcs.u16','vqshlhs.u16','vqshlcc.u16','vqshllo.u16','vqshlmi.u16','vqshlpl.u16','vqshlvs.u16','vqshlvc.u16','vqshlhi.u16','vqshlls.u16','vqshlge.u16','vqshllt.u16','vqshlgt.u16','vqshlle.u16', + 'vqshleq.u32','vqshlne.u32','vqshlcs.u32','vqshlhs.u32','vqshlcc.u32','vqshllo.u32','vqshlmi.u32','vqshlpl.u32','vqshlvs.u32','vqshlvc.u32','vqshlhi.u32','vqshlls.u32','vqshlge.u32','vqshllt.u32','vqshlgt.u32','vqshlle.u32', + 'vqshleq.u64','vqshlne.u64','vqshlcs.u64','vqshlhs.u64','vqshlcc.u64','vqshllo.u64','vqshlmi.u64','vqshlpl.u64','vqshlvs.u64','vqshlvc.u64','vqshlhi.u64','vqshlls.u64','vqshlge.u64','vqshllt.u64','vqshlgt.u64','vqshlle.u64', + + 'vqshrneq.u16','vqshrnne.u16','vqshrncs.u16','vqshrnhs.u16','vqshrncc.u16','vqshrnlo.u16','vqshrnmi.u16','vqshrnpl.u16','vqshrnvs.u16','vqshrnvc.u16','vqshrnhi.u16','vqshrnls.u16','vqshrnge.u16','vqshrnlt.u16','vqshrngt.u16','vqshrnle.u16', + 'vqshrneq.u32','vqshrnne.u32','vqshrncs.u32','vqshrnhs.u32','vqshrncc.u32','vqshrnlo.u32','vqshrnmi.u32','vqshrnpl.u32','vqshrnvs.u32','vqshrnvc.u32','vqshrnhi.u32','vqshrnls.u32','vqshrnge.u32','vqshrnlt.u32','vqshrngt.u32','vqshrnle.u32', + 'vqshrneq.u64','vqshrnne.u64','vqshrncs.u64','vqshrnhs.u64','vqshrncc.u64','vqshrnlo.u64','vqshrnmi.u64','vqshrnpl.u64','vqshrnvs.u64','vqshrnvc.u64','vqshrnhi.u64','vqshrnls.u64','vqshrnge.u64','vqshrnlt.u64','vqshrngt.u64','vqshrnle.u64', + + 'vqrshleq.u8','vqrshlne.u8','vqrshlcs.u8','vqrshlhs.u8','vqrshlcc.u8','vqrshllo.u8','vqrshlmi.u8','vqrshlpl.u8','vqrshlvs.u8','vqrshlvc.u8','vqrshlhi.u8','vqrshlls.u8','vqrshlge.u8','vqrshllt.u8','vqrshlgt.u8','vqrshlle.u8', + 'vqrshleq.u16','vqrshlne.u16','vqrshlcs.u16','vqrshlhs.u16','vqrshlcc.u16','vqrshllo.u16','vqrshlmi.u16','vqrshlpl.u16','vqrshlvs.u16','vqrshlvc.u16','vqrshlhi.u16','vqrshlls.u16','vqrshlge.u16','vqrshllt.u16','vqrshlgt.u16','vqrshlle.u16', + 'vqrshleq.u32','vqrshlne.u32','vqrshlcs.u32','vqrshlhs.u32','vqrshlcc.u32','vqrshllo.u32','vqrshlmi.u32','vqrshlpl.u32','vqrshlvs.u32','vqrshlvc.u32','vqrshlhi.u32','vqrshlls.u32','vqrshlge.u32','vqrshllt.u32','vqrshlgt.u32','vqrshlle.u32', + 'vqrshleq.u64','vqrshlne.u64','vqrshlcs.u64','vqrshlhs.u64','vqrshlcc.u64','vqrshllo.u64','vqrshlmi.u64','vqrshlpl.u64','vqrshlvs.u64','vqrshlvc.u64','vqrshlhi.u64','vqrshlls.u64','vqrshlge.u64','vqrshllt.u64','vqrshlgt.u64','vqrshlle.u64', + + 'vqrshrneq.u16','vqrshrnne.u16','vqrshrncs.u16','vqrshrnhs.u16','vqrshrncc.u16','vqrshrnlo.u16','vqrshrnmi.u16','vqrshrnpl.u16','vqrshrnvs.u16','vqrshrnvc.u16','vqrshrnhi.u16','vqrshrnls.u16','vqrshrnge.u16','vqrshrnlt.u16','vqrshrngt.u16','vqrshrnle.u16', + 'vqrshrneq.u32','vqrshrnne.u32','vqrshrncs.u32','vqrshrnhs.u32','vqrshrncc.u32','vqrshrnlo.u32','vqrshrnmi.u32','vqrshrnpl.u32','vqrshrnvs.u32','vqrshrnvc.u32','vqrshrnhi.u32','vqrshrnls.u32','vqrshrnge.u32','vqrshrnlt.u32','vqrshrngt.u32','vqrshrnle.u32', + 'vqrshrneq.u64','vqrshrnne.u64','vqrshrncs.u64','vqrshrnhs.u64','vqrshrncc.u64','vqrshrnlo.u64','vqrshrnmi.u64','vqrshrnpl.u64','vqrshrnvs.u64','vqrshrnvc.u64','vqrshrnhi.u64','vqrshrnls.u64','vqrshrnge.u64','vqrshrnlt.u64','vqrshrngt.u64','vqrshrnle.u64', + + 'vrhaddeq.u8','vrhaddne.u8','vrhaddcs.u8','vrhaddhs.u8','vrhaddcc.u8','vrhaddlo.u8','vrhaddmi.u8','vrhaddpl.u8','vrhaddvs.u8','vrhaddvc.u8','vrhaddhi.u8','vrhaddls.u8','vrhaddge.u8','vrhaddlt.u8','vrhaddgt.u8','vrhaddle.u8', + 'vrhaddeq.u16','vrhaddne.u16','vrhaddcs.u16','vrhaddhs.u16','vrhaddcc.u16','vrhaddlo.u16','vrhaddmi.u16','vrhaddpl.u16','vrhaddvs.u16','vrhaddvc.u16','vrhaddhi.u16','vrhaddls.u16','vrhaddge.u16','vrhaddlt.u16','vrhaddgt.u16','vrhaddle.u16', + 'vrhaddeq.u32','vrhaddne.u32','vrhaddcs.u32','vrhaddhs.u32','vrhaddcc.u32','vrhaddlo.u32','vrhaddmi.u32','vrhaddpl.u32','vrhaddvs.u32','vrhaddvc.u32','vrhaddhi.u32','vrhaddls.u32','vrhaddge.u32','vrhaddlt.u32','vrhaddgt.u32','vrhaddle.u32', + + 'vrshleq.u8','vrshlne.u8','vrshlcs.u8','vrshlhs.u8','vrshlcc.u8','vrshllo.u8','vrshlmi.u8','vrshlpl.u8','vrshlvs.u8','vrshlvc.u8','vrshlhi.u8','vrshlls.u8','vrshlge.u8','vrshllt.u8','vrshlgt.u8','vrshlle.u8', + 'vrshleq.u16','vrshlne.u16','vrshlcs.u16','vrshlhs.u16','vrshlcc.u16','vrshllo.u16','vrshlmi.u16','vrshlpl.u16','vrshlvs.u16','vrshlvc.u16','vrshlhi.u16','vrshlls.u16','vrshlge.u16','vrshllt.u16','vrshlgt.u16','vrshlle.u16', + 'vrshleq.u32','vrshlne.u32','vrshlcs.u32','vrshlhs.u32','vrshlcc.u32','vrshllo.u32','vrshlmi.u32','vrshlpl.u32','vrshlvs.u32','vrshlvc.u32','vrshlhi.u32','vrshlls.u32','vrshlge.u32','vrshllt.u32','vrshlgt.u32','vrshlle.u32', + 'vrshleq.u64','vrshlne.u64','vrshlcs.u64','vrshlhs.u64','vrshlcc.u64','vrshllo.u64','vrshlmi.u64','vrshlpl.u64','vrshlvs.u64','vrshlvc.u64','vrshlhi.u64','vrshlls.u64','vrshlge.u64','vrshllt.u64','vrshlgt.u64','vrshlle.u64', + + 'vrshreq.u8','vrshrne.u8','vrshrcs.u8','vrshrhs.u8','vrshrcc.u8','vrshrlo.u8','vrshrmi.u8','vrshrpl.u8','vrshrvs.u8','vrshrvc.u8','vrshrhi.u8','vrshrls.u8','vrshrge.u8','vrshrlt.u8','vrshrgt.u8','vrshrle.u8', + 'vrshreq.u16','vrshrne.u16','vrshrcs.u16','vrshrhs.u16','vrshrcc.u16','vrshrlo.u16','vrshrmi.u16','vrshrpl.u16','vrshrvs.u16','vrshrvc.u16','vrshrhi.u16','vrshrls.u16','vrshrge.u16','vrshrlt.u16','vrshrgt.u16','vrshrle.u16', + 'vrshreq.u32','vrshrne.u32','vrshrcs.u32','vrshrhs.u32','vrshrcc.u32','vrshrlo.u32','vrshrmi.u32','vrshrpl.u32','vrshrvs.u32','vrshrvc.u32','vrshrhi.u32','vrshrls.u32','vrshrge.u32','vrshrlt.u32','vrshrgt.u32','vrshrle.u32', + 'vrshreq.u64','vrshrne.u64','vrshrcs.u64','vrshrhs.u64','vrshrcc.u64','vrshrlo.u64','vrshrmi.u64','vrshrpl.u64','vrshrvs.u64','vrshrvc.u64','vrshrhi.u64','vrshrls.u64','vrshrge.u64','vrshrlt.u64','vrshrgt.u64','vrshrle.u64', + + 'vrsraeq.u8','vrsrane.u8','vrsracs.u8','vrsrahs.u8','vrsracc.u8','vrsralo.u8','vrsrami.u8','vrsrapl.u8','vrsravs.u8','vrsravc.u8','vrsrahi.u8','vrsrals.u8','vrsrage.u8','vrsralt.u8','vrsragt.u8','vrsrale.u8', + 'vrsraeq.u16','vrsrane.u16','vrsracs.u16','vrsrahs.u16','vrsracc.u16','vrsralo.u16','vrsrami.u16','vrsrapl.u16','vrsravs.u16','vrsravc.u16','vrsrahi.u16','vrsrals.u16','vrsrage.u16','vrsralt.u16','vrsragt.u16','vrsrale.u16', + 'vrsraeq.u32','vrsrane.u32','vrsracs.u32','vrsrahs.u32','vrsracc.u32','vrsralo.u32','vrsrami.u32','vrsrapl.u32','vrsravs.u32','vrsravc.u32','vrsrahi.u32','vrsrals.u32','vrsrage.u32','vrsralt.u32','vrsragt.u32','vrsrale.u32', + 'vrsraeq.u64','vrsrane.u64','vrsracs.u64','vrsrahs.u64','vrsracc.u64','vrsralo.u64','vrsrami.u64','vrsrapl.u64','vrsravs.u64','vrsravc.u64','vrsrahi.u64','vrsrals.u64','vrsrage.u64','vrsralt.u64','vrsragt.u64','vrsrale.u64', + ), + /* Conditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 34 => array( + 'vabdeq.f32','vabdne.f32','vabdcs.f32','vabdhs.f32','vabdcc.f32','vabdlo.f32','vabdmi.f32','vabdpl.f32','vabdvs.f32','vabdvc.f32','vabdhi.f32','vabdls.f32','vabdge.f32','vabdlt.f32','vabdgt.f32','vabdle.f32', + + 'vabseq.f32','vabsne.f32','vabscs.f32','vabshs.f32','vabscc.f32','vabslo.f32','vabsmi.f32','vabspl.f32','vabsvs.f32','vabsvc.f32','vabshi.f32','vabsls.f32','vabsge.f32','vabslt.f32','vabsgt.f32','vabsle.f32', + 'vabseq.f64','vabsne.f64','vabscs.f64','vabshs.f64','vabscc.f64','vabslo.f64','vabsmi.f64','vabspl.f64','vabsvs.f64','vabsvc.f64','vabshi.f64','vabsls.f64','vabsge.f64','vabslt.f64','vabsgt.f64','vabsle.f64', + + 'vacgeeq.f32','vacgene.f32','vacgecs.f32','vacgehs.f32','vacgecc.f32','vacgelo.f32','vacgemi.f32','vacgepl.f32','vacgevs.f32','vacgevc.f32','vacgehi.f32','vacgels.f32','vacgege.f32','vacgelt.f32','vacgegt.f32','vacgele.f32', + 'vacgteq.f32','vacgtne.f32','vacgtcs.f32','vacgths.f32','vacgtcc.f32','vacgtlo.f32','vacgtmi.f32','vacgtpl.f32','vacgtvs.f32','vacgtvc.f32','vacgthi.f32','vacgtls.f32','vacgtge.f32','vacgtlt.f32','vacgtgt.f32','vacgtle.f32', + 'vacleeq.f32','vaclene.f32','vaclecs.f32','vaclehs.f32','vaclecc.f32','vaclelo.f32','vaclemi.f32','vaclepl.f32','vaclevs.f32','vaclevc.f32','vaclehi.f32','vaclels.f32','vaclege.f32','vaclelt.f32','vaclegt.f32','vaclele.f32', + 'vaclteq.f32','vacltne.f32','vacltcs.f32','vaclths.f32','vacltcc.f32','vacltlo.f32','vacltmi.f32','vacltpl.f32','vacltvs.f32','vacltvc.f32','vaclthi.f32','vacltls.f32','vacltge.f32','vacltlt.f32','vacltgt.f32','vacltle.f32', + + 'vaddeq.f32','vaddne.f32','vaddcs.f32','vaddhs.f32','vaddcc.f32','vaddlo.f32','vaddmi.f32','vaddpl.f32','vaddvs.f32','vaddvc.f32','vaddhi.f32','vaddls.f32','vaddge.f32','vaddlt.f32','vaddgt.f32','vaddle.f32', + 'vaddeq.f64','vaddne.f64','vaddcs.f64','vaddhs.f64','vaddcc.f64','vaddlo.f64','vaddmi.f64','vaddpl.f64','vaddvs.f64','vaddvc.f64','vaddhi.f64','vaddls.f64','vaddge.f64','vaddlt.f64','vaddgt.f64','vaddle.f64', + + 'vceqeq.f32','vceqne.f32','vceqcs.f32','vceqhs.f32','vceqcc.f32','vceqlo.f32','vceqmi.f32','vceqpl.f32','vceqvs.f32','vceqvc.f32','vceqhi.f32','vceqls.f32','vceqge.f32','vceqlt.f32','vceqgt.f32','vceqle.f32', + 'vcgeeq.f32','vcgene.f32','vcgecs.f32','vcgehs.f32','vcgecc.f32','vcgelo.f32','vcgemi.f32','vcgepl.f32','vcgevs.f32','vcgevc.f32','vcgehi.f32','vcgels.f32','vcgege.f32','vcgelt.f32','vcgegt.f32','vcgele.f32', + 'vcleeq.f32','vclene.f32','vclecs.f32','vclehs.f32','vclecc.f32','vclelo.f32','vclemi.f32','vclepl.f32','vclevs.f32','vclevc.f32','vclehi.f32','vclels.f32','vclege.f32','vclelt.f32','vclegt.f32','vclele.f32', + 'vcgteq.f32','vcgtne.f32','vcgtcs.f32','vcgths.f32','vcgtcc.f32','vcgtlo.f32','vcgtmi.f32','vcgtpl.f32','vcgtvs.f32','vcgtvc.f32','vcgthi.f32','vcgtls.f32','vcgtge.f32','vcgtlt.f32','vcgtgt.f32','vcgtle.f32', + 'vclteq.f32','vcltne.f32','vcltcs.f32','vclths.f32','vcltcc.f32','vcltlo.f32','vcltmi.f32','vcltpl.f32','vcltvs.f32','vcltvc.f32','vclthi.f32','vcltls.f32','vcltge.f32','vcltlt.f32','vcltgt.f32','vcltle.f32', + + 'vcmpeq.f32','vcmpne.f32','vcmpcs.f32','vcmphs.f32','vcmpcc.f32','vcmplo.f32','vcmpmi.f32','vcmppl.f32','vcmpvs.f32','vcmpvc.f32','vcmphi.f32','vcmpls.f32','vcmpge.f32','vcmplt.f32','vcmpgt.f32','vcmple.f32', + 'vcmpeq.f64','vcmpne.f64','vcmpcs.f64','vcmphs.f64','vcmpcc.f64','vcmplo.f64','vcmpmi.f64','vcmppl.f64','vcmpvs.f64','vcmpvc.f64','vcmphi.f64','vcmpls.f64','vcmpge.f64','vcmplt.f64','vcmpgt.f64','vcmple.f64', + + 'vcmpeeq.f32','vcmpene.f32','vcmpecs.f32','vcmpehs.f32','vcmpecc.f32','vcmpelo.f32','vcmpemi.f32','vcmpepl.f32','vcmpevs.f32','vcmpevc.f32','vcmpehi.f32','vcmpels.f32','vcmpege.f32','vcmpelt.f32','vcmpegt.f32','vcmpele.f32', + 'vcmpeeq.f64','vcmpene.f64','vcmpecs.f64','vcmpehs.f64','vcmpecc.f64','vcmpelo.f64','vcmpemi.f64','vcmpepl.f64','vcmpevs.f64','vcmpevc.f64','vcmpehi.f64','vcmpels.f64','vcmpege.f64','vcmpelt.f64','vcmpegt.f64','vcmpele.f64', + + 'vcvteq.s16.f32','vcvtne.s16.f32','vcvtcs.s16.f32','vcvths.s16.f32','vcvtcc.s16.f32','vcvtlo.s16.f32','vcvtmi.s16.f32','vcvtpl.s16.f32','vcvtvs.s16.f32','vcvtvc.s16.f32','vcvthi.s16.f32','vcvtls.s16.f32','vcvtge.s16.f32','vcvtlt.s16.f32','vcvtgt.s16.f32','vcvtle.s16.f32', + 'vcvteq.s16.f64','vcvtne.s16.f64','vcvtcs.s16.f64','vcvths.s16.f64','vcvtcc.s16.f64','vcvtlo.s16.f64','vcvtmi.s16.f64','vcvtpl.s16.f64','vcvtvs.s16.f64','vcvtvc.s16.f64','vcvthi.s16.f64','vcvtls.s16.f64','vcvtge.s16.f64','vcvtlt.s16.f64','vcvtgt.s16.f64','vcvtle.s16.f64', + 'vcvteq.s32.f32','vcvtne.s32.f32','vcvtcs.s32.f32','vcvths.s32.f32','vcvtcc.s32.f32','vcvtlo.s32.f32','vcvtmi.s32.f32','vcvtpl.s32.f32','vcvtvs.s32.f32','vcvtvc.s32.f32','vcvthi.s32.f32','vcvtls.s32.f32','vcvtge.s32.f32','vcvtlt.s32.f32','vcvtgt.s32.f32','vcvtle.s32.f32', + 'vcvteq.s32.f64','vcvtne.s32.f64','vcvtcs.s32.f64','vcvths.s32.f64','vcvtcc.s32.f64','vcvtlo.s32.f64','vcvtmi.s32.f64','vcvtpl.s32.f64','vcvtvs.s32.f64','vcvtvc.s32.f64','vcvthi.s32.f64','vcvtls.s32.f64','vcvtge.s32.f64','vcvtlt.s32.f64','vcvtgt.s32.f64','vcvtle.s32.f64', + 'vcvteq.u16.f32','vcvtne.u16.f32','vcvtcs.u16.f32','vcvths.u16.f32','vcvtcc.u16.f32','vcvtlo.u16.f32','vcvtmi.u16.f32','vcvtpl.u16.f32','vcvtvs.u16.f32','vcvtvc.u16.f32','vcvthi.u16.f32','vcvtls.u16.f32','vcvtge.u16.f32','vcvtlt.u16.f32','vcvtgt.u16.f32','vcvtle.u16.f32', + 'vcvteq.u16.f64','vcvtne.u16.f64','vcvtcs.u16.f64','vcvths.u16.f64','vcvtcc.u16.f64','vcvtlo.u16.f64','vcvtmi.u16.f64','vcvtpl.u16.f64','vcvtvs.u16.f64','vcvtvc.u16.f64','vcvthi.u16.f64','vcvtls.u16.f64','vcvtge.u16.f64','vcvtlt.u16.f64','vcvtgt.u16.f64','vcvtle.u16.f64', + 'vcvteq.u32.f32','vcvtne.u32.f32','vcvtcs.u32.f32','vcvths.u32.f32','vcvtcc.u32.f32','vcvtlo.u32.f32','vcvtmi.u32.f32','vcvtpl.u32.f32','vcvtvs.u32.f32','vcvtvc.u32.f32','vcvthi.u32.f32','vcvtls.u32.f32','vcvtge.u32.f32','vcvtlt.u32.f32','vcvtgt.u32.f32','vcvtle.u32.f32', + 'vcvteq.u32.f64','vcvtne.u32.f64','vcvtcs.u32.f64','vcvths.u32.f64','vcvtcc.u32.f64','vcvtlo.u32.f64','vcvtmi.u32.f64','vcvtpl.u32.f64','vcvtvs.u32.f64','vcvtvc.u32.f64','vcvthi.u32.f64','vcvtls.u32.f64','vcvtge.u32.f64','vcvtlt.u32.f64','vcvtgt.u32.f64','vcvtle.u32.f64', + 'vcvteq.f16.f32','vcvtne.f16.f32','vcvtcs.f16.f32','vcvths.f16.f32','vcvtcc.f16.f32','vcvtlo.f16.f32','vcvtmi.f16.f32','vcvtpl.f16.f32','vcvtvs.f16.f32','vcvtvc.f16.f32','vcvthi.f16.f32','vcvtls.f16.f32','vcvtge.f16.f32','vcvtlt.f16.f32','vcvtgt.f16.f32','vcvtle.f16.f32', + 'vcvteq.f32.s32','vcvtne.f32.s32','vcvtcs.f32.s32','vcvths.f32.s32','vcvtcc.f32.s32','vcvtlo.f32.s32','vcvtmi.f32.s32','vcvtpl.f32.s32','vcvtvs.f32.s32','vcvtvc.f32.s32','vcvthi.f32.s32','vcvtls.f32.s32','vcvtge.f32.s32','vcvtlt.f32.s32','vcvtgt.f32.s32','vcvtle.f32.s32', + 'vcvteq.f32.u32','vcvtne.f32.u32','vcvtcs.f32.u32','vcvths.f32.u32','vcvtcc.f32.u32','vcvtlo.f32.u32','vcvtmi.f32.u32','vcvtpl.f32.u32','vcvtvs.f32.u32','vcvtvc.f32.u32','vcvthi.f32.u32','vcvtls.f32.u32','vcvtge.f32.u32','vcvtlt.f32.u32','vcvtgt.f32.u32','vcvtle.f32.u32', + 'vcvteq.f32.f16','vcvtne.f32.f16','vcvtcs.f32.f16','vcvths.f32.f16','vcvtcc.f32.f16','vcvtlo.f32.f16','vcvtmi.f32.f16','vcvtpl.f32.f16','vcvtvs.f32.f16','vcvtvc.f32.f16','vcvthi.f32.f16','vcvtls.f32.f16','vcvtge.f32.f16','vcvtlt.f32.f16','vcvtgt.f32.f16','vcvtle.f32.f16', + 'vcvteq.f32.f64','vcvtne.f32.f64','vcvtcs.f32.f64','vcvths.f32.f64','vcvtcc.f32.f64','vcvtlo.f32.f64','vcvtmi.f32.f64','vcvtpl.f32.f64','vcvtvs.f32.f64','vcvtvc.f32.f64','vcvthi.f32.f64','vcvtls.f32.f64','vcvtge.f32.f64','vcvtlt.f32.f64','vcvtgt.f32.f64','vcvtle.f32.f64', + 'vcvteq.f64.s32','vcvtne.f64.s32','vcvtcs.f64.s32','vcvths.f64.s32','vcvtcc.f64.s32','vcvtlo.f64.s32','vcvtmi.f64.s32','vcvtpl.f64.s32','vcvtvs.f64.s32','vcvtvc.f64.s32','vcvthi.f64.s32','vcvtls.f64.s32','vcvtge.f64.s32','vcvtlt.f64.s32','vcvtgt.f64.s32','vcvtle.f64.s32', + 'vcvteq.f64.u32','vcvtne.f64.u32','vcvtcs.f64.u32','vcvths.f64.u32','vcvtcc.f64.u32','vcvtlo.f64.u32','vcvtmi.f64.u32','vcvtpl.f64.u32','vcvtvs.f64.u32','vcvtvc.f64.u32','vcvthi.f64.u32','vcvtls.f64.u32','vcvtge.f64.u32','vcvtlt.f64.u32','vcvtgt.f64.u32','vcvtle.f64.u32', + 'vcvteq.f64.f32','vcvtne.f64.f32','vcvtcs.f64.f32','vcvths.f64.f32','vcvtcc.f64.f32','vcvtlo.f64.f32','vcvtmi.f64.f32','vcvtpl.f64.f32','vcvtvs.f64.f32','vcvtvc.f64.f32','vcvthi.f64.f32','vcvtls.f64.f32','vcvtge.f64.f32','vcvtlt.f64.f32','vcvtgt.f64.f32','vcvtle.f64.f32', + + 'vcvtreq.s32.f32','vcvtrne.s32.f32','vcvtrcs.s32.f32','vcvtrhs.s32.f32','vcvtrcc.s32.f32','vcvtrlo.s32.f32','vcvtrmi.s32.f32','vcvtrpl.s32.f32','vcvtrvs.s32.f32','vcvtrvc.s32.f32','vcvtrhi.s32.f32','vcvtrls.s32.f32','vcvtrge.s32.f32','vcvtrlt.s32.f32','vcvtrgt.s32.f32','vcvtrle.s32.f32', + 'vcvtreq.s32.f64','vcvtrne.s32.f64','vcvtrcs.s32.f64','vcvtrhs.s32.f64','vcvtrcc.s32.f64','vcvtrlo.s32.f64','vcvtrmi.s32.f64','vcvtrpl.s32.f64','vcvtrvs.s32.f64','vcvtrvc.s32.f64','vcvtrhi.s32.f64','vcvtrls.s32.f64','vcvtrge.s32.f64','vcvtrlt.s32.f64','vcvtrgt.s32.f64','vcvtrle.s32.f64', + 'vcvtreq.u32.f32','vcvtrne.u32.f32','vcvtrcs.u32.f32','vcvtrhs.u32.f32','vcvtrcc.u32.f32','vcvtrlo.u32.f32','vcvtrmi.u32.f32','vcvtrpl.u32.f32','vcvtrvs.u32.f32','vcvtrvc.u32.f32','vcvtrhi.u32.f32','vcvtrls.u32.f32','vcvtrge.u32.f32','vcvtrlt.u32.f32','vcvtrgt.u32.f32','vcvtrle.u32.f32', + 'vcvtreq.u32.f64','vcvtrne.u32.f64','vcvtrcs.u32.f64','vcvtrhs.u32.f64','vcvtrcc.u32.f64','vcvtrlo.u32.f64','vcvtrmi.u32.f64','vcvtrpl.u32.f64','vcvtrvs.u32.f64','vcvtrvc.u32.f64','vcvtrhi.u32.f64','vcvtrls.u32.f64','vcvtrge.u32.f64','vcvtrlt.u32.f64','vcvtrgt.u32.f64','vcvtrle.u32.f64', + + 'vcvtbeq.f16.f32','vcvtbne.f16.f32','vcvtbcs.f16.f32','vcvtbhs.f16.f32','vcvtbcc.f16.f32','vcvtblo.f16.f32','vcvtbmi.f16.f32','vcvtbpl.f16.f32','vcvtbvs.f16.f32','vcvtbvc.f16.f32','vcvtbhi.f16.f32','vcvtbls.f16.f32','vcvtbge.f16.f32','vcvtblt.f16.f32','vcvtbgt.f16.f32','vcvtble.f16.f32', + 'vcvtbeq.f32.f16','vcvtbne.f32.f16','vcvtbcs.f32.f16','vcvtbhs.f32.f16','vcvtbcc.f32.f16','vcvtblo.f32.f16','vcvtbmi.f32.f16','vcvtbpl.f32.f16','vcvtbvs.f32.f16','vcvtbvc.f32.f16','vcvtbhi.f32.f16','vcvtbls.f32.f16','vcvtbge.f32.f16','vcvtblt.f32.f16','vcvtbgt.f32.f16','vcvtble.f32.f16', + + 'vcvtteq.f16.f32','vcvttne.f16.f32','vcvttcs.f16.f32','vcvtths.f16.f32','vcvttcc.f16.f32','vcvttlo.f16.f32','vcvttmi.f16.f32','vcvttpl.f16.f32','vcvttvs.f16.f32','vcvttvc.f16.f32','vcvtthi.f16.f32','vcvttls.f16.f32','vcvttge.f16.f32','vcvttlt.f16.f32','vcvttgt.f16.f32','vcvttle.f16.f32', + 'vcvtteq.f32.f16','vcvttne.f32.f16','vcvttcs.f32.f16','vcvtths.f32.f16','vcvttcc.f32.f16','vcvttlo.f32.f16','vcvttmi.f32.f16','vcvttpl.f32.f16','vcvttvs.f32.f16','vcvttvc.f32.f16','vcvtthi.f32.f16','vcvttls.f32.f16','vcvttge.f32.f16','vcvttlt.f32.f16','vcvttgt.f32.f16','vcvttle.f32.f16', + + 'vdiveq.f32','vdivne.f32','vdivcs.f32','vdivhs.f32','vdivcc.f32','vdivlo.f32','vdivmi.f32','vdivpl.f32','vdivvs.f32','vdivvc.f32','vdivhi.f32','vdivls.f32','vdivge.f32','vdivlt.f32','vdivgt.f32','vdivle.f32', + 'vdiveq.f64','vdivne.f64','vdivcs.f64','vdivhs.f64','vdivcc.f64','vdivlo.f64','vdivmi.f64','vdivpl.f64','vdivvs.f64','vdivvc.f64','vdivhi.f64','vdivls.f64','vdivge.f64','vdivlt.f64','vdivgt.f64','vdivle.f64', + + 'vmaxeq.f32','vmaxne.f32','vmaxcs.f32','vmaxhs.f32','vmaxcc.f32','vmaxlo.f32','vmaxmi.f32','vmaxpl.f32','vmaxvs.f32','vmaxvc.f32','vmaxhi.f32','vmaxls.f32','vmaxge.f32','vmaxlt.f32','vmaxgt.f32','vmaxle.f32', + 'vmineq.f32','vminne.f32','vmincs.f32','vminhs.f32','vmincc.f32','vminlo.f32','vminmi.f32','vminpl.f32','vminvs.f32','vminvc.f32','vminhi.f32','vminls.f32','vminge.f32','vminlt.f32','vmingt.f32','vminle.f32', + + 'vmlaeq.f32','vmlane.f32','vmlacs.f32','vmlahs.f32','vmlacc.f32','vmlalo.f32','vmlami.f32','vmlapl.f32','vmlavs.f32','vmlavc.f32','vmlahi.f32','vmlals.f32','vmlage.f32','vmlalt.f32','vmlagt.f32','vmlale.f32', + 'vmlaeq.f64','vmlane.f64','vmlacs.f64','vmlahs.f64','vmlacc.f64','vmlalo.f64','vmlami.f64','vmlapl.f64','vmlavs.f64','vmlavc.f64','vmlahi.f64','vmlals.f64','vmlage.f64','vmlalt.f64','vmlagt.f64','vmlale.f64', + + 'vmlseq.f32','vmlsne.f32','vmlscs.f32','vmlshs.f32','vmlscc.f32','vmlslo.f32','vmlsmi.f32','vmlspl.f32','vmlsvs.f32','vmlsvc.f32','vmlshi.f32','vmlsls.f32','vmlsge.f32','vmlslt.f32','vmlsgt.f32','vmlsle.f32', + 'vmlseq.f64','vmlsne.f64','vmlscs.f64','vmlshs.f64','vmlscc.f64','vmlslo.f64','vmlsmi.f64','vmlspl.f64','vmlsvs.f64','vmlsvc.f64','vmlshi.f64','vmlsls.f64','vmlsge.f64','vmlslt.f64','vmlsgt.f64','vmlsle.f64', + + 'vmuleq.f32','vmulne.f32','vmulcs.f32','vmulhs.f32','vmulcc.f32','vmullo.f32','vmulmi.f32','vmulpl.f32','vmulvs.f32','vmulvc.f32','vmulhi.f32','vmulls.f32','vmulge.f32','vmullt.f32','vmulgt.f32','vmulle.f32', + 'vmuleq.f64','vmulne.f64','vmulcs.f64','vmulhs.f64','vmulcc.f64','vmullo.f64','vmulmi.f64','vmulpl.f64','vmulvs.f64','vmulvc.f64','vmulhi.f64','vmulls.f64','vmulge.f64','vmullt.f64','vmulgt.f64','vmulle.f64', + + 'vnegeq.f32','vnegne.f32','vnegcs.f32','vneghs.f32','vnegcc.f32','vneglo.f32','vnegmi.f32','vnegpl.f32','vnegvs.f32','vnegvc.f32','vneghi.f32','vnegls.f32','vnegge.f32','vneglt.f32','vneggt.f32','vnegle.f32', + 'vnegeq.f64','vnegne.f64','vnegcs.f64','vneghs.f64','vnegcc.f64','vneglo.f64','vnegmi.f64','vnegpl.f64','vnegvs.f64','vnegvc.f64','vneghi.f64','vnegls.f64','vnegge.f64','vneglt.f64','vneggt.f64','vnegle.f64', + + 'vnmlaeq.f32','vnmlane.f32','vnmlacs.f32','vnmlahs.f32','vnmlacc.f32','vnmlalo.f32','vnmlami.f32','vnmlapl.f32','vnmlavs.f32','vnmlavc.f32','vnmlahi.f32','vnmlals.f32','vnmlage.f32','vnmlalt.f32','vnmlagt.f32','vnmlale.f32', + 'vnmlaeq.f64','vnmlane.f64','vnmlacs.f64','vnmlahs.f64','vnmlacc.f64','vnmlalo.f64','vnmlami.f64','vnmlapl.f64','vnmlavs.f64','vnmlavc.f64','vnmlahi.f64','vnmlals.f64','vnmlage.f64','vnmlalt.f64','vnmlagt.f64','vnmlale.f64', + + 'vnmlseq.f32','vnmlsne.f32','vnmlscs.f32','vnmlshs.f32','vnmlscc.f32','vnmlslo.f32','vnmlsmi.f32','vnmlspl.f32','vnmlsvs.f32','vnmlsvc.f32','vnmlshi.f32','vnmlsls.f32','vnmlsge.f32','vnmlslt.f32','vnmlsgt.f32','vnmlsle.f32', + 'vnmlseq.f64','vnmlsne.f64','vnmlscs.f64','vnmlshs.f64','vnmlscc.f64','vnmlslo.f64','vnmlsmi.f64','vnmlspl.f64','vnmlsvs.f64','vnmlsvc.f64','vnmlshi.f64','vnmlsls.f64','vnmlsge.f64','vnmlslt.f64','vnmlsgt.f64','vnmlsle.f64', + + 'vnmuleq.f64','vnmulne.f64','vnmulcs.f64','vnmulhs.f64','vnmulcc.f64','vnmullo.f64','vnmulmi.f64','vnmulpl.f64','vnmulvs.f64','vnmulvc.f64','vnmulhi.f64','vnmulls.f64','vnmulge.f64','vnmullt.f64','vnmulgt.f64','vnmulle.f64', + 'vnmuleq.f32','vnmulne.f32','vnmulcs.f32','vnmulhs.f32','vnmulcc.f32','vnmullo.f32','vnmulmi.f32','vnmulpl.f32','vnmulvs.f32','vnmulvc.f32','vnmulhi.f32','vnmulls.f32','vnmulge.f32','vnmullt.f32','vnmulgt.f32','vnmulle.f32', + + 'vpaddeq.f32','vpaddne.f32','vpaddcs.f32','vpaddhs.f32','vpaddcc.f32','vpaddlo.f32','vpaddmi.f32','vpaddpl.f32','vpaddvs.f32','vpaddvc.f32','vpaddhi.f32','vpaddls.f32','vpaddge.f32','vpaddlt.f32','vpaddgt.f32','vpaddle.f32', + + 'vpmaxeq.f32','vpmaxne.f32','vpmaxcs.f32','vpmaxhs.f32','vpmaxcc.f32','vpmaxlo.f32','vpmaxmi.f32','vpmaxpl.f32','vpmaxvs.f32','vpmaxvc.f32','vpmaxhi.f32','vpmaxls.f32','vpmaxge.f32','vpmaxlt.f32','vpmaxgt.f32','vpmaxle.f32', + 'vpmineq.f32','vpminne.f32','vpmincs.f32','vpminhs.f32','vpmincc.f32','vpminlo.f32','vpminmi.f32','vpminpl.f32','vpminvs.f32','vpminvc.f32','vpminhi.f32','vpminls.f32','vpminge.f32','vpminlt.f32','vpmingt.f32','vpminle.f32', + + 'vrecpeeq.u32','vrecpene.u32','vrecpecs.u32','vrecpehs.u32','vrecpecc.u32','vrecpelo.u32','vrecpemi.u32','vrecpepl.u32','vrecpevs.u32','vrecpevc.u32','vrecpehi.u32','vrecpels.u32','vrecpege.u32','vrecpelt.u32','vrecpegt.u32','vrecpele.u32', + 'vrecpeeq.f32','vrecpene.f32','vrecpecs.f32','vrecpehs.f32','vrecpecc.f32','vrecpelo.f32','vrecpemi.f32','vrecpepl.f32','vrecpevs.f32','vrecpevc.f32','vrecpehi.f32','vrecpels.f32','vrecpege.f32','vrecpelt.f32','vrecpegt.f32','vrecpele.f32', + 'vrecpseq.f32','vrecpsne.f32','vrecpscs.f32','vrecpshs.f32','vrecpscc.f32','vrecpslo.f32','vrecpsmi.f32','vrecpspl.f32','vrecpsvs.f32','vrecpsvc.f32','vrecpshi.f32','vrecpsls.f32','vrecpsge.f32','vrecpslt.f32','vrecpsgt.f32','vrecpsle.f32', + + 'vrsqrteeq.u32','vrsqrtene.u32','vrsqrtecs.u32','vrsqrtehs.u32','vrsqrtecc.u32','vrsqrtelo.u32','vrsqrtemi.u32','vrsqrtepl.u32','vrsqrtevs.u32','vrsqrtevc.u32','vrsqrtehi.u32','vrsqrtels.u32','vrsqrtege.u32','vrsqrtelt.u32','vrsqrtegt.u32','vrsqrtele.u32', + 'vrsqrteeq.f32','vrsqrtene.f32','vrsqrtecs.f32','vrsqrtehs.f32','vrsqrtecc.f32','vrsqrtelo.f32','vrsqrtemi.f32','vrsqrtepl.f32','vrsqrtevs.f32','vrsqrtevc.f32','vrsqrtehi.f32','vrsqrtels.f32','vrsqrtege.f32','vrsqrtelt.f32','vrsqrtegt.f32','vrsqrtele.f32', + 'vrsqrtseq.f32','vrsqrtsne.f32','vrsqrtscs.f32','vrsqrtshs.f32','vrsqrtscc.f32','vrsqrtslo.f32','vrsqrtsmi.f32','vrsqrtspl.f32','vrsqrtsvs.f32','vrsqrtsvc.f32','vrsqrtshi.f32','vrsqrtsls.f32','vrsqrtsge.f32','vrsqrtslt.f32','vrsqrtsgt.f32','vrsqrtsle.f32', + + 'vsqrteq.f32','vsqrtne.f32','vsqrtcs.f32','vsqrths.f32','vsqrtcc.f32','vsqrtlo.f32','vsqrtmi.f32','vsqrtpl.f32','vsqrtvs.f32','vsqrtvc.f32','vsqrthi.f32','vsqrtls.f32','vsqrtge.f32','vsqrtlt.f32','vsqrtgt.f32','vsqrtle.f32', + 'vsqrteq.f64','vsqrtne.f64','vsqrtcs.f64','vsqrths.f64','vsqrtcc.f64','vsqrtlo.f64','vsqrtmi.f64','vsqrtpl.f64','vsqrtvs.f64','vsqrtvc.f64','vsqrthi.f64','vsqrtls.f64','vsqrtge.f64','vsqrtlt.f64','vsqrtgt.f64','vsqrtle.f64', + + 'vsubeq.f32','vsubne.f32','vsubcs.f32','vsubhs.f32','vsubcc.f32','vsublo.f32','vsubmi.f32','vsubpl.f32','vsubvs.f32','vsubvc.f32','vsubhi.f32','vsubls.f32','vsubge.f32','vsublt.f32','vsubgt.f32','vsuble.f32', + 'vsubeq.f64','vsubne.f64','vsubcs.f64','vsubhs.f64','vsubcc.f64','vsublo.f64','vsubmi.f64','vsubpl.f64','vsubvs.f64','vsubvc.f64','vsubhi.f64','vsubls.f64','vsubge.f64','vsublt.f64','vsubgt.f64','vsuble.f64' + ), + /* Registers */ + 35 => array( + /* General-Purpose Registers */ + 'r0','r1','r2','r3','r4','r5','r6','r7', + 'r8','r9','r10','r11','r12','r13','r14','r15', + /* Scratch Registers */ + 'a1','a2','a3','a4', + /* Variable Registers */ + 'v1','v2','v3','v4','v5','v6','v7','v8', + /* Other Synonims for General-Purpose Registers */ + 'sb','sl','fp','ip','sp','lr','pc', + /* WMMX Data Registers */ + 'wr0','wr1','wr2','wr3','wr4','wr5','wr6','wr7', + 'wr8','wr9','wr10','wr11','wr12','wr13','wr14','wr15', + /* WMMX Control Registers */ + 'wcid','wcon','wcssf','wcasf', + /* WMMX-Mapped General-Purpose Registers */ + 'wcgr0','wcgr1','wcgr2','wcgr3', + /* VFPv3 Registers */ + 's0','s1','s2','s3','s4','s5','s6','s7', + 's8','s9','s10','s11','s12','s13','s14','s15', + 's16','s17','s18','s19','s20','s21','s22','s23', + 's24','s25','s26','s27','s28','s29','s30','s31', + /* VFPv3/NEON Registers */ + 'd0','d1','d2','d3','d4','d5','d6','d7', + 'd8','d9','d10','d11','d12','d13','d14','d15', + 'd16','d17','d18','d19','d20','d21','d22','d23', + 'd24','d25','d26','d27','d28','d29','d30','d31', + /* NEON Registers */ + 'q0','q1','q2','q3','q4','q5','q6','q7', + 'q8','q9','q10','q11','q12','q13','q14','q15' + ) + ), + 'SYMBOLS' => array( + '[', ']', '(', ')', + '+', '-', '*', '/', '%', + '.', ',', ';', ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + 22 => false, + 23 => false, + 24 => false, + 25 => false, + 26 => false, + 27 => false, + 28 => false, + 29 => false, + 30 => false, + 31 => false, + 32 => false, + 33 => false, + 34 => false, + 35 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + /* Unconditional Data Processing Instructions */ + 1 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Data Processing Instructions */ + 2 => 'color: #00007f; font-weight: normal; font-style: italic;', + /* Unconditional Memory Access Instructions */ + 3 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Memory Access Instructions */ + 4 => 'color: #00007f; font-weight: normal; font-style: italic;', + /* Unconditional Flags Changing Instructions */ + 5 => 'color: #00007f; font-weight: bold; font-style: normal;', + /* Conditional Flags Changing Instructions */ + 6 => 'color: #00007f; font-weight: bold; font-style: italic;', + /* Unconditional Flow Control Instructions */ + 7 => 'color: #0000ff; font-weight: normal; font-style: normal;', + /* Conditional Flow Control Instructions */ + 8 => 'color: #0000ff; font-weight: normal; font-style: italic;', + /* Unconditional Syncronization Instructions */ + 9 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Syncronization Instructions */ + 10 => 'color: #00007f; font-weight: normal; font-style: italic;', + /* Unonditional ARMv6 SIMD */ + 11 => 'color: #b00040; font-weight: normal; font-style: normal;', + /* Conditional ARMv6 SIMD */ + 12 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional Coprocessor Instructions */ + 13 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional Coprocessor Instructions */ + 14 => 'color: #00007f; font-weight: bold; font-style: italic;', + /* Unconditional System Instructions */ + 15 => 'color: #00007f; font-weight: normal; font-style: normal;', + /* Conditional System Instructions */ + 16 => 'color: #00007f; font-weight: bold; font-style: italic;', + /* Unconditional WMMX/WMMX2 SIMD Instructions */ + 17 => 'color: #b00040; font-weight: normal; font-style: normal;', + /* Conditional WMMX/WMMX2 SIMD Instructions */ + 18 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional VFPv3 & NEON SIMD Memory Access Instructions */ + 19 => 'color: #b00040; font-weight: normal; font-style: normal;', + /* Unconditional NEON SIMD Logical Instructions */ + 20 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD ARM Registers Interop Instructions */ + 21 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Bit/Byte-Level Instructions */ + 22 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Universal Integer Instructions */ + 23 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Signed Integer Instructions */ + 24 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional NEON SIMD Unsigned Integer Instructions */ + 25 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Unconditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 26 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional VFPv3 & NEON SIMD Memory Access Instructions */ + 27 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Logical Instructions */ + 28 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD ARM Registers Interop Instructions */ + 29 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Bit/Byte-Level Instructions */ + 30 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Universal Integer Instructions */ + 31 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Signed Integer Instructions */ + 32 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional NEON SIMD Unsigned Integer Instructions */ + 33 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Conditional VFPv3 & NEON SIMD Floating-Point Instructions */ + 34 => 'color: #b00040; font-weight: normal; font-style: italic;', + /* Registers */ + 35 => 'color: #46aa03; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #adadad; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => '', + 20 => '', + 21 => '', + 22 => '', + 23 => '', + 24 => '', + 25 => '', + 26 => '', + 27 => '', + 28 => '', + 29 => '', + 30 => '', + 31 => '', + 32 => '', + 33 => '', + 34 => '', + 35 => '' + ), + 'NUMBERS' => + GESHI_NUMBER_BIN_PREFIX_PERCENT | + GESHI_NUMBER_BIN_SUFFIX | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_HEX_SUFFIX | + GESHI_NUMBER_OCT_SUFFIX | + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | + GESHI_NUMBER_FLT_SCI_ZERO, + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/asm.php b/inc/geshi/asm.php index 2093d86b8..dd0a7ec50 100644 --- a/inc/geshi/asm.php +++ b/inc/geshi/asm.php @@ -3,15 +3,56 @@ * asm.php * ------- * Author: Tux (tux@inmail.cz) - * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Copyright: (c) 2004 Tux (http://tux.a4.cz/), + * 2004-2009 Nigel McNie (http://qbnz.com/highlighter), + * 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.11 * Date Started: 2004/07/27 * * x86 Assembler language file for GeSHi. - * Words are from SciTe configuration file (based on NASM syntax) + * Based on the following documents: + * - "Intel64 and IA-32 Architectures Programmer's Reference Manual + * Volume 2 (2A & 2B): Instructions Set Reference, A-Z", + * Order Number 25383-039US, May 2011 + * - "Intel Advanced Vector Extensions Programming Reference", + * Order Number 319433-011, June 2011 + * - "AMD64 Architecture Programmer's Manual Volume 3: + * General-Purpose and System Instructions", Publication No. 24594, + * Revision 3.15, November 2009 + * - "AMD64 Architecture Programmer's Manual Volume 4: + * 128-Bit and 256-Bit Media Instructions", Publication No. 26568, + * Revision 3.12, May 2011 + * - "AMD64 Architecture Programmer's Manual Volume 5: + * 64-Bit Media and x87 Floating-Point Instructions", + * Publication No. 26569, Revision 3.11, December 2009 + * - "AMD64 Technology Lightweight Profiling Specification", + * Publication No. 43724, Revision 3.08, August 2010 + * - "Application Note 108: Cyrix Extended MMX Instruction Set" + * - "VIA Padlock Programming Guide", 3rd May 2005 + * - http://en.wikipedia.org/wiki/X86_instruction_listings + * - NASM 2.10rc8 Online Documenation at + * http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc0.html + * Color scheme is taken from SciTE. Previous versions of this file + * also used words from SciTE configuration file (based on NASM syntax) * * CHANGES * ------- + * 2011/10/07 + * - Rearranged instructions and registers into groups + * - Updated to support the following extensions + * - CMOV, BMI1, BMI2, TBM, FSGSBASE + * - LZCNT, TZCNT, POPCNT, MOVBE, CRC32 + * - MMX, MMX+, EMMX + * - 3dnow!, 3dnow!+, 3dnow! Geode, 3dnow! Prefetch + * - SSE, SSE2, SSE3, SSSE3, SSE4A, SSE4.1, SSE4.2 + * - AVX, AVX2, XOP, FMA3, FMA4, CVT16 + * - VMX, SVM + * - AES, PCLMULQDQ, Padlock, RDRAND + * - Updated NASM macros and directives + * 2010/07/01 (1.0.8.11) + * - Added MMX/SSE/new x86-64 registers, MMX/SSE (up to 4.2) instructions * 2008/05/23 (1.0.7.22) * - Added description of extra language features (SF#1970248) * 2004/11/27 (1.0.2) @@ -55,26 +96,71 @@ $language_data = array ( 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( - /*CPU*/ + /* General-Purpose */ 1 => array( - 'aaa','aad','aam','aas','adc','add','and','call','cbw','clc','cld','cli','cmc','cmp', - 'cmps','cmpsb','cmpsw','cwd','daa','das','dec','div','esc','hlt','idiv','imul','in','inc', - 'int','into','iret','ja','jae','jb','jbe','jc','jcxz','je','jg','jge','jl','jle','jmp', - 'jna','jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz', - 'jo','jp','jpe','jpo','js','jz','lahf','lds','lea','les','lods','lodsb','lodsw','loop', - 'loope','loopew','loopne','loopnew','loopnz','loopnzw','loopw','loopz','loopzw','mov', - 'movs','movsb','movsw','mul','neg','nop','not','or','out','pop','popf','push','pushf', - 'rcl','rcr','ret','retf','retn','rol','ror','sahf','sal','sar','sbb','scas','scasb','scasw', - 'shl','shr','stc','std','sti','stos','stosb','stosw','sub','test','wait','xchg','xlat', - 'xlatb','xor','bound','enter','ins','insb','insw','leave','outs','outsb','outsw','popa','pusha','pushw', - 'arpl','lar','lsl','sgdt','sidt','sldt','smsw','str','verr','verw','clts','lgdt','lidt','lldt','lmsw','ltr', - 'bsf','bsr','bt','btc','btr','bts','cdq','cmpsd','cwde','insd','iretd','iretdf','iretf', - 'jecxz','lfs','lgs','lodsd','loopd','looped','loopned','loopnzd','loopzd','lss','movsd', - 'movsx','movzx','outsd','popad','popfd','pushad','pushd','pushfd','scasd','seta','setae', - 'setb','setbe','setc','sete','setg','setge','setl','setle','setna','setnae','setnb','setnbe', - 'setnc','setne','setng','setnge','setnl','setnle','setno','setnp','setns','setnz','seto','setp', - 'setpe','setpo','sets','setz','shld','shrd','stosd','bswap','cmpxchg','invd','invlpg','wbinvd','xadd','lock', - 'rep','repe','repne','repnz','repz' + /* BCD instructions */ + 'aaa','aad','aam','aas','daa','das', + /* Control flow instructions */ + 'ja','jae','jb','jbe','jc','je','jg','jge','jl','jle','jmp','jna', + 'jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz', + 'jo','jp','jpe','jpo','js','jz','jcxz','jecxz','jrcxz','loop','loope','loopne', + 'call','ret','enter','leave','syscall','sysenter','int','into', + /* Predicate instructions */ + 'seta','setae','setb','setbe','setc','sete','setg','setge','setl','setle','setna', + 'setnae','setnb','setnbe','setnc','setne','setng','setnge','setnl','setnle','setno', + 'setnp','setns','setnz','seto','setp','setpe','setpo','sets','setz','salc', + /* Conditional move instructions */ + 'cmovo','cmovno','cmovb','cmovc','cmovnae','cmovae','cmovnb','cmovnc','cmove','cmovz', + 'cmovne','cmovnz','cmovbe','cmovna','cmova','cmovnbe','cmovs','cmovns','cmovp','cmovpe', + 'cmovnp','cmovpo','cmovl','cmovnge','cmovge','cmovnl','cmovle','cmovng','cmovg','cmovnle', + /* ALU instructions */ + 'add','sub','adc','sbb','neg','cmp','inc','dec','and','or','xor','not','test', + 'shl','shr','sal','sar','shld','shrd','rol','ror','rcl','rcr', + 'cbw','cwd','cwde','cdq','cdqe','cqo','bsf','bsr','bt','btc','btr','bts', + 'idiv','imul','div','mul','bswap','nop', + /* Memory instructions */ + 'lea','mov','movsx','movsxd','movzx','xlatb','bound','xchg','xadd','cmpxchg','cmpxchg8b','cmpxchg16b', + /* Stack instructions */ + 'push','pop','pusha','popa','pushad','popad','pushf','popf','pushfd','popfd','pushfq','popfq', + /* EFLAGS manipulations instructions */ + 'clc','cld','stc','std','cmc','lahf','sahf', + /* Prefix instructions */ + 'lock','rep','repe','repz','repne','repnz', + /* String instructions */ + 'cmps','cmpsb','cmpsw',/*'cmpsd',*/ 'cmpsq', /*CMPSD conflicts with the SSE2 instructions of the same name*/ + 'movs','movsb','movsw',/*'movsd',*/ 'movsq', /*MOVSD conflicts with the SSE2 instructions of the same name*/ + 'scas','scasb','scasw','scasd','scasq', + 'stos','stosb','stosw','stosd','stosq', + 'lods','lodsb','lodsw','lodsd','lodsq', + /* Information instructions */ + 'cpuid','rdtsc','rdtscp','rdpmc','xgetbv', + 'sgdt','sidt','sldt','smsw','str','lar', + /* LWP instructions */ + 'llwpcb','slwpcb','lwpval','lwpins', + /* Instructions from miscellaneous extensions */ + 'crc32','popcnt','lzcnt','tzcnt','movbe','pclmulqdq','rdrand', + /* FSGSBASE instructions */ + 'rdfsbase','rdgsbase','wrfsbase','wrgsbase', + /* BMI1 instructions */ + 'andn','bextr','blsi','blsmk','blsr', + /* BMI2 instructions */ + 'bzhi','mulx','pdep','pext','rorx','sarx','shlx','shrx', + /* TBM instructions */ + 'blcfill','blci','blcic','blcmsk','blcs','blsfill','blsic','t1mskc','tzmsk', + /* Legacy instructions */ + 'arpl','ud2','lds','les','lfs','lgs','lss','lsl','verr','verw', + /* Privileged instructions */ + 'cli','sti','clts','hlt','rsm','in','insb','insw','insd', + 'out','outsb','outsw','outsd','clflush','invd','invlpg','invpcid','wbinvd', + 'iret','iretd','iretq','sysexit','sysret','lidt','lgdt','lldt','lmsw','ltr', + 'monitor','mwait','rdmsr','wrmsr','swapgs', + 'fxsave','fxsave64','fxrstor','fxrstor64', + 'xsave','xsaveopt','xrstor','xsetbv','getsec', + /* VMX instructions */ + 'invept','invvpid','vmcall','vmclear','vmlaunch','vmresume', + 'vmptrld','vmptrst','vmread','vmwrite','vmxoff','vmxon', + /* SVM (AMD-V) instructions */ + 'invlpga','skinit','clgi','stgi','vmload','vmsave','vmmcall','vmrun' ), /*FPU*/ 2 => array( @@ -87,56 +173,350 @@ $language_data = array ( 'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp', 'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1', 'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos', - 'fstenvd','fucom','fucomp','fucompp' + 'fstenvd','fucom','fucomp','fucompp','ffreep', + /* FCMOV instructions */ + 'fcomi','fcomip','fucomi','fucomip', + 'fcmovb','fcmove','fcmovbe','fcmovu','fcmovnb','fcmovne','fcmovnbe','fcmovnu', + /* SSE3 instructions */ + 'fisttp' ), - /*registers*/ + /*SIMD*/ 3 => array( - 'ah','al','ax','bh','bl','bp','bx','ch','cl','cr0','cr2','cr3','cs','cx','dh','di','dl', - 'dr0','dr1','dr2','dr3','dr6','dr7','ds','dx','eax','ebp','ebx','ecx','edi','edx', - 'es','esi','esp','fs','gs','si','sp','ss','st','tr3','tr4','tr5','tr6','tr7' + /* MMX instructions */ + 'movd','movq', + 'paddb','paddw','paddd','paddsb','paddsw','paddusb','paddusw', + 'psubb','psubw','psubd','psubsb','psubsw','psubusb','psubusw', + 'pand','pandn','por','pxor', + 'pcmpeqb','pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw', + 'pmaddwd','pmulhw','pmullw', + 'psllw','pslld','psllq','psrlw','psrld','psrlq','psraw','psrad', + 'packuswb','packsswb','packssdw', + 'punpcklbw','punpcklwd','punpckldq','punpckhbw','punpckhwd','punpckhdq', + 'emms', + /* MMX+ instructions */ + 'pavgb','pavgw', + 'pextrw','pinsrw','pmovmskb', + 'pmaxsw','pmaxub','pminsw','pminub', + 'pmulhuw','psadbw','pshufw', + 'prefetchnta','prefetcht0','prefetcht1','prefetcht2', + 'maskmovq','movntq','sfence', + /* EMMX instructions (only available on Cyrix MediaGXm) */ + 'paddsiw','psubsiw', + /*'pmulhrw',*/'pmachriw','pmulhriw', /* PMULHRW conflicts with the 3dnow! instruction of the same name */ + 'pmagw','pdistib','paveb', + 'pmvzb','pmvnzb','pmvlzb','pmvgezb', + /* 3dnow! instructions! */ + 'pfacc','pfadd','pfsub','pfsubr','pfmul', + 'pfcmpeq','pfcmpge','pfcmpgt', + 'pfmax','pfmin', + 'pfrcp','pfrcpit1','pfrcpit2','pfrsqit1','pfrsqrt', + 'pi2fd','pf2id', + 'pavgusb','pmulhrw', + 'femms', + /* 3dnow!+ instructions */ + 'pfnacc','pfpnacc','pi2fw','pf2iw','pswapd', + /* 3dnow! Geode instructions */ + 'pfrsqrtv','pfrcpv', + /* 3dnow! Prefetch instructions */ + 'prefetch','prefetchw', + /* SSE instructions */ + 'addss','addps','subss','subps', + 'mulss','mulps','divss','divps','sqrtss','sqrtps', + 'rcpss','rcpps','rsqrtss','rsqrtps', + 'maxss','maxps','minss','minps', + 'cmpss','comiss','ucomiss','cmpps', + 'cmpeqss','cmpltss','cmpless','cmpunordss','cmpneqss','cmpnltss','cmpnless','cmpordss', + 'cmpeqps','cmpltps','cmpleps','cmpunordps','cmpneqps','cmpnltps','cmpnleps','cmpordps', + 'andnps','andps','orps','xorps', + 'cvtsi2ss','cvtss2si','cvttss2si', + 'cvtpi2ps','cvtps2pi','cvttps2pi', + 'movss','movlps','movhps','movlhps','movhlps','movaps','movups','movntps','movmskps', + 'shufps','unpckhps','unpcklps', + 'ldmxcsr','stmxcsr', + /* SSE2 instructions */ + 'addpd','addsd','subpd','subsd', + 'mulsd','mulpd','divsd','divpd','sqrtsd','sqrtpd', + 'maxsd','maxpd','minsd','minpd', + 'cmpsd','comisd','ucomisd','cmppd', + 'cmpeqsd','cmpltsd','cmplesd','cmpunordsd','cmpneqsd','cmpnltsd','cmpnlesd','cmpordsd', + 'cmpeqpd','cmpltpd','cmplepd','cmpunordpd','cmpneqpd','cmpnltpd','cmpnlepd','cmpordpd', + 'andnpd','andpd','orpd','xorpd', + 'cvtsd2ss','cvtpd2ps','cvtss2sd','cvtps2pd', + 'cvtdq2ps','cvtps2dq','cvttps2dq', + 'cvtdq2pd','cvtpd2dq','cvttpd2dq', + 'cvtsi2sd','cvtsd2si','cvttsd2si', + 'cvtpi2pd','cvtpd2pi','cvttpd2pi', + 'movsd','movlpd','movhpd','movapd','movupd','movntpd','movmskpd', + 'shufpd','unpckhpd','unpcklpd', + 'movnti','movdqa','movdqu','movntdq','maskmovdqu', + 'movdq2q','movq2dq', + 'paddq','psubq','pmuludq', + 'pslldq','psrldq', + 'punpcklqdq','punpckhqdq', + 'pshufhw','pshuflw','pshufd', + 'lfence','mfence', + /* SSE3 instructions */ + 'addsubps','addsubpd', + 'haddps','haddpd','hsubps','hsubpd', + 'movsldup','movshdup','movddup', + 'lddqu', + /* SSSE3 instructions */ + 'psignb','psignw','psignd', + 'pabsb','pabsw','pabsd', + 'palignr','pshufb', + 'pmulhrsw','pmaddubsw', + 'phaddw','phaddd','phaddsw', + 'phsubw','phsubd','phsubsw', + /* SSE4A instructions */ + 'extrq','insertq','movntsd','movntss', + /* SSE4.1 instructions */ + 'mpsadbw','phminposuw', + 'pmuldq','pmulld', + 'dpps','dppd', + 'blendps','blendpd','blendvps','blendvpd','pblendvb','pblendw', + 'pmaxsb','pmaxuw','pmaxsd','pmaxud','pminsb','pminuw','pminsd','pminud', + 'roundps','roundss','roundpd','roundsd', + 'insertps','pinsrb','pinsrd','pinsrq', + 'extractps','pextrb','pextrd','pextrq', + 'pmovsxbw','pmovsxbd','pmovsxbq','pmovsxwd','pmovsxwq','pmovsxdq', + 'pmovzxbw','pmovzxbd','pmovzxbq','pmovzxwd','pmovzxwq','pmovzxdq', + 'ptest', + 'pcmpeqq', + 'packusdw', + 'movntdqa', + /* SSE4.2 instructions */ + 'pcmpgtq', + 'pcmpestri','pcmpestrm','pcmpistri','pcmpistrm', + /* AES instructions */ + 'aesenc','aesenclast','aesdec','aesdeclast','aeskeygenassist','aesimc', + /* VIA Padlock instructions */ + 'xcryptcbc','xcryptcfb','xcryptctr','xcryptecb','xcryptofb', + 'xsha1','xsha256','montmul','xstore', + /* AVX instructions */ + 'vaddss','vaddps','vaddsd','vaddpd','vsubss','vsubps','vsubsd','vsubpd', + 'vaddsubps','vaddsubpd', + 'vhaddps','vhaddpd','vhsubps','vhsubpd', + 'vmulss','vmulps','vmulsd','vmulpd', + 'vmaxss','vmaxps','vmaxsd','vmaxpd','vminss','vminps','vminsd','vminpd', + 'vandps','vandpd','vandnps','vandnpd','vorps','vorpd','vxorps','vxorpd', + 'vblendps','vblendpd','vblendvps','vblendvpd', + 'vcmpss','vcomiss','vucomiss','vcmpsd','vcomisd','vucomisd','vcmpps','vcmppd', + 'vcmpeqss','vcmpltss','vcmpless','vcmpunordss','vcmpneqss','vcmpnltss','vcmpnless','vcmpordss', + 'vcmpeq_uqss','vcmpngess','vcmpngtss','vcmpfalsess','vcmpneq_oqss','vcmpgess','vcmpgtss','vcmptruess', + 'vcmpeq_osss','vcmplt_oqss','vcmple_oqss','vcmpunord_sss','vcmpneq_usss','vcmpnlt_uqss','vcmpnle_uqss','vcmpord_sss', + 'vcmpeq_usss','vcmpnge_uqss','vcmpngt_uqss','vcmpfalse_osss','vcmpneq_osss','vcmpge_oqss','vcmpgt_oqss','vcmptrue_usss', + 'vcmpeqps','vcmpltps','vcmpleps','vcmpunordps','vcmpneqps','vcmpnltps','vcmpnleps','vcmpordps', + 'vcmpeq_uqps','vcmpngeps','vcmpngtps','vcmpfalseps','vcmpneq_oqps','vcmpgeps','vcmpgtps','vcmptrueps', + 'vcmpeq_osps','vcmplt_oqps','vcmple_oqps','vcmpunord_sps','vcmpneq_usps','vcmpnlt_uqps','vcmpnle_uqps','vcmpord_sps', + 'vcmpeq_usps','vcmpnge_uqps','vcmpngt_uqps','vcmpfalse_osps','vcmpneq_osps','vcmpge_oqps','vcmpgt_oqps','vcmptrue_usps', + 'vcmpeqsd','vcmpltsd','vcmplesd','vcmpunordsd','vcmpneqsd','vcmpnltsd','vcmpnlesd','vcmpordsd', + 'vcmpeq_uqsd','vcmpngesd','vcmpngtsd','vcmpfalsesd','vcmpneq_oqsd','vcmpgesd','vcmpgtsd','vcmptruesd', + 'vcmpeq_ossd','vcmplt_oqsd','vcmple_oqsd','vcmpunord_ssd','vcmpneq_ussd','vcmpnlt_uqsd','vcmpnle_uqsd','vcmpord_ssd', + 'vcmpeq_ussd','vcmpnge_uqsd','vcmpngt_uqsd','vcmpfalse_ossd','vcmpneq_ossd','vcmpge_oqsd','vcmpgt_oqsd','vcmptrue_ussd', + 'vcmpeqpd','vcmpltpd','vcmplepd','vcmpunordpd','vcmpneqpd','vcmpnltpd','vcmpnlepd','vcmpordpd', + 'vcmpeq_uqpd','vcmpngepd','vcmpngtpd','vcmpfalsepd','vcmpneq_oqpd','vcmpgepd','vcmpgtpd','vcmptruepd', + 'vcmpeq_ospd','vcmplt_oqpd','vcmple_oqpd','vcmpunord_spd','vcmpneq_uspd','vcmpnlt_uqpd','vcmpnle_uqpd','vcmpord_spd', + 'vcmpeq_uspd','vcmpnge_uqpd','vcmpngt_uqpd','vcmpfalse_ospd','vcmpneq_ospd','vcmpge_oqpd','vcmpgt_oqpd','vcmptrue_uspd', + 'vcvtsd2ss','vcvtpd2ps','vcvtss2sd','vcvtps2pd', + 'vcvtsi2ss','vcvtss2si','vcvttss2si', + 'vcvtpi2ps','vcvtps2pi','vcvttps2pi', + 'vcvtdq2ps','vcvtps2dq','vcvttps2dq', + 'vcvtdq2pd','vcvtpd2dq','vcvttpd2dq', + 'vcvtsi2sd','vcvtsd2si','vcvttsd2si', + 'vcvtpi2pd','vcvtpd2pi','vcvttpd2pi', + 'vdivss','vdivps','vdivsd','vdivpd','vsqrtss','vsqrtps','vsqrtsd','vsqrtpd', + 'vdpps','vdppd', + 'vmaskmovps','vmaskmovpd', + 'vmovss','vmovsd','vmovaps','vmovapd','vmovups','vmovupd','vmovntps','vmovntpd', + 'vmovhlps','vmovlhps','vmovlps','vmovlpd','vmovhps','vmovhpd', + 'vmovsldup','vmovshdup','vmovddup', + 'vmovmskps','vmovmskpd', + 'vroundss','vroundps','vroundsd','vroundpd', + 'vrcpss','vrcpps','vrsqrtss','vrsqrtps', + 'vunpcklps','vunpckhps','vunpcklpd','vunpckhpd', + 'vbroadcastss','vbroadcastsd','vbroadcastf128', + 'vextractps','vinsertps','vextractf128','vinsertf128', + 'vshufps','vshufpd','vpermilps','vpermilpd','vperm2f128', + 'vtestps','vtestpd', + 'vpaddb','vpaddusb','vpaddsb','vpaddw','vpaddusw','vpaddsw','vpaddd','vpaddq', + 'vpsubb','vpsubusb','vpsubsb','vpsubw','vpsubusw','vpsubsw','vpsubd','vpsubq', + 'vphaddw','vphaddsw','vphaddd','vphsubw','vphsubsw','vphsubd', + 'vpsllw','vpslld','vpsllq','vpsrlw','vpsrld','vpsrlq','vpsraw','vpsrad', + 'vpand','vpandn','vpor','vpxor', + 'vpblendwb','vpblendw', + 'vpsignb','vpsignw','vpsignd', + 'vpavgb','vpavgw', + 'vpabsb','vpabsw','vpabsd', + 'vmovd','vmovq','vmovdqa','vmovdqu','vlddqu','vmovntdq','vmovntdqa','vmaskmovdqu', + 'vpmovsxbw','vpmovsxbd','vpmovsxbq','vpmovsxwd','vpmovsxwq','vpmovsxdq', + 'vpmovzxbw','vpmovzxbd','vpmovzxbq','vpmovzxwd','vpmovzxwq','vpmovzxdq', + 'vpackuswb','vpacksswb','vpackusdw','vpackssdw', + 'vpcmpeqb','vpcmpeqw','vpcmpeqd','vpcmpeqq','vpcmpgtb','vpcmpgtw','vpcmpgtd','vpcmpgtq', + 'vpmaddubsw','vpmaddwd', + 'vpmullw','vpmulhuw','vpmulhw','vpmulhrsw','vpmulld','vpmuludq','vpmuldq', + 'vpmaxub','vpmaxsb','vpmaxuw','vpmaxsw','vpmaxud','vpmaxsd', + 'vpminub','vpminsb','vpminuw','vpminsw','vpminud','vpminsd', + 'vpmovmskb','vptest', + 'vpunpcklbw','vpunpcklwd','vpunpckldq','vpunpcklqdq', + 'vpunpckhbw','vpunpckhwd','vpunpckhdq','vpunpckhqdq', + 'vpslldq','vpsrldq','vpalignr', + 'vpshufb','vpshuflw','vpshufhw','vpshufd', + 'vpextrb','vpextrw','vpextrd','vpextrq','vpinsrb','vpinsrw','vpinsrd','vpinsrq', + 'vpsadbw','vmpsadbw','vphminposuw', + 'vpcmpestri','vpcmpestrm','vpcmpistri','vpcmpistrm', + 'vpclmulqdq','vaesenc','vaesenclast','vaesdec','vaesdeclast','vaeskeygenassist','vaesimc', + 'vldmxcsr','vstmxcsr','vzeroall','vzeroupper', + /* AVX2 instructions */ + 'vbroadcasti128','vpbroadcastb','vpbroadcastw','vpbroadcastd','vpbroadcastq', + 'vpblendd', + 'vpermd','vpermq','vperm2i128', + 'vextracti128','vinserti128', + 'vpmaskmovd','vpmaskmovq', + 'vpsllvd','vpsllvq','vpsravd','vpsrlvd', + 'vpgatherdd','vpgatherqd','vgatherdq','vgatherqq', + 'vpermps','vpermpd', + 'vgatherdpd','vgatherqpd','vgatherdps','vgatherqps', + /* XOP instructions */ + 'vfrczss','vfrczps','vfrczsd','vfrczpd', + 'vpermil2ps','vperlil2pd', + 'vpcomub','vpcomb','vpcomuw','vpcomw','vpcomud','vpcomd','vpcomuq','vpcomq', + 'vphaddubw','vphaddbw','vphaddubd','vphaddbd','vphaddubq','vphaddbq', + 'vphadduwd','vphaddwd','vphadduwq','vphaddwq','vphaddudq','vphadddq', + 'vphsubbw','vphsubwd','vphsubdq', + 'vpmacsdd','vpmacssdd','vpmacsdql','vpmacssdql','vpmacsdqh','vpmacssdqh', + 'vpmacsww','vpmacssww','vpmacswd','vpmacsswd', + 'vpmadcswd','vpmadcsswd', + 'vpcmov','vpperm', + 'vprotb','vprotw','vprotd','vprotq', + 'vpshab','vpshaw','vpshad','vpshaq', + 'vpshlb','vpshlw','vpshld','vpshlq', + /* CVT16 instructions */ + 'vcvtph2ps','vcvtps2ph', + /* FMA4 instructions */ + 'vfmaddss','vfmaddps','vfmaddsd','vfmaddpd', + 'vfmsubss','vfmsubps','vfmsubsd','vfmsubpd', + 'vnfmaddss','vnfmaddps','vnfmaddsd','vnfmaddpd', + 'vnfmsubss','vnfmsubps','vnfmsubsd','vnfmsubpd', + 'vfmaddsubps','vfmaddsubpd','vfmsubaddps','vfmsubaddpd', + /* FMA3 instructions */ + 'vfmadd132ss','vfmadd213ss','vfmadd231ss', + 'vfmadd132ps','vfmadd213ps','vfmadd231ps', + 'vfmadd132sd','vfmadd213sd','vfmadd231sd', + 'vfmadd132pd','vfmadd213pd','vfmadd231pd', + 'vfmaddsub132ps','vfmaddsub213ps','vfmaddsub231ps', + 'vfmaddsub132pd','vfmaddsub213pd','vfmaddsub231pd', + 'vfmsubadd132ps','vfmsubadd213ps','vfmsubadd231ps', + 'vfmsubadd132pd','vfmsubadd213pd','vfmsubadd231pd', + 'vfmsub132ss','vfmsub213ss','vfmsub231ss', + 'vfmsub132ps','vfmsub213ps','vfmsub231ps', + 'vfmsub132sd','vfmsub213sd','vfmsub231sd', + 'vfmsub132pd','vfmsub213pd','vfmsub231pd', + 'vfnmadd132ss','vfnmadd213ss','vfnmadd231ss', + 'vfnmadd132ps','vfnmadd213ps','vfnmadd231ps', + 'vfnmadd132sd','vfnmadd213sd','vfnmadd231sd', + 'vfnmadd132pd','vfnmadd213pd','vfnmadd231pd', + 'vfnmsub132ss','vfnmsub213ss','vfnmsub231ss', + 'vfnmsub132ps','vfnmsub213ps','vfnmsub231ps', + 'vfnmsub132sd','vfnmsub213sd','vfnmsub231sd', + 'vfnmsub132pd','vfnmsub213pd','vfnmsub231pd' ), - /*Directive*/ + /*registers*/ 4 => array( - '186','286','286c','286p','287','386','386c','386p','387','486','486p', - '8086','8087','alpha','break','code','const','continue','cref','data','data?', - 'dosseg','else','elseif','endif','endw','equ','err','err1','err2','errb', - 'errdef','errdif','errdifi','erre','erridn','erridni','errnb','errndef', - 'errnz','exit','fardata','fardata?','global','if','lall','lfcond','list','listall', - 'listif','listmacro','listmacroall',' model','no87','nocref','nolist', - 'nolistif','nolistmacro','radix','repeat','sall','seq','sfcond','stack', - 'startup','tfcond','type','until','untilcxz','while','xall','xcref', - 'xlist','alias','align','assume','catstr','comm','comment','db','dd','df','dq', - 'dt','dup','dw','echo','elseif1','elseif2','elseifb','elseifdef','elseifdif', - 'elseifdifi','elseife','elseifidn','elseifidni','elseifnb','elseifndef','end', - 'endm','endp','ends','eq',' equ','even','exitm','extern','externdef','extrn','for', - 'forc','ge','goto','group','high','highword','if1','if2','ifb','ifdef','ifdif', - 'ifdifi','ife',' ifidn','ifidni','ifnb','ifndef','include','includelib','instr','invoke', - 'irp','irpc','label','le','length','lengthof','local','low','lowword','lroffset', - 'macro','mask','mod','msfloat','name','ne','offset','opattr','option','org','%out', - 'page','popcontext','private','proc','proto','ptr','public','purge','pushcontext','record', - 'resb','resd','resw','rept','section','seg','segment','short','size','sizeof','sizestr','struc','struct', - 'substr','subtitle','subttl','textequ','this','title','typedef','union','width', - '.model', '.stack', '.code', '.data' + /* General-Purpose Registers */ + 'al','ah','bl','bh','cl','ch','dl','dh','sil','dil','bpl','spl', + 'r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b', + 'ax','bx','cx','dx','si','di','bp','sp', + 'r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w', + 'eax','ebx','ecx','edx','esi','edi','ebp','esp', + 'r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d', + 'rax','rcx','rdx','rbx','rsp','rbp','rsi','rdi', + 'r8','r9','r10','r11','r12','r13','r14','r15', + /* Debug Registers */ + 'dr0','dr1','dr2','dr3','dr6','dr7', + /* Control Registers */ + 'cr0','cr2','cr3','cr4','cr8', + /* Test Registers (Supported on Intel 486 only) */ + 'tr3','tr4','tr5','tr6','tr7', + /* Segment Registers */ + 'cs','ds','es','fs','gs','ss', + /* FPU Registers */ + 'st','st0','st1','st2','st3','st4','st5','st6','st7', + /* MMX Registers */ + 'mm0','mm1','mm2','mm3','mm4','mm5','mm6','mm7', + /* SSE Registers */ + 'xmm0','xmm1','xmm2','xmm3','xmm4','xmm5','xmm6','xmm7', + 'xmm8','xmm9','xmm10','xmm11','xmm12','xmm13','xmm14','xmm15', + /* AVX Registers */ + 'ymm0','ymm1','ymm2','ymm3','ymm4','ymm5','ymm6','ymm7', + 'ymm8','ymm9','ymm10','ymm11','ymm12','ymm13','ymm14','ymm15' ), - /*Operands*/ + /*Directive*/ 5 => array( - '@b','@f','addr','basic','byte','c','carry?','dword', - 'far','far16','fortran','fword','near','near16','overflow?','parity?','pascal','qword', - 'real4',' real8','real10','sbyte','sdword','sign?','stdcall','sword','syscall','tbyte', - 'vararg','word','zero?','flat','near32','far32', - 'abs','all','assumes','at','casemap','common','compact', - 'cpu','dotname','emulator','epilogue','error','export','expr16','expr32','farstack', - 'forceframe','huge','language','large','listing','ljmp','loadds','m510','medium','memory', - 'nearstack','nodotname','noemulator','nokeyword','noljmp','nom510','none','nonunique', - 'nooldmacros','nooldstructs','noreadonly','noscoped','nosignextend','nothing', - 'notpublic','oldmacros','oldstructs','os_dos','para','prologue', - 'readonly','req','scoped','setif2','smallstack','tiny','use16','use32','uses' + 'db','dw','dd','dq','dt','do','dy', + 'resb','resw','resd','resq','rest','reso','resy','incbin','equ','times','safeseh', + '__utf16__','__utf32__', + 'default','cpu','float','start','imagebase','osabi', + '..start','..imagebase','..gotpc','..gotoff','..gottpoff','..got','..plt','..sym','..tlsie', + 'section','segment','__sect__','group','absolute', + '.bss','.comment','.data','.lbss','.ldata','.lrodata','.rdata','.rodata','.tbss','.tdata','.text', + 'alloc','bss','code','exec','data','noalloc','nobits','noexec','nowrite','progbits','rdata','tls','write', + 'private','public','common','stack','overlay','class', + 'extern','global','import','export', + '%define','%idefine','%xdefine','%ixdefine','%assign','%undef', + '%defstr','%idefstr','%deftok','%ideftok', + '%strcat','%strlen','%substr', + '%macro','%imacro','%rmacro','%exitmacro','%endmacro','%unmacro', + '%if','%ifn','%elif','%elifn','%else','%endif', + '%ifdef','%ifndef','%elifdef','%elifndef', + '%ifmacro','%ifnmacro','%elifmacro','%elifnmacro', + '%ifctx','%ifnctx','%elifctx','%elifnctx', + '%ifidn','%ifnidn','%elifidn','%elifnidn', + '%ifidni','%ifnidni','%elifidni','%elifnidni', + '%ifid','%ifnid','%elifid','%elifnid', + '%ifnum','%ifnnum','%elifnum','%elifnnum', + '%ifstr','%ifnstr','%elifstr','%elifnstr', + '%iftoken','%ifntoken','%eliftoken','%elifntoken', + '%ifempty','%ifnempty','%elifempty','%elifnempty', + '%ifenv','%ifnenv','%elifenv','%elifnenv', + '%rep','%exitrep','%endrep', + '%while','%exitwhile','%endwhile', + '%include','%pathsearch','%depend','%use', + '%push','%pop','%repl','%arg','%local','%stacksize','flat','flat64','large','small', + '%error','%warning','%fatal', + '%00','.nolist','%rotate','%line','%!','%final','%clear', + 'struc','endstruc','istruc','at','iend', + 'align','alignb','sectalign', + 'bits','use16','use32','use64', + '__nasm_major__','__nasm_minor__','__nasm_subminor__','___nasm_patchlevel__', + '__nasm_version_id__','__nasm_ver__', + '__file__','__line__','__pass__','__bits__','__output_format__', + '__date__','__time__','__date_num__','__time_num__','__posix_time__', + '__utc_date__','__utc_time__','__utc_date_num__','__utc_time_num__', + '__float_daz__','__float_round__','__float__', + /* Keywords from standard packages */ + '__use_altreg__', + '__use_smartalign__','smartalign','__alignmode__', + '__use_fp__','__infinity__','__nan__','__qnan__','__snan__', + '__float8__','__float16__','__float32__','__float64__','__float80m__','__float80e__','__float128l__','__float128h__' + ), + /*Operands*/ + 6 => array( + 'a16','a32','a64','o16','o32','o64','strict', + 'byte','word','dword','qword','tword','oword','yword','nosplit', + '%0','%1','%2','%3','%4','%5','%6','%7','%8','%9', + 'abs','rel', + 'seg','wrt' ) ), 'SYMBOLS' => array( - '[', ']', '(', ')', - '+', '-', '*', '/', '%', - '.', ',', ';', ':' + 1 => array( + '[', ']', '(', ')', + '+', '-', '*', '/', '%', + '.', ',', ';', ':' + ), + 2 => array( + '$','$$','%+','%?','%??' + ) ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -144,19 +524,21 @@ $language_data = array ( 2 => false, 3 => false, 4 => false, - 5 => false + 5 => false, + 6 => false ), 'STYLES' => array( 'KEYWORDS' => array( 1 => 'color: #00007f; font-weight: bold;', - 2 => 'color: #0000ff; font-weight: bold;', - 3 => 'color: #00007f;', - 4 => 'color: #000000; font-weight: bold;', - 5 => 'color: #000000; font-weight: bold;' + 2 => 'color: #0000ff;', + 3 => 'color: #b00040;', + 4 => 'color: #46aa03; font-weight: bold;', + 5 => 'color: #0000ff; font-weight: bold;', + 6 => 'color: #0000ff; font-weight: bold;' ), 'COMMENTS' => array( 1 => 'color: #666666; font-style: italic;', - 2 => 'color: #adadad; font-style: italic;', + 2 => 'color: #adadad; font-style: italic;' ), 'ESCAPE_CHAR' => array( 0 => 'color: #000099; font-weight: bold;' @@ -168,16 +550,15 @@ $language_data = array ( 0 => 'color: #7f007f;' ), 'NUMBERS' => array( - 0 => 'color: #0000ff;' + 0 => 'color: #ff0000;' ), 'METHODS' => array( ), 'SYMBOLS' => array( - 0 => 'color: #339933;' + 1 => 'color: #339933;', + 2 => 'color: #0000ff; font-weight: bold;' ), 'REGEXPS' => array( -// 0 => 'color: #0000ff;', -// 1 => 'color: #0000ff;' ), 'SCRIPT' => array( ) @@ -187,7 +568,8 @@ $language_data = array ( 2 => '', 3 => '', 4 => '', - 5 => '' + 5 => '', + 6 => '' ), 'NUMBERS' => GESHI_NUMBER_BIN_PREFIX_PERCENT | @@ -203,10 +585,6 @@ $language_data = array ( 'OBJECT_SPLITTERS' => array( ), 'REGEXPS' => array( - //Hex numbers -// 0 => /* */ "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))(?:[0-9][0-9a-fA-F]{0,31}[hH]|0x[0-9a-fA-F]{1,32})(?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))", - //Binary numbers -// 1 => "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))[01]{1,64}[bB](?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))" ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( diff --git a/inc/geshi/asp.php b/inc/geshi/asp.php index c011de960..0096a169c 100644 --- a/inc/geshi/asp.php +++ b/inc/geshi/asp.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/13 * * ASP language file for GeSHi. diff --git a/inc/geshi/asymptote.php b/inc/geshi/asymptote.php new file mode 100644 index 000000000..8683588e5 --- /dev/null +++ b/inc/geshi/asymptote.php @@ -0,0 +1,194 @@ +<?php +/************************************************************************************* + * asymptote.php + * ------------- + * Author: Manuel Yguel (manuel.yguel.robotics@gmail.com) + * Copyright: (c) 2012 Manuel Yguel (http://manuelyguel.eu) + * Release Version: 1.0.8.11 + * Date Started: 2012/05/24 + * + * asymptote language file for GeSHi. + * + * CHANGES + * ------- + * 2012/05/24 (1.0.0.0) + * - First Release + * + * TODO (updated 2012/05/24) + * ------------------------- + * * Split to several files - php4, php5 etc + * + ************************************************************************************* + * + * 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' => 'asymptote', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{2}#", + //Hexadecimal Char Specs + 3 => "#\\\\u[\da-fA-F]{4}#", + //Hexadecimal Char Specs + 4 => "#\\\\U[\da-fA-F]{8}#", + //Octal Char Specs + 5 => "#\\\\[0-7]{1,3}#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'and','controls','tension','atleast','curl','if','else','while','for','do','return','break','continue','struct','typedef','new','access','import','unravel','from','include','quote','static','public','private','restricted','this','explicit','true','false','null','cycle','newframe','operator' + ), + 2 => array( + 'Braid','FitResult','Label','Legend','Segment','Solution','TreeNode','abscissa','arc','arrowhead','binarytree','binarytreeNode','block','bool','bool3','bounds','bqe','circle','conic','coord','coordsys','cputime','ellipse','file','filltype','frame','grid3','guide','horner','hsv','hyperbola','indexedTransform','int','inversion','key','light','line','linefit','marginT','marker','mass','object','pair','parabola','path','path3','pen','picture','point','position','projection','real','revolution','scaleT','scientific','segment','side','slice','solution','splitface','string','surface','tensionSpecifier','ticklocate','ticksgridT','tickvalues','transform','transformation','tree','triangle','trilinear','triple','vector','vertex','void'), + 3 => array( + 'AND','Arc','ArcArrow','ArcArrows','Arrow','Arrows','Automatic','AvantGarde','BBox','BWRainbow','BWRainbow2','Bar','Bars','BeginArcArrow','BeginArrow','BeginBar','BeginDotMargin','BeginMargin','BeginPenMargin','Blank','Bookman','Bottom','BottomTop','Bounds','Break','Broken','BrokenLog','CLZ','CTZ','Ceil','Circle','CircleBarIntervalMarker','Cos','Courier','CrossIntervalMarker','DOSendl','DOSnewl','DefaultFormat','DefaultLogFormat','Degrees','Dir','DotMargin','DotMargins','Dotted','Draw','Drawline','Embed','EndArcArrow','EndArrow','EndBar','EndDotMargin','EndMargin','EndPenMargin','Fill','FillDraw','Floor','Format','Full','Gaussian','Gaussrand','Gaussrandpair', + 'Gradient','Grayscale','Helvetica','Hermite','HookHead','InOutTicks','InTicks','Jn','Label','Landscape','Left','LeftRight','LeftTicks','Legend','Linear','Link','Log','LogFormat','Margin','Margins','Mark','MidArcArrow','MidArrow','NOT','NewCenturySchoolBook','NoBox','NoMargin','NoModifier','NoTicks','NoTicks3','NoZero','NoZeroFormat','None','OR','OmitFormat','OmitTick','OmitTickInterval','OmitTickIntervals','OutTicks','Ox','Oy','Palatino','PaletteTicks','Pen','PenMargin','PenMargins','Pentype','Portrait','RadialShade','RadialShadeDraw','Rainbow','Range','Relative','Right','RightTicks','Rotate','Round','SQR','Scale','ScaleX','ScaleY','ScaleZ','Seascape','Segment','Shift','Sin','Slant','Spline','StickIntervalMarker','Straight','Symbol','Tan','TeXify','Ticks','Ticks3','TildeIntervalMarker','TimesRoman','Top','TrueMargin','UnFill','UpsideDown','Wheel','X','XEquals','XOR','XY','XYEquals','XYZero','XYgrid','XZEquals','XZZero','XZero','XZgrid','Y','YEquals','YXgrid','YZ','YZEquals','YZZero','YZero','YZgrid','Yn','Z','ZX','ZXgrid','ZYgrid','ZapfChancery','ZapfDingbats','_begingroup3','_cputime','_draw','_eval','_image','_labelpath','_projection','_strokepath','_texpath','aCos','aSin','aTan','abort','abs','accel','acos','acosh','acot','acsc','activatequote','add', + 'addArrow','addMargins','addSaveFunction','addpenarc','addpenline','adjust','alias','align','all','altitude','angabscissa','angle','angpoint','animate','annotate','anticomplementary','antipedal','apply','approximate','arc','arcarrowsize','arccircle','arcdir','arcfromcenter','arcfromfocus','arclength','arcnodesnumber','arcpoint','arcsubtended','arcsubtendedcenter','arctime','arctopath','array','arrow','arrow2','arrowbase','arrowbasepoints','arrowsize','asec','asin','asinh','ask','assert','asy','asycode','asydir','asyfigure','asyfilecode','asyinclude','asywrite','atan','atan2','atanh','atbreakpoint','atexit','attach','attract','atupdate','autoformat','autoscale','autoscale3','axes','axes3','axialshade','axis','axiscoverage','azimuth','babel','background','bangles','bar','barmarksize','barsize','basealign','baseline','bbox','beep','begin','beginclip','begingroup','beginpoint','between','bevel','bezier','bezierP','bezierPP','bezierPPP','bezulate','bibliography','bibliographystyle','binarytree','binarytreeNode','binomial','binput','bins','bisector','bisectorpoint','bispline','blend','blockconnector','boutput','box','bqe','breakpoint','breakpoints','brick','buildRestoreDefaults','buildRestoreThunk','buildcycle','bulletcolor','byte','calculateScaling','canonical','canonicalcartesiansystem','cartesiansystem','case1','case2','case3','case4','cbrt','cd','ceil','center','centerToFocus', + 'centroid','cevian','change2','changecoordsys','checkSegment','checkconditionlength','checker','checkincreasing','checklengths','checkposition','checktriangle','choose','circle','circlebarframe','circlemarkradius','circlenodesnumber','circumcenter','circumcircle','clamped','clear','clip','clipdraw','close','cmyk','code','colatitude','collect','collinear','color','colorless','colors','colorspace','comma','compassmark','complement','complementary','concat','concurrent','cone','conic','conicnodesnumber','conictype','conj','connect','connected','connectedindex','containmentTree','contains','contour','contour3','contouredges','controlSpecifier','convert','coordinates','coordsys','copy','copyPairOrTriple','cos','cosh','cot','countIntersections','cputime','crop','cropcode','cross', + 'crossframe','crosshatch','crossmarksize','csc','cubicroots','curabscissa','curlSpecifier','curpoint','currentarrow','currentexitfunction','currentmomarrow','currentpolarconicroutine','curve','cut','cutafter','cutbefore','cyclic','cylinder','deactivatequote','debugger','deconstruct','defaultdir','defaultformat','defaultpen','defined','degenerate','degrees','delete','deletepreamble','determinant','diagonal','diamond','diffdiv','dir','dirSpecifier','dirtime','display','distance', + 'divisors','do_overpaint','dot','dotframe','dotsize','downcase','draw','drawAll','drawDoubleLine','drawFermion','drawGhost','drawGluon','drawMomArrow','drawPRCcylinder','drawPRCdisk','drawPRCsphere','drawPRCtube','drawPhoton','drawScalar','drawVertex','drawVertexBox','drawVertexBoxO','drawVertexBoxX','drawVertexO','drawVertexOX','drawVertexTriangle','drawVertexTriangleO','drawVertexX','drawarrow','drawarrow2','drawline','drawpixel','drawtick','duplicate','elle','ellipse','ellipsenodesnumber','embed','embed3','empty','enclose','end','endScript','endclip','endgroup','endgroup3','endl','endpoint','endpoints','eof','eol','equation','equations','erase','erasestep','erf','erfc','error','errorbar','errorbars','eval','excenter','excircle','exit','exitXasyMode','exitfunction','exp','expfactors','expi','expm1','exradius','extend','extension','extouch','fabs','factorial','fermat','fft','fhorner','figure','file','filecode','fill','filldraw','filloutside','fillrule','filltype','find','finite','finiteDifferenceJacobian','firstcut','firstframe','fit','fit2','fixedscaling','floor','flush','fmdefaults','fmod','focusToCenter','font','fontcommand','fontsize','foot','format','frac','frequency','fromCenter','fromFocus','fspline','functionshade','gamma','generate_random_backtrace','generateticks','gergonne','getc','getint','getpair','getreal','getstring','gettriple','gluon','gouraudshade','graph','graphic','gray','grestore','grid','grid3','gsave','halfbox','hatch','hdiffdiv','hermite','hex','histogram','history','hline','hprojection', + 'hsv','hyperbola','hyperbolanodesnumber','hyperlink','hypot','identity','image','incenter','incentral','incircle','increasing','incrementposition','indexedTransform','indexedfigure','initXasyMode','initdefaults','input','inradius','insert','inside','integrate','interactive','interior','interp','interpolate','intersect','intersection','intersectionpoint','intersectionpoints','intersections','intouch','inverse','inversion','invisible','is3D','isCCW','isDuplicate','isogonal','isogonalconjugate','isotomic','isotomicconjugate','isparabola','italic','item','jobname','key','kurtosis','kurtosisexcess','label','labelaxis','labelmargin','labelpath','labels','labeltick','labelx','labelx3','labely','labely3','labelz','labelz3','lastcut','latex','latitude','latticeshade','layer','layout','ldexp','leastsquares','legend','legenditem','length','lexorder','lift','light','limits','line','linear','linecap','lineinversion','linejoin','linemargin','lineskip','linetype','linewidth','link','list','lm_enorm','lm_evaluate_default','lm_lmdif','lm_lmpar','lm_minimize','lm_print_default','lm_print_quiet','lm_qrfac','lm_qrsolv','locale','locate', + 'locatefile','location','log','log10','log1p','logaxiscoverage','longitude','lookup','makeNode','makedraw','makepen','map','margin','markangle','markangleradius','markanglespace','markarc','marker','markinterval','marknodes','markrightangle','markuniform','mass','masscenter','massformat','math','max','max3','maxAfterTransform','maxbezier','maxbound','maxcoords','maxlength','maxratio','maxtimes','mean','medial','median','midpoint','min','min3','minAfterTransform','minbezier','minbound','minipage','minratio','mintimes','miterlimit','mktemp','momArrowPath','momarrowsize','monotonic','multifigure','nativeformat','natural','needshipout','newl','newpage','newslide','newton','newtree','nextframe','nextnormal','nextpage','nib','nodabscissa','none','norm','normalvideo','notaknot','nowarn','numberpage','nurb','object','offset','onpath','opacity','opposite','orientation','origin','orthic','orthocentercenter','outformat','outline','outname','outprefix','output','overloadedMessage','overwrite','pack','pad','pairs','palette','parabola','parabolanodesnumber','parallel','parallelogram','partialsum','path','path3','pattern','pause','pdf','pedal','periodic','perp','perpendicular','perpendicularmark','phantom','phi1','phi2','phi3','photon','piecewisestraight','point','polar','polarconicroutine','polargraph','polygon','postcontrol','postscript','pow10','ppoint','prc','prc0','precision','precontrol','prepend','printBytecode','print_random_addresses','project','projection','purge','pwhermite','quadrant','quadraticroots','quantize','quarticroots','quotient','radialshade','radians','radicalcenter','radicalline','radius','rand','randompath','rd','readline','realmult','realquarticroots','rectangle','rectangular','rectify','reflect','relabscissa','relative','relativedistance','reldir','relpoint','reltime','remainder','remark','removeDuplicates','rename','replace','report','resetdefaultpen','restore','restoredefaults','reverse','reversevideo','rf','rfind','rgb','rgba','rgbint','rms', + 'rotate','rotateO','rotation','round','roundbox','roundedpath','roundrectangle','same','samecoordsys','sameside','sample','save','savedefaults','saveline','scale','scale3','scaleO','scaleT','scaleless','scientific','search','searchindex','searchtree','sec','secondaryX','secondaryY','seconds','section','sector','seek','seekeof','segment','sequence','setcontour','setpens','sgn','sgnd','sharpangle','sharpdegrees','shift','shiftless','shipout','shipout3','show','side','simeq','simpson','sin','sinh','size','size3','skewness','skip','slant','sleep','slope','slopefield','solve','solveBVP','sort','sourceline','sphere','split','sqrt','square','srand','standardizecoordsys','startScript','stdev','step','stickframe','stickmarksize','stickmarkspace','stop','straight','straightness','string','stripdirectory','stripextension','stripfile','stripsuffix','strokepath','subdivide','subitem','subpath','substr','sum','surface','symmedial','symmedian','system', + 'tab','tableau','tan','tangent','tangential','tangents','tanh','tell','tensionSpecifier','tensorshade','tex','texcolor','texify','texpath','texpreamble','texreset','texshipout','texsize','textpath','thick','thin','tick','tickMax','tickMax3','tickMin','tickMin3','ticklabelshift','ticklocate','tildeframe','tildemarksize','tile','tiling','time','times','title','titlepage','topbox','transform','transformation','transpose','trembleFuzz','triangle','triangleAbc','triangleabc','triangulate','tricoef','tridiagonal','trilinear','trim','truepoint','tube','uncycle','unfill','uniform','unique','unit','unitrand','unitsize','unityroot','unstraighten','upcase','updatefunction','uperiodic','upscale','uptodate','usepackage','usersetting','usetypescript','usleep','value','variance','variancebiased','vbox','vector','vectorfield','verbatim','view','vline','vperiodic','vprojection','warn','warning','windingnumber','write','xaxis','xaxis3','xaxis3At','xaxisAt','xequals','xinput','xlimits','xoutput','xpart','xscale','xscaleO','xtick','xtick3','xtrans','yaxis','yaxis3','yaxis3At','yaxisAt','yequals','ylimits','ypart','yscale','yscaleO','ytick','ytick3','ytrans','zaxis3','zaxis3At','zero','zero3','zlimits','zpart','ztick','ztick3','ztrans' + ), + 4 => array( + 'AliceBlue','Align','Allow','AntiqueWhite','Apricot','Aqua','Aquamarine','Aspect','Azure','BeginPoint','Beige','Bisque','Bittersweet','Black','BlanchedAlmond','Blue','BlueGreen','BlueViolet','Both','Break','BrickRed','Brown','BurlyWood','BurntOrange','CCW','CW','CadetBlue','CarnationPink','Center','Centered','Cerulean','Chartreuse','Chocolate','Coeff','Coral','CornflowerBlue','Cornsilk','Crimson','Crop','Cyan','Dandelion','DarkBlue','DarkCyan','DarkGoldenrod','DarkGray','DarkGreen','DarkKhaki','DarkMagenta','DarkOliveGreen','DarkOrange','DarkOrchid','DarkRed','DarkSalmon','DarkSeaGreen','DarkSlateBlue','DarkSlateGray','DarkTurquoise','DarkViolet','DeepPink','DeepSkyBlue','DefaultHead','DimGray','DodgerBlue','Dotted','Down','Draw','E','ENE','EPS','ESE','E_Euler','E_PC','E_RK2','E_RK3BS','Emerald','EndPoint','Euler','Fill','FillDraw','FireBrick','FloralWhite','ForestGreen','Fuchsia','Gainsboro','GhostWhite','Gold','Goldenrod','Gray','Green','GreenYellow','Honeydew','HookHead','Horizontal','HotPink','I','IgnoreAspect','IndianRed','Indigo','Ivory','JOIN_IN','JOIN_OUT','JungleGreen','Khaki','LM_DWARF','LM_MACHEP','LM_SQRT_DWARF','LM_SQRT_GIANT','LM_USERTOL','Label','Lavender','LavenderBlush','LawnGreen','Left','LeftJustified','LeftSide','LemonChiffon','LightBlue','LightCoral','LightCyan','LightGoldenrodYellow', + 'LightGreen','LightGrey','LightPink','LightSalmon','LightSeaGreen','LightSkyBlue','LightSlateGray','LightSteelBlue','LightYellow','Lime','LimeGreen','Linear','Linen','Log','Logarithmic','Magenta','Mahogany','Mark','MarkFill','Maroon','Max','MediumAquamarine','MediumBlue','MediumOrchid','MediumPurple','MediumSeaGreen','MediumSlateBlue','MediumSpringGreen','MediumTurquoise','MediumVioletRed','Melon','MidPoint','MidnightBlue','Min','MintCream','MistyRose','Moccasin','Move','MoveQuiet','Mulberry','N','NE','NNE','NNW','NW','NavajoWhite','Navy','NavyBlue','NoAlign','NoCrop','NoFill','NoSide','OldLace','Olive','OliveDrab','OliveGreen','Orange','OrangeRed','Orchid','Ox','Oy','PC','PaleGoldenrod','PaleGreen','PaleTurquoise','PaleVioletRed','PapayaWhip','Peach','PeachPuff','Periwinkle','Peru','PineGreen','Pink','Plum','PowderBlue','ProcessBlue','Purple','RK2','RK3','RK3BS','RK4','RK5','RK5DP','RK5F','RawSienna','Red','RedOrange','RedViolet','Rhodamine','Right','RightJustified','RightSide','RosyBrown','RoyalBlue','RoyalPurple','RubineRed','S','SE','SSE','SSW','SW','SaddleBrown','Salmon','SandyBrown','SeaGreen','Seashell','Sepia','Sienna','Silver','SimpleHead','SkyBlue','SlateBlue','SlateGray','Snow','SpringGreen','SteelBlue','Suppress','SuppressQuiet','Tan','TeXHead','Teal','TealBlue','Thistle','Ticksize','Tomato', + 'Turquoise','UnFill','Up','VERSION','Value','Vertical','Violet','VioletRed','W','WNW','WSW','Wheat','White','WhiteSmoke','WildStrawberry','XYAlign','YAlign','Yellow','YellowGreen','YellowOrange','addpenarc','addpenline','align','allowstepping','angularsystem','animationdelay','appendsuffix','arcarrowangle','arcarrowfactor','arrow2sizelimit','arrowangle','arrowbarb','arrowdir','arrowfactor','arrowhookfactor','arrowlength','arrowsizelimit','arrowtexfactor','authorpen','axis','axiscoverage','axislabelfactor','background','backgroundcolor','backgroundpen','barfactor','barmarksizefactor','basealign','baselinetemplate','beveljoin','bigvertexpen','bigvertexsize','black','blue','bm','bottom','bp','brown','bullet','byfoci','byvertices','camerafactor','chartreuse','circlemarkradiusfactor','circlenodesnumberfactor','circleprecision','circlescale','cm','codefile','codepen','codeskip','colorPen','coloredNodes','coloredSegments', + 'conditionlength','conicnodesfactor','count','cputimeformat','crossmarksizefactor','currentcoordsys','currentlight','currentpatterns','currentpen','currentpicture','currentposition','currentprojection','curvilinearsystem','cuttings','cyan','darkblue','darkbrown','darkcyan','darkgray','darkgreen','darkgrey','darkmagenta','darkolive','darkred','dashdotted','dashed','datepen','dateskip','debuggerlines','debugging','deepblue','deepcyan','deepgray','deepgreen','deepgrey','deepmagenta','deepred','default','defaultControl','defaultS','defaultbackpen','defaultcoordsys','defaultexcursion','defaultfilename','defaultformat','defaultmassformat','defaultpen','diagnostics','differentlengths','dot','dotfactor','dotframe','dotted','doublelinepen','doublelinespacing','down','duplicateFuzz','edge','ellipsenodesnumberfactor','eps','epsgeo','epsilon','evenodd','expansionfactor','extendcap','exterior','fermionpen','figureborder','figuremattpen','file3','firstnode','firststep','foregroundcolor','fuchsia','fuzz','gapfactor','ghostpen','gluonamplitude','gluonpen','gluonratio','gray','green','grey','hatchepsilon','havepagenumber','heavyblue','heavycyan','heavygray','heavygreen','heavygrey','heavymagenta','heavyred','hline','hwratio','hyperbola','hyperbolanodesnumberfactor','identity4','ignore','inXasyMode','inch','inches','includegraphicscommand','inf','infinity','institutionpen','intMax','intMin','interior','invert','invisible','itempen','itemskip','itemstep','labelmargin','landscape','lastnode','left','legendhskip','legendlinelength', + 'legendmargin','legendmarkersize','legendmaxrelativewidth','legendvskip','lightblue','lightcyan','lightgray','lightgreen','lightgrey','lightmagenta','lightolive','lightred','lightyellow','line','linemargin','lm_infmsg','lm_shortmsg','longdashdotted','longdashed','magenta','magneticRadius','mantissaBits','markangleradius','markangleradiusfactor','markanglespace','markanglespacefactor','mediumblue','mediumcyan','mediumgray','mediumgreen','mediumgrey','mediummagenta','mediumred','mediumyellow','middle','minDistDefault','minblockheight','minblockwidth','mincirclediameter','minipagemargin','minipagewidth','minvertexangle','miterjoin','mm','momarrowfactor','momarrowlength','momarrowmargin','momarrowoffset','momarrowpen','monoPen','morepoints','nCircle','newbulletcolor','ngraph','nil','nmesh','nobasealign','nodeMarginDefault','nodesystem','nomarker','nopoint','noprimary','nullpath','nullpen','numarray','ocgindex','oldbulletcolor','olive','orange','origin','overpaint','page','pageheight','pagemargin','pagenumberalign','pagenumberpen','pagenumberposition','pagewidth','paleblue','palecyan','palegray','palegreen','palegrey', + 'palemagenta','palered','paleyellow','parabolanodesnumberfactor','perpfactor','phi','photonamplitude','photonpen','photonratio','pi','pink','plain','plain_bounds','plain_scaling','plus','preamblenodes','pt','purple','r3','r4a','r4b','randMax','realDigits','realEpsilon','realMax','realMin','red','relativesystem','reverse','right','roundcap','roundjoin','royalblue','salmon','saveFunctions','scalarpen','sequencereal','settings','shipped','signedtrailingzero','solid','springgreen','sqrtEpsilon','squarecap','squarepen','startposition','stdin','stdout','stepfactor','stepfraction','steppagenumberpen','stepping','stickframe','stickmarksizefactor','stickmarkspacefactor','swap','textpen','ticksize','tildeframe','tildemarksizefactor','tinv','titlealign','titlepagepen','titlepageposition','titlepen','titleskip','top','trailingzero','treeLevelStep','treeMinNodeWidth','treeNodeStep','trembleAngle','trembleFrequency','trembleRandom','undefined','unitcircle','unitsquare','up','urlpen','urlskip','version','vertexpen','vertexsize','viewportmargin','viewportsize','vline','white','wye','xformStack','yellow','ylabelwidth','zerotickfuzz','zerowinding' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')', '{', '}', '[', ']' + ), + 1 => array('<', '>','='), + 2 => array('+', '-', '*', '/', '%'), + 3 => array('!', '^', '&', '|'), + 4 => array('?', ':', ';'), + 5 => array('..') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #990000;', + 4 => 'color: #009900; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 2 => 'color: #339900;', + 'MULTI' => 'color: #ff0000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #660099; font-weight: bold;', + 3 => 'color: #660099; font-weight: bold;', + 4 => 'color: #660099; font-weight: bold;', + 5 => 'color: #006699; font-weight: bold;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #008000;' + ), + 'STRINGS' => array( + 0 => 'color: #FF0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #007788;', + 2 => 'color: #007788;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;', + 1 => 'color: #000080;', + 2 => 'color: #000040;', + 3 => 'color: #000040;', + 4 => 'color: #008080;', + 5 => 'color: #009080;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-])" + ) + ) +); + +?> diff --git a/inc/geshi/autoconf.php b/inc/geshi/autoconf.php index 901125bdc..7a0f1ee9c 100644 --- a/inc/geshi/autoconf.php +++ b/inc/geshi/autoconf.php @@ -4,7 +4,7 @@ * ----- * Author: Mihai Vasilian (grayasm@gmail.com) * Copyright: (c) 2010 Mihai Vasilian - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/01/25 * * autoconf language file for GeSHi. diff --git a/inc/geshi/autohotkey.php b/inc/geshi/autohotkey.php index c162f7ade..970684daf 100644 --- a/inc/geshi/autohotkey.php +++ b/inc/geshi/autohotkey.php @@ -4,7 +4,7 @@ * -------- * Author: Naveen Garg (naveen.garg@gmail.com) * Copyright: (c) 2009 Naveen Garg and GeSHi - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/06/11 * * Autohotkey language file for GeSHi. diff --git a/inc/geshi/autoit.php b/inc/geshi/autoit.php index 7f69d2bd5..ab401b4cd 100644 --- a/inc/geshi/autoit.php +++ b/inc/geshi/autoit.php @@ -4,7 +4,7 @@ * -------- * Author: big_daddy (robert.i.anthony@gmail.com) * Copyright: (c) 2006 and to GESHi ;) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/01/26 * * AutoIT language file for GeSHi. diff --git a/inc/geshi/avisynth.php b/inc/geshi/avisynth.php index 949d0ecb6..88f662886 100644 --- a/inc/geshi/avisynth.php +++ b/inc/geshi/avisynth.php @@ -4,7 +4,7 @@ * -------- * Author: Ryan Jones (sciguyryan@gmail.com) * Copyright: (c) 2008 Ryan Jones - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/10/08 * * AviSynth language file for GeSHi. diff --git a/inc/geshi/awk.php b/inc/geshi/awk.php index a1ab68ef1..1ec239b70 100644 --- a/inc/geshi/awk.php +++ b/inc/geshi/awk.php @@ -4,7 +4,7 @@ * ------- * Author: George Pollard (porges@porg.es) * Copyright: (c) 2009 George Pollard - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/01/28 * * Awk language file for GeSHi. diff --git a/inc/geshi/bascomavr.php b/inc/geshi/bascomavr.php index 8270fb26e..864f74e8d 100644 --- a/inc/geshi/bascomavr.php +++ b/inc/geshi/bascomavr.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: aquaticus.info * Copyright: (c) 2008 aquaticus.info - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/01/09 * * BASCOM AVR language file for GeSHi. diff --git a/inc/geshi/bash.php b/inc/geshi/bash.php index 8edb3f30e..c69f0054f 100644 --- a/inc/geshi/bash.php +++ b/inc/geshi/bash.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/20 * * BASH language file for GeSHi. @@ -157,8 +157,8 @@ $language_data = array ( 'ed', 'egrep', 'env', 'expr', - 'false', 'fbset', 'ffmpeg', 'fgconsole','fgrep', 'file', 'find', - 'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser', + 'false', 'fbset', 'fdisk', 'ffmpeg', 'fgconsole','fgrep', 'file', + 'find', 'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser', 'g++', 'gawk', 'gc','gcc', 'gdb', 'getent', 'getkeycodes', 'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote', diff --git a/inc/geshi/basic4gl.php b/inc/geshi/basic4gl.php index ce409e8a4..35c927406 100644 --- a/inc/geshi/basic4gl.php +++ b/inc/geshi/basic4gl.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2007/09/15 * * Basic4GL language file for GeSHi. diff --git a/inc/geshi/bf.php b/inc/geshi/bf.php index 0529ec3c5..c06ca5bf6 100644 --- a/inc/geshi/bf.php +++ b/inc/geshi/bf.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/31 * * Brainfuck language file for GeSHi. @@ -63,7 +63,7 @@ $language_data = array ( 1 => 'color: #666666; font-style: italic;' ), 'BRACKETS' => array( - 0 => 'color: #66cc66;' + 0 => 'color: #660000;' ), 'STRINGS' => array( 0 => 'color: #ff0000;' @@ -76,8 +76,8 @@ $language_data = array ( 0 => 'color: #006600;', 1 => 'color: #660000;', 2 => 'color: #000066;', - 3 => 'color: #660066;', - 4 => 'color: #666600;' + 3 => 'color: #666600;', + 4 => 'color: #660066;' ), 'ESCAPE_CHAR' => array( ), @@ -102,8 +102,9 @@ $language_data = array ( 'PARSER_CONTROL' => array( 'ENABLE_FLAGS' => array( 'STRINGS' => GESHI_NEVER, - 'NUMBERS' => GESHI_NEVER - ), + 'NUMBERS' => GESHI_NEVER, + 'BRACKETS' => GESHI_NEVER + ), 'KEYWORDS' => array( 'DISALLOW_BEFORE' => '', 'DISALLOW_AFTER' => '' @@ -111,4 +112,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/bibtex.php b/inc/geshi/bibtex.php index 13685608b..51cb4cebd 100644 --- a/inc/geshi/bibtex.php +++ b/inc/geshi/bibtex.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2009/04/29 * * BibTeX language file for GeSHi. diff --git a/inc/geshi/blitzbasic.php b/inc/geshi/blitzbasic.php index 15f24fdbe..1d3c08d05 100644 --- a/inc/geshi/blitzbasic.php +++ b/inc/geshi/blitzbasic.php @@ -4,7 +4,7 @@ * -------------- * Author: P�draig O`Connel (info@moonsword.info) * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 16.10.2005 * * BlitzBasic language file for GeSHi. @@ -56,7 +56,7 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 1 => array( - 'If','EndIf','ElseIf','Else If','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select', + 'If','EndIf','ElseIf','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select', 'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float', 'String','Before','Not' ), diff --git a/inc/geshi/bnf.php b/inc/geshi/bnf.php index 7cec792a9..ca15cf9eb 100644 --- a/inc/geshi/bnf.php +++ b/inc/geshi/bnf.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2006/09/28 * * BNF (Backus-Naur form) language file for GeSHi. diff --git a/inc/geshi/boo.php b/inc/geshi/boo.php index f56afee5f..b68d442f7 100644 --- a/inc/geshi/boo.php +++ b/inc/geshi/boo.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2007/09/10 * * Boo language file for GeSHi. diff --git a/inc/geshi/c.php b/inc/geshi/c.php index 7db6d3d50..35d5b019d 100644 --- a/inc/geshi/c.php +++ b/inc/geshi/c.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * C language file for GeSHi. diff --git a/inc/geshi/c_loadrunner.php b/inc/geshi/c_loadrunner.php index 4e5429cda..42b3d7721 100644 --- a/inc/geshi/c_loadrunner.php +++ b/inc/geshi/c_loadrunner.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2010-07-25 * * C (for LoadRunner) language file for GeSHi. diff --git a/inc/geshi/c_mac.php b/inc/geshi/c_mac.php index f80dc2ed2..41c21ce54 100644 --- a/inc/geshi/c_mac.php +++ b/inc/geshi/c_mac.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * C for Macs language file for GeSHi. diff --git a/inc/geshi/caddcl.php b/inc/geshi/caddcl.php index 6587cfed9..8b8b2f248 100644 --- a/inc/geshi/caddcl.php +++ b/inc/geshi/caddcl.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * CAD DCL (Dialog Control Language) language file for GeSHi. diff --git a/inc/geshi/cadlisp.php b/inc/geshi/cadlisp.php index 00e3c6c5b..3fa7ead09 100644 --- a/inc/geshi/cadlisp.php +++ b/inc/geshi/cadlisp.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * AutoCAD/IntelliCAD Lisp language file for GeSHi. diff --git a/inc/geshi/cfdg.php b/inc/geshi/cfdg.php index 31d32fa45..e40963f06 100644 --- a/inc/geshi/cfdg.php +++ b/inc/geshi/cfdg.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2006/03/11 * * CFDG language file for GeSHi. diff --git a/inc/geshi/cfm.php b/inc/geshi/cfm.php index f340c39ac..2d165bd68 100644 --- a/inc/geshi/cfm.php +++ b/inc/geshi/cfm.php @@ -4,7 +4,7 @@ * ------- * Author: Diego * Copyright: (c) 2006 Diego - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/02/25 * * ColdFusion language file for GeSHi. diff --git a/inc/geshi/chaiscript.php b/inc/geshi/chaiscript.php index dcd05dbf5..f9d0a8681 100644 --- a/inc/geshi/chaiscript.php +++ b/inc/geshi/chaiscript.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2009/07/03 * * ChaiScript language file for GeSHi. @@ -52,7 +52,7 @@ $language_data = array ( 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( 1 => array( - 'break', 'else', 'else if', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally', + 'break', 'else', 'elseif', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally', ), 2 => array( 'def', 'false', 'fun', 'true', 'var', 'attr', diff --git a/inc/geshi/cil.php b/inc/geshi/cil.php index 975572c64..9872e755f 100644 --- a/inc/geshi/cil.php +++ b/inc/geshi/cil.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2007/10/24 * * CIL (Common Intermediate Language) language file for GeSHi. diff --git a/inc/geshi/clojure.php b/inc/geshi/clojure.php index bf21c7603..0ad4e4ad7 100644 --- a/inc/geshi/clojure.php +++ b/inc/geshi/clojure.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2009/09/20 * * Clojure language file for GeSHi. diff --git a/inc/geshi/cmake.php b/inc/geshi/cmake.php index fcf45c691..67277aa9c 100644 --- a/inc/geshi/cmake.php +++ b/inc/geshi/cmake.php @@ -4,7 +4,7 @@ * ------- * Author: Daniel Nelson (danieln@eng.utah.edu) * Copyright: (c) 2009 Daniel Nelson - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/04/06 * * CMake language file for GeSHi. diff --git a/inc/geshi/cobol.php b/inc/geshi/cobol.php index c3ed01d4c..b07be48a1 100644 --- a/inc/geshi/cobol.php +++ b/inc/geshi/cobol.php @@ -4,7 +4,7 @@ * ---------- * Author: BenBE (BenBE@omorphia.org) * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/07/02 * * COBOL language file for GeSHi. diff --git a/inc/geshi/coffeescript.php b/inc/geshi/coffeescript.php index f85541973..194aecd08 100644 --- a/inc/geshi/coffeescript.php +++ b/inc/geshi/coffeescript.php @@ -4,7 +4,7 @@ * ---------- * Author: Trevor Burnham (trevorburnham@gmail.com) * Copyright: (c) 2010 Trevor Burnham (http://iterative.ly) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/06/08 * * CoffeeScript language file for GeSHi. diff --git a/inc/geshi/cpp-qt.php b/inc/geshi/cpp-qt.php index 3f6aa3079..36626c90d 100644 --- a/inc/geshi/cpp-qt.php +++ b/inc/geshi/cpp-qt.php @@ -4,10 +4,10 @@ * ------- * Author: Iulian M * Copyright: (c) 2006 Iulian M - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/09/27 * - * C++ (with QT extensions) language file for GeSHi. + * C++ (with Qt extensions) language file for GeSHi. * * CHANGES * ------- @@ -41,7 +41,7 @@ ************************************************************************************/ $language_data = array ( - 'LANG_NAME' => 'C++ (QT)', + 'LANG_NAME' => 'C++ (Qt)', 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), 'COMMENT_MULTI' => array('/*' => '*/'), 'COMMENT_REGEXP' => array( diff --git a/inc/geshi/cpp.php b/inc/geshi/cpp.php index 289ab9947..42ab311cc 100644 --- a/inc/geshi/cpp.php +++ b/inc/geshi/cpp.php @@ -7,7 +7,7 @@ * - 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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/09/27 * * C++ language file for GeSHi. diff --git a/inc/geshi/csharp.php b/inc/geshi/csharp.php index e73f22d50..26024e91a 100644 --- a/inc/geshi/csharp.php +++ b/inc/geshi/csharp.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * C# language file for GeSHi. * * CHANGES * ------- + * 2012/06/18 (1.0.8.11) + * - Added missing keywords (Christian Stelzmann) * 2009/04/03 (1.0.8.6) * - Added missing keywords identified by Rosetta Code users. * 2008/05/25 (1.0.7.22) @@ -60,14 +62,15 @@ $language_data = array ( 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( 1 => array( - 'as', 'auto', 'base', 'break', 'case', 'catch', 'const', 'continue', + 'abstract', 'add', 'as', 'base', 'break', 'by', 'case', 'catch', 'const', 'continue', 'default', 'do', 'else', 'event', 'explicit', 'extern', 'false', - 'finally', 'fixed', 'for', 'foreach', 'from', 'goto', 'if', - 'implicit', 'in', 'internal', 'lock', 'namespace', 'null', + 'finally', 'fixed', 'for', 'foreach', 'from', 'get', 'goto', 'group', 'if', + 'implicit', 'in', 'into', 'internal', 'join', 'lock', 'namespace', 'null', 'operator', 'out', 'override', 'params', 'partial', 'private', - 'protected', 'public', 'readonly', 'ref', 'return', 'sealed', - 'select', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true', - 'try', 'unsafe', 'using', 'virtual', 'where', 'while', 'yield' + 'protected', 'public', 'readonly', 'remove', 'ref', 'return', 'sealed', + 'select', 'set', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true', + 'try', 'unsafe', 'using', 'var', 'value', 'virtual', 'volatile', 'where', + 'while', 'yield' ), 2 => array( '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if', @@ -78,7 +81,7 @@ $language_data = array ( ), 4 => array( 'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double', - 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte', + 'dynamic', 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte', 'short', 'string', 'struct', 'uint', 'ulong', 'ushort', 'void' ), 5 => array( diff --git a/inc/geshi/css.php b/inc/geshi/css.php index a8706bd26..d09bea7da 100644 --- a/inc/geshi/css.php +++ b/inc/geshi/css.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/18 * * CSS language file for GeSHi. @@ -72,6 +72,8 @@ $language_data = array ( 'aqua', 'azimuth', 'background-attachment', 'background-color', 'background-image', 'background-position', 'background-repeat', 'background', 'black', 'blue', 'border-bottom-color', + 'border-radius', 'border-top-left-radius', 'border-top-right-radius', + 'border-bottom-right-radius', 'border-bottom-left-radius', 'border-bottom-style', 'border-bottom-width', 'border-left-color', 'border-left-style', 'border-left-width', 'border-right', 'border-right-color', 'border-right-style', 'border-right-width', @@ -215,7 +217,8 @@ $language_data = array ( 'TAB_WIDTH' => 4, 'PARSER_CONTROL' => array( 'KEYWORDS' => array( - 'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\.])' + 'DISALLOWED_AFTER' => '(?![\-a-zA-Z0-9_\|%\\-&\.])', + 'DISALLOWED_BEFORE' => '(?<![\-a-zA-Z0-9_\|%\\~&\.])' ) ) ); diff --git a/inc/geshi/cuesheet.php b/inc/geshi/cuesheet.php index e994a0aa3..ebaca955f 100644 --- a/inc/geshi/cuesheet.php +++ b/inc/geshi/cuesheet.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (benbe@geshi.org) * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/12/21 * * Cuesheet language file for GeSHi. diff --git a/inc/geshi/d.php b/inc/geshi/d.php index 107d07b1a..7f3e9857a 100644 --- a/inc/geshi/d.php +++ b/inc/geshi/d.php @@ -3,14 +3,18 @@ * d.php * ----- * Author: Thomas Kuehne (thomas@kuehne.cn) + * Contributors: + * - Jimmy Cao * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/04/22 * * D language file for GeSHi. * * CHANGES * ------- + * 2011/06/28 (0.0.3) (Jimmy Cao) + * - added D2 features * 2005/04/22 (0.0.2) * - added _d_* and sizeof/ptrdiff_t * 2005/04/20 (0.0.1) @@ -45,7 +49,7 @@ $language_data = array ( 'LANG_NAME' => 'D', 'COMMENT_SINGLE' => array(2 => '///', 1 => '//'), - 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_MULTI' => array('/*' => '*/', '/+' => '+/'), 'COMMENT_REGEXP' => array( // doxygen comments 3 => '#/\*\*(?![\*\/]).*\*/#sU', @@ -126,63 +130,39 @@ $language_data = array ( 1 => array( 'break', 'case', 'continue', 'do', 'else', 'for', 'foreach', 'goto', 'if', 'return', - 'switch', 'while' + 'switch', 'while', 'foreach_reverse' ), 2 => array( 'alias', 'asm', 'assert', 'body', 'cast', 'catch', 'default', 'delegate', 'delete', 'extern', 'false', 'finally', 'function', - 'import', 'in', 'inout', 'interface', - 'invariant', 'is', 'mixin', 'module', 'new', + 'import', 'in', 'inout', + 'invariant', 'is', 'lazy', 'mixin', 'module', 'new', 'null', 'out', 'pragma', 'ref', 'super', 'this', - 'throw', 'true', 'try', 'typedef', 'typeid', - 'typeof', 'union', 'with' + 'throw', 'true', 'try', 'typeid', + 'typeof', 'union', 'with', 'scope' ), 3 => array( - 'ArrayBoundsError', 'AssertError', 'ClassInfo', 'Error', 'Exception', - 'Interface', 'ModuleInfo', 'Object', - 'OutOfMemoryException', 'SwitchError', - 'TypeInfo', '_d_arrayappend', - '_d_arrayappendb', '_d_arrayappendc', - '_d_arrayappendcb', '_d_arraycast', - '_d_arraycast_frombit', '_d_arraycat', - '_d_arraycatb', '_d_arraycatn', - '_d_arraycopy', '_d_arraycopybit', - '_d_arraysetbit', '_d_arraysetbit2', - '_d_arraysetlength', '_d_arraysetlengthb', - '_d_callfinalizer', - '_d_create_exception_object', - '_d_criticalenter', '_d_criticalexit', - '_d_delarray', '_d_delclass', - '_d_delinterface', '_d_delmemory', - '_d_dynamic_cast', '_d_exception', - '_d_exception_filter', '_d_framehandler', - '_d_interface_cast', '_d_interface_vtbl', - '_d_invariant', '_d_isbaseof', - '_d_isbaseof2', '_d_local_unwind', - '_d_monitorenter', '_d_monitorexit', - '_d_monitorrelease', '_d_monitor_epilog', - '_d_monitor_handler', '_d_monitor_prolog', - '_d_new', '_d_newarrayi', '_d_newbitarray', - '_d_newclass', '_d_obj_cmp', '_d_obj_eq', - '_d_OutOfMemory', '_d_switch_dstring', - '_d_switch_string', '_d_switch_ustring', - '_d_throw', + 'Interface', 'Object', 'IMonitor', + 'OffsetTypeInfo', 'Throwable', + 'TypeInfo_Class', 'TypeInfo', '__traits', + '__EOF__', '__FILE__', '__LINE__', ), 4 => array( 'abstract', 'align', 'auto', 'bit', 'bool', - 'byte', 'cdouble', 'cent', 'cfloat', 'char', - 'class', 'const', 'creal', 'dchar', 'debug', + 'byte', 'cdouble', 'cfloat', 'char', + 'class', 'const', 'creal', 'dchar', 'dstring', 'debug', 'deprecated', 'double', 'enum', 'export', - 'final', 'float', 'idouble', 'ifloat', 'int', - 'ireal', 'long', 'override', 'package', - 'private', 'protected', 'ptrdiff_t', - 'public', 'real', 'short', 'size_t', - 'static', 'struct', 'synchronized', + 'final', 'float', 'idouble', 'ifloat', 'immutable', 'int', + 'interface', 'ireal', 'long', 'nothrow', 'override', + 'package', 'private', 'protected', 'ptrdiff_t', + 'public', 'real', 'short', 'shared', 'size_t', + 'static', 'string', 'struct', 'synchronized', 'template', 'ubyte', 'ucent', 'uint', 'ulong', 'unittest', 'ushort', 'version', - 'void', 'volatile', 'wchar' + 'void', 'volatile', 'wchar', 'wstring', + '__gshared', '@disable', '@property', 'pure', 'safe' ) ), 'SYMBOLS' => array( diff --git a/inc/geshi/dcl.php b/inc/geshi/dcl.php new file mode 100644 index 000000000..db12a4c4e --- /dev/null +++ b/inc/geshi/dcl.php @@ -0,0 +1,192 @@ +<?php +/************************************************************************************* + * dcl.php + * -------- + * Author: Petr Hendl (petr@hendl.cz) + * Copyright: (c) 2011 Petr Hendl http://hendl.cz/geshi/ + * Release Version: 1.0.8.11 + * Date Started: 2011/02/17 + * + * DCL language file for GeSHi. + * + * CHANGES + * ------- + * 2011-02-17 (1.0.8.11) + * - First Release + * + * TODO + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'DCL', + 'COMMENT_SINGLE' => array('$!', '!'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + 2 => '/(?<=\$)\s*sql\s+.*?(?:quit|exit);?\s*?$/sim' // do not highlight inline sql + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'HARDESCAPE' => array(), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + 1 => "/''[a-zA-Z\\-_]+'/" + ), + 'KEYWORDS' => array( + 1 => array( // commands + 'ACCOUNTING', 'ALLOCATE', 'ANALYZE', 'APPEND', 'ASSIGN', 'ATTACH', 'BACKUP', + 'CALL', 'CANCEL', 'CHECKSUM', 'CLOSE', 'CONNECT', 'CONTINUE', 'CONVERT', + 'COPY', 'CREATE', 'DEALLOCATE', 'DEASSIGN', 'DEBUG', 'DECK', + 'DECRYPT', 'DEFINE', 'DELETE', 'DEPOSIT', 'DIFFERENCES', 'DIRECTORY', + 'DISABLE', 'AUTOSTART', 'DISCONNECT', 'DISMOUNT', 'DUMP', 'EDIT', 'ENABLE', + 'ENCRYPT', 'ENDSUBROUTINE', 'EOD', 'EOJ', 'EXAMINE', 'EXCHANGE', + 'EXIT', 'FONT', 'GOSUB', 'GOTO', 'HELP', 'IF', 'THEN', 'ELSE', 'ENDIF', 'INITIALIZE', 'INQUIRE', + 'INSTALL', 'JAVA', 'JOB', 'LIBRARY', 'LICENSE', 'LINK', 'LOGIN', 'LOGOUT', + 'MACRO', 'MAIL', 'MERGE', 'MESSAGE', 'MONITOR', 'MOUNT', 'NCS', 'ON', 'OPEN', + 'PASSWORD', 'PATCH', 'PHONE', 'PIPE', 'PPPD', 'PRINT', 'PRODUCT', 'PURGE', + 'READ', 'RECALL', 'RENAME', 'REPLY', 'REQUEST', 'RETURN', 'RMU', 'RUN', 'RUNOFF', + 'SEARCH', 'SET', 'SET AUDIT', 'SET BOOTBLOCK', 'SET BROADCAST', + 'SET CACHE', 'SET CARD_READER', 'SET CLUSTER', 'SET COMMAND', 'SET CONTROL', + 'SET CPU', 'SET DAY', 'SET DEFAULT', 'SET DEVICE', 'SET DIRECTORY', + 'SET DISPLAY', 'SET ENTRY', 'SET FILE', 'SET HOST', 'SET IMAGE', 'SET KEY', + 'SET LOGINS', 'SET MAGTAPE', 'SET MESSAGE', 'SET NETWORK', 'SET ON', 'SET OUTPUT_RATE', + 'SET PASSWORD', 'SET PREFERRED_PATH', 'SET PREFIX', 'SET PRINTER', 'SET PROCESS', + 'SET PROMPT', 'SET PROTECTION', 'SET QUEUE', 'SET RESTART_VALUE', + 'SET RIGHTS_LIST', 'SET RMS_DEFAULT', 'SET ROOT', 'SET SECURITY', + 'SET SERVER ACME_SERVER', 'SET SERVER REGISTRY_SERVER', 'SET SERVER SECURITY_SERVER', + 'SET SHADOW', 'SET SYMBOL', 'SET TERMINAL', 'SET TIME', 'SET VERIFY', + 'SET VOLUME', 'SET WORKING_SET', 'SHOW', 'SHOW AUDIT', + 'SHOW BROADCAST', 'SHOW CLUSTER', 'SHOW CPU', 'SHOW DEFAULT', 'SHOW DEVICES', + 'SHOW DISPLAY', 'SHOW ENTRY', 'SHOW ERROR', 'SHOW FASTPATH', 'SHOW IMAGE', + 'SHOW INTRUSION', 'SHOW KEY', 'SHOW LICENSE', 'SHOW LOGICAL', 'SHOW MEMORY', + 'SHOW NETWORK', 'SHOW PRINTER', 'SHOW PROCESS', 'SHOW PROTECTION', 'SHOW QUEUE', + 'SHOW QUOTA', 'SHOW RMS_DEFAULT', 'SHOW ROOT', 'SHOW SECURITY', + 'SHOW SERVER ACME_SERVER', 'SHOW SERVER REGISTRY_SERVER', 'SHOW SHADOW', + 'SHOW STATUS', 'SHOW SYMBOL', 'SHOW SYSTEM', 'SHOW TERMINAL', 'SHOW TIME', + 'SHOW TRANSLATION', 'SHOW USERS', 'SHOW WORKING_SET', 'SHOW ZONE', 'SORT', + 'SPAWN', 'START', 'STOP', 'SUBMIT', 'SUBROUTINE', 'SYNCHRONIZE', 'TYPE', + 'UNLOCK', 'VIEW', 'WAIT', 'WRITE', 'XAUTH' + ), + 2 => array( // lexical functions + 'F$CONTEXT', 'F$CSID', 'F$CUNITS', 'F$CVSI', 'F$CVTIME', 'F$CVUI', + 'F$DELTA_TIME', 'F$DEVICE', 'F$DIRECTORY', 'F$EDIT', 'F$ELEMENT', + 'F$ENVIRONMENT', 'F$EXTRACT', 'F$FAO', 'F$FID_TO_NAME', 'F$FILE_ATTRIBUTES', + 'F$GETDVI', 'F$GETENV', 'F$GETJPI', 'F$GETQUI', 'F$GETSYI', 'F$IDENTIFIER', + 'F$INTEGER', 'F$LENGTH', 'F$LICENSE', 'F$LOCATE', 'F$MATCH_WILD', 'F$MESSAGE', + 'F$MODE', 'F$MULTIPATH', 'F$PARSE', 'F$PID', 'F$PRIVILEGE', 'F$PROCESS', + 'F$SEARCH', 'F$SETPRV', 'F$STRING', 'F$TIME', 'F$TRNLNM', 'F$TYPE', 'F$UNIQUE', + 'F$USER', 'F$VERIFY' + ), + 3 => array( // special variables etc + 'sql$database', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', + '$status', '$severity', 'sys$login', 'sys$system', + 'sys$input', 'sys$output', 'sys$pipe' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '@', '&', '|', '<', '>', '-', + '.eqs.', '.eq.', '.lt.', '.lts.', '.gt.', '.gts.', '.ne.', '.nes.', + '.le.', '.ge.', '.ges.', '.les.', + '.EQS.', '.EQ.', '.LT.', '.LTS.', '.GT.', '.GTS.', '.NE.', '.NES.', + '.LE.', '.GE.', '.GES.', '.LES.', + '.and.', '.or.', '.not.', + '.AND.', '.OR.', '.NOT.', + '==', ':==', '=', ':=' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #0066FF;', + 3 => 'color: #993300;' + ), + 'COMMENTS' => array( + 0 => 'color: #666666; font-style: italic;', + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #9999FF; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #006666;', + 1 => 'color: #0099FF;', + 2 => 'color: red;', + 3 => 'color: #007800;', + 4 => 'color: #007800;', + 5 => 'color: #780078;' + ), + 'BRACKETS' => array( + 0 => 'color: #7a0874; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #009900;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'REGEXPS' => array( + 0 => 'color: #0099FF;', // variables + 1 => 'color: #0000FF;', // qualifiers + 2 => 'color: #FF6600; font-weight: bold;' // labels + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + // variables + 0 => "'[a-zA-Z_\\-$]+'", + // qualifiers and parameters + 1 => "(?:\/[a-zA-Z_\/]+)[\s=]", + // labels + 2 => '(?<=\$)\s*[a-zA-Z\-_]+:' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + ), + 'KEYWORDS' => array( + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/dcpu16.php b/inc/geshi/dcpu16.php new file mode 100644 index 000000000..5fcb25e51 --- /dev/null +++ b/inc/geshi/dcpu16.php @@ -0,0 +1,131 @@ +<?php +/************************************************************************************* + * dcpu16.php + * ------- + * Author: Benny Baumann (BenBE@omorphia.de) + * Copyright: (c) 2007-2012 Benny Baumann (http://geshi.org/) + * Release Version: 1.0.8.11 + * Date Started: 2012/04/12 + * + * DCPU/16 Assembly language file for GeSHi. + * Syntax definition based on http://0x10c.com/doc/dcpu-16.txt + * + * CHANGES + * ------- + * 2012/04/12 (1.0.0) + * - First Release + * + * TODO (updated 2012/04/12) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'DCPU-16 Assembly', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX, + 'KEYWORDS' => array( + /*CPU*/ + 1 => array( + 'set','add','sub','mul','div','mod','shl','shr','and','bor','xor', + 'ife','ifn','ifg','ifb', + 'jsr' + ), + /*registers*/ + 2 => array( + 'a','b','c','x','y','z','i','j', + 'pc','sp','o', + 'pop','peek','push' //Special cases with DCPU-16 + ), + ), + 'SYMBOLS' => array( + '[', ']', '+', '-', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000088; font-weight:bold;', + 2 => 'color: #0000ff;' + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000088;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #880000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;' + ), + 'REGEXPS' => array( + 2 => 'color: #993333;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => 'http://0x10c.com/doc/dcpu-16.txt', + 2 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Hex numbers + //0 => '0[0-9a-fA-F]{1,32}[hH]', + //Binary numbers + //1 => '\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)', + //Labels + 2 => '^:[_a-zA-Z][_a-zA-Z0-9]?(?=\s|$)' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#\/])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/dcs.php b/inc/geshi/dcs.php index bac2beea8..d32cfc5b9 100644 --- a/inc/geshi/dcs.php +++ b/inc/geshi/dcs.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2009/01/20 * * DCS language file for GeSHi. diff --git a/inc/geshi/delphi.php b/inc/geshi/delphi.php index d7f19f832..d5596e0cd 100644 --- a/inc/geshi/delphi.php +++ b/inc/geshi/delphi.php @@ -4,13 +4,17 @@ * ---------- * Author: J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/26 * * Delphi (Object Pascal) language file for GeSHi. * * CHANGES * ------- + * 2012/06/27 (1.0.8.11) + * - Added some keywords + * - fixed hex numbers and hex char literals (including WideChar) + * - Added support for FPC-Style generics * 2008/05/23 (1.0.7.22) * - Added description of extra language features (SF#1970248) * 2005/11/19 (1.0.3) @@ -51,27 +55,28 @@ $language_data = array ( 'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'), //Compiler directives 'COMMENT_REGEXP' => array(2 => '/\\{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'), - 'CASE_KEYWORDS' => 0, + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'"), 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( 1 => array( 'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case', - 'Class', 'Const', 'Constructor', 'Contains', 'Destructor', + 'Class', 'Const', 'Constructor', 'Contains', 'Default', 'delayed', 'Destructor', 'DispInterface', 'Div', 'Do', 'DownTo', 'Else', 'End', 'Except', - 'Export', 'Exports', 'External', 'File', 'Finalization', 'Finally', - 'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited', - 'Initialization', 'Inline', 'Interface', 'Is', 'Label', 'Library', - 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override', + 'Export', 'Exports', 'External', 'File', 'Finalization', 'Finally', 'For', + 'Function', 'Generic', 'Goto', 'If', 'Implementation', 'In', 'Inherited', + 'Initialization', 'Inline', 'Interface', 'Is', 'Label', 'Library', 'Message', + 'Mod', 'Nil', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override', 'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property', - 'Protected', 'Public', 'Published', 'Raise', 'Record', 'Register', - 'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Then', - 'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var', - 'Virtual', 'While', 'With', 'Xor', 'assembler', 'far', + 'Protected', 'Public', 'Published', 'Read', 'Raise', 'Record', 'Register', + 'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Specialize', 'Stored', + 'Then', 'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var', + 'Virtual', 'While', 'With', 'Write', 'Xor', 'assembler', 'far', 'near', 'pascal', 'cdecl', 'safecall', 'stdcall', 'varargs' ), 2 => array( - 'nil', 'false', 'self', 'true', 'var', 'type', 'const' + 'false', 'self', 'true', ), 3 => array( 'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 'ArcTan', @@ -250,7 +255,7 @@ $language_data = array ( 1 => 'color: #006600;' ), 'REGEXPS' => array( - 0 => 'color: #9ac;', + 0 => 'color: #0000cc;', 1 => 'color: #ff0000;' ), 'SYMBOLS' => array( @@ -274,16 +279,23 @@ $language_data = array ( ), 'REGEXPS' => array( //Hex numbers - 0 => '\$[0-9a-fA-F]+', + 0 => '(?<!\#)\$[0-9a-fA-F]+(?!\w)', //Characters - 1 => '\#(?:\$[0-9a-fA-F]{1,2}|\d{1,3})' + 1 => '\#(?:\$[0-9a-fA-F]{1,4}|\d{1,5})' ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( ), 'HIGHLIGHT_STRICT_BLOCK' => array( ), - 'TAB_WIDTH' => 2 + 'TAB_WIDTH' => 2, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_AFTER' => '(?=\s*[(;])' + ) + ) + ) ); -?>
\ No newline at end of file +?> diff --git a/inc/geshi/diff.php b/inc/geshi/diff.php index 09cc50873..5b6817178 100644 --- a/inc/geshi/diff.php +++ b/inc/geshi/diff.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/12/29 * * Diff-output language file for GeSHi. diff --git a/inc/geshi/div.php b/inc/geshi/div.php index e8de7a525..aa11795ac 100644 --- a/inc/geshi/div.php +++ b/inc/geshi/div.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Gabriel Lorenzo (ermakina@gmail.com) * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/06/19 * * DIV language file for GeSHi. diff --git a/inc/geshi/dos.php b/inc/geshi/dos.php index e84e1550a..36d99836b 100644 --- a/inc/geshi/dos.php +++ b/inc/geshi/dos.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2005/07/05 * * DOS language file for GeSHi. @@ -171,7 +171,7 @@ $language_data = array ( /* Variable assignement */ 1 => array( /* GESHI_SEARCH => '(SET[\s]+(?si:\/A[\s]+|\/P[\s]+|))([^=\s\n]+)([\s]*=)',*/ - GESHI_SEARCH => '(SET[\s]+(?si:\/A[\s]+|\/P[\s]+|))([^=\n]+)([\s]*=)', + GESHI_SEARCH => '(SET\s+(?si:\\/A\s+|\\/P\s+)?)([^=\n]+)(\s*=)', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'si', GESHI_BEFORE => '\\1', @@ -180,7 +180,7 @@ $language_data = array ( /* Arguments or variable evaluation */ 2 => array( /* GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/ - GESHI_SEARCH => '(%(?:%(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^%\n]*(?=%))((?<!%\d)%|)', + GESHI_SEARCH => '(!(?:!(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^!>\n]*(?=!))((?<!%\d)%|)(?!!>)', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'si', GESHI_BEFORE => '\\1', @@ -189,7 +189,7 @@ $language_data = array ( /* Arguments or variable evaluation */ 3 => array( /* GESHI_SEARCH => '(%)([\d*]|[^%\s]*(?=%))((?<!%\d)%|)',*/ - GESHI_SEARCH => '(!(?:!(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^!>\n]*(?=!))((?<!%\d)%|)(?!!>)', + GESHI_SEARCH => '(%(?:%(?=[a-z0-9]))?)([\d*]|(?:~[adfnpstxz]*(?:$\w+:)?)?[a-z0-9](?!\w)|[^%\n]*(?=%))((?<!%\d)%|)', GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 'si', GESHI_BEFORE => '\\1', diff --git a/inc/geshi/dot.php b/inc/geshi/dot.php index 1d5036d36..bdf240a1f 100644 --- a/inc/geshi/dot.php +++ b/inc/geshi/dot.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Adrien Friggeri (adrien@friggeri.net) * Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/05/30 * * dot language file for GeSHi. diff --git a/inc/geshi/e.php b/inc/geshi/e.php index 9bdbc137b..319bee016 100644 --- a/inc/geshi/e.php +++ b/inc/geshi/e.php @@ -4,7 +4,7 @@ * -------- * Author: Kevin Reid (kpreid@switchb.org) * Copyright: (c) 2010 Kevin Reid (http://switchb.org/kpreid/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/04/16 * * E language file for GeSHi. diff --git a/inc/geshi/ecmascript.php b/inc/geshi/ecmascript.php index e220c839b..69a55c9aa 100644 --- a/inc/geshi/ecmascript.php +++ b/inc/geshi/ecmascript.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2010/01/08 * * ECMAScript language file for GeSHi. diff --git a/inc/geshi/eiffel.php b/inc/geshi/eiffel.php index 66427acc7..baa13c319 100644 --- a/inc/geshi/eiffel.php +++ b/inc/geshi/eiffel.php @@ -4,7 +4,7 @@ * ---------- * Author: Zoran Simic (zsimic@axarosenberg.com) * Copyright: (c) 2005 Zoran Simic - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/06/30 * * Eiffel language file for GeSHi. diff --git a/inc/geshi/email.php b/inc/geshi/email.php index 68f875499..8a313d483 100644 --- a/inc/geshi/email.php +++ b/inc/geshi/email.php @@ -4,7 +4,7 @@ * --------------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/10/19 * * Email (mbox \ eml \ RFC format) language file for GeSHi. @@ -152,7 +152,19 @@ $language_data = array ( 4 => array( GESHI_SEARCH => "(?<=\s)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=\s)|". "(?<=\[)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=\])|". - "(?<==)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=<)", + "(?<==)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?=<)|". + + "(?<=\s)(?:[a-f\d]{1,4}\:)+(?:[a-f\d]{0,4})?(?:\:[a-f\d]{1,4})+(?=\s)|". + "(?<=\[)(?:[a-f\d]{1,4}\:)+(?:[a-f\d]{0,4})?(?:\:[a-f\d]{1,4})+(?=\])|". + "(?<==)(?:[a-f\d]{1,4}\:)+(?:[a-f\d]{0,4})?(?:\:[a-f\d]{1,4})+(?=<)|". + + "(?<=\s)\:(?:\:[a-f\d]{1,4})+(?=\s)|". + "(?<=\[)\:(?:\:[a-f\d]{1,4})+(?=\])|". + "(?<==)\:(?:\:[a-f\d]{1,4})+(?=<)|". + + "(?<=\s)(?:[a-f\d]{1,4}\:)+\:(?=\s)|". + "(?<=\[)(?:[a-f\d]{1,4}\:)+\:(?=\])|". + "(?<==)(?:[a-f\d]{1,4}\:)+\:(?=<)", GESHI_REPLACE => "\\0", GESHI_MODIFIERS => "i", GESHI_BEFORE => "", diff --git a/inc/geshi/epc.php b/inc/geshi/epc.php index 764461fc2..c575c0c63 100644 --- a/inc/geshi/epc.php +++ b/inc/geshi/epc.php @@ -4,7 +4,7 @@ * -------- * Author: Thorsten Muehlfelder (muehlfelder@enertex.de) * Copyright: (c) 2010 Enertex Bayern GmbH - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/08/26 * * Enerscript language file for GeSHi. diff --git a/inc/geshi/erlang.php b/inc/geshi/erlang.php index ede55917c..4b8d406b0 100644 --- a/inc/geshi/erlang.php +++ b/inc/geshi/erlang.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2008-09-27 * * Erlang language file for GeSHi. diff --git a/inc/geshi/euphoria.php b/inc/geshi/euphoria.php index afd4ad7c4..7bbf88460 100644 --- a/inc/geshi/euphoria.php +++ b/inc/geshi/euphoria.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Nicholas Koceja (nerketur@hotmail.com) * Copyright: (c) 2010 Nicholas Koceja - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 11/24/2010 * * Euphoria language file for GeSHi. diff --git a/inc/geshi/f1.php b/inc/geshi/f1.php index 13056b78b..7d7676085 100644 --- a/inc/geshi/f1.php +++ b/inc/geshi/f1.php @@ -4,7 +4,7 @@ * ------- * Author: Juro Bystricky (juro@f1compiler.com) * Copyright: K2 Software Corp. - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/07/06 * * Formula One language file for GeSHi. diff --git a/inc/geshi/falcon.php b/inc/geshi/falcon.php index ce75f2057..2111d9e8e 100644 --- a/inc/geshi/falcon.php +++ b/inc/geshi/falcon.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: billykater (billykater+geshi@gmail.com) * Copyright: (c) 2010 billykater (http://falconpl.org/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/06/07 * * Falcon language file for GeSHi. diff --git a/inc/geshi/fo.php b/inc/geshi/fo.php index e472f2271..ba4a59244 100644 --- a/inc/geshi/fo.php +++ b/inc/geshi/fo.php @@ -4,7 +4,7 @@ * -------- * Author: Tan-Vinh Nguyen (tvnguyen@web.de) * Copyright: (c) 2009 Tan-Vinh Nguyen - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/03/23 * * fo language file for GeSHi. diff --git a/inc/geshi/fortran.php b/inc/geshi/fortran.php index 247e3e4b4..c21ccd192 100644 --- a/inc/geshi/fortran.php +++ b/inc/geshi/fortran.php @@ -4,7 +4,7 @@ * ----------- * Author: Cedric Arrabie (cedric.arrabie@univ-pau.fr) * Copyright: (C) 2006 Cetric Arrabie - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/04/22 * * Fortran language file for GeSHi. diff --git a/inc/geshi/freebasic.php b/inc/geshi/freebasic.php index 8ac2904eb..b23f39bc7 100644 --- a/inc/geshi/freebasic.php +++ b/inc/geshi/freebasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Roberto Rossi * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/08/19 * * FreeBasic (http://www.freebasic.net/) language file for GeSHi. diff --git a/inc/geshi/freeswitch.php b/inc/geshi/freeswitch.php new file mode 100644 index 000000000..c6fff2767 --- /dev/null +++ b/inc/geshi/freeswitch.php @@ -0,0 +1,168 @@ +<?php +/************************************************************************************* + * freeswitch.php + * -------- + * Author: James Rose (james.gs@stubbornroses.com) + * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info + * Release Version: 1.0.8.11n/a + * Date Started: 2011/11/18 + * + * FreeSWITCH language file for GeSHi. + * + * This file is based on robots.php + * + * 2011/11/18 (1.0.0) + * - First Release + * + ************************************************************************************* + * + * 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' => 'FreeSWITCH', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array(1 => "/^Comment:.*?$/m"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( +// 1 => array( +// 'Disallow', 'Request-rate', 'Robot-version', +// 'Sitemap', 'User-agent', 'Visit-time' +// ) + ), + 'SYMBOLS' => array( +// ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false + ), + +//order is important. regexes will overwrite most things.... + 'STYLES' => array( + 'KEYWORDS' => array( +// 1 => 'color: #FF0000; font-weight: bold;',//red + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( +// 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( +// 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( +// 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( +// 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + 0 => 'color: firebrick; font-weight: bold;', + 1 => 'color: cornflowerblue; font-weight: bold;', + 2 => 'color: goldenrod; font-weight: bold;', + 3 => 'color: green; font-weight: bold;', + 4 => 'color: dimgrey; font-style: italic;', + 5 => 'color: green; font-weight: bold;', + 6 => 'color: firebrick; font-weight: bold;', + 7 => 'color: indigo; font-weight: italic;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( +// 1 => 'http://www.robotstxt.org/wc/norobots.html' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + 0 => array( + GESHI_SEARCH => '(^.*ERROR.*)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'im', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 1 => array( + GESHI_SEARCH => '(^.*NOTICE.*)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'im', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 2 => array( + GESHI_SEARCH => '(^.*DEBUG.*)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 3 => array( + GESHI_SEARCH => '(^.*INFO.*|.*info\(.*|^Channel.*|^Caller.*|^variable.*)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 4 => array( + GESHI_SEARCH => '(^Dialplan.*)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'im', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 5 => array( + GESHI_SEARCH => '(Regex\ \(PASS\))', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 6 => array( + GESHI_SEARCH => '(Regex\ \(FAIL\))', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 7 => array( + GESHI_SEARCH => '(\d{7,15})', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ) + ), + + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?> diff --git a/inc/geshi/fsharp.php b/inc/geshi/fsharp.php index a900e4b60..d85a7c757 100644 --- a/inc/geshi/fsharp.php +++ b/inc/geshi/fsharp.php @@ -4,7 +4,7 @@ * ---------- * Author: julien ortin (jo_spam-divers@yahoo.fr) * Copyright: (c) 2009 julien ortin - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/09/20 * * F# language file for GeSHi. @@ -44,7 +44,7 @@ $language_data = array( 'LANG_NAME' => 'F#', 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), 'COMMENT_MULTI' => array('/*' => '*/'), - 'COMMENT_REGEXP' => array(3 => '/\(\*(?!\)).*?\*\)/'), + 'COMMENT_REGEXP' => array(3 => '/\(\*(?!\)).*?\*\)/s'), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'HARDQUOTE' => array('@"', '"'), diff --git a/inc/geshi/gambas.php b/inc/geshi/gambas.php index b89db0382..352830ebb 100644 --- a/inc/geshi/gambas.php +++ b/inc/geshi/gambas.php @@ -5,7 +5,7 @@ * Author: Jesus Guardon (jguardon@telefonica.net) * Copyright: (c) 2009 Jesus Guardon (http://gambas-es.org), * Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/20 * * GAMBAS language file for GeSHi. diff --git a/inc/geshi/gdb.php b/inc/geshi/gdb.php index 284b589a0..0a5e32c30 100644 --- a/inc/geshi/gdb.php +++ b/inc/geshi/gdb.php @@ -4,7 +4,7 @@ * -------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2009 Milian Wolff - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/06/24 * * GDB language file for GeSHi. diff --git a/inc/geshi/genero.php b/inc/geshi/genero.php index 1d70d752c..e1b20b3e8 100644 --- a/inc/geshi/genero.php +++ b/inc/geshi/genero.php @@ -4,7 +4,7 @@ * ---------- * Author: Lars Gersmann (lars.gersmann@gmail.com) * Copyright: (c) 2007 Lars Gersmann, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/07/01 * * Genero (FOURJ's Genero 4GL) language file for GeSHi. diff --git a/inc/geshi/genie.php b/inc/geshi/genie.php index 898f9ef10..db05ec062 100644 --- a/inc/geshi/genie.php +++ b/inc/geshi/genie.php @@ -4,7 +4,7 @@ * ---------- * Author: Nicolas Joseph (nicolas.joseph@valaide.org) * Copyright: (c) 2009 Nicolas Joseph - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/04/29 * * Genie language file for GeSHi. diff --git a/inc/geshi/gettext.php b/inc/geshi/gettext.php index 1dc8f8d24..80b531c10 100644 --- a/inc/geshi/gettext.php +++ b/inc/geshi/gettext.php @@ -4,7 +4,7 @@ * -------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/05/25 * * GNU Gettext .po/.pot language file for GeSHi. diff --git a/inc/geshi/glsl.php b/inc/geshi/glsl.php index d810db3f0..3615cfe71 100644 --- a/inc/geshi/glsl.php +++ b/inc/geshi/glsl.php @@ -4,7 +4,7 @@ * ----- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2008 Benny Baumann (BenBE@omorphia.de) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/03/20 * * glSlang language file for GeSHi. diff --git a/inc/geshi/gml.php b/inc/geshi/gml.php index 57c42d4c8..999251b22 100644 --- a/inc/geshi/gml.php +++ b/inc/geshi/gml.php @@ -4,7 +4,7 @@ * -------- * Author: Jos� Jorge Enr�quez (jenriquez@users.sourceforge.net) * Copyright: (c) 2005 Jos� Jorge Enr�quez Rodr�guez (http://www.zonamakers.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/06/21 * * GML language file for GeSHi. diff --git a/inc/geshi/gnuplot.php b/inc/geshi/gnuplot.php index 59b343eb1..d8445eabb 100644 --- a/inc/geshi/gnuplot.php +++ b/inc/geshi/gnuplot.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/07/07 * * Gnuplot script language file for GeSHi. diff --git a/inc/geshi/go.php b/inc/geshi/go.php index a71c2515e..5b7a47db6 100644 --- a/inc/geshi/go.php +++ b/inc/geshi/go.php @@ -4,7 +4,7 @@ * -------- * Author: Markus Jarderot (mizardx at gmail dot com) * Copyright: (c) 2010 Markus Jarderot - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/05/20 * * Go language file for GeSHi. diff --git a/inc/geshi/groovy.php b/inc/geshi/groovy.php index 8a250245a..45290d2fc 100644 --- a/inc/geshi/groovy.php +++ b/inc/geshi/groovy.php @@ -4,7 +4,7 @@ * ---------- * Author: Ivan F. Villanueva B. (geshi_groovy@artificialidea.com) * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/04/29 * * Groovy language file for GeSHi. diff --git a/inc/geshi/gwbasic.php b/inc/geshi/gwbasic.php index e35a322a4..ecc16341d 100644 --- a/inc/geshi/gwbasic.php +++ b/inc/geshi/gwbasic.php @@ -4,7 +4,7 @@ * ---------- * Author: José Gabriel Moya Yangüela (josemoya@gmail.com) * Copyright: (c) 2010 José Gabriel Moya Yangüela (http://doc.apagada.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/01/30 * * GwBasic language file for GeSHi. diff --git a/inc/geshi/haskell.php b/inc/geshi/haskell.php index ce1b3bf69..adae11168 100644 --- a/inc/geshi/haskell.php +++ b/inc/geshi/haskell.php @@ -4,7 +4,7 @@ * ---------- * Author: Jason Dagit (dagit@codersbase.com) based on ocaml.php by Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/08/27 * * Haskell language file for GeSHi. @@ -46,8 +46,8 @@ $language_data = array ( 3 => "/{-(?:(?R)|.)-}/s", //Nested Comments ), 'CASE_KEYWORDS' => 0, - 'QUOTEMARKS' => array('"'), - 'ESCAPE_CHAR' => "\\", + 'QUOTEMARKS' => array('"',"'"), + 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( /* main haskell keywords */ 1 => array( @@ -95,7 +95,7 @@ $language_data = array ( 'product', 'concat', 'concatMap', 'maximum', 'minimum', 'scanl', 'scanl1', 'scanr', 'scanr1', 'iterate', 'repeat', 'cycle', 'take', 'drop', - 'splitAt', 'teakWhile', 'dropWhile', 'span', + 'splitAt', 'takeWhile', 'dropWhile', 'span', 'break', 'elem', 'notElem', 'lookup', 'zip', 'zip3', 'zipWith', 'zipWith3', 'unzip', 'unzip3', 'lines', 'words', 'unlines', diff --git a/inc/geshi/haxe.php b/inc/geshi/haxe.php new file mode 100644 index 000000000..778637e2b --- /dev/null +++ b/inc/geshi/haxe.php @@ -0,0 +1,161 @@ +<?php +/************************************************************************************* + * haxe.php + * -------- + * Author: Andy Li (andy@onthewings.net) + * John Liao (colorhook@gmail.com) + * Copyright: (c) 2012 onthewings (http://www.onthewings.net/) + * 2010 colorhook (http://colorhook.com/) + * Release Version: 1.0.8.11 + * Date Started: 2010/10/05 + * + * Haxe language file for GeSHi. + * Haxe version: 2.10 + ************************************************************************************* + * + * 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' => 'Haxe', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Import and Package directives (Basic Support only) + 2 => '/(?:(?<=import[\\n\\s])|(?<=using[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i', + // Haxe comments + 3 => '#/\*\*(?![\*\/]).*\*/#sU', + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + //http://haxe.org/ref/keywords + 'break', 'callback', 'case', 'cast', 'catch', 'class', 'continue', 'default', 'do', 'dynamic', + 'else', 'enum', 'extends', 'extern', /*'false',*/ 'for', 'function', 'here', 'if', + 'implements', 'import', 'in', 'inline', 'interface', 'never', 'new', /*'null',*/ 'override', + 'package', 'private', 'public', 'return', 'static', 'super', 'switch', 'this', 'throw', + 'trace', /*'true',*/ 'try', 'typedef', 'untyped', 'using', 'var', 'while', + 'macro', '$type', + ), + 2 => array( + //primitive values + 'null', 'false', 'true', + ), + 3 => array( + //global types + 'Array', 'ArrayAccess', /*'Bool',*/ 'Class', 'Date', 'DateTools', 'Dynamic', + 'EReg', 'Enum', 'EnumValue', /*'Float',*/ 'Hash', /*'Int',*/ 'IntHash', 'IntIter', + 'Iterable', 'Iterator', 'Lambda', 'List', 'Math', 'Null', 'Reflect', 'Std', + /*'String',*/ 'StringBuf', 'StringTools', 'Sys', 'Type', /*'UInt',*/ 'ValueType', + /*'Void',*/ 'Xml', 'XmlType', + ), + 4 => array( + //primitive types + 'Void', 'Bool', 'Int', 'Float', 'UInt', 'String', + ), + 5 => array( + //compiler switches + "#if", "#elseif", "#else", "#end", "#error", + ), + ), + 'SYMBOLS' => array( + //http://haxe.org/manual/operators + '++', '--', + '%', + '*', '/', + '+', '-', + '<<', '>>', '>>>', + '|', '&', '^', + '==', '!=', '>', '>=', '<', '<=', + '...', + '&&', + '||', + '?', ':', + '=', '+=', '-=', '/=', '*=', '<<=', '>>=', '>>>=', '|=', '&=', '^=', + '(', ')', '[', ']', '{', '}', ';', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #6699cc; font-weight: bold;', + 2 => 'color: #000066; font-weight: bold;', + 3 => 'color: #03F; ', + 4 => 'color: #000033; font-weight: bold;', + 5 => 'color: #330000; font-weight: bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #006699;', + 3 => 'color: #008000; font-style: italic; font-weight: bold;', + 3 => 'color: #008000; font-style: italic; font-weight: bold;', + 'MULTI' => 'color: #666666; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + ), + 'BRACKETS' => array( + 0 => 'color: #000000;', + ), + 'STRINGS' => array( + 0 => 'color: #FF0000;', + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 1 => 'color: #006633;', + 2 => 'color: #006633;', + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/hicest.php b/inc/geshi/hicest.php index 67d8d114a..78a2bc206 100644 --- a/inc/geshi/hicest.php +++ b/inc/geshi/hicest.php @@ -4,7 +4,7 @@ * -------- * Author: Georg Petrich (spt@hicest.com) * Copyright: (c) 2010 Georg Petrich (http://www.HicEst.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/03/15 * * HicEst language file for GeSHi. diff --git a/inc/geshi/hq9plus.php b/inc/geshi/hq9plus.php index 2cce643df..7ba1a73c1 100644 --- a/inc/geshi/hq9plus.php +++ b/inc/geshi/hq9plus.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/31 * * HQ9+ language file for GeSHi. diff --git a/inc/geshi/html4strict.php b/inc/geshi/html4strict.php index 68ba72328..97392fa84 100644 --- a/inc/geshi/html4strict.php +++ b/inc/geshi/html4strict.php @@ -4,7 +4,7 @@ * --------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/10 * * HTML 4.01 strict language file for GeSHi. @@ -58,7 +58,7 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 2 => array( - 'a', 'abbr', 'acronym', 'address', 'applet', + 'a', 'abbr', 'acronym', 'address', 'applet', 'area', 'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b', 'caption', 'center', 'cite', 'code', 'colgroup', 'col', 'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt', diff --git a/inc/geshi/html5.php b/inc/geshi/html5.php index 7ffd4a05d..0d9755945 100644 --- a/inc/geshi/html5.php +++ b/inc/geshi/html5.php @@ -4,10 +4,10 @@ * --------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/10 * - * HTML 4.01 strict language file for GeSHi. + * HTML 5 language file for GeSHi. * * CHANGES * ------- @@ -50,7 +50,7 @@ ************************************************************************************/ $language_data = array ( - 'LANG_NAME' => 'HTML', + 'LANG_NAME' => 'HTML5', 'COMMENT_SINGLE' => array(), 'COMMENT_MULTI' => array(), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, @@ -58,7 +58,7 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 2 => array( - 'a', 'abbr', 'address', 'article', 'aside', 'audio'. + 'a', 'abbr', 'address', 'article', 'area', 'aside', 'audio', 'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'b', diff --git a/inc/geshi/icon.php b/inc/geshi/icon.php index e68c2f17f..06383ea5d 100644 --- a/inc/geshi/icon.php +++ b/inc/geshi/icon.php @@ -4,7 +4,7 @@ * -------- * Author: Matt Oates (mattoates@gmail.com) * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/04/24 * * Icon language file for GeSHi. diff --git a/inc/geshi/idl.php b/inc/geshi/idl.php index 84e57f30b..69bd14ff4 100644 --- a/inc/geshi/idl.php +++ b/inc/geshi/idl.php @@ -4,7 +4,7 @@ * ------- * Author: Cedric Bosdonnat (cedricbosdo@openoffice.org) * Copyright: (c) 2006 Cedric Bosdonnat - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/08/20 * * Unoidl language file for GeSHi. diff --git a/inc/geshi/ini.php b/inc/geshi/ini.php index 2ca7feb0b..8e6ca76db 100644 --- a/inc/geshi/ini.php +++ b/inc/geshi/ini.php @@ -4,7 +4,7 @@ * -------- * Author: deguix (cevo_deguix@yahoo.com.br) * Copyright: (c) 2005 deguix - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/03/27 * * INI language file for GeSHi. diff --git a/inc/geshi/inno.php b/inc/geshi/inno.php index b0878e298..1e2ee8bef 100644 --- a/inc/geshi/inno.php +++ b/inc/geshi/inno.php @@ -4,7 +4,7 @@ * ---------- * Author: Thomas Klingler (hotline@theratech.de) based on delphi.php from J�rja Norbert (jnorbi@vipmail.hu) * Copyright: (c) 2004 J�rja Norbert, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/07/29 * * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi. diff --git a/inc/geshi/intercal.php b/inc/geshi/intercal.php index 06fd2b41b..3c81b81cc 100644 --- a/inc/geshi/intercal.php +++ b/inc/geshi/intercal.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/31 * * INTERCAL language file for GeSHi. diff --git a/inc/geshi/io.php b/inc/geshi/io.php index 3d6341fee..51fad43a7 100644 --- a/inc/geshi/io.php +++ b/inc/geshi/io.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2006 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/09/23 * * Io language file for GeSHi. Thanks to Johnathan Wright for the suggestion and help diff --git a/inc/geshi/j.php b/inc/geshi/j.php index 5d464c922..5565bb499 100644 --- a/inc/geshi/j.php +++ b/inc/geshi/j.php @@ -4,7 +4,7 @@ * -------- * Author: Ric Sherlock (tikkanz@gmail.com) * Copyright: (c) 2009 Ric Sherlock - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/11/10 * * J language file for GeSHi. diff --git a/inc/geshi/java.php b/inc/geshi/java.php index 2f3d9fb96..652b8ddd3 100644 --- a/inc/geshi/java.php +++ b/inc/geshi/java.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/10 * * Java language file for GeSHi. @@ -964,7 +964,7 @@ $language_data = array ( 'URLS' => array( 1 => '', 2 => '', - 3 => 'http://www.google.com/search?hl=en&q=allinurl%3A{FNAMEL}+java.sun.com&btnI=I%27m%20Feeling%20Lucky', + 3 => 'http://www.google.com/search?hl=en&q=allinurl%3Adocs.oracle.com+javase+docs+api+{FNAMEL}', 4 => '' ), 'OOLANG' => true, diff --git a/inc/geshi/java5.php b/inc/geshi/java5.php index 6163995f8..af16bd1e6 100644 --- a/inc/geshi/java5.php +++ b/inc/geshi/java5.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/10 * * Java language file for GeSHi. @@ -850,169 +850,169 @@ $language_data = array ( 2 => '', 3 => '', 4 => '', - 5 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/applet/{FNAME}.html', - 6 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/{FNAME}.html', - 7 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/color/{FNAME}.html', - 8 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/datatransfer/{FNAME}.html', - 9 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/dnd/{FNAME}.html', - 10 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/event/{FNAME}.html', - 11 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/font/{FNAME}.html', - 12 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/geom/{FNAME}.html', - 13 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/im/{FNAME}.html', - 14 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/im/spi/{FNAME}.html', - 15 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/image/{FNAME}.html', - 16 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/image/renderable/{FNAME}.html', - 17 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/print/{FNAME}.html', - 18 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/beans/{FNAME}.html', - 19 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/beans/beancontext/{FNAME}.html', - 20 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/io/{FNAME}.html', - 21 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/{FNAME}.html', - 22 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/annotation/{FNAME}.html', - 23 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/instrument/{FNAME}.html', - 24 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/management/{FNAME}.html', - 25 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/ref/{FNAME}.html', - 26 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/reflect/{FNAME}.html', - 27 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/math/{FNAME}.html', - 28 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/net/{FNAME}.html', - 29 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/{FNAME}.html', - 30 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/channels/{FNAME}.html', - 31 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/channels/spi/{FNAME}.html', - 32 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/charset/{FNAME}.html', - 33 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/charset/spi/{FNAME}.html', - 34 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/{FNAME}.html', - 35 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/activation/{FNAME}.html', - 36 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/dgc/{FNAME}.html', - 37 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/registry/{FNAME}.html', - 38 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/server/{FNAME}.html', - 39 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/{FNAME}.html', - 40 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/acl/{FNAME}.html', - 41 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/cert/{FNAME}.html', - 42 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/interfaces/{FNAME}.html', - 43 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/spec/{FNAME}.html', - 44 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/sql/{FNAME}.html', - 45 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/text/{FNAME}.html', - 46 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/{FNAME}.html', - 47 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/concurrent/{FNAME}.html', - 48 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/concurrent/atomic/{FNAME}.html', - 49 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/concurrent/locks/{FNAME}.html', - 50 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/jar/{FNAME}.html', - 51 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/logging/{FNAME}.html', - 52 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/prefs/{FNAME}.html', - 53 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/regex/{FNAME}.html', - 54 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/zip/{FNAME}.html', - 55 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/accessibility/{FNAME}.html', - 56 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/activity/{FNAME}.html', - 57 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/crypto/{FNAME}.html', - 58 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/crypto/interfaces/{FNAME}.html', - 59 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/crypto/spec/{FNAME}.html', - 60 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/{FNAME}.html', - 61 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/event/{FNAME}.html', - 62 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/metadata/{FNAME}.html', - 63 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/plugins/bmp/{FNAME}.html', - 64 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html', - 65 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/spi/{FNAME}.html', - 66 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/stream/{FNAME}.html', - 67 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/{FNAME}.html', - 68 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/loading/{FNAME}.html', - 69 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/modelmbean/{FNAME}.html', - 70 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/monitor/{FNAME}.html', - 71 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/openmbean/{FNAME}.html', - 72 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/relation/{FNAME}.html', - 73 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/remote/{FNAME}.html', - 74 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/remote/rmi/{FNAME}.html', - 75 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/timer/{FNAME}.html', - 76 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/{FNAME}.html', - 77 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/directory/{FNAME}.html', - 78 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/event/{FNAME}.html', - 79 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/ldap/{FNAME}.html', - 80 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/spi/{FNAME}.html', - 81 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/net/{FNAME}.html', - 82 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/net/ssl/{FNAME}.html', - 83 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/{FNAME}.html', - 84 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/attribute/{FNAME}.html', - 85 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/attribute/standard/{FNAME}.html', - 86 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/event/{FNAME}.html', - 87 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/rmi/{FNAME}.html', - 88 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/rmi/CORBA/{FNAME}.html', - 89 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/rmi/ssl/{FNAME}.html', - 90 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/{FNAME}.html', - 91 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/callback/{FNAME}.html', - 92 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/kerberos/{FNAME}.html', - 93 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/login/{FNAME}.html', - 94 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/spi/{FNAME}.html', - 95 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/x500/{FNAME}.html', - 96 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/sasl/{FNAME}.html', - 97 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/midi/{FNAME}.html', - 98 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/midi/spi/{FNAME}.html', - 99 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/sampled/{FNAME}.html', - 100 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/sampled/spi/{FNAME}.html', - 101 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/{FNAME}.html', - 102 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/rowset/{FNAME}.html', - 103 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/rowset/serial/{FNAME}.html', - 104 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/rowset/spi/{FNAME}.html', - 105 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/{FNAME}.html', - 106 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/border/{FNAME}.html', - 107 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/colorchooser/{FNAME}.html', - 108 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/event/{FNAME}.html', - 109 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/filechooser/{FNAME}.html', - 110 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/{FNAME}.html', - 111 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/basic/{FNAME}.html', - 112 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/metal/{FNAME}.html', - 113 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/multi/{FNAME}.html', - 114 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/synth/{FNAME}.html', - 115 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/table/{FNAME}.html', - 116 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/{FNAME}.html', - 117 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/html/{FNAME}.html', - 118 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/html/parser/{FNAME}.html', - 119 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/rtf/{FNAME}.html', - 120 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/tree/{FNAME}.html', - 121 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/undo/{FNAME}.html', - 122 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/transaction/{FNAME}.html', - 123 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/transaction/xa/{FNAME}.html', - 124 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/{FNAME}.html', - 125 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/datatype/{FNAME}.html', - 126 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/namespace/{FNAME}.html', - 127 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/parsers/{FNAME}.html', - 128 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/{FNAME}.html', - 129 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/dom/{FNAME}.html', - 130 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/sax/{FNAME}.html', - 131 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/stream/{FNAME}.html', - 132 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/validation/{FNAME}.html', - 133 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/xpath/{FNAME}.html', - 134 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/ietf/jgss/{FNAME}.html', - 135 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/{FNAME}.html', - 136 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html', - 137 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html', - 138 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/portable/{FNAME}.html', - 139 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CosNaming/{FNAME}.html', - 140 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html', - 141 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html', - 142 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/Dynamic/{FNAME}.html', - 143 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/DynamicAny/{FNAME}.html', - 144 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html', - 145 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html', - 146 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/IOP/{FNAME}.html', - 147 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html', - 148 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html', - 149 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/Messaging/{FNAME}.html', - 150 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableInterceptor/{FNAME}.html', - 151 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html', - 152 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/{FNAME}.html', - 153 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html', - 154 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html', - 155 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html', - 156 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html', - 157 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/SendingContext/{FNAME}.html', - 158 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/stub/java/rmi/{FNAME}.html', - 159 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/{FNAME}.html', - 160 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/bootstrap/{FNAME}.html', - 161 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/events/{FNAME}.html', - 162 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/ls/{FNAME}.html', - 163 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/xml/sax/{FNAME}.html', - 164 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/xml/sax/ext/{FNAME}.html', - 165 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/xml/sax/helpers/{FNAME}.html', + 5 => 'http://docs.oracle.com/javase/7/docs/api/java/applet/{FNAME}.html', + 6 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/{FNAME}.html', + 7 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/color/{FNAME}.html', + 8 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/{FNAME}.html', + 9 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/dnd/{FNAME}.html', + 10 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/event/{FNAME}.html', + 11 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/font/{FNAME}.html', + 12 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/geom/{FNAME}.html', + 13 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/im/{FNAME}.html', + 14 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/im/spi/{FNAME}.html', + 15 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/image/{FNAME}.html', + 16 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/image/renderable/{FNAME}.html', + 17 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/print/{FNAME}.html', + 18 => 'http://docs.oracle.com/javase/7/docs/api/java/beans/{FNAME}.html', + 19 => 'http://docs.oracle.com/javase/7/docs/api/java/beans/beancontext/{FNAME}.html', + 20 => 'http://docs.oracle.com/javase/7/docs/api/java/io/{FNAME}.html', + 21 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/{FNAME}.html', + 22 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/{FNAME}.html', + 23 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/{FNAME}.html', + 24 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/management/{FNAME}.html', + 25 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/ref/{FNAME}.html', + 26 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/{FNAME}.html', + 27 => 'http://docs.oracle.com/javase/7/docs/api/java/math/{FNAME}.html', + 28 => 'http://docs.oracle.com/javase/7/docs/api/java/net/{FNAME}.html', + 29 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/{FNAME}.html', + 30 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/channels/{FNAME}.html', + 31 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/channels/spi/{FNAME}.html', + 32 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/charset/{FNAME}.html', + 33 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/charset/spi/{FNAME}.html', + 34 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/{FNAME}.html', + 35 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/activation/{FNAME}.html', + 36 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/dgc/{FNAME}.html', + 37 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/registry/{FNAME}.html', + 38 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/server/{FNAME}.html', + 39 => 'http://docs.oracle.com/javase/7/docs/api/java/security/{FNAME}.html', + 40 => 'http://docs.oracle.com/javase/7/docs/api/java/security/acl/{FNAME}.html', + 41 => 'http://docs.oracle.com/javase/7/docs/api/java/security/cert/{FNAME}.html', + 42 => 'http://docs.oracle.com/javase/7/docs/api/java/security/interfaces/{FNAME}.html', + 43 => 'http://docs.oracle.com/javase/7/docs/api/java/security/spec/{FNAME}.html', + 44 => 'http://docs.oracle.com/javase/7/docs/api/java/sql/{FNAME}.html', + 45 => 'http://docs.oracle.com/javase/7/docs/api/java/text/{FNAME}.html', + 46 => 'http://docs.oracle.com/javase/7/docs/api/java/util/{FNAME}.html', + 47 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/{FNAME}.html', + 48 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/{FNAME}.html', + 49 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/{FNAME}.html', + 50 => 'http://docs.oracle.com/javase/7/docs/api/java/util/jar/{FNAME}.html', + 51 => 'http://docs.oracle.com/javase/7/docs/api/java/util/logging/{FNAME}.html', + 52 => 'http://docs.oracle.com/javase/7/docs/api/java/util/prefs/{FNAME}.html', + 53 => 'http://docs.oracle.com/javase/7/docs/api/java/util/regex/{FNAME}.html', + 54 => 'http://docs.oracle.com/javase/7/docs/api/java/util/zip/{FNAME}.html', + 55 => 'http://docs.oracle.com/javase/7/docs/api/javax/accessibility/{FNAME}.html', + 56 => 'http://docs.oracle.com/javase/7/docs/api/javax/activity/{FNAME}.html', + 57 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/{FNAME}.html', + 58 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/interfaces/{FNAME}.html', + 59 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/{FNAME}.html', + 60 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/{FNAME}.html', + 61 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/event/{FNAME}.html', + 62 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/{FNAME}.html', + 63 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/plugins/bmp/{FNAME}.html', + 64 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html', + 65 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/spi/{FNAME}.html', + 66 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/stream/{FNAME}.html', + 67 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/{FNAME}.html', + 68 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/loading/{FNAME}.html', + 69 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/modelmbean/{FNAME}.html', + 70 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/monitor/{FNAME}.html', + 71 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/openmbean/{FNAME}.html', + 72 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/relation/{FNAME}.html', + 73 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/remote/{FNAME}.html', + 74 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/remote/rmi/{FNAME}.html', + 75 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/timer/{FNAME}.html', + 76 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/{FNAME}.html', + 77 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/{FNAME}.html', + 78 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/event/{FNAME}.html', + 79 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/ldap/{FNAME}.html', + 80 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/{FNAME}.html', + 81 => 'http://docs.oracle.com/javase/7/docs/api/javax/net/{FNAME}.html', + 82 => 'http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/{FNAME}.html', + 83 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/{FNAME}.html', + 84 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/attribute/{FNAME}.html', + 85 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/attribute/standard/{FNAME}.html', + 86 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/event/{FNAME}.html', + 87 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/{FNAME}.html', + 88 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/CORBA/{FNAME}.html', + 89 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/ssl/{FNAME}.html', + 90 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/{FNAME}.html', + 91 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/callback/{FNAME}.html', + 92 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/kerberos/{FNAME}.html', + 93 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/login/{FNAME}.html', + 94 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/{FNAME}.html', + 95 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/x500/{FNAME}.html', + 96 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/sasl/{FNAME}.html', + 97 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/{FNAME}.html', + 98 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/spi/{FNAME}.html', + 99 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/{FNAME}.html', + 100 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/spi/{FNAME}.html', + 101 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/{FNAME}.html', + 102 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/{FNAME}.html', + 103 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/serial/{FNAME}.html', + 104 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/spi/{FNAME}.html', + 105 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/{FNAME}.html', + 106 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/border/{FNAME}.html', + 107 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/colorchooser/{FNAME}.html', + 108 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/event/{FNAME}.html', + 109 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/filechooser/{FNAME}.html', + 110 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/{FNAME}.html', + 111 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/basic/{FNAME}.html', + 112 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/metal/{FNAME}.html', + 113 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/multi/{FNAME}.html', + 114 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/synth/{FNAME}.html', + 115 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/table/{FNAME}.html', + 116 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/{FNAME}.html', + 117 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/{FNAME}.html', + 118 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/{FNAME}.html', + 119 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/rtf/{FNAME}.html', + 120 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/{FNAME}.html', + 121 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/undo/{FNAME}.html', + 122 => 'http://docs.oracle.com/javase/7/docs/api/javax/transaction/{FNAME}.html', + 123 => 'http://docs.oracle.com/javase/7/docs/api/javax/transaction/xa/{FNAME}.html', + 124 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/{FNAME}.html', + 125 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/datatype/{FNAME}.html', + 126 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/namespace/{FNAME}.html', + 127 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/{FNAME}.html', + 128 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/{FNAME}.html', + 129 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/dom/{FNAME}.html', + 130 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/sax/{FNAME}.html', + 131 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/{FNAME}.html', + 132 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/validation/{FNAME}.html', + 133 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/{FNAME}.html', + 134 => 'http://docs.oracle.com/javase/7/docs/api/org/ietf/jgss/{FNAME}.html', + 135 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/{FNAME}.html', + 136 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html', + 137 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html', + 138 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/portable/{FNAME}.html', + 139 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/{FNAME}.html', + 140 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html', + 141 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html', + 142 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/Dynamic/{FNAME}.html', + 143 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/{FNAME}.html', + 144 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html', + 145 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html', + 146 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/{FNAME}.html', + 147 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html', + 148 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html', + 149 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/Messaging/{FNAME}.html', + 150 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableInterceptor/{FNAME}.html', + 151 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html', + 152 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/{FNAME}.html', + 153 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html', + 154 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html', + 155 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html', + 156 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html', + 157 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/SendingContext/{FNAME}.html', + 158 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/stub/java/rmi/{FNAME}.html', + 159 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/{FNAME}.html', + 160 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/bootstrap/{FNAME}.html', + 161 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/events/{FNAME}.html', + 162 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/ls/{FNAME}.html', + 163 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/{FNAME}.html', + 164 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/ext/{FNAME}.html', + 165 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/{FNAME}.html', /* ambiguous class names (appear in more than one package) */ - 166 => 'http://www.google.com/search?sitesearch=java.sun.com&q=allinurl%3Aj2se%2F1+5+0%2Fdocs%2Fapi+{FNAME}' + 166 => 'http://www.google.com/search?sitesearch=docs.oracle.com&q=allinurl%3Ajavase+docs+api+{FNAME}' ), 'OOLANG' => true, 'OBJECT_SPLITTERS' => array( @@ -1034,4 +1034,4 @@ $language_data = array ( ) ); -?>
\ No newline at end of file +?> diff --git a/inc/geshi/javascript.php b/inc/geshi/javascript.php index 93997a70c..b96d1b5b6 100644 --- a/inc/geshi/javascript.php +++ b/inc/geshi/javascript.php @@ -4,13 +4,15 @@ * -------------- * Author: Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2004 Ben Keen (ben.keen@gmail.com), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/20 * * JavaScript language file for GeSHi. * * CHANGES * ------- + * 2012/06/27 (1.0.8.11) + * - Reordered Keyword Groups to reflect syntactical meaning of keywords * 2008/05/23 (1.0.7.22) * - Added description of extra language features (SF#1970248) * 2004/11/27 (1.0.1) @@ -54,23 +56,38 @@ $language_data = array ( 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( 1 => array( - 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do', - 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item', - 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void', - 'while', 'write', 'with' + //reserved/keywords; also some non-reserved keywords + 'break','case','catch','const','continue', + 'default','delete','do', + 'else', + 'finally','for','function', + 'get','goto', + 'if','in','instanceof', + 'new', + 'prototype', + 'return', + 'set','static','switch', + 'this','throw','try','typeof', + 'var','void' ), 2 => array( - 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false', - 'function', 'import', 'namespace', 'new', 'null', 'package', 'private', - 'protected', 'public', 'super', 'true', 'use', 'var' + //reserved/non-keywords; metaconstants + 'false','null','true','undefined','NaN','Infinity' ), 3 => array( - // common functions for Window object - 'alert', 'back', 'blur', 'close', 'confirm', 'focus', 'forward', 'home', - 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove', - 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'status', - 'stop', - ) + //magic properties/functions + '__proto__','__defineGetter__','__defineSetter__','hasOwnProperty','hasProperty' + ), + 4 => array( + //type constructors + 'Object', 'Function', 'Date', 'Math', 'String', 'Number', 'Boolean', 'Array' + ), + 5 => array( + //reserved, but invalid in language + 'abstract','boolean','byte','char','class','debugger','double','enum','export','extends', + 'final','float','implements','import','int','interface','long','native', + 'short','super','synchronized','throws','transient','volatile' + ), ), 'SYMBOLS' => array( '(', ')', '[', ']', '{', '}', @@ -81,15 +98,18 @@ $language_data = array ( ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, - 1 => false, - 2 => false, - 3 => false + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true ), 'STYLES' => array( 'KEYWORDS' => array( 1 => 'color: #000066; font-weight: bold;', 2 => 'color: #003366; font-weight: bold;', - 3 => 'color: #000066;' + 3 => 'color: #000066;', + 5 => 'color: #FF0000;' ), 'COMMENTS' => array( 1 => 'color: #006600; font-style: italic;', @@ -126,8 +146,10 @@ $language_data = array ( 'URLS' => array( 1 => '', 2 => '', - 3 => '' - ), + 3 => '', + 4 => '', + 5 => '' + ), 'OOLANG' => true, 'OBJECT_SPLITTERS' => array( 1 => '.' diff --git a/inc/geshi/jquery.php b/inc/geshi/jquery.php index 9374ec1ca..a75320d5c 100644 --- a/inc/geshi/jquery.php +++ b/inc/geshi/jquery.php @@ -4,7 +4,7 @@ * -------------- * Author: Rob Loach (http://www.robloach.net) * Copyright: (c) 2009 Rob Loach (http://www.robloach.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/07/20 * * jQuery 1.3 language file for GeSHi. diff --git a/inc/geshi/kixtart.php b/inc/geshi/kixtart.php index f3f29e2e3..5b9091989 100644 --- a/inc/geshi/kixtart.php +++ b/inc/geshi/kixtart.php @@ -4,7 +4,7 @@ * -------- * Author: Riley McArdle (riley@glyff.net) * Copyright: (c) 2007 Riley McArdle (http://www.glyff.net/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/08/31 * * PHP language file for GeSHi. diff --git a/inc/geshi/klonec.php b/inc/geshi/klonec.php index 553763d61..5f86e78dc 100644 --- a/inc/geshi/klonec.php +++ b/inc/geshi/klonec.php @@ -4,7 +4,7 @@ * -------- * Author: AUGER Mickael * Copyright: Synchronic - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/04/16 * * KLone with C language file for GeSHi. diff --git a/inc/geshi/klonecpp.php b/inc/geshi/klonecpp.php index 6fe0df1ef..6564c6b7b 100644 --- a/inc/geshi/klonecpp.php +++ b/inc/geshi/klonecpp.php @@ -4,7 +4,7 @@ * -------- * Author: AUGER Mickael * Copyright: Synchronic - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/04/16 * * KLone with C++ language file for GeSHi. diff --git a/inc/geshi/latex.php b/inc/geshi/latex.php index 91c034236..386a0b989 100644 --- a/inc/geshi/latex.php +++ b/inc/geshi/latex.php @@ -4,7 +4,7 @@ * ----- * Author: efi, Matthias Pospiech (matthias@pospiech.eu) * Copyright: (c) 2006 efi, Matthias Pospiech (matthias@pospiech.eu), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/09/23 * * LaTeX language file for GeSHi. @@ -67,7 +67,7 @@ $language_data = array ( 'colorbox','date','dedication','def','definecolor','documentclass', 'edef','else','email','emph','eqref','extratitle','fbox','fi', 'flushleft','flushright','footnote','frac','frontmatter', - 'graphicspath','hfill','hline','hspace','huge','ifx','include', + 'graphicspath','hfil','hfill','hfilll','hline','hspace','huge','ifx','include', 'includegraphics','infty','input','int','item','itemsep', 'KOMAoption','KOMAoptions','label','LaTeX','left','let','limits', 'listfiles','listoffigures','listoftables','lowertitleback', @@ -81,7 +81,7 @@ $language_data = array ( 'table','tableofcontents','textbf','textcolor','textit', 'textnormal','textsuperscript','texttt','textwidth','thanks','title', 'titlehead','today','ttfamily','uppertitleback','urlstyle', - 'usepackage','vspace' + 'usepackage','vfil','vfill','vfilll','vspace' ) ), 'SYMBOLS' => array( diff --git a/inc/geshi/lb.php b/inc/geshi/lb.php index 390fe19a9..6c2882894 100644 --- a/inc/geshi/lb.php +++ b/inc/geshi/lb.php @@ -4,7 +4,7 @@ * -------- * Author: Chris Iverson (cj.no.one@gmail.com) * Copyright: (c) 2010 Chris Iverson - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/07/18 * * Liberty BASIC language file for GeSHi. diff --git a/inc/geshi/ldif.php b/inc/geshi/ldif.php new file mode 100644 index 000000000..424818380 --- /dev/null +++ b/inc/geshi/ldif.php @@ -0,0 +1,116 @@ +<?php +/************************************************************************************* + * ldif.php + * -------- + * Author: Bruno Harbulot (Bruno.Harbulot@manchester.ac.uk) + * Copyright: (c) 2005 deguix, (c) 2010 Bruno Harbulot + * Release Version: 1.0.8.11 + * Date Started: 2010/03/01 + * + * LDIF language file for GeSHi. + * + * CHANGES + * ------- + * 2010/03/01 (1.0.8.11) + * - First Release + * - Derived from ini.php (INI language), (c) 2005 deguix + * + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'LDIF', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + ), + 'SYMBOLS' => array( + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => '' + ), + 'STRINGS' => array( + 0 => 'color: #933;' + ), + 'NUMBERS' => array( + 0 => '' + ), + 'METHODS' => array( + 0 => '' + ), + 'SYMBOLS' => array( + ), + 'REGEXPS' => array( + 0 => 'color: #000066; font-weight: bold;', + 1 => 'color: #FF0000;' + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array( + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + 0 => array( + GESHI_SEARCH => '([a-zA-Z0-9_]+):(.+)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => ':\\2' + ), + 1 => array( + // Evil hackery to get around GeSHi bug: <>" and ; are added so <span>s can be matched + // Explicit match on variable names because if a comment is before the first < of the span + // gets chewed up... + GESHI_SEARCH => '([<>";a-zA-Z0-9_]+):(.+)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1:', + GESHI_AFTER => '' + ) + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/lisp.php b/inc/geshi/lisp.php index 82aa7f69b..be823a405 100644 --- a/inc/geshi/lisp.php +++ b/inc/geshi/lisp.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * Generic Lisp language file for GeSHi. diff --git a/inc/geshi/llvm.php b/inc/geshi/llvm.php index f58be2da8..580099b52 100644 --- a/inc/geshi/llvm.php +++ b/inc/geshi/llvm.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org), Azriel Fasten (azriel.fasten@gmail.com) * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/), Azriel Fasten (azriel.fasten@gmail.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/10/14 * * LLVM language file for GeSHi. diff --git a/inc/geshi/locobasic.php b/inc/geshi/locobasic.php index 55aacc263..61c8a3c83 100644 --- a/inc/geshi/locobasic.php +++ b/inc/geshi/locobasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Nacho Cabanes * Copyright: (c) 2009 Nacho Cabanes (http://www.nachocabanes.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/03/22 * * Locomotive Basic (Amstrad CPC series) language file for GeSHi. diff --git a/inc/geshi/logtalk.php b/inc/geshi/logtalk.php index b4eba764c..05734663e 100644 --- a/inc/geshi/logtalk.php +++ b/inc/geshi/logtalk.php @@ -5,7 +5,7 @@ * * Author: Paulo Moura (pmoura@logtalk.org) * Copyright: (c) 2009-2011 Paulo Moura (http://logtalk.org/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/24 * * Logtalk language file for GeSHi. diff --git a/inc/geshi/lolcode.php b/inc/geshi/lolcode.php index bcbad11c6..ab6088b18 100644 --- a/inc/geshi/lolcode.php +++ b/inc/geshi/lolcode.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/31 * * LOLcode language file for GeSHi. diff --git a/inc/geshi/lotusformulas.php b/inc/geshi/lotusformulas.php index 5b755e55a..12257d748 100644 --- a/inc/geshi/lotusformulas.php +++ b/inc/geshi/lotusformulas.php @@ -4,7 +4,7 @@ * ------------------------ * Author: Richard Civil (info@richardcivil.net) * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/04/12 * * @Formula/@Command language file for GeSHi. diff --git a/inc/geshi/lotusscript.php b/inc/geshi/lotusscript.php index c2b2f45f5..b8b65f206 100644 --- a/inc/geshi/lotusscript.php +++ b/inc/geshi/lotusscript.php @@ -4,7 +4,7 @@ * ------------------------ * Author: Richard Civil (info@richardcivil.net) * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/04/12 * * LotusScript language file for GeSHi. diff --git a/inc/geshi/lscript.php b/inc/geshi/lscript.php index 51852414b..298af618c 100644 --- a/inc/geshi/lscript.php +++ b/inc/geshi/lscript.php @@ -4,7 +4,7 @@ * --------- * Author: Arendedwinter (admin@arendedwinter.com) * Copyright: (c) 2008 Beau McGuigan (http://www.arendedwinter.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 15/11/2008 * * Lightwave Script language file for GeSHi. diff --git a/inc/geshi/lsl2.php b/inc/geshi/lsl2.php index 828e2b91c..f80cf4f29 100644 --- a/inc/geshi/lsl2.php +++ b/inc/geshi/lsl2.php @@ -4,7 +4,7 @@ * -------- * Author: William Fry (william.fry@nyu.edu) * Copyright: (c) 2009 William Fry - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/02/04 * * Linden Scripting Language (LSL2) language file for GeSHi. diff --git a/inc/geshi/lua.php b/inc/geshi/lua.php index 2ec6c0b88..8a09ba20e 100644 --- a/inc/geshi/lua.php +++ b/inc/geshi/lua.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/10 * * LUA language file for GeSHi. @@ -46,7 +46,7 @@ $language_data = array ( 'LANG_NAME' => 'Lua', 'COMMENT_SINGLE' => array(1 => "--"), 'COMMENT_MULTI' => array('--[[' => ']]'), - 'COMMENT_REGEXP' => array(2 => "/\[(=*)\[.*?\]\1\]/s"), + 'COMMENT_REGEXP' => array(2 => '/\[(=*)\[.*?\]\1\]/s'), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '', @@ -174,4 +174,4 @@ $language_data = array ( ) ); -?>
\ No newline at end of file +?> diff --git a/inc/geshi/m68k.php b/inc/geshi/m68k.php index 081578158..98321577b 100644 --- a/inc/geshi/m68k.php +++ b/inc/geshi/m68k.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2007 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/02/06 * * Motorola 68000 Assembler language file for GeSHi. diff --git a/inc/geshi/magiksf.php b/inc/geshi/magiksf.php index b6f431ea8..612e1603e 100644 --- a/inc/geshi/magiksf.php +++ b/inc/geshi/magiksf.php @@ -4,7 +4,7 @@ * -------- * Author: Sjoerd van Leent (svanleent@gmail.com) * Copyright: (c) 2010 Sjoerd van Leent - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/02/15 * * MagikSF language file for GeSHi. diff --git a/inc/geshi/make.php b/inc/geshi/make.php index 2d5d73425..885fa1765 100644 --- a/inc/geshi/make.php +++ b/inc/geshi/make.php @@ -4,7 +4,7 @@ * -------- * Author: Neil Bird <phoenix@fnxweb.com> * Copyright: (c) 2008 Neil Bird - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/08/26 * * make language file for GeSHi. diff --git a/inc/geshi/mapbasic.php b/inc/geshi/mapbasic.php index 7d365263d..8859c4831 100644 --- a/inc/geshi/mapbasic.php +++ b/inc/geshi/mapbasic.php @@ -4,7 +4,7 @@ * ------ * Author: Tomasz Berus (t.berus@gisodkuchni.pl) * Copyright: (c) 2009 Tomasz Berus (http://sourceforge.net/projects/mbsyntax/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/11/25 * * MapBasic language file for GeSHi. diff --git a/inc/geshi/matlab.php b/inc/geshi/matlab.php index 5c64a0d49..7cdd50e5e 100644 --- a/inc/geshi/matlab.php +++ b/inc/geshi/matlab.php @@ -4,7 +4,7 @@ * ----------- * Author: Florian Knorn (floz@gmx.de) * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/02/09 * * Matlab M-file language file for GeSHi. diff --git a/inc/geshi/mirc.php b/inc/geshi/mirc.php index e9e0346e6..fa2f307ee 100644 --- a/inc/geshi/mirc.php +++ b/inc/geshi/mirc.php @@ -4,7 +4,7 @@ * ----- * Author: Alberto 'Birckin' de Areba (Birckin@hotmail.com) * Copyright: (c) 2006 Alberto de Areba - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/05/29 * * mIRC Scripting language file for GeSHi. diff --git a/inc/geshi/mmix.php b/inc/geshi/mmix.php index 8e57ad7b9..60b6e28ce 100644 --- a/inc/geshi/mmix.php +++ b/inc/geshi/mmix.php @@ -4,7 +4,7 @@ * ------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/16 * * MMIX Assembler language file for GeSHi. @@ -41,13 +41,21 @@ $language_data = array ( 'LANG_NAME' => 'MMIX', - 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_SINGLE' => array(1 => ';', 2 => '%'), 'COMMENT_MULTI' => array(), //Line address prefix suppression - 'COMMENT_REGEXP' => array(2 => "/^\s*[0-9a-f]{12,16}+(?:\s+[0-9a-f]+(?:\.{3}[0-9a-f]{2,})?)?:/mi"), + 'COMMENT_REGEXP' => array( + 3 => "/^\s*(?!\s)[^\w].*$/m", + 4 => "/^\s*[0-9a-f]{12,16}+(?:\s+[0-9a-f]+(?:\.{3}[0-9a-f]{2,})?)?:/mi" + ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '', + 'NUMBERS' => array( + 1 => '(?<![\d\$#\w])[\da-fA-F]+(?!\w)', + 2 => '#[\da-fA-F]+', + 3 => '\$\d+' + ), 'KEYWORDS' => array( /*CPU*/ 1 => array( @@ -57,54 +65,61 @@ $language_data = array ( 'CSP','CSWAP','CSZ','DIV','DIVU','FADD','FCMP','FCMPE','FDIV', 'FEQL','FEQLE','FINT','FIX','FIXU','FLOT','FLOTU','FMUL','FREM', 'FSQRT','FSUB','FUN','FUNE','GET','GETA','GO','INCH','INCL','INCMH', - 'INCML','JMP','LDB','LDBU','LDHT','LDO','LDOU','LDSF','LDT','LDTU', - 'LDUNC','LDVTS','LDW','LDWU','MOR','MUL','MULU','MUX','MXOR','NAND', - 'NEG','NEGU','NOR','NXOR','ODIF','OR','ORH','ORL','ORMH','ORML', - 'ORN','PBEV','PBN','PBNN','PBNP','PBNZ','PBOD','PBP','PBZ','POP', - 'PREGO','PRELD','PREST','PUSHGO','PUSHJ','PUT','RESUME','SADD', + 'INCML','JMP','LDA','LDB','LDBU','LDHT','LDO','LDOU','LDSF','LDT', + 'LDTU','LDUNC','LDVTS','LDW','LDWU','MOR','MUL','MULU','MUX','MXOR', + 'NAND','NEG','NEGU','NOR','NXOR','ODIF','OR','ORH','ORL','ORMH', + 'ORML','ORN','PBEV','PBN','PBNN','PBNP','PBNZ','PBOD','PBP','PBZ', + 'POP','PREGO','PRELD','PREST','PUSHGO','PUSHJ','PUT','RESUME','SADD', 'SAVE','SETH','SETL','SETMH','SETML','SFLOT','SFLOTU','SL','SLU', 'SR','SRU','STB','STBU','STCO','STHT','STO','STOU','STSF','STT', 'STTU','STUNC','STW','STWU','SUB','SUBU','SWYM','SYNC','SYNCD', 'SYNCID','TDIF','TRAP','TRIP','UNSAVE','WDIF','XOR','ZSEV','ZSN', 'ZSNN','ZSNP','ZSNZ','ZSOD','ZSP','ZSZ' ), + 2 => array( + 'BSPEC','BYTE','ESPEC','GREG','IS','LOC','LOCAL','OCTA', + 'PREFIX','SET','TETRA','WYDE' + ), /*registers*/ 3 => array( 'rA','rB','rC','rD','rE','rF','rG','rH','rI','rJ','rK','rL','rM', 'rN','rO','rP','rQ','rR','rS','rT','rU','rV','rW','rX','rY','rZ', 'rBB','rTT','rWW','rXX','rYY','rZZ' ), - /*Directive*/ - 4 => array( - ), - /*Operands*/ - 5 => array( - ) +// /*Directive*/ +// 4 => array( +// ), +// /*Operands*/ +// 5 => array( +// ) ), 'SYMBOLS' => array( '[', ']', '(', ')', '+', '-', '*', '/', '%', - '.', ',', ';', ':' + '.', ',', ';', ':', + '<<','>>' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, 1 => true, 2 => false, 3 => true, - 4 => false, - 5 => false +// 4 => false, +// 5 => false ), 'STYLES' => array( 'KEYWORDS' => array( 1 => 'color: #00007f; font-weight: bold;', 2 => 'color: #0000ff; font-weight: bold;', 3 => 'color: #00007f;', - 4 => 'color: #000000; font-weight: bold;', - 5 => 'color: #000000; font-weight: bold;' +// 4 => 'color: #000000; font-weight: bold;', +// 5 => 'color: #000000; font-weight: bold;' ), 'COMMENTS' => array( 1 => 'color: #666666; font-style: italic;', - 2 => 'color: #adadad; font-style: italic;', + 2 => 'color: #666666; font-style: italic;', + 3 => 'color: #666666; font-style: italic;', + 4 => 'color: #adadad; font-style: italic;', ), 'ESCAPE_CHAR' => array( 0 => 'color: #000099; font-weight: bold;' @@ -116,7 +131,10 @@ $language_data = array ( 0 => 'color: #7f007f;' ), 'NUMBERS' => array( - 0 => 'color: #0000ff;' + 0 => 'color: #0000ff;', + 1 => 'color: #0000ff;', + 2 => 'color: #0000ff;', + 3 => 'color: #00007f;' ), 'METHODS' => array( ), @@ -134,9 +152,10 @@ $language_data = array ( 1 => '', 2 => '', 3 => '', - 4 => '', - 5 => '' +// 4 => '', +// 5 => '' ), +/* 'NUMBERS' => GESHI_NUMBER_BIN_PREFIX_PERCENT | GESHI_NUMBER_BIN_SUFFIX | @@ -147,6 +166,7 @@ $language_data = array ( GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_ZERO, +*/ 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( ), diff --git a/inc/geshi/modula2.php b/inc/geshi/modula2.php index 131543baa..18508340b 100644 --- a/inc/geshi/modula2.php +++ b/inc/geshi/modula2.php @@ -4,7 +4,7 @@ * ----------- * Author: Benjamin Kowarsch (benjamin@modula2.net) * Copyright: (c) 2009 Benjamin Kowarsch (benjamin@modula2.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/11/05 * * Modula-2 language file for GeSHi. diff --git a/inc/geshi/modula3.php b/inc/geshi/modula3.php index 21b2e255d..ae08dcf97 100644 --- a/inc/geshi/modula3.php +++ b/inc/geshi/modula3.php @@ -4,7 +4,7 @@ * ---------- * Author: mbishop (mbishop@esoteriq.org) * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/01/21 * * Modula-3 language file for GeSHi. @@ -50,7 +50,7 @@ $language_data = array ( 'CONST', 'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EVAL', 'EXCEPT', 'EXCEPTION', 'EXIT', 'EXPORTS', 'FINALLY', 'FOR', 'FROM', 'GENERIC', 'IF', 'IMPORT', 'IN', 'INTERFACE', 'LOCK', 'LOOP', 'METHODS', 'MOD', 'MODULE', 'NOT', 'OBJECT', 'OF', - 'OR', 'OVERRIDE', 'PROCEDURE', 'RAISE', 'RAISES', 'READONLY', 'RECORD', 'REF', + 'OR', 'OVERRIDES', 'PROCEDURE', 'RAISE', 'RAISES', 'READONLY', 'RECORD', 'REF', 'REPEAT', 'RETURN', 'REVEAL', 'ROOT', 'SET', 'THEN', 'TO', 'TRY', 'TYPE', 'TYPECASE', 'UNSAFE', 'UNTIL', 'UNTRACED', 'VALUE', 'VAR', 'WHILE', 'WITH' ), diff --git a/inc/geshi/mpasm.php b/inc/geshi/mpasm.php index 70f12de48..f724a9414 100644 --- a/inc/geshi/mpasm.php +++ b/inc/geshi/mpasm.php @@ -4,7 +4,7 @@ * --------- * Author: Bakalex (bakalex@gmail.com) * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/12/6 * * Microchip Assembler language file for GeSHi. diff --git a/inc/geshi/mxml.php b/inc/geshi/mxml.php index 72a071aae..0cc8287a2 100644 --- a/inc/geshi/mxml.php +++ b/inc/geshi/mxml.php @@ -4,7 +4,7 @@ * ------- * Author: David Spurr * Copyright: (c) 2007 David Spurr (http://www.defusion.org.uk/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/10/04 * * MXML language file for GeSHi. Based on the XML file by Nigel McNie diff --git a/inc/geshi/mysql.php b/inc/geshi/mysql.php index b85377d1c..507da2d09 100644 --- a/inc/geshi/mysql.php +++ b/inc/geshi/mysql.php @@ -4,7 +4,7 @@ * --------- * Author: Marjolein Katsma (marjolein.is.back@gmail.com) * Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008-12-12 * * MySQL language file for GeSHi. @@ -74,9 +74,9 @@ $language_data = array ( // category, or have multiple usage/meanings 'ACTION','ADD','AFTER','ALGORITHM','ALL','ALTER','ANALYZE','ANY', 'ASC','AS','BDB','BEGIN','BERKELEYDB','BINARY','BTREE','CALL', - 'CASCADED','CASCADE','CHAIN','CHECK','COLUMNS','COLUMN','COMMENT', - 'COMMIT','COMMITTED','CONSTRAINT','CONTAINS SQL','CONSISTENT', - 'CONVERT','CREATE','CROSS','DATA','DATABASES', + 'CASCADED','CASCADE','CHAIN','CHANGE','CHECK','COLUMNS','COLUMN', + 'COMMENT','COMMIT','COMMITTED','CONSTRAINT','CONTAINS SQL', + 'CONSISTENT','CONVERT','CREATE','CROSS','DATA','DATABASES', 'DECLARE','DEFINER','DELAYED','DELETE','DESCRIBE','DESC', 'DETERMINISTIC','DISABLE','DISCARD','DISTINCTROW','DISTINCT','DO', 'DROP','DUMPFILE','DUPLICATE KEY','ENABLE','ENCLOSED BY','ENGINE', @@ -90,10 +90,10 @@ $language_data = array ( 'MASTER_SERVER_ID','MATCH','MERGE','MIDDLEINT','MODIFIES SQL DATA', 'MODIFY','MRG_MYISAM','NATURAL','NEXT','NO SQL','NO','ON', 'OPTIMIZE','OPTIONALLY','OPTION','ORDER BY','OUTER','OUTFILE','OUT', - 'PARTIAL','PREV','PRIMARY KEY','PRIVILEGES','PROCEDURE','PURGE', - 'QUICK','READS SQL DATA','READ','REFERENCES','RELEASE','RENAME', - 'REPEATABLE','REQUIRE','RESTRICT','RETURNS','REVOKE', - 'ROLLBACK','ROUTINE','RTREE','SAVEPOINT','SELECT', + 'PARTIAL','PARTITION','PREV','PRIMARY KEY','PRIVILEGES','PROCEDURE', + 'PURGE','QUICK','READS SQL DATA','READ','REFERENCES','RELEASE', + 'RENAME','REORGANIZE','REPEATABLE','REQUIRE','RESTRICT','RETURNS', + 'REVOKE','ROLLBACK','ROUTINE','RTREE','SAVEPOINT','SELECT', 'SERIALIZABLE','SESSION','SET','SHARE MODE','SHOW','SIMPLE', 'SNAPSHOT','SOME','SONAME','SQL SECURITY','SQL_BIG_RESULT', 'SQL_BUFFER_RESULT','SQL_CACHE','SQL_CALC_FOUND_ROWS', @@ -391,15 +391,15 @@ $language_data = array ( ) ), 'URLS' => array( - 1 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 2 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 3 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 4 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 5 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 6 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 7 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 8 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 9 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 1 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 2 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 3 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 4 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 5 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 6 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 7 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 8 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', + 9 => 'http://search.oracle.com/search/search?group=MySQL&q={FNAME}', 10 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html', 11 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html', diff --git a/inc/geshi/nagios.php b/inc/geshi/nagios.php new file mode 100644 index 000000000..32cbaef9e --- /dev/null +++ b/inc/geshi/nagios.php @@ -0,0 +1,225 @@ +<?php +/************************************************************************************* + * nagios.php + * -------- + * Author: Albéric de Pertat <alberic@depertat.net> + * Copyright: (c) 2012 Albéric de Pertat (https://github.com/adepertat/geshi-nagios) + * Release Version: 1.0.8.11 + * Date Started: 2012/01/19 + * + * Nagios language file for GeSHi. + * + * CHANGES + * ------- + * 2012/01/19 (1.0.0) + * - First Release + * + * TODO (updated 2012/01/19) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'Nagios', + 'COMMENT_SINGLE' => array(1 => ';', 2 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'HARDQUOTE' => array("'", "'"), + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\'', + 'KEYWORDS' => array( + 1 => array( + 'define' + ), + 2 => array( + 'command', 'contact', 'contactgroup', 'host', 'hostdependency', + 'hostescalation', 'hostextinfo', 'hostgroup', 'service', + 'servicedependency', 'serviceescalation', + 'serviceextinfo', 'servicegroup', 'timeperiod' + ), + 3 => array( + 'active_checks_enabled', 'passive_checks_enabled', 'alias', + 'display_name', 'host_name', 'address', 'hostgroups', 'parents', + 'hostgroup_members', 'members', 'service_description', + 'servicegroups', 'is_volatile', 'servicegroup_name', + 'servicegroup_members', 'contact_name', 'contactgroups', 'email', + 'pager', 'can_submit_commands', 'contactgroup_name', + 'contactgroup_members', 'host_notifications_enabled', + 'service_notifications_enabled', 'host_notification_period', + 'service_notification_period', 'host_notification_options', + 'service_notification_options', 'host_notification_commands', + 'service_notification_commands', 'check_command', + 'check_freshness', 'check_interval', 'check_period', 'contacts', + 'contact_groups', 'event_handler', 'event_handler_enabled', + 'flap_detection_enabled', 'flap_detection_options', + 'freshness_threshold', 'initial_state', 'low_flap_threshold', + 'high_flap_threshold', 'max_check_attempts', + 'notification_interval', 'first_notification_delay', + 'notification_period', 'notification_options', + 'notifications_enabled', 'stalking_options', 'notes', 'notes_url', + 'action_url', 'icon_image', 'icon_image_alt', 'vrml_image', + 'statusmap_image', '2d_coords', '3d_coords', 'obsess_over_host', + 'obsess_over_hostver_service', 'process_perf_data', + 'retain_status_information', 'retain_nonstatus_information', + 'retry_interval', 'register', 'use', 'name', 'timeperiod_name', + 'exclude', 'command_name', 'command_line', 'dependent_host_name', + 'dependent_hostgroup_name', 'dependent_service_description', + 'inherits_parent', 'execution_failure_criteria', + 'notification_failure_criteria', 'dependency_period', + 'first_notification', 'last_notification', 'escalation_period', + 'escalation_options' + ), + 4 => array( + 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', + 'sunday', 'january', 'february', 'march', 'april', 'may', 'june', + 'july', 'august', 'september', 'october', 'november', 'december', + 'day' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '{', '}', ',', '+' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'font-weight:bold;color:#FFDCA8;', + 2 => 'font-weight:bold;color #FFA858;', + 3 => 'font-weight:bold;color:#00C0C0;', + 4 => 'font-weight:bold;color:#C0C0FF;' + ), + 'SYMBOLS' => array( + 0 => 'font-weight:bold;color:#000000;' + ), + 'NUMBERS' => array( + 0 => '' + ), + 'COMMENTS' => array( + 0 => 'color: #AAAAAA; font-style: italic;', + 1 => 'color: #AAAAAA; font-style: italic;', + 2 => 'color: #AAAAAA; font-style: italic;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #660066;', + 'HARD' => 'color: #660066;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'METHODS' => array( + 1 => 'color: #006600;' + ), + 'REGEXPS' => array( + 0 => 'font-weight:bold;color:#808080;', + 1 => 'font-weight:bold;color:#000080;', + 2 => 'font-weight:bold;color:red;', + 3 => 'font-weight:bold;color:#808000;', + 4 => 'font-weight:bold;color:blue;', + 5 => 'font-weight:bold;color:#C0FFC0;', + ), + 'SCRIPT' => array( + 0 => '', + ) + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '\\' + ), + 'REGEXPS' => array( + // Custom macros + 0 => array( + GESHI_SEARCH => '(\$[a-zA-Z_]+\$)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + // Custom macro definitions + 1 => array( + GESHI_SEARCH => '(\A|\s)(_[a-zA-Z_]+)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '', + ), + // $USERxx$ + 2 => array( + GESHI_SEARCH => '(\$USER[0-9]+\$)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + // $ARGxx$ + 3 => array( + GESHI_SEARCH => '(\$ARG[1-9]\$)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + // register 0 + 4 => array( + GESHI_SEARCH => '(\bregister[\\x20\\t]+[01])', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + // use + 5 => array( + GESHI_SEARCH => '(use[\\x20\\t]+[^\\x20\\t]+)([\\x20\\t]*[$;#])', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '', + ), + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => false + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'NUMBERS' => GESHI_NEVER + ) + ) +); + +?> diff --git a/inc/geshi/netrexx.php b/inc/geshi/netrexx.php new file mode 100644 index 000000000..14a2d23fd --- /dev/null +++ b/inc/geshi/netrexx.php @@ -0,0 +1,163 @@ +<?php +/************************************************************************************* + * netrexx.php + * --------------------------------- + * Author: Jon Wolfers (sahananda@windhorse.biz) + * Contributors: + * - Walter Pachl (pachl@chello.at) + * Copyright: (c) 2008 Jon Wolfers, (c) 2012 Walter Pachl + * Release Version: 1.0.8.11 + * Date Started: 2008/01/07 + * + * NetRexx language file for GeSHi. + * + * CHANGES + * ------- + * 2012/07/29 (1.0.0) + * - tried to get it syntactically right + * + * TODO (updated 2012/07/29) + * ------------------------- + * - Get it working on rosettacode.org + * + ************************************************************************************* + * + * 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' => 'NetRexx', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'class', 'do', 'exit', 'if', 'import', 'iterate', 'leave', + 'loop', 'nop', 'numeric', 'package', 'parse', 'properties', + 'return', 'say', 'select', 'signal', 'trace' + ), + 2 => array( + 'abstract', 'adapter', 'all', 'ask', 'binary', 'case', + 'constant', 'dependent', 'deprecated', 'extends', 'final', + 'implements', 'inheritable', 'interface', 'label', 'methods', + 'native', 'off', 'private', 'protect', 'public', 'results', + 'returns', 'shared', 'signals', 'source', 'static', + 'transient', 'unused', 'uses', 'version', 'volatile' + ), + 3 => array( + 'catch', 'else', 'end', 'finally', 'otherwise', 'then', 'when' + ), + 4 => array( + 'rc', 'result', 'self', 'sigl', 'super' + ), + 5 => array( + 'placeholderforoorexxdirectives' + ), + 6 => array( + 'abbrev', 'abs', 'b2x', 'c2d', 'c2x', 'center', 'centre', + 'changestr', 'compare', 'copies', 'copyindexed', 'countstr', + 'd2c', 'd2x', 'datatype', 'delstr', 'delword', 'exists', + 'formword', 'hashcode', 'insert', 'lastpos', 'left', 'lower', + 'max', 'min', 'noteq', 'noteqs', 'opadd', 'opand', 'opcc', + 'opccblank', 'opdiv', 'opdivi', 'opeq', 'opeqs', 'opgt', + 'opgteq', 'opgteqs', 'opgts', 'oplt', 'oplteq', 'oplteqs', + 'oplts', 'opminus', 'opmult', 'opnot', 'opor', 'opplus', + 'oppow', 'oprem', 'opsub', 'opxor', 'overlay', 'pos position', + 'reverse', 'right', 'sequence', 'setdigits', 'setform', + 'sign', 'space', 'strip', 'substr', 'subword', 'toboolean', + 'tobyte', 'tochar', 'todouble', 'tofloat', 'toint', 'tolong', + 'toshort', 'tostring', 'translate', 'trunc', 'upper', + 'verify', 'word', 'wordindex', 'wordlength', 'wordpos', + 'words', 'x2b', 'x2c', 'x2d' + ) + ), + 'SYMBOLS' => array( + '(', ')', '<', '>', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', + '<', '>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #ff0000; font-weight: bold;', + 3 => 'color: #00ff00; font-weight: bold;', + 4 => 'color: #0000ff; font-weight: bold;', + 5 => 'color: #880088; font-weight: bold;', + 6 => 'color: #888800; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 'MULTI' => 'color: #808080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?> diff --git a/inc/geshi/newlisp.php b/inc/geshi/newlisp.php index 508f116b7..0dc6c1619 100644 --- a/inc/geshi/newlisp.php +++ b/inc/geshi/newlisp.php @@ -4,7 +4,7 @@ * ---------- * Author: cormullion (cormullion@mac.com) Sept 2009 * Copyright: (c) 2009 Cormullion (http://unbalanced-parentheses.nfshost.com/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/09/30 * * newLISP language file for GeSHi. diff --git a/inc/geshi/nsis.php b/inc/geshi/nsis.php index ab05ed82b..35df9b4b8 100644 --- a/inc/geshi/nsis.php +++ b/inc/geshi/nsis.php @@ -4,7 +4,7 @@ * -------- * Author: deguix (cevo_deguix@yahoo.com.br), Tux (http://tux.a4.cz/) * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/12/03 * * Nullsoft Scriptable Install System language file for GeSHi. diff --git a/inc/geshi/oberon2.php b/inc/geshi/oberon2.php index 33b828df5..b43f81408 100644 --- a/inc/geshi/oberon2.php +++ b/inc/geshi/oberon2.php @@ -4,7 +4,7 @@ * ---------- * Author: mbishop (mbishop@esoteriq.org) * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/02/10 * * Oberon-2 language file for GeSHi. diff --git a/inc/geshi/objc.php b/inc/geshi/objc.php index 3b2c593ef..2f5162d76 100644 --- a/inc/geshi/objc.php +++ b/inc/geshi/objc.php @@ -5,7 +5,7 @@ * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net) * Contributors: Quinn Taylor (quinntaylor@mac.com) * Copyright: (c) 2008 Quinn Taylor, 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * Objective-C language file for GeSHi. diff --git a/inc/geshi/objeck.php b/inc/geshi/objeck.php index 5ab3642e5..bf9dab564 100644 --- a/inc/geshi/objeck.php +++ b/inc/geshi/objeck.php @@ -4,7 +4,7 @@ * -------- * Author: Randy Hollines (objeck@gmail.com) * Copyright: (c) 2010 Randy Hollines (http://code.google.com/p/objeck-lang/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/07/01 * * Objeck Programming Language language file for GeSHi. diff --git a/inc/geshi/ocaml-brief.php b/inc/geshi/ocaml-brief.php index d988409e8..b518adf87 100644 --- a/inc/geshi/ocaml-brief.php +++ b/inc/geshi/ocaml-brief.php @@ -4,7 +4,7 @@ * ---------- * Author: Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/08/27 * * OCaml (Objective Caml) language file for GeSHi. diff --git a/inc/geshi/ocaml.php b/inc/geshi/ocaml.php index 4e36f3c30..ac6c29bcc 100644 --- a/inc/geshi/ocaml.php +++ b/inc/geshi/ocaml.php @@ -4,7 +4,7 @@ * ---------- * Author: Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/08/27 * * OCaml (Objective Caml) language file for GeSHi. diff --git a/inc/geshi/octave.php b/inc/geshi/octave.php new file mode 100644 index 000000000..ccffcd97a --- /dev/null +++ b/inc/geshi/octave.php @@ -0,0 +1,515 @@ +<?php +/************************************************************************************* + * octave.php + * ----------- + * Author: Carnë Draug (carandraug+dev@gmail.com) + * Juan Pablo Carbajal (carbajal@ifi.uzh.ch) + * Copyright: (c) 2012 Carnë Draug + * (c) 2012 Juan Pablo Carbajal + * Release Version: 1.0.8.11 + * Date Started: 2012/05/22 + * + * GNU Octave M-file language file for GeSHi. + * + * This file was heavily based on octave.lang from gtksourceview. If bugs are + * found and/or fixed on this file, please send them to the gtksourceview + * project or e-mail them to this file authors. Thanks in advance + * + * CHANGES + * ------- + * 2012/05/22 (1.0.8.11) + * - First Release + * + ************************************************************************************* + * + * 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' => 'GNU Octave', + 'COMMENT_SINGLE' => array(1 => '#', 2 => '%'), + // we can't use COMMENT_MULTI since start and end of block comments need to + // be alone on the line (optionally, with whitespace). See COMMENT_REGEXP + 'COMMENT_MULTI' => array(), + // we can't use QUOTEMARKS, not even HARDQUOTE, see COMMENT_REGEXP + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'COMMENT_REGEXP' => array( + // Single quote strings: we can't use QUOTEMARKS here since new + // lines will break the string. Plus, single quote strings do not even + // allow for continuation markers, only double quote strings allow it. + // Also, to do not misdetect the transpose operator ' as the start of a + // string we assert to not follow a variable name (letters, digits and + // underscores) or a closing bracket (round, square or curly) or a dot + // (to form the array transpose operator ".'" ). + 3 => "/(?<![0-9a-zA-Z_\)\]}\.])'.*?'/", + // Double quote strings: we also can't use QUOTEMARKS here (see single + // line quotes). However, with double quote strings both \ and ... can + // be used to make multiline strings. Continuation markers can be + // followed by whitespace + 4 => '/"(.|(\.\.\.|\\\)(\s)*?\n)*?(?<!\\\)"/', + // Block comments: the ms modifiers treat strings as multiple lines (to + // be able to use ^ and $ instead of newline and thus support block + // comments on the first and last line of source) and make . also match + // a newline + 5 => "/^\s*?[%#]{\s*?$.*?^\s*?[%#]}\s*?$/ms", + // Packaging system: comes here so that pkg can also be used in the + // function form. The list of pkg commands is optional to the match so + // that at least pkg is highlighted if new commands are implemented + 6 => "/\bpkg(?!\s*\()\s+((un)?install|update|(un)?load|list|(global|local)_list|describe|prefix|(re)?build)?\b/", + // Function handles + 7 => "/@([a-z_][a-z1-9_]*)?/i", + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_OCT_PREFIX | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_FLT_SCI_ZERO, + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'KEYWORDS' => array( + // Data types + 1 => array( + 'cell', 'char', 'double', 'uint8', 'uint16', 'uint32', 'uint64', + 'int8','int16', 'int32', 'int64', 'logical', 'single', 'struct' + ), + // Storage type + 2 => array( + 'global', 'persistent', 'static' + ), + // Internal variable + 3 => array( + 'ans' + ), + // Reserved words + 4 => array( + 'break', 'case', 'catch', 'continue', 'do', 'else', 'elseif', 'end', + 'end_try_catch', 'end_unwind_protect', 'endfor', 'endfunction', + 'endif', 'endparfor', 'endswitch', 'endwhile', 'for', 'function', + 'if', 'otherwise', 'parfor', 'return', + 'switch', 'try', 'until', 'unwind_protect', + 'unwind_protect_cleanup', 'varargin', 'varargout', 'while' + ), + // Built in + 5 => array( + 'P_tmpdir', 'abs', 'acos', 'acosh', + 'add_input_event_hook', 'addlistener', 'addpath', 'addproperty', + 'all', 'allow_noninteger_range_as_index', 'and', 'angle', 'any', + 'arg', 'argnames', 'argv', 'asin', 'asinh', 'assignin', 'atan', + 'atan2', 'atanh', 'atexit', 'autoload', 'available_graphics_toolkits', + 'beep_on_error', 'bitand', 'bitmax', 'bitor', 'bitshift', 'bitxor', + 'builtin', 'canonicalize_file_name', 'cat', 'cbrt', 'cd', 'ceil', + 'cell2struct', 'cellstr', 'chdir', 'class', 'clc', + 'clear', 'columns', 'command_line_path', 'completion_append_char', + 'completion_matches', 'complex', 'confirm_recursive_rmdir', 'conj', + 'cos', 'cosh', 'cputime', 'crash_dumps_octave_core', 'ctranspose', + 'cumprod', 'cumsum', 'dbclear', 'dbcont', 'dbdown', 'dbnext', + 'dbquit', 'dbstack', 'dbstatus', 'dbstep', 'dbstop', 'dbtype', 'dbup', + 'dbwhere', 'debug_on_error', 'debug_on_interrupt', 'debug_on_warning', + 'default_save_options', 'dellistener', 'diag', 'diary', 'diff', + 'disp', 'do_braindead_shortcircuit_evaluation', 'do_string_escapes', + 'doc_cache_file', 'drawnow', 'dup2', 'echo', + 'echo_executing_commands', 'edit_history','eq', 'erf', 'erfc', + 'erfcx', 'erfinv', 'errno', 'errno_list', 'error', 'eval', 'evalin', + 'exec', 'exist', 'exit', 'exp', 'expm1', 'eye', 'fclear', + 'fclose', 'fcntl', 'fdisp', 'feof', 'ferror', 'feval', 'fflush', + 'fgetl', 'fgets', 'fieldnames', 'file_in_loadpath', 'file_in_path', + 'filemarker', 'filesep', 'find_dir_in_path', 'finite', 'fix', + 'fixed_point_format', 'floor', 'fmod', 'fnmatch', 'fopen', 'fork', + 'format', 'formula', 'fprintf', 'fputs', 'fread', 'freport', + 'frewind', 'fscanf', 'fseek', 'fskipl', 'ftell', 'full', 'func2str', + 'functions', 'fwrite', 'gamma', 'gammaln', 'ge', 'genpath', 'get', + 'get_help_text', 'get_help_text_from_file', 'getegid', 'getenv', + 'geteuid', 'getgid', 'gethostname', 'getpgrp', 'getpid', 'getppid', + 'getuid', 'glob', 'gt', 'history', 'history_control', 'history_file', + 'history_size', 'history_timestamp_format_string', 'home', 'horzcat', + 'hypot', 'ifelse', 'ignore_function_time_stamp', 'imag', + 'inferiorto', 'info_file', 'info_program', 'inline', 'input', + 'intmax', 'intmin', 'ipermute', + 'is_absolute_filename', 'is_dq_string', 'is_function_handle', + 'is_rooted_relative_filename', 'is_sq_string', 'isalnum', 'isalpha', + 'isargout', 'isascii', 'isbool', 'iscell', 'iscellstr', 'ischar', + 'iscntrl', 'iscomplex', 'isdebugmode', 'isdigit', 'isempty', + 'isfield', 'isfinite', 'isfloat', 'isglobal', 'isgraph', 'ishandle', + 'isieee', 'isindex', 'isinf', 'isinteger', 'iskeyword', 'islogical', + 'islower', 'ismatrix', 'ismethod', 'isna', 'isnan', 'isnull', + 'isnumeric', 'isobject', 'isprint', 'ispunct', 'isreal', 'issorted', + 'isspace', 'issparse', 'isstruct', 'isupper', 'isvarname', 'isxdigit', + 'kbhit', 'keyboard', 'kill', 'lasterr', 'lasterror', 'lastwarn', + 'ldivide', 'le', 'length', 'lgamma', 'link', 'linspace', + 'list_in_columns', 'load', 'loaded_graphics_toolkits', 'log', 'log10', + 'log1p', 'log2', 'lower', 'lstat', 'lt', + 'make_absolute_filename', 'makeinfo_program', 'max_recursion_depth', + 'merge', 'methods', 'mfilename', 'minus', 'mislocked', + 'missing_function_hook', 'mkdir', 'mkfifo', 'mkstemp', 'mldivide', + 'mlock', 'mod', 'more', 'mpower', 'mrdivide', 'mtimes', 'munlock', + 'nargin', 'nargout', 'native_float_format', 'ndims', 'ne', + 'nfields', 'nnz', 'norm', 'not', 'nth_element', 'numel', 'nzmax', + 'octave_config_info', 'octave_core_file_limit', + 'octave_core_file_name', 'octave_core_file_options', + 'octave_tmp_file_name', 'onCleanup', 'ones', + 'optimize_subsasgn_calls', 'or', 'output_max_field_width', + 'output_precision', 'page_output_immediately', 'page_screen_output', + 'path', 'pathsep', 'pause', 'pclose', 'permute', 'pipe', 'plus', + 'popen', 'popen2', 'power', 'print_empty_dimensions', + 'print_struct_array_contents', 'printf', 'prod', + 'program_invocation_name', 'program_name', 'putenv', 'puts', 'pwd', + 'quit', 'rats', 'rdivide', 're_read_readline_init_file', + 'read_readline_init_file', 'readdir', 'readlink', 'real', 'realmax', + 'realmin', 'register_graphics_toolkit', 'rehash', 'rem', + 'remove_input_event_hook', 'rename', 'repelems', 'reset', 'reshape', + 'resize', 'restoredefaultpath', 'rethrow', 'rmdir', 'rmfield', + 'rmpath', 'round', 'roundb', 'rows', 'run_history', 'save', + 'save_header_format_string', 'save_precision', 'saving_history', + 'scanf', 'set', 'setenv', 'sighup_dumps_octave_core', 'sign', + 'sigterm_dumps_octave_core', 'silent_functions', 'sin', + 'sinh', 'size', 'size_equal', 'sizemax', 'sizeof', 'sleep', 'sort', + 'source', 'spalloc', 'sparse', 'sparse_auto_mutate', + 'split_long_rows', 'sprintf', 'sqrt', 'squeeze', 'sscanf', 'stat', + 'stderr', 'stdin', 'stdout', 'str2func', 'strcmp', 'strcmpi', + 'string_fill_char', 'strncmp', 'strncmpi', 'struct2cell', + 'struct_levels_to_print', 'strvcat', 'subsasgn', 'subsref', 'sum', + 'sumsq', 'superiorto', 'suppress_verbose_help_message', 'symlink', + 'system', 'tan', 'tanh', 'terminal_size', 'tic', 'tilde_expand', + 'times', 'tmpfile', 'tmpnam', 'toascii', 'toc', 'tolower', 'toupper', + 'transpose', 'typeinfo', + 'umask', 'uminus', 'uname', 'undo_string_escapes', 'unlink', + 'uplus', 'upper', 'usage', 'usleep', 'vec', 'vectorize', 'vertcat', + 'waitfor', 'waitpid', 'warning', 'warranty', 'who', 'whos', + 'whos_line_format', 'yes_or_no', 'zeros' + ), + // Octave functions + 6 => array( + 'accumarray', 'accumdim', 'acosd', 'acot', 'acotd', 'acoth', 'acsc', + 'acscd', 'acsch', 'addpref', 'addtodate', 'allchild', 'amd', + 'ancestor', 'anova', 'arch_fit', 'arch_rnd', 'arch_test', + 'area', 'arma_rnd', 'asctime', 'asec', 'asecd', 'asech', 'asind', + 'assert', 'atand', 'autoreg_matrix', 'autumn', + 'axes', 'axis', 'balance', 'bar', 'barh', 'bartlett', 'bartlett_test', + 'base2dec', 'beep', 'bessel', 'besselj', 'beta', 'betacdf', + 'betainc', 'betainv', 'betaln', 'betapdf', 'betarnd', 'bicg', + 'bicgstab', 'bicubic', 'bin2dec', 'bincoeff', 'binocdf', 'binoinv', + 'binopdf', 'binornd', 'bitcmp', 'bitget', 'bitset', 'blackman', + 'blanks', 'blkdiag', 'bone', 'box', 'brighten', 'bsxfun', + 'bug_report', 'bunzip2', 'bzip2', 'calendar', 'cart2pol', 'cart2sph', + 'cast', 'cauchy_cdf', 'cauchy_inv', 'cauchy_pdf', 'cauchy_rnd', + 'caxis', 'ccolamd', 'cell2mat', 'celldisp', 'cellfun', + 'center', 'cgs', 'chi2cdf', 'chi2inv', 'chi2pdf', 'chi2rnd', + 'chisquare_test_homogeneity', 'chisquare_test_independence', 'chol', + 'chop', 'circshift', 'cla', 'clabel', 'clf', 'clock', + 'cloglog', 'close', 'closereq', 'colamd', 'colloc', 'colon', + 'colorbar', 'colormap', 'colperm', 'colstyle', 'comet', 'comet3', + 'comma', 'common_size', 'commutation_matrix', 'compan', + 'compare_versions', 'compass', 'computer', 'cond', 'condest', + 'contour', 'contour3', 'contourc', 'contourf', 'contrast', 'conv', + 'conv2', 'convhull', 'convhulln', 'cool', 'copper', 'copyfile', + 'cor_test', 'corr', 'cosd', 'cot', 'cotd', 'coth', 'cov', + 'cplxpair', 'cross', 'csc', 'cscd', 'csch', 'cstrcat', + 'csvread', 'csvwrite', 'ctime', 'cumtrapz', 'curl', 'cylinder', + 'daspect', 'daspk', 'dasrt', 'dassl', 'date', 'datenum', 'datestr', + 'datetick', 'datevec', 'dblquad', 'deal', 'deblank', 'debug', + 'dec2base', 'dec2bin', 'dec2hex', 'deconv', 'del2', 'delaunay', + 'delaunay3', 'delaunayn', 'delete', 'demo', 'det', 'detrend', + 'diffpara', 'diffuse', 'dir', 'discrete_cdf', 'discrete_inv', + 'discrete_pdf', 'discrete_rnd', 'display', 'divergence', + 'dlmread', 'dlmwrite', 'dmperm', 'doc', 'dos', 'dot', 'dsearch', + 'dsearchn', 'dump_prefs', 'duplication_matrix', 'durbinlevinson', + 'edit', 'eig', 'eigs', 'ellipsoid', 'empirical_cdf', 'empirical_inv', + 'empirical_pdf', 'empirical_rnd', 'eomday', 'errorbar', + 'etime', 'etreeplot', 'example', 'expcdf', 'expinv', 'expm', 'exppdf', + 'exprnd', 'ezcontour', 'ezcontourf', 'ezmesh', 'ezmeshc', 'ezplot', + 'ezplot3', 'ezpolar', 'ezsurf', 'ezsurfc', 'f_test_regression', + 'fact', 'factor', 'factorial', 'fail', 'fcdf', 'feather', 'fft', + 'fft2', 'fftconv', 'fftfilt', 'fftn', 'fftshift', 'fftw', 'figure', + 'fileattrib', 'fileparts', 'fileread', 'fill', 'filter', 'filter2', + 'find', 'findall', 'findobj', 'findstr', 'finv', 'flag', 'flipdim', + 'fliplr', 'flipud', 'fminbnd', 'fminunc', 'fpdf', 'fplot', + 'fractdiff', 'freqz', 'freqz_plot', 'frnd', 'fsolve', + 'fullfile', 'fzero', 'gamcdf', 'gaminv', 'gammainc', + 'gampdf', 'gamrnd', 'gca', 'gcbf', 'gcbo', 'gcd', 'gcf', + 'gen_doc_cache', 'genvarname', 'geocdf', 'geoinv', 'geopdf', 'geornd', + 'get_first_help_sentence', 'getappdata', 'getfield', 'getgrent', + 'getpref', 'getpwent', 'getrusage', 'ginput', 'givens', 'glpk', + 'gls', 'gmap40', 'gmres', 'gnuplot_binary', 'gplot', + 'gradient', 'graphics_toolkit', 'gray', 'gray2ind', 'grid', + 'griddata', 'griddata3', 'griddatan', 'gtext', 'guidata', + 'guihandles', 'gunzip', 'gzip', 'hadamard', 'hamming', 'hankel', + 'hanning', 'help', 'hess', 'hex2dec', 'hex2num', 'hggroup', 'hidden', + 'hilb', 'hist', 'histc', 'hold', 'hot', 'hotelling_test', + 'hotelling_test_2', 'housh', 'hsv', 'hsv2rgb', 'hurst', 'hygecdf', + 'hygeinv', 'hygepdf', 'hygernd', 'idivide', 'ifftshift', 'image', + 'imagesc', 'imfinfo', 'imread', 'imshow', 'imwrite', 'ind2gray', + 'ind2rgb', 'index', 'info', 'inpolygon', 'inputname', 'int2str', + 'interp1', 'interp1q', 'interp2', 'interp3', 'interpft', 'interpn', + 'intersect', 'inv', 'invhilb', 'iqr', + 'is_leap_year', 'is_valid_file_id', + 'isa', 'isappdata', 'iscolumn', 'isdefinite', 'isdeployed', 'isdir', + 'isequal', 'isequalwithequalnans', 'isfigure', 'ishermitian', + 'ishghandle', 'ishold', 'isletter', 'ismac', 'ismember', 'isocolors', + 'isonormals', 'isosurface', 'ispc', 'ispref', 'isprime', 'isprop', + 'isrow', 'isscalar', 'issquare', 'isstrprop', 'issymmetric', + 'isunix', 'isvector', 'jet', 'kendall', 'kolmogorov_smirnov_cdf', + 'kolmogorov_smirnov_test', 'kolmogorov_smirnov_test_2', 'kron', + 'kruskal_wallis_test', 'krylov', 'kurtosis', 'laplace_cdf', + 'laplace_inv', 'laplace_pdf', 'laplace_rnd', 'lcm', 'legend', + 'legendre', 'license', 'lin2mu', 'line', 'linkprop', 'list_primes', + 'loadaudio', 'loadobj', 'logistic_cdf', 'logistic_inv', + 'logistic_pdf', 'logistic_regression', 'logistic_rnd', 'logit', + 'loglog', 'loglogerr', 'logm', 'logncdf', 'logninv', 'lognpdf', + 'lognrnd', 'logspace', 'lookfor', 'lookup', 'ls', 'ls_command', + 'lsode', 'lsqnonneg', 'lu', 'luinc', 'magic', 'mahalanobis', 'manova', + 'mat2str', 'matlabroot', 'matrix_type', 'max', 'mcnemar_test', + 'md5sum', 'mean', 'meansq', 'median', 'menu', 'mesh', 'meshc', + 'meshgrid', 'meshz', 'mex', 'mexext', 'mgorth', 'mkoctfile', 'mkpp', + 'mode', 'moment', 'movefile', 'mpoles', 'mu2lin', 'namelengthmax', + 'nargchk', 'narginchk', 'nargoutchk', 'nbincdf', 'nbininv', 'nbinpdf', + 'nbinrnd', 'nchoosek', 'ndgrid', 'newplot', 'news', 'nextpow2', + 'nonzeros', 'normcdf', 'normest', 'norminv', 'normpdf', 'normrnd', + 'now', 'nproc', 'nthargout', 'nthroot', 'ntsc2rgb', 'null', 'num2str', + 'ocean', 'ols', 'onenormest', 'optimget', 'optimset', 'orderfields', + 'orient', 'orth', 'pack', 'paren', 'pareto', 'parseparams', 'pascal', + 'patch', 'pathdef', 'pbaspect', 'pcg', 'pchip', 'pcolor', 'pcr', + 'peaks', 'periodogram', 'perl', 'perms', 'pie', 'pie3', + 'pink', 'pinv', 'pkg', 'planerot', 'playaudio', 'plot', 'plot3', + 'plotmatrix', 'plotyy', 'poisscdf', 'poissinv', 'poisspdf', + 'poissrnd', 'pol2cart', 'polar', 'poly', 'polyaffine', 'polyarea', + 'polyder', 'polyfit', 'polygcd', 'polyint', 'polyout', + 'polyreduce', 'polyval', 'polyvalm', 'postpad', 'pow2', 'powerset', + 'ppder', 'ppint', 'ppjumps', 'ppplot', 'ppval', 'pqpnonneg', + 'prctile', 'prepad', 'primes', 'print', 'printAllBuiltins', + 'print_usage', 'prism', 'probit', 'profexplore', 'profile', + 'profshow', 'prop_test_2', 'python', 'qp', 'qqplot', 'qr', 'quad', + 'quadcc', 'quadgk', 'quadl', 'quadv', 'quantile', 'quiver', 'quiver3', + 'qz', 'qzhess', 'rainbow', 'rand', 'randi', 'range', 'rank', 'ranks', + 'rat', 'rcond', 'reallog', 'realpow', 'realsqrt', 'record', + 'rectangle', 'rectint', 'recycle', 'refresh', 'refreshdata', 'regexp', + 'regexptranslate', 'repmat', 'residue', 'rgb2hsv', + 'rgb2ind', 'rgb2ntsc', 'ribbon', 'rindex', 'rmappdata', 'rmpref', + 'roots', 'rose', 'rosser', 'rot90', 'rotdim', 'rref', 'run', + 'run_count', 'run_test', 'rundemos', 'runlength', 'runtests', + 'saveas', 'saveaudio', 'saveobj', 'savepath', 'scatter', + 'scatter3', 'schur', 'sec', 'secd', 'sech', 'semicolon', 'semilogx', + 'semilogxerr', 'semilogy', 'semilogyerr', 'setappdata', 'setaudio', + 'setdiff', 'setfield', 'setpref', 'setxor', 'shading', + 'shg', 'shift', 'shiftdim', 'sign_test', 'sinc', 'sind', + 'sinetone', 'sinewave', 'skewness', 'slice', 'sombrero', 'sortrows', + 'spaugment', 'spconvert', 'spdiags', 'spearman', 'spectral_adf', + 'spectral_xdf', 'specular', 'speed', 'spencer', 'speye', 'spfun', + 'sph2cart', 'sphere', 'spinmap', 'spline', 'spones', 'spparms', + 'sprand', 'sprandn', 'sprandsym', 'spring', 'spstats', 'spy', 'sqp', + 'sqrtm', 'stairs', 'statistics', 'std', 'stdnormal_cdf', + 'stdnormal_inv', 'stdnormal_pdf', 'stdnormal_rnd', 'stem', 'stem3', + 'stft', 'str2double', 'str2num', 'strcat', 'strchr', + 'strfind', 'strjust', 'strmatch', 'strread', 'strsplit', 'strtok', + 'strtrim', 'strtrunc', 'structfun', 'sub2ind', + 'subplot', 'subsindex', 'subspace', 'substr', 'substruct', 'summer', + 'surf', 'surface', 'surfc', 'surfl', 'surfnorm', 'svd', 'svds', + 'swapbytes', 'syl', 'symbfact', 'symrcm', + 'symvar', 'synthesis', 't_test', 't_test_2', 't_test_regression', + 'table', 'tand', 'tar', 'tcdf', 'tempdir', 'tempname', 'test', 'text', + 'textread', 'textscan', 'time', 'tinv', 'title', 'toeplitz', 'tpdf', + 'trace', 'trapz', 'treelayout', 'treeplot', 'tril', 'trimesh', + 'triplequad', 'triplot', 'trisurf', 'trnd', 'tsearch', 'tsearchn', + 'type', 'typecast', 'u_test', 'uicontextmenu', 'uicontrol', + 'uigetdir', 'uigetfile', 'uimenu', 'uipanel', 'uipushtool', + 'uiputfile', 'uiresume', 'uitoggletool', 'uitoolbar', 'uiwait', + 'unidcdf', 'unidinv', 'unidpdf', 'unidrnd', 'unifcdf', 'unifinv', + 'unifpdf', 'unifrnd', 'unimplemented', 'union', 'unique', 'unix', + 'unmkpp', 'unpack', 'untabify', 'untar', 'unwrap', 'unzip', + 'urlwrite', 'usejava', 'validatestring', 'vander', 'var', + 'var_test', 'vech', 'ver', 'version', 'view', 'voronoi', 'voronoin', + 'waitbar', 'waitforbuttonpress', 'warning_ids', 'wavread', 'wavwrite', + 'wblcdf', 'wblinv', 'wblpdf', 'wblrnd', 'weekday', + 'welch_test', 'what', 'which', + 'white', 'whitebg', 'wienrnd', 'wilcoxon_test', 'wilkinson', 'winter', + 'xlabel', 'xlim', 'xor', 'ylabel', 'ylim', 'yulewalker', 'z_test', + 'z_test_2', 'zip', 'zlabel', 'zlim', 'zscore', 'airy', 'arrayfun', + 'besselh', 'besseli', 'besselk', 'bessely', 'bitpack', 'bitunpack', + 'blkmm', 'cellindexmat', 'cellslices', 'chol2inv', 'choldelete', + 'cholinsert', 'cholinv', 'cholshift', 'cholupdate', 'convn', + 'csymamd', 'cummax', 'cummin', 'daspk_options', 'dasrt_options', + 'dassl_options', 'endgrent', 'endpwent', 'etree', 'getgrgid', + 'getgrnam', 'getpwnam', 'getpwuid', 'gmtime', 'gui_mode', 'ifft', + 'ifft2', 'ifftn', 'ind2sub', 'inverse', 'localtime', 'lsode_options', + 'luupdate', 'mat2cell', 'min', 'mktime', 'mouse_wheel_zoom', + 'num2cell', 'num2hex', 'qrdelete', 'qrinsert', 'qrshift', 'qrupdate', + 'quad_options', 'rande', 'randg', 'randn', 'randp', 'randperm', + 'regexpi', 'regexprep', 'rsf2csf', 'setgrent', 'setpwent', 'sprank', + 'strftime', 'strptime', 'strrep', 'svd_driver', 'symamd', 'triu', + 'urlread' + ), + // Private builtin + 7 => array( + '__accumarray_max__', '__accumarray_min__', '__accumarray_sum__', + '__accumdim_sum__', '__builtins__', '__calc_dimensions__', + '__current_scope__', '__display_tokens__', '__dump_symtab_info__', + '__end__', '__get__', '__go_axes__', '__go_axes_init__', + '__go_delete__', '__go_execute_callback__', '__go_figure__', + '__go_figure_handles__', '__go_handles__', '__go_hggroup__', + '__go_image__', '__go_line__', '__go_patch__', '__go_surface__', + '__go_text__', '__go_uicontextmenu__', '__go_uicontrol__', + '__go_uimenu__', '__go_uipanel__', '__go_uipushtool__', + '__go_uitoggletool__', '__go_uitoolbar__', '__gud_mode__', + '__image_pixel_size__', '__is_handle_visible__', '__isa_parent__', + '__keywords__', '__lexer_debug_flag__', '__list_functions__', + '__operators__', '__parent_classes__', '__parser_debug_flag__', + '__pathorig__', '__profiler_data__', '__profiler_enable__', + '__profiler_reset__', '__request_drawnow__', '__sort_rows_idx__', + '__token_count__', '__varval__', '__version_info__', '__which__' + ), + // Private Octave functions + 8 => array( + '__all_opts__', '__contourc__', '__delaunayn__', '__dispatch__', + '__dsearchn__', '__finish__', '__fltk_uigetfile__', + '__glpk__', '__gnuplot_drawnow__', '__init_fltk__', + '__init_gnuplot__', '__lin_interpn__', '__magick_read__', + '__makeinfo__', '__pchip_deriv__', '__plt_get_axis_arg__', '__qp__', + '__voronoi__', '__fltk_maxtime__', '__fltk_redraw__', '__ftp__', + '__ftp_ascii__', '__ftp_binary__', '__ftp_close__', '__ftp_cwd__', + '__ftp_delete__', '__ftp_dir__', '__ftp_mget__', '__ftp_mkdir__', + '__ftp_mode__', '__ftp_mput__', '__ftp_pwd__', '__ftp_rename__', + '__ftp_rmdir__', '__magick_finfo__', '__magick_format_list__', + '__magick_write__' + ), + // Builtin Global Variables + 9 => array( + 'EDITOR', 'EXEC_PATH', 'F_DUPFD', 'F_GETFD', 'F_GETFL', 'F_SETFD', + 'F_SETFL', 'IMAGE_PATH', 'OCTAVE_HOME', + 'OCTAVE_VERSION', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_EXCL', + 'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_SYNC', 'O_TRUNC', 'O_WRONLY', + 'PAGER', 'PAGER_FLAGS', 'PS1', 'PS2', 'PS4', 'SEEK_CUR', 'SEEK_END', + 'SEEK_SET', 'SIG', 'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISFIFO', + 'S_ISLNK', 'S_ISREG', 'S_ISSOCK', 'WCONTINUE', 'WCOREDUMP', + 'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED', + 'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED' + ), + // Constant functions + 10 => array ( + 'e', 'eps', 'inf', 'Inf', 'nan', 'NaN', 'NA', 'pi', 'i', 'I', 'j', + 'J', 'true', 'false' + ), + ), + 'SYMBOLS' => array( + // Comparison & logical + 0 => array( + '!', '!=', '&', '&&','|', '||', '~', '~=', + '<', '<=', '==', '>', '>=' + ), + // Aritmethical + 1 => array( + '*', '**', '+', '++', '-', '--', '/', "\\","'" + ), + // Elementwise arithmetical + 2 => array( + '.*', '.**','./', '.^', '^',".\\",".'" + ), + // Arithmetical & assignation + 3 => array( + '*=','+=','-=','/=','\=','**=','^=', + '.*=','.+=','.-=','./=','.\=','.**=','.^=','=' + ), + // Indexer + 4 => array( + ':' + ), + // Delimiters + 5 => array( + ',', '...', ';' + ), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + 9 => true, + 10 => true, + ), + 'URLS' => array( + 1 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html', + 2 => '', + 3 => '', + 4 => '', + 5 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html', + 6 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html', + 7 => '', + 8 => '', + 9 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html', + 10 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html', + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + ), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'STYLES' => array( + 'COMMENTS' => array( + 1 => 'color: #0000FF; font-style: italic;', // single quote strings + 2 => 'color: #0000FF; font-style: italic;', // double quote strings + 3 => 'color: #FF00FF; font-style: italic;', // single quote strings + 4 => 'color: #FF00FF; font-style: italic;', // double quote strings + 5 => 'color: #0000FF; font-style: italic;', // block comments + 6 => 'color: #996600; font-weight:bold;', // packaging system + 7 => 'color: #006600; font-weight:bold;', // function handles + 'MULTI' => 'color: #0000FF; font-style: italic;', + ), + 'KEYWORDS' => array( + 1 => 'color: #2E8B57; font-weight:bold;', // Data types + 2 => 'color: #2E8B57;', // Storage type + 3 => 'color: #0000FF; font-weight:bold;', // Internal variable + 4 => 'color: #990000; font-weight:bold;', // Reserved words + 5 => 'color: #008A8C; font-weight:bold;', // Built-in + 6 => 'color: #008A8C;', // Octave functions + 9 => 'color: #000000; font-weight:bold;', // Builtin Global Variables + 10 => 'color: #008A8C; font-weight:bold;', // Constant functions + ), + 'ESCAPE_CHAR' => array(), + 'BRACKETS' => array( + 0 => 'color: #080;', + ), + 'STRINGS' => array( + // strings were specified on the COMMENT_REGEXP section + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + ), + 'METHODS' => array(), + 'SYMBOLS' => array( + 0 => 'color: #FF9696; font-weight:bold;', // Comparison & logical + 1 => 'color: #CC0000; font-weight:bold;', // Aritmethical + 2 => 'color: #993333; font-weight:bold;', // Elementwise arithmetical + 3 => 'color: #FF0000; font-weight:bold;', // Arithmetical & assignation + 4 => 'color: #33F;', // Indexer + 5 => 'color: #33F;', // Delimiters + ), + 'REGEXPS' => array(), + 'SCRIPT' => array(), + ) +); + +?> diff --git a/inc/geshi/oobas.php b/inc/geshi/oobas.php index f4e15893a..ff75af65f 100644 --- a/inc/geshi/oobas.php +++ b/inc/geshi/oobas.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * OpenOffice.org Basic language file for GeSHi. diff --git a/inc/geshi/oorexx.php b/inc/geshi/oorexx.php new file mode 100644 index 000000000..62c6cc463 --- /dev/null +++ b/inc/geshi/oorexx.php @@ -0,0 +1,171 @@ +<?php +/************************************************************************************* + * oorexx.php + * --------------------------------- + * Author: Jon Wolfers (sahananda@windhorse.biz) + * Contributors: + * - Walter Pachl (pachl@chello.at) + * Copyright: (c) 2008 Jon Wolfers, (c) 2012 Walter Pachl + * Release Version: 1.0.8.11 + * Date Started: 2008/01/07 + * + * ooRexx language file for GeSHi. + * + * CHANGES + * ------- + * 2012/07/29 (1.0.0) + * - tried to get it syntactically right + * + * TODO (updated 2012/07/29) + * ------------------------- + * - Get it working on rosettacode.org + * + ************************************************************************************* + * + * 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' => 'ooRexx', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'address', 'arg', 'attribute', 'call', 'constant', 'do', + 'drop', 'exit', 'if', + 'interpret', 'iterate', 'leave', 'loop', 'nop', 'numeric', + 'parse', 'procedure', 'pull', 'push', 'queue', + 'raise', 'reply', 'return', 'say', 'select', 'signal', + 'use' + ), + 2 => array( + 'abstract', 'any', 'arguments', 'array', 'by', + 'continue', 'digits', 'engineering', 'error', + 'expose', 'external', 'failure', 'for', 'forever', + 'forward', 'get', 'guard', 'guarded', 'halt', + 'inherit', 'library', 'lostdigits', 'message', + 'metaclass', 'mixinclass', 'name', 'nomethod', 'nostring', + 'notready', 'novalue', 'off', 'on', 'options', 'over', + 'private', 'protected', 'public', 'scientific', 'set', + 'source', 'subclass', 'syntax', 'to', 'unguarded', + 'unprotected', 'until', 'user', + 'version', 'while', 'with' + ), + 3 => array( + 'else', 'end', 'otherwise', 'then', 'when' + ), + 4 => array( + 'rc', 'result', 'self', 'sigl', 'super' + ), + 5 => array( + '::attribute', '::class', '::constant', '::method', + '::optins', '::requires', '::routine' + ), + 6 => array( + 'abbrev', 'abs', 'beep', 'bitand', 'bitor', + 'bitxor', 'b2x', 'center', 'centre', 'changestr', 'charin', + 'charout', 'chars', 'compare', 'condition', 'copies', + 'countstr', 'c2d', 'c2x', 'datatype', 'date', 'delstr', + 'delword', 'directory', 'd2c', 'd2x', 'endlocal', + 'errortext', 'filespec', 'form', 'format', 'fuzz', 'insert', + 'lastpos', 'left', 'length', 'linein', 'lineout', 'lines', + 'lower', 'max', 'min', 'overlay', 'pos', 'qualify', 'queued', + 'random', 'reverse', 'right', 'rxfuncadd', 'rxfuncdrop', + 'rxfuncquery', 'rxqueue', 'setlocal', 'sign', 'sourceline', + 'space', 'stream', 'strip', 'substr', 'subword', 'symbol', + 'time', 'trace', 'translate', 'trunc', 'upper', 'userid', + 'value', 'var', 'verify', 'word', 'wordindex', 'wordlength', + 'wordpos', 'words', 'xrange', 'x2b', 'x2c', 'x2d' + ) + ), + 'SYMBOLS' => array( + '(', ')', '<', '>', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', + '<', '>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #ff0000; font-weight: bold;', + 3 => 'color: #00ff00; font-weight: bold;', + 4 => 'color: #0000ff; font-weight: bold;', + 5 => 'color: #880088; font-weight: bold;', + 6 => 'color: #888800; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 'MULTI' => 'color: #808080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?> diff --git a/inc/geshi/oracle11.php b/inc/geshi/oracle11.php index bd3d30501..16259e695 100644 --- a/inc/geshi/oracle11.php +++ b/inc/geshi/oracle11.php @@ -6,7 +6,7 @@ * Contributions: * - Updated for 11i by Simon Redhead * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * Oracle 11i language file for GeSHi. diff --git a/inc/geshi/oracle8.php b/inc/geshi/oracle8.php index bc80735c4..145bda407 100644 --- a/inc/geshi/oracle8.php +++ b/inc/geshi/oracle8.php @@ -4,7 +4,7 @@ * ----------- * Author: Guy Wicks (Guy.Wicks@rbs.co.uk) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * Oracle 8 language file for GeSHi. diff --git a/inc/geshi/oxygene.php b/inc/geshi/oxygene.php index cfab3d34f..bc2ee6563 100644 --- a/inc/geshi/oxygene.php +++ b/inc/geshi/oxygene.php @@ -4,7 +4,7 @@ * ---------- * Author: Carlo Kok (ck@remobjects.com), J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/01/11 * * Delphi Prism (Oxygene) language file for GeSHi. @@ -12,6 +12,8 @@ * * CHANGES * ------- + * 2012/06/28 (1.0.8.11) + * - Added "write" keyword for properties * 2010/01/11 (1.0.0) * - First Release * @@ -66,7 +68,7 @@ $language_data = array ( 'Implies', 'Select', 'Order', 'By', 'Desc', 'Asc', 'Group', 'Join', 'Take', 'Skip', 'Concat', 'Union', 'Reverse', 'Distinct', 'Into', 'Equals', 'params', 'sequence', 'index', 'notify', 'Parallel', 'create', 'array', 'Queryable', 'Aspect', - 'volatile' + 'volatile', 'write' ), 3 => array( 'chr', 'ord', 'inc', 'dec', 'assert', 'iff', 'assigned','futureAssigned', 'length', 'low', 'high', 'typeOf', 'sizeOf', 'disposeAndNil', 'Coalesce', 'unquote' diff --git a/inc/geshi/oz.php b/inc/geshi/oz.php index f371a6457..d24561bf0 100644 --- a/inc/geshi/oz.php +++ b/inc/geshi/oz.php @@ -4,7 +4,7 @@ * -------- * Author: Wolfgang Meyer (Wolfgang.Meyer@gmx.net) * Copyright: (c) 2010 Wolfgang Meyer - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/01/03 * * Oz language file for GeSHi. diff --git a/inc/geshi/parasail.php b/inc/geshi/parasail.php new file mode 100644 index 000000000..864eba1e9 --- /dev/null +++ b/inc/geshi/parasail.php @@ -0,0 +1,133 @@ +<?php +/************************************************************************************* + * parasail.php + * ------- + * Author: T. Taft (taft@adacore.com) + * Copyright: (c) 2012 AdaCore (http://adacore.com/) + * Release Version: 1.0.8.11 + * Date Started: 2012/08/02 + * + * ParaSail language file for GeSHi. + * + * Words are from SciTe configuration file + * + * CHANGES + * ------- + * 2012/08/02 (1.0.0) + * - First Release + * + * TODO (updated 2012/08/02) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'ParaSail', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('{' => '}'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'all', 'block', 'case', 'continue', 'each', + 'else', 'elsif', 'exit', 'for', + 'forward', 'if', 'loop', 'return', 'reverse', 'some', + 'then', 'until', 'while', 'with' + ), + 2 => array( + 'abs', 'and','in', 'mod', 'not', 'null', 'or', 'rem', 'xor' + ), + 3 => array( + 'abstract', 'class', + 'concurrent', 'const', + 'end', 'extends', 'exports', + 'func', 'global', 'implements', 'import', + 'interface', 'is', 'lambda', 'locked', + 'new', 'of', 'op', 'optional', + 'private', 'queued', 'ref', + 'separate', 'type', 'var', + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '<', '>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f;', + 2 => 'color: #0000ff;', + 3 => 'color: #46aa03; font-weight:bold;', + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + 1 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/parigp.php b/inc/geshi/parigp.php new file mode 100644 index 000000000..c9c73095b --- /dev/null +++ b/inc/geshi/parigp.php @@ -0,0 +1,277 @@ +<?php +/************************************************************************************* + * parigp.php + * -------- + * Author: Charles R Greathouse IV (charles@crg4.com) + * Copyright: 2011 Charles R Greathouse IV (http://math.crg4.com/) + * Release Version: 1.0.8.11 + * Date Started: 2011/05/11 + * + * PARI/GP language file for GeSHi. + * + * CHANGES + * ------- + * 2011/07/09 (1.0.8.11) + * - First Release + * + * TODO (updated 2011/07/09) + * ------------------------- + * + * + ************************************************************************************* + * + * 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' => 'PARI/GP', + 'COMMENT_SINGLE' => array(1 => '\\\\'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'NUMBERS' => array( + # Integers + 1 => GESHI_NUMBER_INT_BASIC, + # Reals + 2 => GESHI_NUMBER_FLT_SCI_ZERO + ), + 'KEYWORDS' => array( + 1 => array( + 'addprimes','bestappr','bezout','bezoutres','bigomega','binomial', + 'chinese','content','contfrac','contfracpnqn','core','coredisc', + 'dirdiv','direuler','dirmul','divisors','eulerphi','factor', + 'factorback','factorcantor','factorff','factorial','factorint', + 'factormod','ffgen','ffinit','fflog','fforder','ffprimroot', + 'fibonacci','gcd','hilbert','isfundamental','ispower','isprime', + 'ispseudoprime','issquare','issquarefree','kronecker','lcm', + 'moebius','nextprime','numbpart','numdiv','omega','partitions', + 'polrootsff','precprime','prime','primepi','primes','qfbclassno', + 'qfbcompraw','qfbhclassno','qfbnucomp','qfbnupow','qfbpowraw', + 'qfbprimeform','qfbred','qfbsolve','quadclassunit','quaddisc', + 'quadgen','quadhilbert','quadpoly','quadray','quadregulator', + 'quadunit','removeprimes','sigma','sqrtint','stirling', + 'sumdedekind','zncoppersmith','znlog','znorder','znprimroot', + 'znstar','Col','List','Mat','Mod','Pol','Polrev','Qfb','Ser','Set', + 'Str','Strchr','Strexpand','Strtex','Vec','Vecrev','Vecsmall', + 'binary','bitand','bitneg','bitnegimply','bitor','bittest','bitxor', + 'ceil','centerlift','component','conj','conjvec','denominator', + 'floor','frac','imag','length','lift','norm','norml2','numerator', + 'numtoperm','padicprec','permtonum','precision','random','real', + 'round','simplify','sizebyte','sizedigit','truncate','valuation', + 'variable','ellL1','elladd','ellak','ellan','ellanalyticrank', + 'ellap','ellbil','ellchangecurve','ellchangepoint','ellconvertname', + 'elldivpol','elleisnum','elleta','ellgenerators','ellglobalred', + 'ellgroup','ellheight','ellheightmatrix','ellidentify','ellinit', + 'ellisoncurve','ellj','elllocalred','elllog','elllseries', + 'ellminimalmodel','ellmodulareqn','ellorder','ellordinate', + 'ellpointtoz','ellpow','ellrootno','ellsearch','ellsigma','ellsub', + 'elltaniyama','elltatepairing','elltors','ellweilpairing','ellwp', + 'ellzeta','ellztopoint','bnfcertify','bnfcompress', + 'bnfdecodemodule','bnfinit','bnfisintnorm','bnfisnorm', + 'bnfisprincipal','bnfissunit','bnfisunit','bnfnarrow','bnfsignunit', + 'bnfsunit','bnrL1','bnrclassno','bnrclassnolist','bnrconductor', + 'bnrconductorofchar','bnrdisc','bnrdisclist','bnrinit', + 'bnrisconductor','bnrisprincipal','bnrrootnumber','bnrstark', + 'dirzetak','factornf','galoisexport','galoisfixedfield', + 'galoisgetpol','galoisidentify','galoisinit','galoisisabelian', + 'galoisisnormal','galoispermtopol','galoissubcyclo', + 'galoissubfields','galoissubgroups','idealadd','idealaddtoone', + 'idealappr','idealchinese','idealcoprime','idealdiv','idealfactor', + 'idealfactorback','idealfrobenius','idealhnf','idealintersect', + 'idealinv','ideallist','ideallistarch','ideallog','idealmin', + 'idealmul','idealnorm','idealpow','idealprimedec','idealramgroups', + 'idealred','idealstar','idealtwoelt','idealval','matalgtobasis', + 'matbasistoalg','modreverse','newtonpoly','nfalgtobasis','nfbasis', + 'nfbasistoalg','nfdetint','nfdisc','nfeltadd','nfeltdiv', + 'nfeltdiveuc','nfeltdivmodpr','nfeltdivrem','nfeltmod','nfeltmul', + 'nfeltmulmodpr','nfeltnorm','nfeltpow','nfeltpowmodpr', + 'nfeltreduce','nfeltreducemodpr','nfelttrace','nfeltval','nffactor', + 'nffactorback','nffactormod','nfgaloisapply','nfgaloisconj', + 'nfhilbert','nfhnf','nfhnfmod','nfinit','nfisideal','nfisincl', + 'nfisisom','nfkermodpr','nfmodprinit','nfnewprec','nfroots', + 'nfrootsof1','nfsnf','nfsolvemodpr','nfsubfields','polcompositum', + 'polgalois','polred','polredabs','polredord','poltschirnhaus', + 'rnfalgtobasis','rnfbasis','rnfbasistoalg','rnfcharpoly', + 'rnfconductor','rnfdedekind','rnfdet','rnfdisc','rnfeltabstorel', + 'rnfeltdown','rnfeltreltoabs','rnfeltup','rnfequation', + 'rnfhnfbasis','rnfidealabstorel','rnfidealdown','rnfidealhnf', + 'rnfidealmul','rnfidealnormabs','rnfidealnormrel', + 'rnfidealreltoabs','rnfidealtwoelt','rnfidealup','rnfinit', + 'rnfisabelian','rnfisfree','rnfisnorm','rnfisnorminit','rnfkummer', + 'rnflllgram','rnfnormgroup','rnfpolred','rnfpolredabs', + 'rnfpseudobasis','rnfsteinitz','subgrouplist','zetak','zetakinit', + 'plot','plotbox','plotclip','plotcolor','plotcopy','plotcursor', + 'plotdraw','ploth','plothraw','plothsizes','plotinit','plotkill', + 'plotlines','plotlinetype','plotmove','plotpoints','plotpointsize', + 'plotpointtype','plotrbox','plotrecth','plotrecthraw','plotrline', + 'plotrmove','plotrpoint','plotscale','plotstring','psdraw', + 'psploth','psplothraw','O','deriv','diffop','eval','factorpadic', + 'intformal','padicappr','padicfields','polchebyshev','polcoeff', + 'polcyclo','poldegree','poldisc','poldiscreduced','polhensellift', + 'polhermite','polinterpolate','polisirreducible','pollead', + 'pollegendre','polrecip','polresultant','polroots','polrootsmod', + 'polrootspadic','polsturm','polsubcyclo','polsylvestermatrix', + 'polsym','poltchebi','polzagier','serconvol','serlaplace', + 'serreverse','subst','substpol','substvec','taylor','thue', + 'thueinit','break','for','fordiv','forell','forprime','forstep', + 'forsubgroup','forvec','if','next','return','until','while', + 'Strprintf','addhelp','alarm','alias','allocatemem','apply', + 'default','error','extern','externstr','getheap','getrand', + 'getstack','gettime','global','input','install','kill','print1', + 'print','printf','printtex','quit','read','readvec','select', + 'setrand','system','trap','type','version','warning','whatnow', + 'write1','write','writebin','writetex','divrem','lex','max','min', + 'shift','shiftmul','sign','vecmax','vecmin','derivnum','intcirc', + 'intfouriercos','intfourierexp','intfouriersin','intfuncinit', + 'intlaplaceinv','intmellininv','intmellininvshort','intnum', + 'intnuminit','intnuminitgen','intnumromb','intnumstep','prod', + 'prodeuler','prodinf','solve','sum','sumalt','sumdiv','suminf', + 'sumnum','sumnumalt','sumnuminit','sumpos','Euler','I','Pi','abs', + 'acos','acosh','agm','arg','asin','asinh','atan','atanh','bernfrac', + 'bernreal','bernvec','besselh1','besselh2','besseli','besselj', + 'besseljh','besselk','besseln','cos','cosh','cotan','dilog','eint1', + 'erfc','eta','exp','gamma','gammah','hyperu','incgam','incgamc', + 'lngamma','log','polylog','psi','sin','sinh','sqr','sqrt','sqrtn', + 'tan','tanh','teichmuller','theta','thetanullk','weber','zeta', + 'algdep','charpoly','concat','lindep','listcreate','listinsert', + 'listkill','listpop','listput','listsort','matadjoint', + 'matcompanion','matdet','matdetint','matdiagonal','mateigen', + 'matfrobenius','mathess','mathilbert','mathnf','mathnfmod', + 'mathnfmodid','matid','matimage','matimagecompl','matindexrank', + 'matintersect','matinverseimage','matisdiagonal','matker', + 'matkerint','matmuldiagonal','matmultodiagonal','matpascal', + 'matrank','matrix','matrixqz','matsize','matsnf','matsolve', + 'matsolvemod','matsupplement','mattranspose','minpoly','qfgaussred', + 'qfjacobi','qflll','qflllgram','qfminim','qfperfection','qfrep', + 'qfsign','setintersect','setisset','setminus','setsearch','cmp', + 'setunion','trace','vecextract','vecsort','vector','vectorsmall', + 'vectorv','ellheegner' + ), + + 2 => array( + 'void','bool','negbool','small','int',/*'real',*/'mp','var','lg','pol', + 'vecsmall','vec','list','str','genstr','gen','typ' + ), + + 3 => array( + 'TeXstyle','breakloop','colors','compatible','datadir','debug', + 'debugfiles','debugmem','echo','factor_add_primes','factor_proven', + 'format','graphcolormap','graphcolors','help','histfile','histsize', + 'lines','linewrap',/*'log',*/'logfile','new_galois_format','output', + 'parisize','path','prettyprinter','primelimit','prompt_cont', + 'prompt','psfile','readline','realprecision','recover','secure', + 'seriesprecision',/*'simplify',*/'strictmatch','timer' + ), + + 4 => array( + 'alarmer','archer','errpile','gdiver','impl','syntaxer','invmoder', + 'overflower','talker','typeer','user' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(',')','{','}','[',']','+','-','*','/','%','=','<','>','!','^','&','|','?',';',':',',','\\','\'' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000ff;', + 2 => 'color: #e07022;', + 3 => 'color: #00d2d2;', + 4 => 'color: #00d2d2;' + ), + 'COMMENTS' => array( + 1 => 'color: #008000;', + 'MULTI' => 'color: #008000;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #111111; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #002222;' + ), + 'STRINGS' => array( + 0 => 'color: #800080;' + ), + 'NUMBERS' => array( + 0 => 'color: #666666;', + 1 => 'color: #666666;', + 2 => 'color: #666666;' + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array( + 0 => 'color: #e07022', # Should be the same as keyword group 2 + 1 => 'color: #555555' + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + 0 => array( # types marked on variables + GESHI_SEARCH => '(?<!\\\\ )"(t_(?:INT|REAL|INTMOD|FRAC|FFELT|COMPLEX|PADIC|QUAD|POLMOD|POL|SER|RFRAC|QFR|QFI|VEC|COL|MAT|LIST|STR|VECSMALL|CLOSURE))"', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '"', + GESHI_AFTER => '"' + ), + 1 => array( # literal variables + GESHI_SEARCH => '(?<!\\\\)(\'[a-zA-Z][a-zA-Z0-9_]*)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ) + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + 2 => array( + '[a-zA-Z][a-zA-Z0-9_]*:' => '' + ), + 3 => array( + 'default(' => '' + ), + 4 => array( + 'trap(' => '' + ), + ), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?> diff --git a/inc/geshi/pascal.php b/inc/geshi/pascal.php index 2252a11de..de5ca8717 100644 --- a/inc/geshi/pascal.php +++ b/inc/geshi/pascal.php @@ -4,7 +4,7 @@ * ---------- * Author: Tux (tux@inamil.cz) * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/26 * * Pascal language file for GeSHi. @@ -50,12 +50,13 @@ $language_data = array ( 'LANG_NAME' => 'Pascal', 'COMMENT_SINGLE' => array(1 => '//'), - 'COMMENT_MULTI' => array('{' => '}','(*' => '*)'), + 'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'), + //Compiler directives + 'COMMENT_REGEXP' => array(2 => '/\\{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, - 'QUOTEMARKS' => array('"'), - 'HARDQUOTE' => array("'", "'"), - 'HARDESCAPE' => array("''"), - 'ESCAPE_CHAR' => '\\', + 'QUOTEMARKS' => array("'"), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( 1 => array( 'absolute','asm','assembler','begin','break','case','catch','cdecl', @@ -67,7 +68,7 @@ $language_data = array ( 'or','overload','override','private','procedure','program', 'property','protected','public','published','raise','repeat', 'resourcestring','shl','shr','stdcall','stored','switch','then', - 'to','try','type','unit','until','uses','var','while','xor' + 'to','try','type','unit','until','uses','var','while','with','xor' ), 2 => array( 'nil', 'false', 'true', @@ -83,9 +84,6 @@ $language_data = array ( 'record','set','shortint','smallint','string','union','word' ), ), - 'SYMBOLS' => array( - ',', ':', '=', '+', '-', '*', '/' - ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, 1 => false, @@ -93,6 +91,12 @@ $language_data = array ( 3 => false, 4 => false, ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']'), + 1 => array('.', ',', ':', ';'), + 2 => array('@', '^'), + 3 => array('=', '+', '-', '*', '/') + ), 'STYLES' => array( 'KEYWORDS' => array( 1 => 'color: #000000; font-weight: bold;', @@ -101,30 +105,35 @@ $language_data = array ( 4 => 'color: #000066; font-weight: bold;' ), 'COMMENTS' => array( - 1 => 'color: #666666; font-style: italic;', - 'MULTI' => 'color: #666666; font-style: italic;' + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #008000; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' ), 'ESCAPE_CHAR' => array( - 0 => 'color: #000099; font-weight: bold;', - 'HARD' => 'color: #000099; font-weight: bold;' + 0 => 'color: #ff0000; font-weight: bold;' ), 'BRACKETS' => array( 0 => 'color: #009900;' ), 'STRINGS' => array( 0 => 'color: #ff0000;', - 'HARD' => 'color: #ff0000;' + //'HARD' => 'color: #ff0000;' ), 'NUMBERS' => array( 0 => 'color: #cc66cc;' ), 'METHODS' => array( - 1 => 'color: #0066ee;' - ), - 'SYMBOLS' => array( - 0 => 'color: #339933;' + 1 => 'color: #006600;' ), 'REGEXPS' => array( + 0 => 'color: #0000cc;', + 1 => 'color: #ff0000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000066;', + 1 => 'color: #000066;', + 2 => 'color: #000066;', + 3 => 'color: #000066;' ), 'SCRIPT' => array( ) @@ -140,6 +149,10 @@ $language_data = array ( 1 => '.' ), 'REGEXPS' => array( + //Hex numbers + 0 => '\$[0-9a-fA-F]+', + //Characters + 1 => '\#(?:\$[0-9a-fA-F]{1,2}|\d{1,3})' ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -149,4 +162,4 @@ $language_data = array ( 'TAB_WIDTH' => 4 ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/pcre.php b/inc/geshi/pcre.php index 1944bfdb3..13a2e024d 100644 --- a/inc/geshi/pcre.php +++ b/inc/geshi/pcre.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/05/22 * * PCRE language file for GeSHi. diff --git a/inc/geshi/per.php b/inc/geshi/per.php index 9819c03f5..c42ddb58a 100644 --- a/inc/geshi/per.php +++ b/inc/geshi/per.php @@ -4,7 +4,7 @@ * -------- * Author: Lars Gersmann (lars.gersmann@gmail.com) * Copyright: (c) 2007 Lars Gersmann - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/06/03 * * Per (forms) (FOURJ's Genero 4GL) language file for GeSHi. diff --git a/inc/geshi/perl.php b/inc/geshi/perl.php index 487fd0515..309ebd861 100644 --- a/inc/geshi/perl.php +++ b/inc/geshi/perl.php @@ -4,7 +4,7 @@ * -------- * Author: Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/20 * * Perl language file for GeSHi. diff --git a/inc/geshi/perl6.php b/inc/geshi/perl6.php index 701e0b59c..706eabcb5 100644 --- a/inc/geshi/perl6.php +++ b/inc/geshi/perl6.php @@ -4,7 +4,7 @@ * --------- * Author: Kodi Arfer (kodiarfer {at} warpmail {period} net); forked from perl.php 1.0.8 by Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2009 Kodi Arfer, (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/11/07 * * Perl 6 language file for GeSHi. diff --git a/inc/geshi/pf.php b/inc/geshi/pf.php index a89e97ff0..818e11bcb 100644 --- a/inc/geshi/pf.php +++ b/inc/geshi/pf.php @@ -4,7 +4,7 @@ * -------- * Author: David Berard (david@nfrance.com) * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/16 * Based on bash.php * diff --git a/inc/geshi/php-brief.php b/inc/geshi/php-brief.php index d47737883..a4804b4da 100644 --- a/inc/geshi/php-brief.php +++ b/inc/geshi/php-brief.php @@ -4,7 +4,7 @@ * ------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/02 * * PHP (brief version) language file for GeSHi. @@ -169,7 +169,7 @@ $language_data = array ( ), 'REGEXPS' => array( //Variables - 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*" + 0 => "[\\$]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" ), 'STRICT_MODE_APPLIES' => GESHI_MAYBE, 'SCRIPT_DELIMITERS' => array( diff --git a/inc/geshi/php.php b/inc/geshi/php.php index b36544213..2827457b1 100644 --- a/inc/geshi/php.php +++ b/inc/geshi/php.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/20 * * PHP language file for GeSHi. @@ -96,8 +96,9 @@ $language_data = array( ), 2 => array( '&new','</script>','<?php','<script language', - 'class','const','declare','extends','function','global','interface', - 'namespace','new','private','protected','public','self','use','var' + 'abstract','class','const','declare','extends','function','global', + 'interface','namespace','new','private','protected','public','self', + 'use','var' ), 3 => array( 'abs','acos','acosh','addcslashes','addslashes','aggregate', @@ -1061,7 +1062,7 @@ $language_data = array( ), 'REGEXPS' => array( //Variables - 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*" + 0 => "[\\$]+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" ), 'STRICT_MODE_APPLIES' => GESHI_MAYBE, 'SCRIPT_DELIMITERS' => array( @@ -1083,22 +1084,24 @@ $language_data = array( "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|". "(?>\"(?>[^\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|". "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|". - "\\/\\/(?>.*?$)|". + "\\/\\/(?>.*?(?:\\?>|$))|". + "#(?>.*?(?:\\?>|$))|". "\\/(?=[^*\\/])|". "<(?!<<)|". "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>". - ")*(?P<end>\\?>|\Z)/sm", + ")*?(?P<end>\\?>|\Z)/sm", 5 => "/(?P<start><%)(?:". "(?>[^\"'%\\/<]+)|". "%(?!>)|". "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|". "(?>\"(?>[^\\\"\\\\]|\\\\\"|\\\\\\\\|\\\\)*\")|". "(?>\\/\\*(?>[^\\*]|(?!\\*\\/)\\*)*\\*\\/)|". - "\\/\\/(?>.*?$)|". + "\\/\\/(?>.*?(?:%>|$))|". + "#(?>.*?(?:%>|$))|". "\\/(?=[^*\\/])|". "<(?!<<)|". "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>". - ")*(?P<end>%>)/sm", + ")*?(?P<end>%>|\Z)/sm", ), 'HIGHLIGHT_STRICT_BLOCK' => array( 0 => true, @@ -1111,4 +1114,4 @@ $language_data = array( 'TAB_WIDTH' => 4 ); -?>
\ No newline at end of file +?> diff --git a/inc/geshi/pic16.php b/inc/geshi/pic16.php index 94e098293..46d7ac94d 100644 --- a/inc/geshi/pic16.php +++ b/inc/geshi/pic16.php @@ -4,7 +4,7 @@ * ------- * Author: Phil Mattison (mattison@ohmikron.com) * Copyright: (c) 2008 Ohmikron Corp. (http://www.ohmikron.com/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/07/30 * * PIC16 Assembler language file for GeSHi. diff --git a/inc/geshi/pike.php b/inc/geshi/pike.php index a3de9082e..743f711b1 100644 --- a/inc/geshi/pike.php +++ b/inc/geshi/pike.php @@ -4,7 +4,7 @@ * -------- * Author: Rick E. (codeblock@eighthbit.net) * Copyright: (c) 2009 Rick E. - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/12/10 * * Pike language file for GeSHi. diff --git a/inc/geshi/pixelbender.php b/inc/geshi/pixelbender.php index b9fe1aff2..7b29ee6c3 100644 --- a/inc/geshi/pixelbender.php +++ b/inc/geshi/pixelbender.php @@ -4,7 +4,7 @@ * ---------------- * Author: Richard Olsson (r@richardolsson.se) * Copyright: (c) 2008 Richard Olsson (richardolsson.se) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/11/16 * * Pixel Bender 1.0 language file for GeSHi. diff --git a/inc/geshi/pli.php b/inc/geshi/pli.php index 1d6eefd9b..c29985140 100644 --- a/inc/geshi/pli.php +++ b/inc/geshi/pli.php @@ -4,7 +4,7 @@ * -------- * Author: Robert AH Prins (robert@prino.org) * Copyright: (c) 2011 Robert AH Prins (http://hitchwiki.org/en/User:Prino) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2011/02/09 * * PL/I language file for GeSHi. diff --git a/inc/geshi/plsql.php b/inc/geshi/plsql.php index 8428ff4b6..09f90a225 100644 --- a/inc/geshi/plsql.php +++ b/inc/geshi/plsql.php @@ -4,7 +4,7 @@ * ------- * Author: Victor Engmark <victor.engmark@gmail.com> * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/10/26 * * Oracle 9.2 PL/SQL language file for GeSHi. diff --git a/inc/geshi/postgresql.php b/inc/geshi/postgresql.php index 0245b33ad..662fdd760 100644 --- a/inc/geshi/postgresql.php +++ b/inc/geshi/postgresql.php @@ -5,7 +5,7 @@ * Author: Christophe Chauvet (christophe_at_kryskool_dot_org) * Contributors: Leif Biberg Kristensen <leif_at_solumslekt_dot_org> 2010-05-03 * Copyright: (c) 2007 Christophe Chauvet (http://kryskool.org/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/07/20 * * PostgreSQL language file for GeSHi. diff --git a/inc/geshi/povray.php b/inc/geshi/povray.php index eeda49f49..c0ce35ca1 100644 --- a/inc/geshi/povray.php +++ b/inc/geshi/povray.php @@ -4,7 +4,7 @@ * -------- * Author: Carl Fürstenberg (azatoth@gmail.com) * Copyright: © 2007 Carl Fürstenberg - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/07/11 * * Povray language file for GeSHi. diff --git a/inc/geshi/powerbuilder.php b/inc/geshi/powerbuilder.php index f978f3f5b..d3fcf615f 100644 --- a/inc/geshi/powerbuilder.php +++ b/inc/geshi/powerbuilder.php @@ -4,7 +4,7 @@ * ------ * Author: Doug Porter (powerbuilder.geshi@gmail.com) * Copyright: (c) 2009 Doug Porter - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/07/13 * * PowerBuilder (PowerScript) language file for GeSHi. diff --git a/inc/geshi/powershell.php b/inc/geshi/powershell.php index 1d9003030..bd78d7392 100644 --- a/inc/geshi/powershell.php +++ b/inc/geshi/powershell.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Frode Aarebrot (frode@aarebrot.net) * Copyright: (c) 2008 Frode Aarebrot (http://www.aarebrot.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/06/20 * * PowerShell language file for GeSHi. diff --git a/inc/geshi/proftpd.php b/inc/geshi/proftpd.php index dd57d9b0a..330db4b27 100644 --- a/inc/geshi/proftpd.php +++ b/inc/geshi/proftpd.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2011/01/25 * * ProFTPd language file for GeSHi. diff --git a/inc/geshi/progress.php b/inc/geshi/progress.php index affb62000..79900261b 100644 --- a/inc/geshi/progress.php +++ b/inc/geshi/progress.php @@ -4,7 +4,7 @@ * -------- * Author: Marco Aurelio de Pasqual (marcop@hdi.com.br) * Copyright: (c) 2008 Marco Aurelio de Pasqual, Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/07/11 * * Progress language file for GeSHi. diff --git a/inc/geshi/prolog.php b/inc/geshi/prolog.php index 74d03374c..a106a4e4e 100644 --- a/inc/geshi/prolog.php +++ b/inc/geshi/prolog.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/10/02 * * Prolog language file for GeSHi. diff --git a/inc/geshi/properties.php b/inc/geshi/properties.php index 08ba9a419..e1317b227 100644 --- a/inc/geshi/properties.php +++ b/inc/geshi/properties.php @@ -4,7 +4,7 @@ * -------- * Author: Edy Hinzen * Copyright: (c) 2009 Edy Hinzen - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/04/03 * * Property language file for GeSHi. diff --git a/inc/geshi/providex.php b/inc/geshi/providex.php index b7232873a..1e735bd0f 100644 --- a/inc/geshi/providex.php +++ b/inc/geshi/providex.php @@ -4,7 +4,7 @@ * ---------- * Author: Jeff Wilder (jeff@coastallogix.com) * Copyright: (c) 2008 Coastal Logix (http://www.coastallogix.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/10/18 * * ProvideX language file for GeSHi. diff --git a/inc/geshi/purebasic.php b/inc/geshi/purebasic.php index 213868d74..d78ffe97b 100644 --- a/inc/geshi/purebasic.php +++ b/inc/geshi/purebasic.php @@ -4,7 +4,7 @@ * ------- * Author: GuShH * Copyright: (c) 2009 Gustavo Julio Fiorenza - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 13/06/2009 * * PureBasic language file for GeSHi. diff --git a/inc/geshi/pycon.php b/inc/geshi/pycon.php index 141d521f9..ac2b34d07 100644 --- a/inc/geshi/pycon.php +++ b/inc/geshi/pycon.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * Python language file for GeSHi. diff --git a/inc/geshi/pys60.php b/inc/geshi/pys60.php new file mode 100644 index 000000000..59c67fac7 --- /dev/null +++ b/inc/geshi/pys60.php @@ -0,0 +1,273 @@ +<?php +/************************************************************************************** + * pys60.php + * ---------- + * Author: Sohan Basak (ronnie.basak96 @gmail.com) + * Copyright: (c) 2012 Sohan Basak (http://tothepower.tk), Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter) + * Release Version: 1.0.8.11 + * Date Started: 2012/05/03 + * + * Python for S60 language file for GeSHi. + * + * CHANGES + * ------- + * No Changes Till Date + * + * The python.php file is extended to pys60.php with required modifications + * + * NOTES + * + * -I have kept the ":" in Reserved chars, so that it gets highlighted differently than brackets and/or symbols + * + ************************************************************************************* + * + * 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' => 'Python for S60', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', "'", '"""',"'''",'""','""'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + + /* + ** Set 1: reserved words + ** http://python.org/doc/current/ref/keywords.html + */ + 1 => array( + 'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break', + 'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec', + 'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', "<<", ">>", "as" + ), + + /* + ** Set 2: builtins + ** http://python.org/doc/current/lib/built-in-funcs.html + */ + 2 => array( + '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp', + 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', + 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', + 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals', + 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', + 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', + 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', + 'vars', 'xrange', 'zip', + // Built-in constants: http://python.org/doc/current/lib/node35.html + 'False', 'True', 'None', 'NotImplemented', 'Ellipsis', + // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html + 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError', + 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError', + 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError', + 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError', + 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', + 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError', + 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning', + 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning', + 'RuntimeWarning', 'FutureWarning', + //Symbian Errors + "SymbianError", "KernelError", + // self: this is a common python convention (but not a reserved word) + 'self' + ), + + /* + ** Set 3: standard library + ** http://python.org/doc/current/lib/modindex.html + */ + 3 => array( + '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm', + 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer', + 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi', + 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop', + 'collections', 'colorsys', 'commands', 'compileall', 'compiler', + 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt', + 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE', + 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm', + 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl', + 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl', + 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob', + 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib', + 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect', + 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap', + 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify', + 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator', + 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes', + 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile', + 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random', + 're', 'readline', 'resource', 'rexec', 'rgbimg', 'rlcompleter', + 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve', + 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd', + 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string', + 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev', + 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios', + 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token', + 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2', + 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings', + 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml', + 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib', "os.path", "sys.path", + + //PythonS60 Standard Library + //http://pys60.garage.maemo.org/doc/s60/ + //These are the standard modules in the archive + + "appuifw", "globalui","e32", "telephone", "aosocket", "btsocket", + "sysinfo","camera","graphics","keycapture","key_codes","topwindow", "gles", + "glcanvas","sensor", "audio","messaging", "inbox","location","positioning", + "contacts", "e32calendar", "e32db","e32dbm","logs","scriptext", + "series60_console", + + //These are external but very often usable modules + + "appuifw2","ArchetypeUI","elementtree","lightblue", + "activaprofile","Adjustor","akntextutils","aosocketnativenew", + "appreciation","applicationmanager","appswitch","atextit","bt_teror","btconsole", + "btswitch","cElementTree","cenrep","cerealizer","cl_gui","clipboard", + "clipboard_CHN","debugger","decompile2", + "dir_iter","download","easydb","ECenrep","Edit_find","efeature","elocation","envy", + "EProfile","erestart","error","esyagent","Execwap","exprofile","fastcamera", + "feature","fgimage","filebrowser","firmware","fold","fonts","fraction","FTP", + "ftplibnew","fy_manager","fy_menu","gles_utils","gps_location","hack", + "HTML2TXT","iapconnect","icon_image","image_decoder", + "ini","interactive_console","inting","key_modifiers","key_tricks","keypress", + "landmarks","lite_fm","locationacq","locationrequestor", + "logo","markupbase","mbm","mbm2","minidb","miniinfo","MISC", + "misty","Msg","ntpath","odict","Paintbox","pathinfo","pexif","pickcolor", + "powlite_fm","powlite_fm2","powlite_fm3","powlite_fme","prgbar","prodb", + "profileengine","progressbar","progressbartw","progressnotes", + "ProgressBarTW2","proshivka","py_upload","pyConnection","PyFileMan", + "pykeylock","PyPyc","pyqq","pys60crypto","pys60usb","rfc822", + "RUSOS","scmk","scrollpage","SISFIELDS","SISFIELD","sisfile", + "SISINFO","sisreader","Sistools","smidi","smsreject","speechy","sre_compile", + "sre_constants","sre_parse","sre","sysagent","syslang","TextMan", + "textrenderer","TextWrap","topwind","tsocket","uikludge","uikludges","uitricks", + "walkfile","wallpaper","wfm_lite", + "wif_keys","wif","window","wlanmgmt","wlantools","wt_color","wt_requesters", + "zhkey", + + //These are recent additions + "miffile" + ), + + /* + ** Set 4: special methods + ** http://python.org/doc/current/ref/specialnames.html + */ + 4 => array( + ///* + //// Iterator types: http://python.org/doc/current/lib/typeiter.html + //'__iter__', 'next', + //// String types: http://python.org/doc/current/lib/string-methods.html + //'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', + //'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', + //'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', + //'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', + //'translate', 'upper', 'zfill', + // */ + + // Basic customization: http://python.org/doc/current/ref/customization.html + '__new__', '__init__', '__del__', '__repr__', '__str__', + '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__', + '__hash__', '__nonzero__', '__unicode__', '__dict__', + // Attribute access: http://python.org/doc/current/ref/attribute-access.html + '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__', + '__delete__', '__slots__', + // Class creation, callable objects + '__metaclass__', '__call__', + // Container types: http://python.org/doc/current/ref/sequence-types.html + '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__', + '__getslice__', '__setslice__', '__delslice__', + // Numeric types: http://python.org/doc/current/ref/numeric-types.html + '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__', + '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__', + '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__', + '__long__','__lshift__', + '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__', + '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__', + '__rshift__','__rsub__','__rmul__','__rand__','__rxor__','__ror__', + '__sub__','__xor__' + ) + + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '`' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => true, + 2 => true, + 3 => true, + 4 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #006000;font-weight:bold;', // Reserved + 2 => 'color: #800950;font-size:105%', // Built-ins + self + 3 => 'color: #003399;font-size:106%', // Standard lib + 4 => 'color: #0000cd;' // Special methods + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style:italic;font-size:92%', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #930; font-weight: bold;font-size:105%' + ), + 'BRACKETS' => array( + 0 => 'color: maroon;font-size:102%;padding:2px' + ), + 'STRINGS' => array( + 0 => 'color: #666;' + ), + 'NUMBERS' => array( + 0 => 'color: #2356F8;' + ), + 'METHODS' => array( + 1 => 'color: navy;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66ccFF;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?> diff --git a/inc/geshi/python.php b/inc/geshi/python.php index 38d9a0b02..ec9b17e6f 100644 --- a/inc/geshi/python.php +++ b/inc/geshi/python.php @@ -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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * Python language file for GeSHi. diff --git a/inc/geshi/q.php b/inc/geshi/q.php index e4bb92da8..ade9928d0 100644 --- a/inc/geshi/q.php +++ b/inc/geshi/q.php @@ -4,7 +4,7 @@ * ----- * Author: Ian Roddis (ian.roddis@proteanmind.net) * Copyright: (c) 2008 Ian Roddis (http://proteanmind.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/01/21 * * q/kdb+ language file for GeSHi. diff --git a/inc/geshi/qbasic.php b/inc/geshi/qbasic.php index ff61449d0..3345e3c69 100644 --- a/inc/geshi/qbasic.php +++ b/inc/geshi/qbasic.php @@ -4,7 +4,7 @@ * ---------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/20 * * QBasic/QuickBASIC language file for GeSHi. @@ -62,6 +62,10 @@ $language_data = array ( 'CASE_KEYWORDS' => GESHI_CAPS_UPPER, 'QUOTEMARKS' => array('"'), 'ESCAPE_CHAR' => '', + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | + GESHI_NUMBER_FLT_SCI_ZERO, 'KEYWORDS' => array( 1 => array( 'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 'ELSEIF', 'IF', diff --git a/inc/geshi/rails.php b/inc/geshi/rails.php index 0e825040e..65ddee884 100644 --- a/inc/geshi/rails.php +++ b/inc/geshi/rails.php @@ -4,7 +4,7 @@ * --------- * Author: Moises Deniz * Copyright: (c) 2005 Moises Deniz - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/03/21 * * Ruby (with Ruby on Rails Framework) language file for GeSHi. diff --git a/inc/geshi/rebol.php b/inc/geshi/rebol.php index 1e5dff626..ea86c21cd 100644 --- a/inc/geshi/rebol.php +++ b/inc/geshi/rebol.php @@ -4,7 +4,7 @@ * -------- * Author: Lecanu Guillaume (Guillaume@LyA.fr) * Copyright: (c) 2004-2005 Lecanu Guillaume (Guillaume@LyA.fr) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/12/22 * * Rebol language file for GeSHi. diff --git a/inc/geshi/reg.php b/inc/geshi/reg.php index 9878f42f6..157b2bd24 100644 --- a/inc/geshi/reg.php +++ b/inc/geshi/reg.php @@ -4,7 +4,7 @@ * ------- * Author: Sean Hanna (smokingrope@gmail.com) * Copyright: (c) 2006 Sean Hanna - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 03/15/2006 * * Microsoft Registry Editor language file for GeSHi. diff --git a/inc/geshi/rexx.php b/inc/geshi/rexx.php new file mode 100644 index 000000000..b3cb93229 --- /dev/null +++ b/inc/geshi/rexx.php @@ -0,0 +1,162 @@ +<?php +/************************************************************************************* + * rexx.php + * --------------------------------- + * Author: Jon Wolfers (sahananda@windhorse.biz) + * Contributors: + * - Walter Pachl (pachl@chello.at) + * Copyright: (c) 2008 Jon Wolfers, (c) 2012 Walter Pachl + * Release Version: 1.0.8.11 + * Date Started: 2008/01/07 + * + * Rexx language file for GeSHi. + * + * CHANGES + * ------- + * 2012/07/29 (1.0.0) + * - tried to get it syntactically right + * + * TODO (updated 2012/07/29) + * ------------------------- + * - Get it working on rosettacode.org + * + ************************************************************************************* + * + * 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' => 'rexx', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'address', 'arg', 'attribute', 'call', 'constant', 'do', + 'drop', 'exit', 'forward', 'if', + 'interpret', 'iterate', 'leave', 'loop', 'nop', 'numeric', + 'options', 'parse', 'procedure', 'pull', 'push', 'queue', + 'raise', 'return', 'say', 'select', 'signal', 'trace' + ), + 2 => array( + 'by', 'digits', 'engineering', 'error', 'expose', + 'failure', 'for', 'forever', 'form', 'fuzz', 'halt', + 'name', 'novalue', 'off', 'on', 'over', 'scientific', 'source', + 'syntax', 'to', 'until', 'upper', 'version', + 'while', 'with' + ), + 3 => array( + 'else', 'end', 'otherwise', 'then', 'when' + ), + 4 => array( + 'rc', 'result', 'sigl' + ), + 5 => array( + 'placeholderforoorexxdirectives' + ), + 6 => array( + 'abbrev', 'abs', 'beep', 'bitand', 'bitor', + 'bitxor', 'b2x', 'center', 'centre', 'changestr', 'charin', + 'charout', 'chars', 'compare', 'condition', 'copies', + 'countstr', 'c2d', 'c2x', 'datatype', 'date', 'delstr', + 'delword', 'directory', 'd2c', 'd2x', 'endlocal', + 'errortext', 'filespec', 'format', 'insert', + 'lastpos', 'left', 'length', 'linein', 'lineout', 'lines', + 'lower', 'max', 'min', 'overlay', 'pos', 'queued', 'random', + 'reverse', 'right', 'rxfuncadd', 'rxfuncdrop', 'rxfuncquery', + 'rxqueue', 'setlocal', 'sign', 'sourceline', 'space', + 'stream', 'strip', 'substr', 'subword', 'symbol', 'time', + 'translate', 'trunc', 'userid', 'value', + 'var', 'verify', 'word', 'wordindex', 'wordlength', 'wordpos', + 'words', 'xrange', 'x2b', 'x2c', 'x2d' + ) + ), + 'SYMBOLS' => array( + '(', ')', '<', '>', '=', '+', '-', '*', '**', '/', '|', '%', '^', '&', ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #ff0000; font-weight: bold;', + 3 => 'color: #00ff00; font-weight: bold;', + 4 => 'color: #0000ff; font-weight: bold;', + 5 => 'color: #880088; font-weight: bold;', + 6 => 'color: #888800; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 'MULTI' => 'color: #808080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?> diff --git a/inc/geshi/robots.php b/inc/geshi/robots.php index c0713a64c..0b75f7111 100644 --- a/inc/geshi/robots.php +++ b/inc/geshi/robots.php @@ -4,7 +4,7 @@ * -------- * Author: Christian Lescuyer (cl@goelette.net) * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/02/17 * * robots.txt language file for GeSHi. diff --git a/inc/geshi/rpmspec.php b/inc/geshi/rpmspec.php index 243df94c7..fd6a561f8 100644 --- a/inc/geshi/rpmspec.php +++ b/inc/geshi/rpmspec.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Paul Grinberg (gri6507 TA unity-linux TOD org) * Copyright: (c) 2010 Paul Grinberg - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/04/27 * * RPM Spec language file for GeSHi. diff --git a/inc/geshi/rsplus.php b/inc/geshi/rsplus.php index 41cdd158b..e8a4e722b 100644 --- a/inc/geshi/rsplus.php +++ b/inc/geshi/rsplus.php @@ -5,8 +5,9 @@ * Author: Ron Fredericks (ronf@LectureMaker.com) * Contributors: * - Benilton Carvalho (beniltoncarvalho@gmail.com) + * - Fernando Henrique Ferraz Pereira da Rosa (mentus@gmail.com) * Copyright: (c) 2009 Ron Fredericks (http://www.LectureMaker.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/03/28 * * R language file for GeSHi. @@ -440,18 +441,17 @@ $language_data = array ( 0 => 'color:#A020F0;' ), 'SCRIPT' => array( - 0 => '' - ) + 0 => '' ) ), 'URLS' => array( 1 => '', - 2 => 'http://astrostatistics.psu.edu/su07/R/html/graphics/html/{FNAME}.html', // http://sekhon.berkeley.edu/library/graphics/html/{FNAME}.html - 3 => 'http://astrostatistics.psu.edu/su07/R/html/stats/html/Normal.html', // http://sekhon.berkeley.edu/library/stats/html/Normal.html - 4 => 'http://astrostatistics.psu.edu/su07/R/html/stats/html/{FNAME}.html', // http://sekhon.berkeley.edu/library/stats/html/{FNAME}.html - 5 => 'http://astrostatistics.psu.edu/su07/R/html/stats/html/summary.lm.html', // http://sekhon.berkeley.edu/library/stats/html/summary.lm.html - 6 => 'http://astrostatistics.psu.edu/su07/R/html/base/html/Log.html', // http://sekhon.berkeley.edu/library/base/html/Log.html - 7 => '', - 8 => '' + 2 => 'http://stat.ethz.ch/R-manual/R-devel/library/base/html/{FNAME}.html', // Base Package + 3 => 'http://stat.ethz.ch/R-manual/R-devel/library/datasets/html/{FNAME}.html', // Datasets + 4 => 'http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/{FNAME}.html', // Graphics Package + 5 => 'http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/{FNAME}.html', // grDevices + 6 => 'http://stat.ethz.ch/R-manual/R-devel/library/methods/html/{FNAME}.html', // methods + 7 => 'http://stat.ethz.ch/R-manual/R-devel/library/stats/html/{FNAME}.html', // stats + 8 => 'http://stat.ethz.ch/R-manual/R-devel/library/utils/html/{FNAME}.html' // utils ), 'OOLANG' => true, 'OBJECT_SPLITTERS' => array( diff --git a/inc/geshi/ruby.php b/inc/geshi/ruby.php index c38d5a218..f6eb1b1e3 100644 --- a/inc/geshi/ruby.php +++ b/inc/geshi/ruby.php @@ -4,7 +4,7 @@ * -------- * Author: Moises Deniz * Copyright: (c) 2007 Moises Deniz - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/03/21 * * Ruby language file for GeSHi. diff --git a/inc/geshi/sas.php b/inc/geshi/sas.php index 6f4ce285e..dbf95a14e 100644 --- a/inc/geshi/sas.php +++ b/inc/geshi/sas.php @@ -4,7 +4,7 @@ * ------- * Author: Galen Johnson (solitaryr@gmail.com) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/12/27 * * SAS language file for GeSHi. Based on the sas vim file. diff --git a/inc/geshi/scala.php b/inc/geshi/scala.php index 12462cf3b..405f59de0 100644 --- a/inc/geshi/scala.php +++ b/inc/geshi/scala.php @@ -4,7 +4,7 @@ * ---------- * Author: Franco Lombardo (franco@francolombardo.net) * Copyright: (c) 2008 Franco Lombardo, Benny Baumann - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/02/08 * * Scala language file for GeSHi. @@ -41,9 +41,20 @@ $language_data = array ( 'LANG_NAME' => 'Scala', 'COMMENT_SINGLE' => array(1 => '//'), 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array(2 => "/\\'(?!\w\\'|\\\\)\w+(?=\s)/"), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, - 'QUOTEMARKS' => array("'", '"'), + 'QUOTEMARKS' => array("'",'"'), 'ESCAPE_CHAR' => '\\', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[nfrtv\$\"\n\\\\]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{1,2}#i", + //Hexadecimal Char Specs (unicode) + 3 => "#\\\\u[\da-fA-F]{1,4}#", + //Hexadecimal Char Specs (Extended Unicode) + 4 => "#\\\\U[\da-fA-F]{1,8}#", + ), 'KEYWORDS' => array( 1 => array( 'abstract', 'case', 'catch', 'class', 'def', @@ -75,11 +86,16 @@ $language_data = array ( 2 => 'color: #9999cc; font-weight: bold;', ), 'COMMENTS' => array( - 1=> 'color: #008000; font-style: italic;', + 1 => 'color: #008000; font-style: italic;', + 2 => 'color: #CC66FF;', 'MULTI' => 'color: #00ff00; font-style: italic;' ), 'ESCAPE_CHAR' => array( - 0 => 'color: #0000ff; font-weight: bold;' + 0 => 'color: #6666ff; font-weight: bold;', + 1 => 'color: #6666ff; font-weight: bold;', + 2 => 'color: #5555ff; font-weight: bold;', + 3 => 'color: #4444ff; font-weight: bold;', + 4 => 'color: #3333ff; font-weight: bold;' ), 'BRACKETS' => array( 0 => 'color: #F78811;' @@ -119,4 +135,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/scheme.php b/inc/geshi/scheme.php index f687e79a7..a84b90809 100644 --- a/inc/geshi/scheme.php +++ b/inc/geshi/scheme.php @@ -4,7 +4,7 @@ * ---------- * Author: Jon Raphaelson (jonraphaelson@gmail.com) * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * Scheme language file for GeSHi. diff --git a/inc/geshi/scilab.php b/inc/geshi/scilab.php index cd1ca70f1..f011497dd 100644 --- a/inc/geshi/scilab.php +++ b/inc/geshi/scilab.php @@ -4,7 +4,7 @@ * -------- * Author: Christophe David (geshi@christophedavid.org) * Copyright: (c) 2008 Christophe David (geshi@christophedavid.org) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/08/04 * * SciLab language file for GeSHi. diff --git a/inc/geshi/sdlbasic.php b/inc/geshi/sdlbasic.php index 27aaf522b..381161fdf 100644 --- a/inc/geshi/sdlbasic.php +++ b/inc/geshi/sdlbasic.php @@ -4,7 +4,7 @@ * ------------ * Author: Roberto Rossi * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/08/19 * * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi. diff --git a/inc/geshi/smalltalk.php b/inc/geshi/smalltalk.php index 008bfcd1d..5b61badaf 100644 --- a/inc/geshi/smalltalk.php +++ b/inc/geshi/smalltalk.php @@ -4,7 +4,7 @@ * -------- * Author: Bananeweizen (Bananeweizen@gmx.de) * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/03/27 * * Smalltalk language file for GeSHi. diff --git a/inc/geshi/smarty.php b/inc/geshi/smarty.php index 1d8199936..86e9d44c0 100644 --- a/inc/geshi/smarty.php +++ b/inc/geshi/smarty.php @@ -4,7 +4,7 @@ * ---------- * Author: Alan Juden (alan@judenware.org) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/07/10 * * Smarty template language file for GeSHi. diff --git a/inc/geshi/spark.php b/inc/geshi/spark.php new file mode 100644 index 000000000..0284a1a47 --- /dev/null +++ b/inc/geshi/spark.php @@ -0,0 +1,132 @@ +<?php +/************************************************************************************* + * ada.php + * ------- + * Author: Phil Thornley (tux@inmail.cz) + * Copyright: (c) 2004 Phil Thornley (http://www.sparksure.com) + * Release Version: 1.0.8.11 + * Date Started: 2010/08/22 + * + * SPARK language file for GeSHi. + * + * Created by modifying Ada file version 1.0.2 + * Words are from SciTe configuration file + * + * CHANGES + * ------- + * 2010/08/28 (1.0.0) + * - First Release + * + * TODO (updated 2010/08/22) + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'SPARK', + 'COMMENT_SINGLE' => array(1 => '--', 2 => '--#'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if', + 'is', 'loop', 'while', 'then', 'end', 'select', 'case', 'until', + 'goto', 'return' + ), + 2 => array( + 'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor' + ), + 3 => array( + 'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', + 'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit', + 'function', 'generic', 'in', 'interface', 'limited', 'new', 'null', + 'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private', + 'procedure', 'protected', 'raise', 'range', 'record', 'renames', + 'requeue', 'reverse', 'separate', 'subtype', 'synchronized', + 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with' + ) + ), + 'SYMBOLS' => array( + '(', ')' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f;', + 2 => 'color: #0000ff;', + 3 => 'color: #46aa03; font-weight:bold;', + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'COMMENTS' => array( + 1 => 'color: #adadad; font-style: italic;', + 2 => 'color: #adadad; font-style: italic; font-weight: bold;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + 1 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/sparql.php b/inc/geshi/sparql.php new file mode 100644 index 000000000..282165a01 --- /dev/null +++ b/inc/geshi/sparql.php @@ -0,0 +1,155 @@ +<?php +/************************************************************************************* + * sparql.php + * ------- + * Author: Karima Rafes (karima.rafes@bordercloud.com) + * Copyright: (c) 2011 Bourdercloud.com + * Release Version: 1.0.8.11 + * Date Started: 2011/11/05 + * + * SPARQL language file for GeSHi. + * + * CHANGES + * ------- + * 2011/11/05 (1.0.0) + * - First Release + * + * TODO + * ---- + * + ************************************************************************************* + * + * 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' => 'SPARQL', + 'COMMENT_SINGLE' => array('#'), + 'COMMENT_MULTI' => array('/*' => '*/' ), + 'COMMENT_REGEXP' => array( + //IRI (it's not a comment ;) + 1 => "/<[^> ]*>/i" + ), + 'CASE_KEYWORDS' => 1, + 'QUOTEMARKS' => array("'", '"', '`'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'BASE','PREFIX','SELECT','DISTINCT','REDUCED','CONSTRUCT','DESCRIBE','ASK','FROM', + 'NAMED','WHERE','ORDER','BY','ASC','DESC','LIMIT','OFFSET','OPTIONAL','GRAPH', + 'UNION','FILTER','STR','LANG','LANGMATCHES','DATATYPE','BOUND','SAMETERM', + 'ISIRI','ISURI','ISBLANK', + 'ISLITERAL','REGEX','SUBSTR','TRUE', + 'FALSE','LOAD','CLEAR', + 'DROP','ADD','MOVE','COPY', + 'CREATE','DELETE','INSERT', + 'USING','SILENT','DEFAULT','ALL', + 'DATA','WITH','INTO','TO', + 'AS','GROUP','HAVING','UNDEF', + 'BINDINGS','SERVICE','BIND','MINUS_KEYWORD', + 'IRI','URI', 'BNODE', + 'RAND','ABS','CEIL','FLOOR','ROUND', + 'CONCAT','STRLEN', + 'UCASE','LCASE','ENCODE_FOR_URI', + 'CONTAINS','STRSTARTS', + 'STRENDS','STRBEFORE', + 'STRAFTER','REPLACE', + 'YEAR','MONTH', + 'DAY','HOURS', + 'MINUTES','SECONDS', + 'TIMEZONE','TZ', + 'NOW','MD5', + 'SHA1','SHA224', + 'SHA256','SHA384', + 'SHA512','COALESCE', + 'IF','STRLANG','STRDT', + 'ISNUMERIC','COUNT', + 'SUM','MIN', + 'MAX','AVG','SAMPLE', + 'GROUP_CONCAT ','NOT', + 'IN','EXISTS','SEPARATOR' + ) + ), + 'REGEXPS' => array( + //Variables without braces + 1 => "\\?[a-zA-Z_][a-zA-Z0-9_]*", + //prefix + 2 => "[a-zA-Z_.\\-0-9]*:", + //tag lang + 3 => "@[^ .)}]*", + ), + 'SYMBOLS' => array( + 0 => array( + '{', '}' , '.', ';' + ), + 1 => array( + '^^', + '<=','>=','!=','=','<','>','|', + '&&','||', + '(',')','[', ']', + '+','-','*','!','/' + ), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #993333; font-weight: bold;' + ), + 'COMMENTS' => array( + 0 => 'color: #808080; font-style: italic;', + 1 => 'color: #000078;', + //2 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array(), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF63C3;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #0000FF;', + 1 => 'color: #FF8000; font-weight: bold;' + ), + 'SCRIPT' => array(), + 'REGEXPS' => array( + 1 => 'color: #007800;', + 2 => 'color: #780078;', + 3 => 'color: #005078;' + ) + ), + 'URLS' => array( + 1 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?>
\ No newline at end of file diff --git a/inc/geshi/sql.php b/inc/geshi/sql.php index 6f7870196..4d08a51fe 100644 --- a/inc/geshi/sql.php +++ b/inc/geshi/sql.php @@ -6,7 +6,7 @@ * Contributors: * - Jürgen Thomas (Juergen.Thomas@vs-polis.de) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * SQL language file for GeSHi. diff --git a/inc/geshi/stonescript.php b/inc/geshi/stonescript.php new file mode 100644 index 000000000..2844e885e --- /dev/null +++ b/inc/geshi/stonescript.php @@ -0,0 +1,307 @@ +<?php +/************************************************************************************* + * stonescript.php + * -------- + * Author: Archimmersion ( based on ruby.php by Moises Deniz ) + * Copyright: (c) 2011 Archimmersion ( http://www.archimmersion.com ) + * Release Version: 1.0.8.11 + * Date Started: 2011/03/30 + * + * StoneScript language file for GeSHi. + * + * StonesCript is a Lua based script language for the ShiVa3D game engine ( http://www.stonetrip.com ) + * + * More information can be found at http://www.stonetrip.com/developer/doc/api/introduction + * + * CHANGES + * ------- + * 2011/04/18 (1.0.8.11) + * - Initial release + * + ************************************************************************************* + * + * 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' => 'StoneScript', + 'COMMENT_SINGLE' => array(1 => "--"), + 'COMMENT_MULTI' => array("--[[" => "]]"), + 'COMMENT_REGEXP' => array( + 4 => '/<<\s*?(\w+)\\n.*?\\n\\1(?![a-zA-Z0-9])/si', + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', '`','\''), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + // Blue - General Keywords + 1 => array( + 'and', 'begin', 'break', 'do', 'else', 'elseif', 'end', + 'for', 'if', 'in', 'while', 'next', 'not', 'or', 'redo', + 'then', 'unless', 'until', 'when', 'false', 'nil', 'self', + 'true', 'local', 'this', 'return', + ), + // Dark Blue - Main API names + 2 => array( + 'animation', 'application', 'cache', 'camera', 'debug', + 'dynamics', 'group', 'hashtable', 'hud', 'input', 'light', + 'log', 'math', 'mesh', 'microphone', 'music', 'navigation', + 'network', 'object', 'pixelmap', 'projector', 'scene', + 'sensor', 'server', 'session', 'sfx', 'shape', 'sound', + 'string', 'system', 'table', 'user', 'video', 'xml', + // Plugin API names + 'plasma', 'watersim', + 'winDirectories', + 'ActionSheet', 'Alert', 'Mail', 'Picker', 'StatusBar', + ), + // Constants + // Can be commented out if performance is crucial -> then these keywords will appear in a slightly lighter color + 3 => array( + //Animation + 'kPlaybackModeLoop', 'kPlaybackModeLoopMirrored', 'kPlaybackModeLoopReversed', + 'kPlaybackModeOnce', 'kPlaybackModeOnceReversed', + //Application - Environment + 'kStatusLoading', 'kStatusReady', 'kStatusSaving', // 'kStatusNone' + //Application - Options + 'kOptionAudioMasterVolume', 'kOptionAutomaticVirtualKeyboard', 'kOptionDynamicShadowsBufferCount', + 'kOptionDynamicShadowsBufferSize', 'kOptionDynamicShadowsConstantSampling', 'kOptionDynamicShadowsPCFSampleCount', + 'kOptionDynamicShadowsQuality', 'kOptionDynamicShadowsScreenSpaceBlur', 'kOptionFullscreen', + 'kOptionFullscreenHeight', 'kOptionFullscreenWidth', 'kOptionHardwareOcclusion', + 'kOptionMaxEventBouncesPerFrame', 'kOptionNetworkStreams', 'kOptionNetworkStreamsUseBrowser', + 'kOptionPrioritizeEventBounces', 'kOptionRenderingEnabled', 'kOptionShadersQuality', + 'kOptionSwapInterval', 'kOptionTerrainsQuality', 'kOptionTexturesAnisotropyLevel', + 'kOptionTexturesMipmapBias', 'kOptionTexturesQuality', 'kOptionViewportRotation', + //Application - Resource Types + 'kResourceTypeAnimBank', 'kResourceTypeFont', 'kResourceTypeHUD', + 'kResourceTypeMaterial', 'kResourceTypeMesh', 'kResourceTypeParticle', + 'kResourceTypePixelMap', 'kResourceTypeSoundBank', 'kResourceTypeTexture', + 'kResourceTypeTextureClip', 'kResourceTypeTrail', + //Cache + 'kPropertyHeight', 'kPropertySize', 'kPropertyWidth', + //Dynamics + 'kAxisX', 'kAxisY', 'kAxisZ', + 'kTypeBox', 'kTypeCapsule', 'kTypeSphere', + //HUD + 'kAddressingModeClamp', 'kAddressingModeRepeat', 'kAlignCenter', 'kAlignJustify','kAlignLeft', 'kAlignRight', + 'kAlignTop', 'kBlendModeAdd', 'kBlendModeDefault', 'kBlendModeModulate', 'kCaseFixed', 'kCaseVariable', + 'kCommandTypeCallAction', 'kCommandTypeCopyCheckStateToRegister', 'kCommandTypeCopyEditTextToRegister', + 'kCommandTypeCopyListItemTextToRegister', 'kCommandTypeCopyListLastSelectedItemToRegister', + 'kCommandTypeCopyProgressValueToRegister', 'kCommandTypeCopySliderValueToRegister', 'kCommandTypeCopyTagToRegister', + 'kCommandTypeEnterModalMode', 'kCommandTypeInterpolateBackgroundColor', 'kCommandTypeInterpolateBorderColor', + 'kCommandTypeInterpolateForegroundColor', 'kCommandTypeInterpolateHeight', 'kCommandTypeInterpolateOpacity', + 'kCommandTypeInterpolatePosition', 'kCommandTypeInterpolateProgressValue', 'kCommandTypeInterpolateRotation', + 'kCommandTypeInterpolateSize', 'kCommandTypeInterpolateWidth', 'kCommandTypeLeaveModalMode', + 'kCommandTypeMatchScreenSpaceBottomLeftCorner', 'kCommandTypeMatchScreenSpaceBottomRightCorner', + 'kCommandTypeMatchScreenSpaceCenter', 'kCommandTypeMatchScreenSpaceHeight', 'kCommandTypeMatchScreenSpaceTopLeftCorner', + 'kCommandTypeMatchScreenSpaceTopRightCorner', 'kCommandTypeMatchScreenSpaceWidth', 'kCommandTypePauseMovie', + 'kCommandTypePauseSound', 'kCommandTypePauseTimer', 'kCommandTypePlayMovie', 'kCommandTypePlaySound', + 'kCommandTypePlaySoundLoop', 'kCommandTypeResumeSound', 'kCommandTypeSendEventToUser', 'kCommandTypeSetActive', + 'kCommandTypeSetBackgroundColor', 'kCommandTypeSetBackgroundImage', 'kCommandTypeSetBackgroundImageUVOffset', + 'kCommandTypeSetBackgroundImageUVScale', 'kCommandTypeSetBorderColor', 'kCommandTypeSetButtonText', + 'kCommandTypeSetCheckState', 'kCommandTypeSetCheckText', 'kCommandTypeSetCursorPosition', 'kCommandTypeSetCursorVisible', + 'kCommandTypeSetEditText', 'kCommandTypeSetFocus', 'kCommandTypeSetForegroundColor', 'kCommandTypeSetHeight', + 'kCommandTypeSetLabelText', 'kCommandTypeSetOpacity', 'kCommandTypeSetPosition', 'kCommandTypeSetRotation', + 'kCommandTypeSetSize', 'kCommandTypeSetVisible', 'kCommandTypeSetWidth', 'kCommandTypeSleep', 'kCommandTypeStartTimer', + 'kCommandTypeStopAction', 'kCommandTypeStopMovie', 'kCommandTypeStopSound', 'kCommandTypeStopTimer', + 'kComponentTypeButton', 'kComponentTypeCheck', 'kComponentTypeContainer', 'kComponentTypeEdit', 'kComponentTypeLabel', + 'kComponentTypeList', 'kComponentTypeMovie', 'kComponentTypePicture', 'kComponentTypePixelMap', 'kComponentTypeProgress', + 'kComponentTypeRenderMap', 'kComponentTypeSlider', 'kCursorShapeCross', 'kCursorShapeDefault', 'kCursorShapeHandPointing', + 'kCursorShapeIBeam', 'kCursorShapeNone', 'kCursorShapeWaiting', 'kDirectionLeftToRight', 'kDirectionRightToLeft', + 'kEncodingASCII', 'kEncodingUTF8', 'kEventTypeGainFocus', 'kEventTypeLooseFocus', 'kEventTypeMouseEnter', + 'kEventTypeMouseLeave', 'kFillModeSolid', 'kInterpolatorTypeLinear', 'kInterpolatorTypePower2', 'kInterpolatorTypePower3', + 'kInterpolatorTypePower4', 'kInterpolatorTypeRoot2', 'kInterpolatorTypeRoot3', 'kInterpolatorTypeRoot4', + 'kInterpolatorTypeSpring1', 'kInterpolatorTypeSpring2', 'kInterpolatorTypeSpring3', 'kInterpolatorTypeSpring4', + 'kInterpolatorTypeSpring5', 'kInterpolatorTypeSpring6', + 'kOriginBottom', 'kOriginBottomLeft', 'kOriginBottomRight', 'kOriginCenter', 'kOriginLeft', 'kOriginRight', + 'kOriginTop', 'kOriginTopLeft', 'kOriginTopRight', 'kProgressTypeBottomToTop', 'kProgressTypeLeftToRight', + 'kProgressTypeRightToLeft', 'kProgressTypeTopToBottom', 'kRuntimeValueCallArgument0', 'kRuntimeValueCallArgument1', + 'kRuntimeValueCallArgument2', 'kRuntimeValueCallArgument3', 'kRuntimeValueCurrentUser', 'kRuntimeValueCurrentUserMainCamera', + 'kRuntimeValueRegister0', 'kRuntimeValueRegister1', 'kRuntimeValueRegister2', 'kRuntimeValueRegister3', + 'kShapeTypeEllipsoid', 'kShapeTypeRectangle', 'kShapeTypeRoundRectangle', 'kSliderTypeBottomToTop', + 'kSliderTypeLeftToRight', 'kSliderTypeRightToLeft', 'kSliderTypeTopToBottom', 'kWaveTypeConstant', + 'kWaveTypeSawtooth', 'kWaveTypeSawtoothInv', 'kWaveTypeSinus', 'kWaveTypeSinusNoise', 'kWaveTypeSquare', 'kWaveTypeTriangle', + //Input + 'kJoypadTypeIPhone', 'kJoypadTypeNone', 'kJoypadTypePhone', 'kJoypadTypeStandard', 'kJoypadTypeWiimote', + 'kKey0', 'kKey1', 'kKey2', 'kKey3', 'kKey4', 'kKey5', 'kKey6', 'kKey7', 'kKey8', 'kKey9', 'kKeyA', 'kKeyB', + 'kKeyBackspace', 'kKeyC', 'kKeyD', 'kKeyDelete', 'kKeyDown', 'kKeyE', 'kKeyEnd', 'kKeyEscape', 'kKeyF', + 'kKeyF1', 'kKeyF10', 'kKeyF11', 'kKeyF12', 'kKeyF2', 'kKeyF3', 'kKeyF4', 'kKeyF5', 'kKeyF6', 'kKeyF7', + 'kKeyF8', 'kKeyF9', 'kKeyG', 'kKeyH', 'kKeyHome', 'kKeyI', 'kKeyInsert', 'kKeyJ', 'kKeyK', 'kKeyL', + 'kKeyLAlt', 'kKeyLControl', 'kKeyLeft', 'kKeyLShift', 'kKeyM', 'kKeyN', 'kKeyO', 'kKeyP', 'kKeyPageDown', + 'kKeyPageUp', 'kKeyQ', 'kKeyR', 'kKeyRAlt', 'kKeyRControl', 'kKeyReturn', 'kKeyRight', 'kKeyRShift', + 'kKeyS', 'kKeySpace', 'kKeyT', 'kKeyTab', 'kKeyU', 'kKeyUp', 'kKeyV', 'kKeyW', 'kKeyX', 'kKeyY', + 'kKeyZ', 'kJoypadButtonPSPCircle', 'kJoypadButtonPSPCross', 'kJoypadButtonPSPDown', 'kJoypadButtonPSPL', + 'kJoypadButtonPSPLeft', 'kJoypadButtonPSPR', 'kJoypadButtonPSPRight', 'kJoypadButtonPSPSelect', + 'kJoypadButtonPSPSquare', 'kJoypadButtonPSPStart', 'kJoypadButtonPSPTriangle', 'kJoypadButtonPSPUp', + 'kJoypadTypePSP', 'kJoypadButtonWiimoteA', 'kJoypadButtonWiimoteB', 'kJoypadButtonWiimoteC', + 'kJoypadButtonWiimoteDown', 'kJoypadButtonWiimoteHome', 'kJoypadButtonWiimoteLeft', + 'kJoypadButtonWiimoteMinus', 'kJoypadButtonWiimoteOne', 'kJoypadButtonWiimotePlus', + 'kJoypadButtonWiimoteRight', 'kJoypadButtonWiimoteTwo', 'kJoypadButtonWiimoteUp', 'kJoypadButtonWiimoteZ', + //Light + 'kTypeDirectional', 'kTypePoint', + //Math + 'kEpsilon', 'kInfinity', 'kPi', + //Mesh + 'kLockModeRead', 'kLockModeWrite', 'kLockReadWrite', + //Network + 'kBluetoothServerPort', 'kDefaultServerPort', 'kStatusAuthenticated', 'kStatusSearchFinished', // 'kStatusNone', 'kStatusPending', + //Object + 'kControllerTypeAI', 'kControllerTypeAnimation', 'kControllerTypeAny', 'kControllerTypeDynamics', + 'kControllerTypeNavigation', 'kControllerTypeSound', 'kGlobalSpace', 'kLocalSpace', 'kParentSpace', + 'kTransformOptionInheritsParentRotation', 'kTransformOptionInheritsParentScale', 'kTransformOptionInheritsParentTranslation', + 'kTransformOptionTranslationAffectedByParentRotation', 'kTransformOptionTranslationAffectedByParentScale', 'kTypeCamera', + 'kTypeCollider', 'kTypeDummy', 'kTypeGroup', 'kTypeLight', 'kTypeOccluder', 'kTypeProjector', 'kTypeReflector', + 'kTypeSensor', 'kTypeSfx', 'kTypeShape', + //Pixelmap + 'kBlendModeDecal', 'kBlendModeReplace', 'kFillModeBrush', 'kFillModeNone', 'kPenModeBrush', // 'kFillModeSolid', + 'kPenModeNone', 'kPenModeSolid', + //Projector + 'kMapTypeMovie', 'kMapTypePixelMap', 'kMapTypeRenderMap', 'kMapTypeTexture', 'kMapTypeTextureClip', + //Scene + 'kFilteringModeBilinear', 'kFilteringModeNearest', 'kFilteringModeTrilinear', // 'kAddressingModeClamp', 'kAddressingModeRepeat', + 'kSkyBoxFaceBack', 'kSkyBoxFaceBottom', 'kSkyBoxFaceFront', 'kSkyBoxFaceLeft', 'kSkyBoxFaceRight', 'kSkyBoxFaceTop', + //Sensor + 'kShapeTypeBox', 'kShapeTypeSphere', + //Server + 'kStatusConnected', 'kStatusNone', 'kStatusPending', + //Session - duplicate keywords + //'kStatusConnected', 'kStatusNone', 'kStatusPending', + //Shape + 'kMapTypeUnknown', 'kCurveTypeBezier', 'kCurveTypeBSpline', 'kCurveTypeCatmullRom', 'kCurveTypePolyLine', + // 'kMapTypeMovie', 'kMapTypePixelMap', 'kMapTypeRenderMap', 'kMapTypeTexture', 'kMapTypeTextureClip', + + //System + 'kOSType3DS', 'kOSTypeBada', 'kOSTypeBrew', 'kOSTypePalm', 'kOSTypePS3', + 'kClientTypeEditor', 'kClientTypeEmbedded', 'kClientTypeStandalone', + 'kGPUCapabilityBloomFilterSupport', 'kGPUCapabilityContrastFilterSupport', 'kGPUCapabilityDepthBlurFilterSupport', + 'kGPUCapabilityDistortionFilterSupport', 'kGPUCapabilityDynamicShadowsSupport', 'kGPUCapabilityHardwareOcclusionSupport', + 'kGPUCapabilityHardwareRenderingSupport', 'kGPUCapabilityMonochromeFilterSupport', 'kGPUCapabilityMotionBlurFilterSupport', + 'kGPUCapabilityPixelShaderSupport', 'kGPUCapabilityVelocityBlurFilterSupport', 'kGPUCapabilityVertexShaderSupport', + 'kLanguageAlbanian', 'kLanguageArabic', 'kLanguageBulgarian', 'kLanguageCatalan', 'kLanguageCzech', 'kLanguageDanish', + 'kLanguageDutch', 'kLanguageEnglish', 'kLanguageFinnish', 'kLanguageFrench', 'kLanguageGerman', 'kLanguageGreek', + 'kLanguageHebrew', 'kLanguageHungarian', 'kLanguageIcelandic', 'kLanguageItalian', 'kLanguageJapanese', 'kLanguageKorean', + 'kLanguageNorwegian', 'kLanguagePolish', 'kLanguagePortuguese', 'kLanguageRomanian', 'kLanguageRussian', + 'kLanguageSerboCroatian', 'kLanguageSlovak', 'kLanguageSpanish', 'kLanguageSwedish', 'kLanguageThai', + 'kLanguageTurkish', 'kLanguageUnknown', 'kLanguageUrdu', 'kOSTypeAndroid', 'kOSTypeAngstrom', 'kOSTypeIPhone', + 'kOSTypeLinux', 'kOSTypeMac', 'kOSTypePSP', 'kOSTypeSymbian', 'kOSTypeWii', 'kOSTypeWindows', 'kOSTypeWindowsCE', + ), + // Not used yet + 4 => array( + 'dummycommand', + ), + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>', + '+', '-', '=>', '<<' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color:#0000FF; font-weight:bold;', + 2 => 'color:#000088; font-weight:bold;', + 3 => 'color:#C088C0; font-weight:bold;', + 4 => 'color:#00FEFE; font-weight:bold;', + ), + 'COMMENTS' => array( + 1 => 'color:#008000; font-style:italic;', + 4 => 'color: #cc0000; font-style: italic;', + 'MULTI' => 'color:#008000; font-style:italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color:#000099;' + ), + 'BRACKETS' => array( + 0 => 'color:#000000; font-weight:bold;' + ), + 'STRINGS' => array( + 0 => 'color:#888800;' + ), + 'NUMBERS' => array( + 0 => 'color:#AA0000;' + ), + // names after "." + 'METHODS' => array( + 1 => 'color:#FF00FF; font-weight:bold;' + ), + 'SYMBOLS' => array( + 0 => 'color:#000000; font-weight:bold;' + ), + 'REGEXPS' => array( + 0 => 'color:#ff6633; font-weight:bold;', + 1 => 'color:#0066ff; font-weight:bold;', + 2 => 'color:#6666ff; font-weight:bold;', + 3 => 'color:#ff3333; font-weight:bold;' + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + 0 => array(//Variables + GESHI_SEARCH => "([[:space:]])(\\$[a-zA-Z_][a-zA-Z0-9_]*)", + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '' + ), + 1 => array(//Arrays + GESHI_SEARCH => "([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)", + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '' + ), + 2 => "([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*",//Static OOP symbols + 3 => array( + GESHI_SEARCH => "([[:space:]]|\[|\()(:[a-zA-Z_][a-zA-Z0-9_]*)", + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '' + ) + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + 0 => array( + '<%' => '%>' + ) + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + ), + 'TAB_WIDTH' => 2 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/systemverilog.php b/inc/geshi/systemverilog.php index 142fd117b..f2ba92b19 100644 --- a/inc/geshi/systemverilog.php +++ b/inc/geshi/systemverilog.php @@ -4,7 +4,7 @@ * ------- * Author: Sean O'Boyle * Copyright: (C) 2008 IntelligentDV - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/06/25 * * SystemVerilog IEEE 1800-2009(draft8) language file for GeSHi. @@ -53,8 +53,8 @@ * * File: systemverilog.php * $LastChangedBy: benbe $ - * $LastChangedDate: 2011-02-11 20:31:50 +0100 (Fr, 11. Feb 2011) $ - * $LastChangedRevision: 2430 $ + * $LastChangedDate: 2012-08-18 01:56:20 +0200 (Sa, 18. Aug 2012) $ + * $LastChangedRevision: 2542 $ * ************************************************************************/ diff --git a/inc/geshi/tcl.php b/inc/geshi/tcl.php index c948ff261..4dd7be87b 100644 --- a/inc/geshi/tcl.php +++ b/inc/geshi/tcl.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Reid van Melle (rvanmelle@gmail.com) * Copyright: (c) 2004 Reid van Melle (sorry@nowhere) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/05/05 * * TCL/iTCL language file for GeSHi. diff --git a/inc/geshi/teraterm.php b/inc/geshi/teraterm.php index 510ad04c4..f125642d5 100644 --- a/inc/geshi/teraterm.php +++ b/inc/geshi/teraterm.php @@ -4,7 +4,7 @@ * -------- * Author: Boris Maisuradze (boris at logmett.com) * Copyright: (c) 2008 Boris Maisuradze (http://logmett.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/09/26 * * Tera Term Macro language file for GeSHi. diff --git a/inc/geshi/text.php b/inc/geshi/text.php index dd219f599..87fb7110c 100644 --- a/inc/geshi/text.php +++ b/inc/geshi/text.php @@ -4,7 +4,7 @@ * -------- * Author: Sean Hanna (smokingrope@gmail.com) * Copyright: (c) 2006 Sean Hanna - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 04/23/2006 * * Standard Text File (No Syntax Highlighting). diff --git a/inc/geshi/thinbasic.php b/inc/geshi/thinbasic.php index c496cea6f..f54959e16 100644 --- a/inc/geshi/thinbasic.php +++ b/inc/geshi/thinbasic.php @@ -4,7 +4,7 @@ * ------ * Author: Eros Olmi (eros.olmi@thinbasic.com) * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/05/12 * * thinBasic language file for GeSHi. diff --git a/inc/geshi/tsql.php b/inc/geshi/tsql.php index dddf51934..b4bf6bdad 100644 --- a/inc/geshi/tsql.php +++ b/inc/geshi/tsql.php @@ -4,7 +4,7 @@ * -------- * Author: Duncan Lock (dunc@dflock.co.uk) * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/11/22 * * T-SQL language file for GeSHi. @@ -55,7 +55,7 @@ $language_data = array ( // Keywords 'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALTER', 'ARE', 'ARRAY', 'AS', 'ASC', 'ASSERTION', 'AT', 'AUTHORIZATION', 'BACKUP', 'BEFORE', 'BEGIN', 'BINARY', 'BIT', 'BLOB', 'BOOLEAN', 'BOTH', 'BREADTH', - 'BREAK', 'BROWSE', 'BULK', 'BY', 'CALL', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHAR', 'CHARACTER', 'CHECK', 'CHECKPOINT', + 'BREAK', 'BROWSE', 'BULK', 'BY', 'CALL', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CATCH', 'CHAR', 'CHARACTER', 'CHECK', 'CHECKPOINT', 'CLASS', 'CLOB', 'CLOSE', 'CLUSTERED', 'COALESCE', 'COLLATE', 'COLLATION', 'COLUMN', 'COMMIT', 'COMPLETION', 'COMPUTE', 'CONNECT', 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONSTRUCTOR', 'CONTAINS', 'CONTAINSTABLE', 'CONTINUE', 'CONVERT', 'CORRESPONDING', 'CREATE', 'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH', 'CURRENT_ROLE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER', @@ -79,7 +79,7 @@ $language_data = array ( 'SEQUENCE', 'SESSION', 'SESSION_USER', 'SET', 'SETS', 'SETUSER', 'SHUTDOWN', 'SIZE', 'SMALLINT', 'SPACE', 'SPECIFIC', 'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLSTATE', 'SQLWARNING', 'START', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STRUCTURE', 'SYSTEM_USER', 'TABLE', 'TEMPORARY', 'TERMINATE', 'TEXTSIZE', 'THAN', 'THEN', 'TIME', 'TIMESTAMP', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE', - 'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TSEQUAL', 'UNDER', 'UNION', + 'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TRY', 'TSEQUAL', 'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UPDATE', 'UPDATETEXT', 'USAGE', 'USE', 'USER', 'USING', 'VALUE', 'VALUES', 'VARCHAR', 'VARIABLE', 'VARYING', 'VIEW', 'WAITFOR', 'WHEN', 'WHENEVER', 'WHERE', 'WHILE', 'WITH', 'WITHOUT', 'WORK', 'WRITE', 'WRITETEXT', 'YEAR', 'ZONE', 'UNCOMMITTED', 'NOCOUNT', diff --git a/inc/geshi/typoscript.php b/inc/geshi/typoscript.php index c1e380689..6751aaa8d 100644 --- a/inc/geshi/typoscript.php +++ b/inc/geshi/typoscript.php @@ -4,7 +4,7 @@ * -------- * Author: Jan-Philipp Halle (typo3@jphalle.de) * Copyright: (c) 2005 Jan-Philipp Halle (http://www.jphalle.de/) - * Release Version: 1.0.8.9 + * Release Version: 1.0.8.11 * Date Started: 2005/07/29 * * TypoScript language file for GeSHi. @@ -218,6 +218,15 @@ $language_data = array ( 'OBJECT_SPLITTERS' => array( ), 'REGEXPS' => array( + // xhtml tag + 2 => array( + GESHI_SEARCH => '(<)([a-zA-Z\\/][^\\/\\|]*?)(>)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => 's', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + // Constant 0 => array( GESHI_SEARCH => '(\{)(\$[a-zA-Z_\.]+[a-zA-Z0-9_\.]*)(\})', @@ -236,15 +245,6 @@ $language_data = array ( GESHI_AFTER => '\\2' ), - // xhtml tag - 2 => array( - GESHI_SEARCH => '(<[a-zA-Z\!\/].*?>)', - GESHI_REPLACE => '\\1', - GESHI_MODIFIERS => 's', - GESHI_BEFORE => '', - GESHI_AFTER => '' - ), - // extension keys / tables: (static|user|ttx|tx|tt|fe)_something[_something] 3 => array( GESHI_SEARCH => '(plugin\.|[^\.]\b)((?:static|user|ttx|tx|tt|fe)(?:_[0-9A-Za-z_]+?)\b)', diff --git a/inc/geshi/unicon.php b/inc/geshi/unicon.php index 42fffc886..6fe62d0fb 100644 --- a/inc/geshi/unicon.php +++ b/inc/geshi/unicon.php @@ -4,7 +4,7 @@ * -------- * Author: Matt Oates (mattoates@gmail.com) * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/04/20 * * Unicon the Unified Extended Dialect of Icon language file for GeSHi. diff --git a/inc/geshi/upc.php b/inc/geshi/upc.php new file mode 100644 index 000000000..e05303228 --- /dev/null +++ b/inc/geshi/upc.php @@ -0,0 +1,270 @@ +<?php +/************************************************************************************* + * upc.php + * ----- + * Author: Viraj Sinha (viraj@indent.com) + * Contributors: + * - Nigel McNie (nigel@geshi.org) + * - Jack Lloyd (lloyd@randombit.net) + * - Michael Mol (mikemol@gmail.com) + * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.11 + * Date Started: 2004/06/04 + * + * UPC language file for GeSHi. + * + * CHANGES + * ------- + * 2011/06/14 (1.0.8.11) + * - This file is a revision of c.php with UPC keywords added + * + ************************************************************************************* + * + * 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' => 'UPC', + 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{2}#", + //Hexadecimal Char Specs + 3 => "#\\\\u[\da-fA-F]{4}#", + //Hexadecimal Char Specs + 4 => "#\\\\U[\da-fA-F]{8}#", + //Octal Char Specs + 5 => "#\\\\[0-7]{1,3}#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'if', 'return', 'while', 'case', 'continue', 'default', + 'do', 'else', 'for', 'switch', 'goto', + + 'upc_forall', 'upc_barrier', 'upc_notify', 'upc_wait', 'upc_fence' + ), + 2 => array( + 'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline' + ), + 3 => array( + // assert.h + 'assert', + + //complex.h + 'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan', + 'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj', + 'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh', + + //ctype.h + 'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl', + 'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace', + 'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper', + + //inttypes.h + 'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax', + 'wcstoumax', + + //locale.h + 'localeconv', 'setlocale', + + //math.h + 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp', + 'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow', + 'sin', 'sinh', 'sqrt', 'tan', 'tanh', + + //setjmp.h + 'longjmp', 'setjmp', + + //signal.h + 'raise', + + //stdarg.h + 'va_arg', 'va_copy', 'va_end', 'va_start', + + //stddef.h + 'offsetof', + + //stdio.h + 'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc', + 'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar', + 'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell', + 'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf', + 'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf', + 'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile', + 'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf', + 'vsprintf', 'vsscanf', + + //stdlib.h + 'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch', + 'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv', + 'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod', + 'strtol', 'strtoul', 'system', + + //string.h + 'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat', + 'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror', + 'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr', + 'strspn', 'strstr', 'strtok', 'strxfrm', + + //time.h + 'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime', + 'mktime', 'strftime', 'time', + + //wchar.h + 'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide', + 'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc', + 'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf', + 'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb', + 'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn', + 'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk', + 'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok', + 'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp', + 'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf', + + //wctype.h + 'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit', + 'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace', + 'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper', + 'wctrans', 'wctype' + ), + 4 => array( + 'auto', 'char', 'const', 'double', 'float', 'int', 'long', + 'register', 'short', 'signed', 'sizeof', 'static', 'struct', + 'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t', + + 'int8', 'int16', 'int32', 'int64', + 'uint8', 'uint16', 'uint32', 'uint64', + + 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t', + 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + + 'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t', + 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t', + + 'int8_t', 'int16_t', 'int32_t', 'int64_t', + 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', + + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t', + 'size_t', 'off_t', + + 'upc_lock_t', 'shared', 'strict', 'relaxed', 'upc_blocksizeof', + 'upc_localsizeof', 'upc_elemsizeof' + ), + ), + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', + '+', '-', '*', '/', '%', + '=', '<', '>', + '!', '^', '&', '|', + '?', ':', + ';', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #000066;', + 4 => 'color: #993333;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #339933;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #660099; font-weight: bold;', + 3 => 'color: #660099; font-weight: bold;', + 4 => 'color: #660099; font-weight: bold;', + 5 => 'color: #006699; font-weight: bold;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/urbi.php b/inc/geshi/urbi.php new file mode 100644 index 000000000..a7353ea8b --- /dev/null +++ b/inc/geshi/urbi.php @@ -0,0 +1,200 @@ +<?php +/************************************************************************************* + * urbi.php + * ------- + * Author: Alexandre Morgand (morgand.alexandre@gmail.com) + * Copyright: (c) 2011 Morgand (http://gostai.com) + * Release Version: 1.0.8.11 + * Date Started: 2011/09/10 + * + * Urbi language file for GeSHi. + * + * CHANGES + * ------- + * ------------------------- + * + ************************************************************************************* + * + * 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' => 'Urbi', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m', + // Urbi warning. + 3 => "#\[[0-9a-f]{8}:warning\].*#", + // Urbi message from echo. + 4 => '#\[[0-9a-f]{8}\] \*\*\*.*#', + // Urbi error message. + 6 => '#\[[0-9a-f]{8}:error\].*#', + // Urbi system message. + 5 => '#\[00.*\].*#', + // Nested comment. Max depth 4. + 7 => '#\/\*(.|\n)*\/\*(.|\n)*\*\/(.|\n)*\*\/#', + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array( + 0 => '"', + 1 => '\'', + ), + // For Urbi, disable escape char is better. + 'ESCAPE_CHAR' => '\\', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[abfnrtv\\\'\"?\n]#", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{2}#", + //Hexadecimal Char Specs + 3 => "#\\\\u[\da-fA-F]{4}#", + //Hexadecimal Char Specs + 4 => "#\\\\U[\da-fA-F]{8}#", + //Octal Char Specs + 5 => "#\\\\[0-7]{1,3}#", + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + // Condition keywords. + 1 => array( + 'at', 'at;', 'at|', 'at&', 'at,', 'break', 'call', 'case', 'catch', 'continue', + 'do', 'else', 'every', 'every&', 'every,', 'every;', 'every|', 'for', 'for&', + 'for,', 'for;', 'foreach', 'for|', 'freezeif', 'goto', 'if', 'in', 'loop', + 'loop&', 'loop,', 'loop;', 'loop|', 'or_eq', 'stopif', 'switch', 'try', + 'waituntil', 'when', 'whenever', 'while', 'while&', 'while,', 'while;', + 'while|', 'throw', 'onleave', 'watch', 'return', 'and_eq', 'default', 'finally', + 'timeout', 'xor_eq' + ), + // Type. + 2 => array( + 'virtual', 'using', 'namespace', 'inline', 'protected', 'private', 'public', + 'typename', 'typeid', 'class', 'const_cast', 'dynamic_cast', 'friend', + 'template', 'enum', 'static_cast', 'reinterpret_cast', 'mutable', 'explicit' + ), + // Standard function. + 3 => array( + 'this', 'sizeof', 'delete', 'assert', 'isdef', 'compl', 'detach', + 'disown', '__HERE__', 'asm' + ), + // Type. + 4 => array( + 'char', 'const', 'double', 'int', 'long', 'typedef', 'union', + 'unsigned', 'var', 'short', 'wchar_t', 'volatile', 'signed', 'bool', + 'float', 'struct', 'auto', 'register', 'static', 'extern', 'function', + 'export', 'external', 'internal', 'closure', 'BIN' + ), + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '{', '}', '[', ']'), + 1 => array('<', '>','=', '!=', '==', '==='), + 2 => array('+', '-', '*', '/', '%', 'bitand', 'bitor', 'xor'), + 3 => array('!', '^', '&', '|'), + 4 => array('?', ':', ';') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000ff;', + 2 => 'color: #0000ff;', + 3 => 'color: #0000dd;', + 4 => 'color: #0000ff;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 2 => 'color: #339900;', + 3 => 'color: #d46b0f;', + 4 => 'color: #20b537;', + 5 => 'color: #73776f;', + 6 => 'color: #a71616;', + 7 => 'color: #666666;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #ff0000;', + 1 => 'color: #ff0000;', + ), + 'BRACKETS' => array( + 0 => 'color: #7a0874; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + 1 => 'color: #007788;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;' + ), + 'METHODS' => array( + 1 => 'color: #007788;', + 2 => 'color: #007788;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;', + 1 => 'color: #0000f8;', + 2 => 'color: #000040;', + 3 => 'color: #000040; font-weight: bold;', + 4 => 'color: #008080;' + ), + 'REGEXPS' => array( + 0 => 'color: #0000dd', + 1 => 'color: #0000dd;', + 2 => 'color: #0000dd;', + 3 => 'color: #0000dd;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::', + // FIXME: add -> splitter. + ), + 'REGEXPS' => array( + 0 => '0x[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])*', + 1 => '[0-9]([0-9_]*[0-9])*(e|E)(-|\+)?[0-9]([0-9_]*[0-9])*', + 2 => '[0-9]([0-9_]*[0-9])*(min|s|ms|h|d)', + 3 => '[0-9]+_([0-9_])*[0-9]', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, +); + +?> diff --git a/inc/geshi/uscript.php b/inc/geshi/uscript.php index e06aa8ca7..58cdb8d9e 100644 --- a/inc/geshi/uscript.php +++ b/inc/geshi/uscript.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: pospi (pospi@spadgos.com) * Copyright: (c) 2007 pospi (http://pospi.spadgos.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/05/21 * * UnrealScript language file for GeSHi. diff --git a/inc/geshi/vala.php b/inc/geshi/vala.php index a9d6b0745..acac57e2a 100644 --- a/inc/geshi/vala.php +++ b/inc/geshi/vala.php @@ -4,7 +4,7 @@ * ---------- * Author: Nicolas Joseph (nicolas.joseph@valaide.org) * Copyright: (c) 2009 Nicolas Joseph - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/04/29 * * Vala language file for GeSHi. diff --git a/inc/geshi/vb.php b/inc/geshi/vb.php index dd6545eb5..528e7cd45 100644 --- a/inc/geshi/vb.php +++ b/inc/geshi/vb.php @@ -5,7 +5,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.10 + * Release Version: 1.0.8.11 * Date Started: 2004/08/30 * * Visual Basic language file for GeSHi. diff --git a/inc/geshi/vbnet.php b/inc/geshi/vbnet.php index 563bb993a..758df9893 100644 --- a/inc/geshi/vbnet.php +++ b/inc/geshi/vbnet.php @@ -4,7 +4,7 @@ * --------- * Author: Alan Juden (alan@judenware.org) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/06/04 * * VB.NET language file for GeSHi. @@ -45,60 +45,46 @@ $language_data = array ( 'QUOTEMARKS' => array('"'), 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( + //Keywords 1 => array( - '3DDKSHADOW', '3DHIGHLIGHT', '3DLIGHT', 'ABORT', 'ABORTRETRYIGNORE', 'ACTIVEBORDER', - 'ACTIVETITLEBAR', 'ALIAS', 'APPLICATIONMODAL', 'APPLICATIONWORKSPACE', 'ARCHIVE', - 'BACK', 'BINARYCOMPARE', 'BLACK', 'BLUE', 'BUTTONFACE', 'BUTTONSHADOW', 'BUTTONTEXT', - 'CANCEL', 'CDROM', 'CR', 'CRITICAL', 'CRLF', 'CYAN', 'DEFAULT', 'DEFAULTBUTTON1', - 'DEFAULTBUTTON2', 'DEFAULTBUTTON3', 'DESKTOP', 'DIRECTORY', 'EXCLAMATION', 'FALSE', - 'FIXED', 'FORAPPENDING', 'FORMFEED', 'FORREADING', 'FORWRITING', 'FROMUNICODE', - 'GRAYTEXT', 'GREEN', 'HIDDEN', 'HIDE', 'HIGHLIGHT', 'HIGHLIGHTTEXT', 'HIRAGANA', - 'IGNORE', 'INACTIVEBORDER', 'INACTIVECAPTIONTEXT', 'INACTIVETITLEBAR', 'INFOBACKGROUND', - 'INFORMATION', 'INFOTEXT', 'KATAKANALF', 'LOWERCASE', 'MAGENTA', 'MAXIMIZEDFOCUS', - 'MENUBAR', 'MENUTEXT', 'METHOD', 'MINIMIZEDFOCUS', 'MINIMIZEDNOFOCUS', 'MSGBOXRIGHT', - 'MSGBOXRTLREADING', 'MSGBOXSETFOREGROUND', 'NARROW', 'NEWLINE', 'NO', 'NORMAL', - 'NORMALFOCUS', 'NORMALNOFOCUS', 'NULLSTRING', 'OBJECTERROR', 'OK', 'OKCANCEL', 'OKONLY', - 'PROPERCASE', 'QUESTION', 'RAMDISK', 'READONLY', 'RED', 'REMOTE', 'REMOVABLE', 'RETRY', - 'RETRYCANCEL', 'SCROLLBARS', 'SYSTEMFOLDER', 'SYSTEMMODAL', 'TEMPORARYFOLDER', - 'TEXTCOMPARE', 'TITLEBARTEXT', 'TRUE', 'UNICODE', 'UNKNOWN', 'UPPERCASE', 'VERTICALTAB', - 'VOLUME', 'WHITE', 'WIDE', 'WIN16', 'WIN32', 'WINDOWBACKGROUND', 'WINDOWFRAME', - 'WINDOWSFOLDER', 'WINDOWTEXT', 'YELLOW', 'YES', 'YESNO', 'YESNOCANCEL' - ), + 'AddHandler', 'AddressOf', 'Alias', 'And', 'AndAlso', 'As', 'ByRef', 'ByVal', + 'Call', 'Case', 'Catch', 'Char', 'Class', 'Const', 'Continue', + 'Declare', 'Default', + 'Delegate', 'Dim', 'DirectCast', 'Do', 'Each', 'Else', 'ElseIf', 'End', 'EndIf', + 'Enum', 'Erase', 'Error', 'Event', 'Exit', 'False', 'Finally', 'For', 'Friend', 'Function', + 'Get', 'GetType', 'GetXMLNamespace', 'Global', 'GoSub', 'GoTo', 'Handles', 'If', 'Implements', + 'Imports', 'In', 'Inherits', 'Interface', 'Is', 'IsNot', 'Let', 'Lib', 'Like', 'Loop', 'Me', + 'Mod', 'Module', 'Module Statement', 'MustInherit', 'MustOverride', 'MyBase', 'MyClass', 'Namespace', + 'Narrowing', 'New', 'Next', 'Not', 'Nothing', 'NotInheritable', 'NotOverridable', 'Of', 'On', + 'Operator', 'Option', 'Optional', 'Or', 'OrElse', 'Out', 'Overloads', 'Overridable', 'Overrides', + 'ParamArray', 'Partial', 'Private', 'Property', 'Protected', 'Public', 'RaiseEvent', 'ReadOnly', 'ReDim', + 'REM', 'RemoveHandler', 'Resume', 'Return', 'Select','Set', 'Shadows', 'Shared', 'Static', 'Step', + 'Stop', 'Structure', 'Sub', 'SyncLock', 'Then', 'Throw', 'To', 'True', 'Try', 'TryCast', 'TypeOf', + 'Using', 'Wend', 'When', 'While', 'Widening', 'With', 'WithEvents', 'WriteOnly', 'Xor' + ), + //Data Types 2 => array( - 'AndAlso', 'As', 'ADDHANDLER', 'ASSEMBLY', 'AUTO', 'Binary', 'ByRef', 'ByVal', 'BEGINEPILOGUE', - 'Else', 'ElseIf', 'Empty', 'Error', 'ENDPROLOGUE', 'EXTERNALSOURCE', 'ENVIRON', 'For', - 'Friend', 'Func', 'GET', 'HANDLES', 'Input', 'Is', 'IsNot', 'Len', 'Lock', 'Me', 'Mid', 'MUSTINHERIT', 'MustOverride', - 'MYBASE', 'MYCLASS', 'New', 'Next', 'Nothing', 'Null', 'NOTINHERITABLE', - 'NOTOVERRIDABLE', 'Of', 'OFF', 'On', 'Option', 'Optional', 'Overloads', 'OVERRIDABLE', 'Overrides', 'ParamArray', 'Predicate', - 'Print', 'Private', 'Property', 'Public', 'Resume', 'Return', 'Seek', 'Static', 'Step', - 'String', 'SHELL', 'SENDKEYS', 'SET', 'Shared', 'Then', 'Time', 'To', 'THROW', 'WithEvents' + 'Boolean', 'Byte', 'Date', 'Decimal', 'Double', 'Integer', 'Long', 'Object', + 'SByte', 'Short', 'Single', 'String', 'UInteger', 'ULong', 'UShort' ), + //Compiler Directives 3 => array( - 'COLLECTION', 'DEBUG', 'DICTIONARY', 'DRIVE', 'DRIVES', 'ERR', 'FILE', 'FILES', - 'FILESYSTEMOBJECT', 'FOLDER', 'FOLDERS', 'TEXTSTREAM' + '#Const', '#Else', '#ElseIf', '#End', '#If' ), + //Constants 4 => array( - 'BOOLEAN', 'BYTE', 'DATE', 'DECIMIAL', 'DOUBLE', 'INTEGER', 'LONG', 'OBJECT', - 'SINGLE STRING' + 'CBool', 'CByte', 'CChar', 'CChr', 'CDate', 'CDbl', 'CDec','CInt', 'CLng', 'CLng8', 'CObj', 'CSByte', 'CShort', + 'CSng', 'CStr', 'CType', 'CUInt', 'CULng', 'CUShort' ), + //Linq 5 => array( - 'ADDRESSOF', 'AND', 'BITAND', 'BITNOT', 'BITOR', 'BITXOR', - 'GETTYPE', 'LIKE', 'MOD', 'NOT', 'ORXOR' - ), - 6 => array( - 'APPACTIVATE', 'BEEP', 'CALL', 'CHDIR', 'CHDRIVE', 'CLASS', 'CASE', 'CATCH', 'CONST', - 'DECLARE', 'DELEGATE', 'DELETESETTING', 'DIM', 'DO', 'DOEVENTS', 'END', 'ENUM', - 'EVENT', 'EXIT', 'EACH', 'FUNCTION', 'FINALLY', 'IF', 'IMPORTS', 'INHERITS', - 'INTERFACE', 'IMPLEMENTS', 'KILL', 'LOOP', 'NAMESPACE', 'OPEN', 'PUT', - 'RAISEEVENT', 'RANDOMIZE', 'REDIM', 'REM', 'RESET', 'SAVESETTING', 'SELECT', - 'SETATTR', 'STOP', 'SUB', 'SYNCLOCK', 'STRUCTURE', 'SHADOWS', 'SWITCH', - 'TRY', 'WIDTH', 'WITH', 'WRITE', 'WHILE' + 'By','From','Group','Where' ), + //Built-in functions 7 => array( - 'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CBOOL', 'CBYTE', 'CCHAR', - 'CCHR', 'CDATE', 'CDBL', 'CDEC', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW', - 'CINT', 'CLNG', 'CLNG8', 'CLOSE', 'COBJ', 'COMMAND', 'COMMAND$', 'CONVERSION', - 'COS', 'CREATEOBJECT', 'CSHORT', 'CSTR', 'CURDIR', 'CTYPE', 'CVDATE', 'DATEADD', + 'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW', + 'CLOSE', 'COMMAND', 'COMMAND$', 'CONVERSION', + 'COS', 'CREATEOBJECT', 'CURDIR', 'CVDATE', 'DATEADD', 'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 'DAY', 'DDB', 'DIR', 'DIR$', 'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 'FILEDATATIME', 'FILELEN', 'FILTER', 'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 'FORMATDATETIME', 'FORMATNUMBER', @@ -115,16 +101,10 @@ $language_data = array ( 'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 'TRIM$', 'TYPENAME', 'UBOUND', 'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 'YEAR' ), - 8 => array( - 'ANY', 'ATN', 'CALENDAR', 'CIRCLE', 'CURRENCY', 'DEFBOOL', 'DEFBYTE', 'DEFCUR', - 'DEFDATE', 'DEFDBL', 'DEFDEC', 'DEFINT', 'DEFLNG', 'DEFOBJ', 'DEFSNG', 'DEFSTR', - 'DEFVAR', 'EQV', 'GOSUB', 'IMP', 'INITIALIZE', 'ISMISSING', 'LET', 'LINE', 'LSET', - 'RSET', 'SGN', 'SQR', 'TERMINATE', 'VARIANT', 'VARTYPE', 'WEND' - ), ), 'SYMBOLS' => array( - '&', '&=', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '\\', '\\=', - '^', '^=' + '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', + '(', ')', '{', '}', '.' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -133,24 +113,20 @@ $language_data = array ( 3 => false, 4 => false, 5 => false, - 6 => false, - 7 => false, - 8 => false, + 7 => false ), 'STYLES' => array( 'KEYWORDS' => array( - 1 => 'color: #0600FF;', //Constants - 2 => 'color: #FF8000;', //Keywords - 3 => 'color: #008000;', //Data Types - 4 => 'color: #FF0000;', //Objects - 5 => 'color: #804040;', //Operators - 6 => 'color: #0600FF;', //Statements - 7 => 'color: #0600FF;', //Functions - 8 => 'color: #0600FF;' //Deprecated + 1 => 'color: #0000FF; font-weight: bold;', //Keywords + 2 => 'color: #6a5acd;', //primitive Data Types + 3 => 'color: #6a5acd; font-weight: bold;', //preprocessor-commands + 4 => 'color: #cd6a5a;', //Constants + 5 => 'color: #cd6a5a; font-weight: bold;', //LinQ + 7 => 'color: #000066;', //Built-in functions ), 'COMMENTS' => array( - 1 => 'color: #008080; font-style: italic;', - 'MULTI' => 'color: #008080; font-style: italic;' + 1 => 'color: #008000; font-style: italic;', + 'MULTI' => 'color: #008000; font-style: italic;' ), 'ESCAPE_CHAR' => array( 0 => 'color: #008080; font-weight: bold;' @@ -159,16 +135,16 @@ $language_data = array ( 0 => 'color: #000000;' ), 'STRINGS' => array( - 0 => 'color: #808080;' + 0 => 'color: #a52a2a; back-color: #fffacd;' ), 'NUMBERS' => array( - 0 => 'color: #FF0000;' + 0 => 'color: #a52a2a; back-color: #fffacd;' ), 'METHODS' => array( - 1 => 'color: #0000FF;' + 1 => 'color: #000000;' ), 'SYMBOLS' => array( - 0 => 'color: #008000;' + 0 => 'color: #000000;' ), 'REGEXPS' => array( ), @@ -181,9 +157,7 @@ $language_data = array ( 3 => 'http://www.google.com/search?q={FNAMEU}+site:msdn.microsoft.com', 4 => '', 5 => '', - 6 => '', - 7 => '', - 8 => '' + 7 => 'http://www.google.com/search?q={FNAMEU}+site:msdn.microsoft.com' ), 'OOLANG' => true, 'OBJECT_SPLITTERS' => array( @@ -195,6 +169,13 @@ $language_data = array ( 'SCRIPT_DELIMITERS' => array( ), 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 7 => array( + 'DISALLOWED_AFTER' => '(?!\w)(?=\s*\()' + ) + ) ) ); diff --git a/inc/geshi/vedit.php b/inc/geshi/vedit.php new file mode 100644 index 000000000..19b2bdb21 --- /dev/null +++ b/inc/geshi/vedit.php @@ -0,0 +1,103 @@ +<?php +/************************************************************************************* + * vedit.php + * -------- + * Author: Pauli Lindgren (pauli0212@yahoo.com) + * Copyright: (c) 2009 Pauli Lindgren (http://koti.mbnet.fi/pkl/) + * Release Version: 1.0.8.11 + * Date Started: 2009/12/16 + * + * Vedit macro language language file for GeSHi. + * + * CHANGES + * ------- + * 2009/12/16 (1.0.8.11) + * - First Release + * + * TODO (updated 2009/12/16) + * ------------------------- + * - Add keyword groups 2, 3 and 4. + * + * + ************************************************************************************* + * + * 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' => 'Vedit macro language', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', '\''), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'break', 'breakout', 'break_out', 'continue', 'do', 'else', 'for', + 'goto', 'if', 'repeat', 'return', 'while' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', + '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ',' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array(1 => ''), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?>
\ No newline at end of file diff --git a/inc/geshi/verilog.php b/inc/geshi/verilog.php index 9e4211eb9..2bf66d1c0 100644 --- a/inc/geshi/verilog.php +++ b/inc/geshi/verilog.php @@ -4,7 +4,7 @@ * ----------- * Author: G�nter Dannoritzer <dannoritzer@web.de> * Copyright: (C) 2008 Guenter Dannoritzer - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/05/28 * * Verilog language file for GeSHi. @@ -53,7 +53,7 @@ $language_data = array ( 'casex', 'casez', 'cmos', 'deassign', 'default', 'defparam', 'disable', 'edge', 'else', 'end', 'endcase', 'endfunction', 'endmodule', 'endprimitive', 'endspecify', 'endtable', 'endtask', - 'event', 'for', 'force', 'forever', 'function', 'highz0', + 'event', 'fork', 'for', 'force', 'forever', 'function', 'highz0', 'highz1', 'if', 'ifnone', 'initial', 'inout', 'input', 'integer', 'join', 'large', 'macromodule', 'medium', 'module', 'nand', 'negedge', 'nmos', 'nor', 'not', 'notif0', 'notif1', 'or', diff --git a/inc/geshi/vhdl.php b/inc/geshi/vhdl.php index f6ce941d4..a8f37e676 100644 --- a/inc/geshi/vhdl.php +++ b/inc/geshi/vhdl.php @@ -3,14 +3,21 @@ * vhdl.php * -------- * Author: Alexander 'E-Razor' Krause (admin@erazor-zone.de) + * Contributors: + * - Kevin Thibedeau (kevinpt@yahoo.com) * Copyright: (c) 2005 Alexander Krause - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/06/15 * * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for GeSHi. * * CHANGES * ------- + * 2012/4/30 (1.0.8.10) + * - Reworked to support new features of VHDL-2008. + * - Changes include: multi-line comments, all new keywords, PSL keywords and metacomments, + * - based literals, attribute highlighting, preprocessor macros (from PSL), and other small + * - improvements. * 2008/05/23 (1.0.7.22) * - Added description of extra language features (SF#1970248) * - Optimized regexp group 0 somewhat @@ -43,56 +50,80 @@ $language_data = array ( 'LANG_NAME' => 'VHDL', 'COMMENT_SINGLE' => array(1 => '--'), - 'COMMENT_MULTI' => array('%' => '%'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + // PSL adds C-preprocessor support + 1 => '/(?<=\s)#(?:\\\\\\\\|\\\\\\n|.)*$/m', + // PSL metacomments (single-line only for now) + 2 => '/--\s*@?psl(?:.)*?;$/m', + ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"'), 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( /*keywords*/ 1 => array( - 'access','after','alias','all','assert','attribute','architecture','begin', - 'block','body','buffer','bus','case','component','configuration','constant', - 'disconnect','downto','else','elsif','end','entity','exit','file','for', + 'access','after','alias','all','attribute','architecture','array','begin', + 'block','body','buffer','bus','case','case?','component','configuration','constant','context', + 'disconnect','downto','else','elsif','end','entity','exit','file','for','force', 'function','generate','generic','group','guarded','if','impure','in', 'inertial','inout','is','label','library','linkage','literal','loop', 'map','new','next','null','of','on','open','others','out','package', - 'port','postponed','procedure','process','pure','range','record','register', - 'reject','report','return','select','severity','signal','shared','subtype', + 'port','postponed','procedure','process','protected','pure','range','record','register', + 'reject','release','report','return','select','severity','shared','signal','subtype', 'then','to','transport','type','unaffected','units','until','use','variable', - 'wait','when','while','with','note','warning','error','failure','and', - 'or','xor','not','nor','used','memory','segments','dff','dffe','help_id', - 'mod','info','latch','rising_edge','falling_edge' - ), - /*types*/ + 'wait','when','while','with' + ), + /*types and standard libs*/ 2 => array( - 'bit','bit_vector','character','boolean','integer','real','time','string', + 'bit','bit_vector','character','boolean','integer','real','time','delay_length','string', 'severity_level','positive','natural','signed','unsigned','line','text', - 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector','qsim_state', - 'qsim_state_vector','qsim_12state','qsim_12state_vector','qsim_strength', - 'mux_bit','mux_vector','reg_bit','reg_vector','wor_bit','wor_vector', - 'work','ieee','std_logic_signed','std_logic_1164','std_logic_arith', - 'numeric_std' - - ), + 'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector', + 'sfixed','ufixed','float','float32','float64','float128', + 'work','ieee','std_logic_1164','math_real','math_complex','textio', + 'numeric_std','numeric_std_signed','numeric_std_unsigned','numeric_bit' + ), /*operators*/ - ), + 3 => array( + 'abs','and','mod','nor','not','or','rem','rol','ror','sla','sll','sra','srl','xnor','xor' + ), + /*psl*/ + 4 => array( + 'assert','assume','assume_guarantee','clock','const','countones','cover','default', + 'endpoint','fairness','fell','forall','inf','inherit','isunknown','onehot','onehot0','property', + 'prev','restrict','restrict_guarantee','rose','sequence','stable','strong','union','vmode','vprop','vunit' + ), + /*psl operators*/ + 5 => array( + 'abort','always','before','before!','before!_','before_','eventually!','never', + 'next!','next_a','next_a!','next_e','next_e!','next_event','next_event!','next_event_a','next_event_a!', + 'next_event_e','next_event_e!','until!','until!_','until_','within' + ) + ), 'SYMBOLS' => array( '[', ']', '(', ')', ';',':', - '<','>','=','<=',':=','=>','==' + '<','>','=','+','-','*','/','&','|','?' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, 1 => false, - 2 => false + 2 => false, + 3 => false, + 4 => false, + 5 => false ), 'STYLES' => array( 'KEYWORDS' => array( 1 => 'color: #000080; font-weight: bold;', - 2 => 'color: #0000ff;' + 2 => 'color: #0000ff;', + 3 => 'color: #000066;', + 4 => 'color: #000080; font-weight: bold;', + 5 => 'color: #000066;' ), 'COMMENTS' => array( 1 => 'color: #008000; font-style: italic;', + 2 => 'color: #ff0000; font-weight: bold;', 'MULTI' => 'color: #008000; font-style: italic;' ), 'ESCAPE_CHAR' => array( @@ -114,25 +145,33 @@ $language_data = array ( ), 'REGEXPS' => array( 0 => 'color: #ff0000;', - 1 => 'color: #ff0000;' + //1 => 'color: #ff0000;', + 2 => 'color: #ee82ee;' ), 'SCRIPT' => array( ) ), 'URLS' => array( 1 => '', - 2 => '' - ), + 2 => '', + 3 => '', + 4 => '', + 5 => '' + ), 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( ), 'REGEXPS' => array( - //Hex numbers and scientific notation for numbers - 0 => '(\b0x[0-9a-fA-F]+|\b\d[0-9a-fA-F]+[hH])|'. - '(\b\d+?(\.\d+?)?E[+\-]?\d+)|(\bns)|'. - "('[0-9a-zA-Z]+(?!'))", - //Number characters? - 1 => "\b(''\d'')" + //Based literals, scientific notation, and time units + 0 => '(\b\d+#[[:xdigit:]_]+#)|'. + '(\b[\d_]+(\.[\d_]+)?[eE][+\-]?[\d_]+)|'. + '(\b(hr|min|sec|ms|us|ns|ps|fs)\b)', + //Character literals + /* GeSHi won't match this pattern for some reason and QUOTEMARKS + * can't be used because it interferes with attribute parsing */ + /*1 => "\b'.'\b",*/ + //Attributes + 2 => "'\w+(?!')" ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( diff --git a/inc/geshi/vim.php b/inc/geshi/vim.php index 68abc272e..fe7e5e006 100644 --- a/inc/geshi/vim.php +++ b/inc/geshi/vim.php @@ -6,7 +6,7 @@ * Contributors: * - Laurent Peuch (psycojoker@gmail.com) * Copyright: (c) 2008 Swaroop C H (http://www.swaroopch.com) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/10/19 * * Vim scripting language file for GeSHi. diff --git a/inc/geshi/visualfoxpro.php b/inc/geshi/visualfoxpro.php index 322f34bae..123a3db41 100644 --- a/inc/geshi/visualfoxpro.php +++ b/inc/geshi/visualfoxpro.php @@ -4,7 +4,7 @@ * ---------------- * Author: Roberto Armellin (r.armellin@tin.it) * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/09/17 * * Visual FoxPro language file for GeSHi. diff --git a/inc/geshi/visualprolog.php b/inc/geshi/visualprolog.php index a51466dcd..d36f1c67a 100644 --- a/inc/geshi/visualprolog.php +++ b/inc/geshi/visualprolog.php @@ -4,7 +4,7 @@ * ---------- * Author: Thomas Linder Puls (puls@pdc.dk) * Copyright: (c) 2008 Thomas Linder Puls (puls@pdc.dk) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/11/20 * * Visual Prolog language file for GeSHi. diff --git a/inc/geshi/whitespace.php b/inc/geshi/whitespace.php index 3e19b60ce..58f396376 100644 --- a/inc/geshi/whitespace.php +++ b/inc/geshi/whitespace.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2009/10/31 * * Whitespace language file for GeSHi. diff --git a/inc/geshi/whois.php b/inc/geshi/whois.php index ae851cd08..a89e4731d 100644 --- a/inc/geshi/whois.php +++ b/inc/geshi/whois.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/09/14 * * Whois response (RPSL format) language file for GeSHi. diff --git a/inc/geshi/winbatch.php b/inc/geshi/winbatch.php index d27fe070f..3599a027c 100644 --- a/inc/geshi/winbatch.php +++ b/inc/geshi/winbatch.php @@ -4,7 +4,7 @@ * ------------ * Author: Craig Storey (storey.craig@gmail.com) * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2006/05/19 * * WinBatch language file for GeSHi. diff --git a/inc/geshi/xbasic.php b/inc/geshi/xbasic.php index 94a2debf1..2edede364 100644 --- a/inc/geshi/xbasic.php +++ b/inc/geshi/xbasic.php @@ -4,7 +4,7 @@ * ---------- * Author: Jos Gabriel Moya Yangela (josemoya@gmail.com) * Copyright: (c) 2005 Jos Gabriel Moya Yangela (http://aprenderadesaprender.6te.net) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2005/11/23 * * XBasic language file for GeSHi. diff --git a/inc/geshi/xml.php b/inc/geshi/xml.php index 4a420d1b7..6354e457b 100644 --- a/inc/geshi/xml.php +++ b/inc/geshi/xml.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2004/09/01 * * XML language file for GeSHi. Based on the idea/file by Christian Weiske diff --git a/inc/geshi/xorg_conf.php b/inc/geshi/xorg_conf.php index e1fff61b5..99edc6652 100644 --- a/inc/geshi/xorg_conf.php +++ b/inc/geshi/xorg_conf.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2008/06/18 * * xorg.conf language file for GeSHi. diff --git a/inc/geshi/xpp.php b/inc/geshi/xpp.php index d4d7b457d..a06e27794 100644 --- a/inc/geshi/xpp.php +++ b/inc/geshi/xpp.php @@ -4,7 +4,7 @@ * ------- * Author: Simon Butcher (simon@butcher.name) * Copyright: (c) 2007 Simon Butcher (http://simon.butcher.name/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/02/27 * * Axapta/Dynamics Ax X++ language file for GeSHi. diff --git a/inc/geshi/yaml.php b/inc/geshi/yaml.php index 1b3ce96f2..a2974eb57 100644 --- a/inc/geshi/yaml.php +++ b/inc/geshi/yaml.php @@ -4,7 +4,7 @@ * -------- * Author: Josh Ventura (JoshV10@gmail.com) * Copyright: (c) 2010 Josh Ventura - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/12/14 * * YAML language file for GeSHi. diff --git a/inc/geshi/z80.php b/inc/geshi/z80.php index cb92e9692..47326bb21 100644 --- a/inc/geshi/z80.php +++ b/inc/geshi/z80.php @@ -4,7 +4,7 @@ * ------- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2007-2008 Benny Baumann (http://www.omorphia.de/) - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2007/02/06 * * ZiLOG Z80 Assembler language file for GeSHi. diff --git a/inc/geshi/zxbasic.php b/inc/geshi/zxbasic.php index b32b8950a..b1de472b5 100644 --- a/inc/geshi/zxbasic.php +++ b/inc/geshi/zxbasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Jose Rodriguez (a.k.a. Boriel) * Based on Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) Freebasic template - * Release Version: 1.0.8.10 + * Release Version: 1.0.8.11 * Date Started: 2010/06/19 * * ZXBasic language file for GeSHi. diff --git a/inc/html.php b/inc/html.php index af047a107..f4e6af663 100644 --- a/inc/html.php +++ b/inc/html.php @@ -13,6 +13,10 @@ if(!defined('NL')) define('NL',"\n"); * Convenience function to quickly build a wikilink * * @author Andreas Gohr <andi@splitbrain.org> + * @param string $id id of the target page + * @param string $name the name of the link, i.e. the text that is displayed + * @param string|array $search search string(s) that shall be highlighted in the target page + * @return string the HTML code of the link */ function html_wikilink($id,$name=null,$search=''){ static $xhtml_renderer = null; @@ -121,7 +125,7 @@ function html_secedit_get_button($data) { global $ID; global $INFO; - if (!isset($data['name']) || $data['name'] === '') return; + if (!isset($data['name']) || $data['name'] === '') return ''; $name = $data['name']; unset($data['name']); @@ -146,7 +150,6 @@ function html_secedit_get_button($data) { function html_topbtn(){ global $lang; - $ret = ''; $ret = '<a class="nolink" href="#dokuwiki__top"><input type="button" class="button" value="'.$lang['btn_top'].'" onclick="window.scrollTo(0, 0)" title="'.$lang['btn_top'].'" /></a>'; return $ret; @@ -166,7 +169,6 @@ function html_btn($name,$id,$akey,$params,$method='get',$tooltip='',$label=false $label = $lang['btn_'.$name]; $ret = ''; - $tip = ''; //filter id (without urlencoding) $id = idfilter($id,false); @@ -256,7 +258,6 @@ function html_draft(){ global $INFO; global $ID; global $lang; - global $conf; $draft = unserialize(io_readFile($INFO['draft'],false)); $text = cleanText(con($draft['prefix'],$draft['text'],$draft['suffix'],true)); @@ -312,9 +313,7 @@ function html_hilight_callback($m) { * @author Andreas Gohr <andi@splitbrain.org> */ function html_search(){ - global $conf; global $QUERY; - global $ID; global $lang; $intro = p_locale_xhtml('searchpage'); @@ -335,8 +334,6 @@ function html_search(){ flush(); //do quick pagesearch - $data = array(); - $data = ft_pageLookup($QUERY,true,useHeading('navigation')); if(count($data)){ print '<div class="search_quickresult">'; @@ -467,6 +464,7 @@ function html_revisions($first=0, $media_id = false){ else $exists = @file_exists(mediaFN($id)); $display_name = (!$media_id && useHeading('navigation')) ? hsc(p_get_first_heading($id)) : $id; + if (!$display_name) $display_name = $id; if($exists && $first==0){ if (!$media_id && isset($INFO['meta']) && isset($INFO['meta']['last_change']) && $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT) @@ -718,6 +716,9 @@ function html_recent($first=0, $show_changes='both'){ $form->addElement($date); $form->addElement(form_makeCloseTag('span')); + $diff = false; + $href = ''; + if ($recent['media']) { $diff = (count(getRevisions($recent['id'], 0, 1, 8192, true)) && @file_exists(mediaFN($recent['id']))); if ($diff) { @@ -827,7 +828,6 @@ function html_recent($first=0, $show_changes='both'){ function html_index($ns){ global $conf; global $ID; - $dir = $conf['datadir']; $ns = cleanID($ns); #fixme use appropriate function if(empty($ns)){ @@ -863,7 +863,8 @@ function html_list_index($item){ $ret .= $base; $ret .= '</strong></a>'; }else{ - $ret .= html_wikilink(':'.$item['id']); + // default is noNSorNS($id), but we want noNS($id) when useheading is off FS#2605 + $ret .= html_wikilink(':'.$item['id'], useHeading('navigation') ? null : noNS($item['id'])); } return $ret; } @@ -977,7 +978,6 @@ function html_buildlist($data,$class,$func,$lifunc='html_li_default',$forcewrapp */ function html_backlinks(){ global $ID; - global $conf; global $lang; print p_locale_xhtml('backlinks'); @@ -997,6 +997,14 @@ function html_backlinks(){ } } +/** + * Get header of diff HTML + * @param string $l_rev Left revisions + * @param string $r_rev Right revision + * @param string $id Page id, if null $ID is used + * @param bool $media If it is for media files + * @return array HTML snippets for diff header + */ function html_diff_head($l_rev, $r_rev, $id = null, $media = false) { global $lang; if ($id === null) { @@ -1072,13 +1080,13 @@ function html_diff_head($l_rev, $r_rev, $id = null, $media = false) { * * @author Andreas Gohr <andi@splitbrain.org> * @param string $text - compare with this text with most current version - * @param bool $intr - display the intro text + * @param bool $intro - display the intro text + * @param string $type type of the diff (inline or sidebyside) */ function html_diff($text='',$intro=true,$type=null){ global $ID; global $REV; global $lang; - global $conf; global $INPUT; if(!$type) $type = $INPUT->str('difftype'); @@ -1116,7 +1124,7 @@ function html_diff($text='',$intro=true,$type=null){ $r_text = cleanText($text); $r_head = $lang['yours']; }else{ - if($rev1 && $rev2){ // two specific revisions wanted + if($rev1 && isset($rev2) && $rev2){ // two specific revisions wanted // make sure order is correct (older on the left) if($rev1 < $rev2){ $l_rev = $rev1; @@ -1230,6 +1238,7 @@ function html_conflict($text,$summary){ */ function html_msgarea(){ global $MSG, $MSG_shown; + /** @var array $MSG */ // store if the global $MSG has already been shown and thus HTML output has been started $MSG_shown = true; @@ -1256,7 +1265,6 @@ function html_msgarea(){ function html_register(){ global $lang; global $conf; - global $ID; global $INPUT; print p_locale_xhtml('register'); @@ -1289,8 +1297,8 @@ function html_updateprofile(){ global $lang; global $conf; global $INPUT; - global $ID; global $INFO; + /** @var auth_basic $auth */ global $auth; print p_locale_xhtml('updateprofile'); @@ -1489,6 +1497,7 @@ function html_minoredit(){ function html_debug(){ global $conf; global $lang; + /** @var auth_basic $auth */ global $auth; global $INFO; @@ -1573,14 +1582,15 @@ function html_debug(){ function html_admin(){ global $ID; global $INFO; - global $lang; global $conf; + /** @var auth_basic $auth */ global $auth; // build menu of admin functions from the plugins that handle them $pluginlist = plugin_list('admin'); $menu = array(); foreach ($pluginlist as $p) { + /** @var DokuWiki_Admin_Plugin $obj */ if($obj =& plugin_load('admin',$p) === null) continue; // check permissions @@ -1682,7 +1692,6 @@ function html_admin(){ function html_resendpwd() { global $lang; global $conf; - global $ID; global $INPUT; $token = preg_replace('/[^a-f0-9]+/','',$INPUT->str('pwauth')); @@ -1762,9 +1771,9 @@ function html_list_toc($item){ * @param string $text - what to display in the TOC * @param int $level - nesting level * @param string $hash - is prepended to the given $link, set blank if you want full links + * @return array the toc item */ function html_mktocitem($link, $text, $level, $hash='#'){ - global $conf; return array( 'link' => $hash.$link, 'title' => $text, 'type' => 'ul', @@ -1776,6 +1785,8 @@ function html_mktocitem($link, $text, $level, $hash='#'){ * Triggers an event with the form name: HTML_{$name}FORM_OUTPUT * * @author Tom N Harris <tnharris@whoopdedo.org> + * @param string $name The name of the form + * @param Doku_Form $form The form */ function html_form($name, &$form) { // Safety check in case the caller forgets. @@ -1786,6 +1797,7 @@ function html_form($name, &$form) { /** * Form print function. * Just calls printForm() on the data object. + * @param Doku_Form $data The form */ function html_form_output($data) { $data->printForm(); @@ -1868,6 +1880,12 @@ function html_flashobject($swf,$width,$height,$params=null,$flashvars=null,$atts return $out; } +/** + * Prints HTML code for the given tab structure + * + * @param array $tabs tab structure + * @param string $current_tab the current tab id + */ function html_tabs($tabs, $current_tab = null) { echo '<ul class="tabs">'.NL; diff --git a/inc/httputils.php b/inc/httputils.php index b815f3ca6..4ba287eb5 100644 --- a/inc/httputils.php +++ b/inc/httputils.php @@ -15,7 +15,7 @@ define('HTTP_CHUNK_SIZE',16*1024); * * @author Simon Willison <swillison@gmail.com> * @link http://simonwillison.net/2003/Apr/23/conditionalGet/ - * @param timestamp $timestamp lastmodified time of the cache file + * @param int $timestamp lastmodified time of the cache file * @returns void or exits with previously header() commands executed */ function http_conditionalRequest($timestamp){ diff --git a/inc/infoutils.php b/inc/infoutils.php index 9ee1a717d..7ceeae8f1 100644 --- a/inc/infoutils.php +++ b/inc/infoutils.php @@ -213,22 +213,6 @@ function check(){ msg('The current page is not writable by you',0); } - $check = wl('','',true).'data/_dummy'; - $http = new DokuHTTPClient(); - $http->timeout = 6; - $res = $http->get($check); - if(strpos($res,'data directory') !== false){ - msg('It seems like the data directory is accessible from the web. - Make sure this directory is properly protected - (See <a href="http://www.dokuwiki.org/security">security</a>)',-1); - }elseif($http->status == 404 || $http->status == 403){ - msg('The data directory seems to be properly protected',1); - }else{ - msg('Failed to check if the data directory is accessible from the web. - Make sure this directory is properly protected - (See <a href="http://www.dokuwiki.org/security">security</a>)',-1); - } - // Check for corrupted search index $lengths = idx_listIndexLengths(); $index_corrupted = false; diff --git a/inc/init.php b/inc/init.php index 00ab2afe9..9568d9b93 100644 --- a/inc/init.php +++ b/inc/init.php @@ -129,9 +129,13 @@ if(!defined('DOKU_TPLINC')) define('DOKU_TPLINC', // enable gzip compression if supported $conf['gzip_output'] &= (strpos($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip') !== false); +global $ACT; if ($conf['gzip_output'] && !defined('DOKU_DISABLE_GZIP_OUTPUT') && - function_exists('ob_gzhandler')) { + function_exists('ob_gzhandler') && + // Disable compression when a (compressed) sitemap might be delivered + // See https://bugs.dokuwiki.org/index.php?do=details&task_id=2576 + $ACT != 'sitemap') { ob_start('ob_gzhandler'); } @@ -162,7 +166,7 @@ if (get_magic_quotes_gpc() && !defined('MAGIC_QUOTES_STRIPPED')) { @ini_set('magic_quotes_gpc', 0); define('MAGIC_QUOTES_STRIPPED',1); } -@set_magic_quotes_runtime(0); +if(function_exists('set_magic_quotes_runtime')) @set_magic_quotes_runtime(0); @ini_set('magic_quotes_sybase',0); // don't let cookies ever interfere with request vars diff --git a/inc/io.php b/inc/io.php index 4c6eb97df..b4da7d635 100644 --- a/inc/io.php +++ b/inc/io.php @@ -18,8 +18,8 @@ if(!defined('DOKU_INC')) die('meh.'); * * @todo use safemode hack * @param string $id - a pageid, the namespace of that id will be tried to deleted - * @param string $basadir - the config name of the type to delete (datadir or mediadir usally) - * @returns bool - true if at least one namespace was deleted + * @param string $basedir - the config name of the type to delete (datadir or mediadir usally) + * @return bool - true if at least one namespace was deleted * @author Andreas Gohr <andi@splitbrain.org> * @author Ben Coburn <btcoburn@silicodon.net> */ @@ -113,6 +113,7 @@ function io_readFile($file,$clean=true){ function bzfile($file){ $bz = bzopen($file,"r"); + $str = ''; while (!feof($bz)){ //8192 seems to be the maximum buffersize? $str = $str . bzread($bz,8192); @@ -477,8 +478,8 @@ function io_download($url,$file,$useAttachment=false,$defaultName='',$maxSize=20 $data = $http->get($url); if(!$data) return false; + $name = ''; if ($useAttachment) { - $name = ''; if (isset($http->resp_headers['content-disposition'])) { $content_disposition = $http->resp_headers['content-disposition']; $match=array(); @@ -578,8 +579,8 @@ function io_exec($cmd, $input, &$output){ * @param string $file The file to search * @param string $pattern PCRE pattern * @param int $max How many lines to return (0 for all) - * @param bool $baxkref When true returns array with backreferences instead of lines - * @return matching lines or backref, false on error + * @param bool $backref When true returns array with backreferences instead of lines + * @return array matching lines or backref, false on error */ function io_grep($file,$pattern,$max=0,$backref=false){ $fh = @fopen($file,'r'); diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php index 350e26695..8f34936f3 100644 --- a/inc/lang/ar/lang.php +++ b/inc/lang/ar/lang.php @@ -324,4 +324,3 @@ $lang['media_perm_read'] = 'عفوا، لست مخولا بقراءة ال $lang['media_perm_upload'] = 'عفوا، لست مخولا برفع الملفات.'; $lang['media_update'] = 'ارفع إصدارا أحدث'; $lang['media_restore'] = 'استرجع هذه النسخة'; -$lang['plugin_install_err'] = 'ثبتت الإضافة بشكل خاطئ. أعد تسمية دليل الإضافة \'%s\' إلى \'%s\'.'; diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php index 562dc78b3..3c6c17211 100644 --- a/inc/lang/bg/lang.php +++ b/inc/lang/bg/lang.php @@ -344,6 +344,4 @@ $lang['media_perm_upload'] = 'За съжаление нямате дост $lang['media_update'] = 'Качване на нова версия'; $lang['media_restore'] = 'Възстановяване на тази версия'; -$lang['plugin_install_err'] = 'Неправилно инсталирана приставка. Моля, преименувайте директорията \'%s\' на \'%s\'.'; - //Setup VIM: ex: et ts=2 : diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php index 608beafd8..a53da327a 100644 --- a/inc/lang/cs/lang.php +++ b/inc/lang/cs/lang.php @@ -47,6 +47,7 @@ $lang['btn_backtomedia'] = 'Zpět do Výběru dokumentu'; $lang['btn_subscribe'] = 'Odebírat emailem změny stránky'; $lang['btn_profile'] = 'Upravit profil'; $lang['btn_reset'] = 'Reset'; +$lang['btn_resendpwd'] = 'Nastavit nové heslo'; $lang['btn_draft'] = 'Upravit koncept'; $lang['btn_recover'] = 'Obnovit koncept'; $lang['btn_draftdel'] = 'Vymazat koncept'; @@ -83,6 +84,7 @@ $lang['profnoempty'] = 'Nelze zadat prázdné jméno nebo mailová adr $lang['profchanged'] = 'Uživatelský profil změněn.'; $lang['pwdforget'] = 'Zapomněli jste heslo? Nechte si zaslat nové'; $lang['resendna'] = 'Tato wiki neumožňuje zasílání nových hesel.'; +$lang['resendpwd'] = 'Nastavit nové heslo pro'; $lang['resendpwdmissing'] = 'Musíte vyplnit všechny položky.'; $lang['resendpwdnouser'] = 'Bohužel takový uživatel v systému není.'; $lang['resendpwdbadauth'] = 'Autorizační kód není platný. Zadali jste opravdu celý odkaz na potvrzovací stránku?'; @@ -95,6 +97,7 @@ $lang['searchmedia_in'] = 'Hledat v %s'; $lang['txt_upload'] = 'Vyberte soubor jako přílohu'; $lang['txt_filename'] = 'Wiki jméno (volitelné)'; $lang['txt_overwrt'] = 'Přepsat existující soubor'; +$lang['maxuploadsize'] = 'Max. velikost souboru %s'; $lang['lockedby'] = 'Právě zamknuto:'; $lang['lockexpire'] = 'Zámek vyprší:'; $lang['js']['willexpire'] = 'Váš zámek pro editaci za chvíli vyprší.\nAbyste předešli konfliktům, stiskněte tlačítko Náhled a zámek se prodlouží.'; @@ -264,6 +267,7 @@ $lang['subscr_style_digest'] = 'souhrnný email změn pro každou stránku (ka $lang['subscr_style_list'] = 'seznam změněných stránek od posledního emailu (každé %.2f dny/dní)'; $lang['authmodfailed'] = 'Autentizace uživatelů je špatně nastavena. Informujte prosím správce této wiki.'; $lang['authtempfail'] = 'Autentizace uživatelů je dočasně nedostupná. Pokud tento problém přetrvává, informujte prosím správce této wiki.'; +$lang['authpwdexpire'] = 'Platnost vašeho hesla vyprší za %d dní, měli byste ho změnit co nejdříve.'; $lang['i_chooselang'] = 'Vyberte si jazyk'; $lang['i_installer'] = 'Instalace DokuWiki'; $lang['i_wikiname'] = 'Název wiki'; @@ -318,4 +322,3 @@ $lang['media_perm_read'] = 'Bohužel, nemáte práva číst soubory.'; $lang['media_perm_upload'] = 'Bohužel, nemáte práva nahrávat soubory.'; $lang['media_update'] = 'Nahrát novou verzi'; $lang['media_restore'] = 'Obnovit tuto verzi'; -$lang['plugin_install_err'] = 'Plugin je špatně nainstalován. Přejmenujte adresář pluginu \'%s\' na \'%s\'.'; diff --git a/inc/lang/cs/mailwrap.html b/inc/lang/cs/mailwrap.html new file mode 100644 index 000000000..dacd38d57 --- /dev/null +++ b/inc/lang/cs/mailwrap.html @@ -0,0 +1,13 @@ +<html> + <head> + <title>@TITLE@</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + </head> + <body> + + @HTMLBODY@ + + <br /><hr /> + <small>Tento mail byl vygenerován systémem DokuWiki na adrese @DOKUWIKIURL@.</small> + </body> + </html>
\ No newline at end of file diff --git a/inc/lang/cs/resetpwd.txt b/inc/lang/cs/resetpwd.txt new file mode 100644 index 000000000..9aa449cb6 --- /dev/null +++ b/inc/lang/cs/resetpwd.txt @@ -0,0 +1,3 @@ +====== Nastavení nového hesla ====== + +Zadejte prosím nové heslo pro váš účet.
\ No newline at end of file diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php index 97f2138b4..ee8de1bb8 100644 --- a/inc/lang/da/lang.php +++ b/inc/lang/da/lang.php @@ -325,4 +325,3 @@ $lang['media_perm_read'] = 'Du har ikke nok rettigheder til at læse filer $lang['media_perm_upload'] = 'Du har ikke nok rettigheder til at uploade filer.'; $lang['media_update'] = 'Upload ny version'; $lang['media_restore'] = 'Genskab denne version'; -$lang['plugin_install_err'] = 'Plugin installeret forkert. Omdøb plugin folder \'%s\' til \'%s\'.'; diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php index 37469522f..0558a2a56 100644 --- a/inc/lang/de-informal/lang.php +++ b/inc/lang/de-informal/lang.php @@ -327,4 +327,3 @@ $lang['media_perm_read'] = 'Du besitzt nicht die notwendigen Berechtigunge $lang['media_perm_upload'] = 'Du besitzt nicht die notwendigen Berechtigungen um Dateien hochzuladen.'; $lang['media_update'] = 'Neue Version hochladen'; $lang['media_restore'] = 'Diese Version wiederherstellen'; -$lang['plugin_install_err'] = 'Plugin nicht korrekt installiert. Plugin-Verzeichnis von \'%s\' nach \'%s\' umbenennen.'; diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php index 4ea75157b..410022a3d 100644 --- a/inc/lang/de/lang.php +++ b/inc/lang/de/lang.php @@ -329,4 +329,3 @@ $lang['media_perm_read'] = 'Sie besitzen nicht die notwendigen Berechtigun $lang['media_perm_upload'] = 'Sie besitzen nicht die notwendigen Berechtigungen um Dateien hochzuladen.'; $lang['media_update'] = 'Neue Version hochladen'; $lang['media_restore'] = 'Diese Version wiederherstellen'; -$lang['plugin_install_err'] = 'Plugin nicht korrekt installiert. Plugin-Verzeichnis von \'%s\' nach \'%s\' umbenennen.'; diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php index 95f1a1ea5..443a5061d 100644 --- a/inc/lang/el/lang.php +++ b/inc/lang/el/lang.php @@ -306,4 +306,3 @@ $lang['media_perm_read'] = 'Συγνώμη, δεν έχετε επαρκή $lang['media_perm_upload'] = 'Συγνώμη, δεν έχετε επαρκή διακαιώματα για να φορτώσετε αυτά τα αρχεία.'; $lang['media_update'] = 'Φόρτωση νέας έκδοσης'; $lang['media_restore'] = 'Επαναφορά αυτή της έκδοσης'; -$lang['plugin_install_err'] = 'Η επέκταση δεν εγκαταστήθηκε σωστά. Μετονομασία φακέλου επεκτάσεων από \'%s\' σε \'%s\'.'; diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index 3c51ba224..0e5a9ac3c 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -347,6 +347,4 @@ $lang['media_perm_upload'] = 'Sorry, you don\'t have enough rights to upload $lang['media_update'] = 'Upload new version'; $lang['media_restore'] = 'Restore this version'; -$lang['plugin_install_err'] = "Plugin installed incorrectly. Rename plugin directory '%s' to '%s'."; - //Setup VIM: ex: et ts=2 : diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php index b2c64b2a6..5a0b0245f 100644 --- a/inc/lang/eo/lang.php +++ b/inc/lang/eo/lang.php @@ -95,6 +95,7 @@ $lang['searchmedia_in'] = 'Serĉi en %s'; $lang['txt_upload'] = 'Elektu dosieron por alŝuti'; $lang['txt_filename'] = 'Alŝuti kiel (laŭvole)'; $lang['txt_overwrt'] = 'Anstataŭigi ekzistantan dosieron'; +$lang['maxuploadsize'] = 'Alŝuto maks. %s po dosiero.'; $lang['lockedby'] = 'Nune ŝlosita de'; $lang['lockexpire'] = 'Ŝlosado ĉesos en'; $lang['js']['willexpire'] = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempokontrolon de la ŝlosado, premu la butonon "Antaŭrigardi".'; @@ -193,6 +194,7 @@ $lang['user_tools'] = 'Uzantaj iloj'; $lang['site_tools'] = 'Retejaj iloj'; $lang['page_tools'] = 'Paĝaj iloj'; $lang['skip_to_content'] = 'al la enhavo'; +$lang['sidebar'] = 'Flanka strio'; $lang['mail_newpage'] = 'paĝo aldonita:'; $lang['mail_changed'] = 'paĝo modifita:'; $lang['mail_subscribe_list'] = 'ŝanĝitaj paĝoj en nomspaco:'; @@ -263,6 +265,7 @@ $lang['subscr_style_digest'] = 'resuma retpoŝtaĵo de ŝanĝoj por ĉiu paĝo $lang['subscr_style_list'] = 'listo de ŝanĝitaj paĝoj ekde la lasta retpoŝtaĵo (je %.2f tagoj)'; $lang['authmodfailed'] = 'Malbona agordo por identigi la uzanton. Bonvolu informi la administranton de la vikio.'; $lang['authtempfail'] = 'La identigo de via uzantonomo estas intertempe maldisponebla. Se tiu ĉi situacio daŭros, bonvolu informi la adminstranton de la vikio.'; +$lang['authpwdexpire'] = 'Via pasvorto malvalidos post %d tagoj, prefere ŝanĝu ĝin baldaũ.'; $lang['i_chooselang'] = 'Elektu vian lingvon'; $lang['i_installer'] = 'Instalilo de DokuWiki'; $lang['i_wikiname'] = 'Nomo de la vikio'; diff --git a/inc/lang/eo/mailwrap.html b/inc/lang/eo/mailwrap.html new file mode 100644 index 000000000..9e92a00f7 --- /dev/null +++ b/inc/lang/eo/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Tiu retpoŝtaĵo venas de DokuWiki ĉe @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/eo/resetpwd.txt b/inc/lang/eo/resetpwd.txt new file mode 100644 index 000000000..442a7ac4e --- /dev/null +++ b/inc/lang/eo/resetpwd.txt @@ -0,0 +1,4 @@ +====== Difini novan pasvorton ====== + + +Bonvolu indiki novan pasvorton por via konto en tiu ĉi vikio.
\ No newline at end of file diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php index ee3da258b..95b1af43e 100644 --- a/inc/lang/es/lang.php +++ b/inc/lang/es/lang.php @@ -26,6 +26,7 @@ * @author emezeta <emezeta@infoprimo.com> * @author Oscar Ciudad <oscar@jacho.net> * @author Ruben Figols <ruben.figols@gmail.com> + * @author Gerardo Zamudio <gerardo@gerardozamudio.net> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -56,11 +57,12 @@ $lang['btn_admin'] = 'Administrar'; $lang['btn_update'] = 'Actualizar'; $lang['btn_delete'] = 'Borrar'; $lang['btn_back'] = 'Atrás'; -$lang['btn_backlink'] = 'Enlaces anteriores'; +$lang['btn_backlink'] = 'Enlaces a esta página'; $lang['btn_backtomedia'] = 'Volver a la selección de archivos multimedia'; $lang['btn_subscribe'] = 'Suscribirse a cambios de la página'; $lang['btn_profile'] = 'Actualizar perfil'; $lang['btn_reset'] = 'Restablecer'; +$lang['btn_resendpwd'] = 'Establecer nueva contraseña'; $lang['btn_draft'] = 'Editar borrador'; $lang['btn_recover'] = 'Recuperar borrador'; $lang['btn_draftdel'] = 'Eliminar borrador'; @@ -97,6 +99,7 @@ $lang['profnoempty'] = 'No se permite que el nombre o la dirección de $lang['profchanged'] = 'Se actualizó correctamente el perfil del usuario.'; $lang['pwdforget'] = '¿Has olvidado tu contraseña? Consigue una nueva'; $lang['resendna'] = 'Este wiki no brinda la posibilidad de reenvío de contraseña.'; +$lang['resendpwd'] = 'Establecer nueva contraseña para'; $lang['resendpwdmissing'] = 'Lo siento, debes completar todos los campos.'; $lang['resendpwdnouser'] = 'Lo siento, no se encuentra este usuario en nuestra base de datos.'; $lang['resendpwdbadauth'] = 'Lo siento, este código de autenticación no es válido. Asegúrate de haber usado el enlace de confirmación entero.'; @@ -109,6 +112,7 @@ $lang['searchmedia_in'] = 'Buscar en %s'; $lang['txt_upload'] = 'Selecciona el archivo a subir'; $lang['txt_filename'] = 'Subir como (opcional)'; $lang['txt_overwrt'] = 'Sobreescribir archivo existente'; +$lang['maxuploadsize'] = 'Peso máximo de %s por archivo'; $lang['lockedby'] = 'Actualmente bloqueado por'; $lang['lockexpire'] = 'El bloqueo expira en'; $lang['js']['willexpire'] = 'El bloqueo para la edición de esta página expira en un minuto.\nPAra prevenir conflictos uso el botón Previsualizar para restaurar el contador de bloqueo.'; @@ -203,6 +207,12 @@ $lang['external_edit'] = 'editor externo'; $lang['summary'] = 'Resumen de la edición'; $lang['noflash'] = 'Para mostrar este contenido es necesario el <a href="http://www.adobe.com/products/flashplayer/">Plugin Adobe Flash</a>.'; $lang['download'] = 'Descargar trozo de código fuente'; +$lang['tools'] = 'Herramientas'; +$lang['user_tools'] = 'Herramientas de usuario'; +$lang['site_tools'] = 'Herramientas del sitio'; +$lang['page_tools'] = 'Herramientas de la página'; +$lang['skip_to_content'] = 'Saltar a contenido'; +$lang['sidebar'] = 'Barra lateral'; $lang['mail_newpage'] = 'página añadida:'; $lang['mail_changed'] = 'página cambiada:'; $lang['mail_subscribe_list'] = 'páginas cambiadas en el espacio de nombre:'; @@ -273,6 +283,7 @@ $lang['subscr_style_digest'] = 'recopilar correo de cambios por cada página'; $lang['subscr_style_list'] = 'lista de páginas con cambios desde el último correo'; $lang['authmodfailed'] = 'Está mal configurada la autenticación de usuarios. Por favor, avisa al administrador del wiki.'; $lang['authtempfail'] = 'La autenticación de usuarios no está disponible temporalmente. Si esta situación persiste, por favor avisa al administrador del wiki.'; +$lang['authpwdexpire'] = 'Su contraseña caducara en %d días, debería cambiarla lo antes posible'; $lang['i_chooselang'] = 'Elija su idioma'; $lang['i_installer'] = 'Instalador de DokuWiki'; $lang['i_wikiname'] = 'Nombre del wiki'; @@ -327,4 +338,3 @@ $lang['media_perm_read'] = 'Disculpa, no tienes los permisos necesarios pa $lang['media_perm_upload'] = 'Disculpa, no tienes los permisos necesarios para cargar ficheros.'; $lang['media_update'] = 'Actualizar nueva versión'; $lang['media_restore'] = 'Restaurar esta versión'; -$lang['plugin_install_err'] = 'Plugin instalado incorrectamente. Renombra el directorio de plugins \'%s\' to \'%s\'.'; diff --git a/inc/lang/es/mailwrap.html b/inc/lang/es/mailwrap.html new file mode 100644 index 000000000..3cf255f79 --- /dev/null +++ b/inc/lang/es/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Este correo ha sido generado por DokuWiki desde @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/es/resetpwd.txt b/inc/lang/es/resetpwd.txt new file mode 100644 index 000000000..6fade9598 --- /dev/null +++ b/inc/lang/es/resetpwd.txt @@ -0,0 +1,3 @@ +====== Establecer nueva contraseña ====== + +Favor de introducir una nueva contraseña para su cuenta en este wiki
\ No newline at end of file diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php index 1b8586d5a..33a89a631 100644 --- a/inc/lang/fa/lang.php +++ b/inc/lang/fa/lang.php @@ -323,4 +323,3 @@ $lang['media_perm_read'] = 'متاسفانه ، شما حق خواندن $lang['media_perm_upload'] = 'متاسفانه ، شما حق آپلود این فایل ها را ندارید.'; $lang['media_update'] = 'آپلود نسخه جدید'; $lang['media_restore'] = 'بازیابی این نسخه'; -$lang['plugin_install_err'] = 'افزونه به صورت نادرست نصب شده است. دایرکتوری افزونه را از \'%s\' به \'%s\' تغییر دهید.'; diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php index ce15f68d0..4f5f6f1a2 100644 --- a/inc/lang/fi/lang.php +++ b/inc/lang/fi/lang.php @@ -43,6 +43,7 @@ $lang['btn_backtomedia'] = 'Takaisin mediatiedostojen valintaan'; $lang['btn_subscribe'] = 'Tilaa muutokset'; $lang['btn_profile'] = 'Päivitä profiili'; $lang['btn_reset'] = 'Tyhjennä'; +$lang['btn_resendpwd'] = 'Aseta uusi salasana'; $lang['btn_draft'] = 'Muokkaa luonnosta'; $lang['btn_recover'] = 'Palauta luonnos'; $lang['btn_draftdel'] = 'Poista luonnos'; @@ -79,6 +80,7 @@ $lang['profnoempty'] = 'Tyhjä nimi tai sähköpostiosoite ei ole sall $lang['profchanged'] = 'Käyttäjän profiilin päivitys onnistui.'; $lang['pwdforget'] = 'Unohtuiko salasana? Hanki uusi'; $lang['resendna'] = 'Tämä wiki ei tue salasanan uudelleenlähettämistä.'; +$lang['resendpwd'] = 'Aseta uusisalasana'; $lang['resendpwdmissing'] = 'Kaikki kentät on täytettävä.'; $lang['resendpwdnouser'] = 'Käyttäjää ei löydy tietokannastamme.'; $lang['resendpwdbadauth'] = 'Tunnistuskoodi on virheellinen. Varmista, että käytit koko varmistuslinkkiä.'; @@ -91,6 +93,7 @@ $lang['searchmedia_in'] = 'Etsi kohteesta %s'; $lang['txt_upload'] = 'Valitse tiedosto lähetettäväksi'; $lang['txt_filename'] = 'Lähetä nimellä (valinnainen)'; $lang['txt_overwrt'] = 'Ylikirjoita olemassa oleva'; +$lang['maxuploadsize'] = 'Palvelimelle siirto max. %s / tiedosto.'; $lang['lockedby'] = 'Tällä hetkellä tiedoston on lukinnut'; $lang['lockexpire'] = 'Lukitus päättyy'; $lang['js']['willexpire'] = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.'; @@ -185,6 +188,12 @@ $lang['external_edit'] = 'ulkoinen muokkaus'; $lang['summary'] = 'Yhteenveto muokkauksesta'; $lang['noflash'] = 'Tarvitset <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash-liitännäisen</a> nähdäksesi tämän sisällön.'; $lang['download'] = 'Lataa palanen'; +$lang['tools'] = 'Työkalut'; +$lang['user_tools'] = 'Käyttäjän työkalut'; +$lang['site_tools'] = 'Sivuston työkalut'; +$lang['page_tools'] = 'Sivutyökalut'; +$lang['skip_to_content'] = 'Siirry sisältöön'; +$lang['sidebar'] = 'Sivupalkki'; $lang['mail_newpage'] = 'sivu lisätty:'; $lang['mail_changed'] = 'sivu muutettu:'; $lang['mail_subscribe_list'] = 'muuttuneet sivut nimiavaruudessa:'; @@ -255,6 +264,7 @@ $lang['subscr_style_digest'] = 'yhteenveto-sähköposti joka sivusta (joka %.2 $lang['subscr_style_list'] = 'lista muuttuneista sivuista edellisen sähköpostin jälkeen (joka %.2f. päivä)'; $lang['authmodfailed'] = 'Käyttäjien autentikoinnin asetukset ovat virheelliset. Ilmoita asiasta wikin ylläpitäjälle.'; $lang['authtempfail'] = 'Käyttäjien autentikointi ei tällä hetkellä onnistu. Jos ongelma jatkuu, ota yhteyttä wikin ylläpitäjään.'; +$lang['authpwdexpire'] = 'Salasanasi vanhenee %d pv:n päästä, vaihda salasanasi pikaisesti.'; $lang['i_chooselang'] = 'Valitse kieli'; $lang['i_installer'] = 'DokuWikin asentaja'; $lang['i_wikiname'] = 'Wikin nimi'; @@ -309,4 +319,3 @@ $lang['media_perm_read'] = 'Anteeksi. Sinulla ei ole riittävästi oikeuks $lang['media_perm_upload'] = 'Anteeksi. Sinulla ei ole riittävästi oikeuksia lähettääksesi tiedostoja.'; $lang['media_update'] = 'Lähetä uusi versio'; $lang['media_restore'] = 'Palauta tämä versio'; -$lang['plugin_install_err'] = 'Liitännäinen asentui virheellisesti. Nimeä liitännäisen hakemisto \'%s\' -> \'%s\''; diff --git a/inc/lang/fi/mailwrap.html b/inc/lang/fi/mailwrap.html new file mode 100644 index 000000000..6ff63c04e --- /dev/null +++ b/inc/lang/fi/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Tämä viesti on tehty DokuWiki:ssä @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/fi/resetpwd.txt b/inc/lang/fi/resetpwd.txt new file mode 100644 index 000000000..c6780949a --- /dev/null +++ b/inc/lang/fi/resetpwd.txt @@ -0,0 +1,3 @@ +===== Aseta salasana ===== + +Anna uusi salasanasi tässä wikissä.
\ No newline at end of file diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php index a77be6965..c4080bc50 100644 --- a/inc/lang/fr/lang.php +++ b/inc/lang/fr/lang.php @@ -24,6 +24,7 @@ * @author schplurtz@laposte.net * @author skimpax@gmail.com * @author Yannick Aure <yannick.aure@gmail.com> + * @author Olivier DUVAL <zorky00@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -109,6 +110,7 @@ $lang['searchmedia_in'] = 'Chercher dans %s'; $lang['txt_upload'] = 'Sélectionnez un fichier à envoyer '; $lang['txt_filename'] = 'Donnez un « wikiname » (optionnel) '; $lang['txt_overwrt'] = 'Écraser le fichier cible'; +$lang['maxuploadsize'] = 'Téléverser max. %s par fichier'; $lang['lockedby'] = 'Actuellement bloqué par'; $lang['lockexpire'] = 'Le blocage expire à'; $lang['js']['willexpire'] = 'Votre verrouillage pour la modification de cette page expire dans une minute.\nPour éviter les conflits, utilisez le bouton « Aperçu » pour réinitialiser le minuteur.'; @@ -331,4 +333,3 @@ $lang['media_perm_read'] = 'Désolé, vous n\'avez pas les droits pour lir $lang['media_perm_upload'] = 'Désolé, vous n\'avez pas les droits pour télécharger des fichiers.'; $lang['media_update'] = 'Télécharger une nouvelle version'; $lang['media_restore'] = 'Restaurer cette version'; -$lang['plugin_install_err'] = 'Extension mal installée. Renommez le dossier de l\'extension \'%s\' en \'%s\'.'; diff --git a/inc/lang/fr/mailtext.txt b/inc/lang/fr/mailtext.txt index add3b2779..3c2d53292 100644 --- a/inc/lang/fr/mailtext.txt +++ b/inc/lang/fr/mailtext.txt @@ -7,7 +7,6 @@ Adresse IP : @IPADDRESS@ Nom d'hôte : @HOSTNAME@ Ancienne révision : @OLDPAGE@ Nouvelle révision : @NEWPAGE@ -Différences : @OLDPAGE@&do=diff Résumé : @SUMMARY@ Utilisateur : @USER@ diff --git a/inc/lang/fr/mailwrap.html b/inc/lang/fr/mailwrap.html new file mode 100644 index 000000000..2b674196b --- /dev/null +++ b/inc/lang/fr/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Ce courriel a été automatiquement généré par DokuWiki à l'adresse @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php index 9636d6c15..23bd9a741 100644 --- a/inc/lang/gl/lang.php +++ b/inc/lang/gl/lang.php @@ -310,4 +310,3 @@ $lang['media_perm_read'] = 'Sentímolo, non tes permisos suficientes para $lang['media_perm_upload'] = 'Sentímolo, non tes permisos suficientes para subir arquivos.'; $lang['media_update'] = 'Subir nova versión'; $lang['media_restore'] = 'Restaurar esta versión'; -$lang['plugin_install_err'] = 'Extensión instalada correctamente. Re-nomea o directorio da extensión de \'%s\' a \'%s\'.'; diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php index 70082caae..a415f2a2c 100644 --- a/inc/lang/it/lang.php +++ b/inc/lang/it/lang.php @@ -14,6 +14,7 @@ * @author Osman Tekin <osman.tekin93@hotmail.it> * @author Jacopo Corbetta <jacopo.corbetta@gmail.com> * @author Matteo Pasotti <matteo@xquiet.eu> + * @author snarchio@gmail.com */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -177,6 +178,7 @@ $lang['diff'] = 'differenze con la versione attuale'; $lang['diff2'] = 'differenze tra le versioni selezionate'; $lang['difflink'] = 'Link a questa pagina di confronto'; $lang['diff_type'] = 'Guarda le differenze:'; +$lang['diff_inline'] = 'In linea'; $lang['diff_side'] = 'Fianco a Fianco'; $lang['line'] = 'Linea'; $lang['breadcrumb'] = 'Traccia'; @@ -195,6 +197,7 @@ $lang['user_tools'] = 'Strumenti Utente'; $lang['site_tools'] = 'Strumenti Sito'; $lang['page_tools'] = 'Strumenti Pagina'; $lang['skip_to_content'] = 'salta al contenuto'; +$lang['sidebar'] = 'Barra laterale'; $lang['mail_newpage'] = 'pagina aggiunta:'; $lang['mail_changed'] = 'pagina modificata:'; $lang['mail_subscribe_list'] = 'pagine modificate nella categoria:'; @@ -298,20 +301,24 @@ $lang['hours'] = '%d ore fa'; $lang['minutes'] = '%d minuti fa'; $lang['seconds'] = '%d secondi fa'; $lang['wordblock'] = 'La modifica non è stata salvata perché contiene testo bloccato (spam).'; +$lang['media_uploadtab'] = 'Upload'; $lang['media_searchtab'] = 'Cerca'; +$lang['media_file'] = 'File'; $lang['media_viewtab'] = 'Guarda'; $lang['media_edittab'] = 'Modifica'; $lang['media_historytab'] = 'Storia'; +$lang['media_list_thumbs'] = 'Miniatura'; $lang['media_list_rows'] = 'Righe'; $lang['media_sort_name'] = 'Nome'; $lang['media_sort_date'] = 'Data'; $lang['media_namespaces'] = 'Scegli il namespace'; $lang['media_files'] = 'File in %s'; +$lang['media_upload'] = 'Upload al %s'; $lang['media_search'] = 'Cerca in %s'; +$lang['media_view'] = '%s'; $lang['media_edit'] = 'Modifica %s'; $lang['media_history'] = 'Storia di %s'; $lang['media_perm_read'] = 'Spiacente, non hai abbastanza privilegi per leggere i files.'; $lang['media_perm_upload'] = 'Spiacente, non hai abbastanza privilegi per caricare files.'; $lang['media_update'] = 'Carica nuova versione'; $lang['media_restore'] = 'Ripristina questa versione'; -$lang['plugin_install_err'] = 'Plugin installato non correttamente. Rinomino la cartella del plugin \'%s\' in \'%s\'.'; diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php index 490c84cc9..791ef9a6e 100644 --- a/inc/lang/ja/lang.php +++ b/inc/lang/ja/lang.php @@ -318,4 +318,3 @@ $lang['media_perm_read'] = 'ファイルを閲覧する権限がありま $lang['media_perm_upload'] = 'ファイルをアップロードする権限がありません。'; $lang['media_update'] = '新しいバージョンをアップロード'; $lang['media_restore'] = 'このバージョンを復元'; -$lang['plugin_install_err'] = 'プラグインが正しくインストールされませんでした。プラグインのディレクトリ名を \'%s\' から \'%s\' に変更してください。'; diff --git a/inc/lang/ko/install.html b/inc/lang/ko/install.html index 382fb7df0..f73b91294 100644 --- a/inc/lang/ko/install.html +++ b/inc/lang/ko/install.html @@ -1,11 +1,11 @@ <p>이 페이지는 <a href="http://dokuwiki.org">Dokuwiki</a> 설치와 환경 설정을 도와줍니다. -설치 과정에 대한 더 자세한 정보는 <a href="http://dokuwiki.org/ko:install">(한국어) 설치 문서</a>와 +설치 과정에 대한 더 자세한 정보는 <a href="http://dokuwiki.org/ko:install">(한국어) 설치 문서</a>와 <a href="http://dokuwiki.org/install">(영어) 설치 문서</a>를 참고하기 바랍니다.</p> <p>DokuWiki는 위키 문서와 문서와 관련된 정보(예를 들어 그림, 검색 색인, 이전 버전 문서)를 저장하기 위해 일반적인 텍스트 파일을 사용합니다. 정상적으로 DokuWiki를 사용하려면 이 파일을 담고 있는 디렉토리에 대한 쓰기 권한을 가지고 있어야 합니다. 현재 설치 과정 중에는 디렉토리 권한 설정이 불가능합니다. 보통 직접 쉘 명령어를 사용하거나, 호스팅을 사용한다면 FTP나 호스팅 제어판(예를 들어 CPanel)을 사용해서 설정해야 합니다.</p> -<p>현재 설치 과정중에 관리자로 로그인 후 DokuWiki의 관리 메뉴(플러그인 설치, 사용자 관리, 위키 문서 접근 권한 관리, 옵션 설정)를 가능하게 <abbr title="접근 제어 목록">ACL</abbr>에 대한 환경 설정을 수행합니다. +<p>현재 설치 과정중에 관리자로 로그인 후 DokuWiki의 관리 메뉴(플러그인 설치, 사용자 관리, 위키 문서 접근 권한 관리, 옵션 설정)를 가능하게 <acronym title="접근 제어 목록">ACL</acronym>에 대한 환경 설정을 수행합니다. 이 것은 DokuWiki가 동작하는데 필요한 사항은 아니지만, 어쨌든 더 쉽게 관리자가 관리할 수 있도록 해줍니다.</p> <p>숙련된 사용자나 특별한 설치 과정이 필요한 경우에 다음 링크를 참고하기 바랍니다: diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php index 7b4e30a49..64507fa81 100644 --- a/inc/lang/ko/lang.php +++ b/inc/lang/ko/lang.php @@ -53,7 +53,7 @@ $lang['btn_revert'] = '복원'; $lang['btn_register'] = '등록'; $lang['btn_apply'] = '적용'; $lang['btn_media'] = '미디어 관리'; -$lang['loggedinas'] = '다른 사용자로 로그인'; +$lang['loggedinas'] = '다음 사용자로 로그인'; $lang['user'] = '사용자 이름'; $lang['pass'] = '비밀번호'; $lang['newpass'] = '새 비밀번호'; @@ -193,6 +193,7 @@ $lang['user_tools'] = '사용자 도구'; $lang['site_tools'] = '사이트 도구'; $lang['page_tools'] = '문서 도구'; $lang['skip_to_content'] = '콘텐츠 넘기기'; +$lang['sidebar'] = '사이드바'; $lang['mail_newpage'] = '문서 추가:'; $lang['mail_changed'] = '문서 바뀜:'; $lang['mail_subscribe_list'] = '이름공간에서 바뀐 문서:'; @@ -319,4 +320,3 @@ $lang['media_perm_read'] = '이 파일을 읽을 권한이 없습니다.'; $lang['media_perm_upload'] = '파일을 올릴 권한이 없습니다.'; $lang['media_update'] = '새 버전 올리기'; $lang['media_restore'] = '이 버전으로 되돌리기'; -$lang['plugin_install_err'] = '플러그인 설치가 잘못되었습니다. 플러그인 디렉토리 \'%s\'(을)를 \'%s\'(으)로 바꾸십시오.'; diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php index b02e7f471..cc17b17fe 100644 --- a/inc/lang/lv/lang.php +++ b/inc/lang/lv/lang.php @@ -304,4 +304,3 @@ $lang['media_perm_read'] = 'Atvainojiet, jums nav tiesību skatīt failus. $lang['media_perm_upload'] = 'Atvainojiet, jums nav tiesību augšupielādēt. '; $lang['media_update'] = 'Augšupielādēt jaunu versiju'; $lang['media_restore'] = 'Atjaunot šo versiju'; -$lang['plugin_install_err'] = 'Modulis aplami instalēts. Pārdēvē moduļa direktoriju %s par %s.'; diff --git a/inc/lang/nl/index.txt b/inc/lang/nl/index.txt index 288957ed4..ad7122ba0 100644 --- a/inc/lang/nl/index.txt +++ b/inc/lang/nl/index.txt @@ -1,4 +1,4 @@ ====== Index ====== -Dit is een index van alle beschikbare pagina's gesorteerd op [[doku>wiki:namespaces|namespaces]]. +Dit is een index van alle beschikbare pagina's gesorteerd op [[doku>namespaces|namespaces]]. diff --git a/inc/lang/nl/install.html b/inc/lang/nl/install.html index e13b9d3ad..a65325826 100644 --- a/inc/lang/nl/install.html +++ b/inc/lang/nl/install.html @@ -1,5 +1,5 @@ -<p>Deze pagina helpt u bij de eerste installatie en configuratie van <a href="http://wiki.splitbrain.org">Dokuwiki</a>. -Meer informatie over deze installer is beschikbaar op zijn eigen <a href="http://wiki.splitbrain.org/wiki:installer">documentatiepagina</a>.</p> +<p>Deze pagina helpt u bij de eerste installatie en configuratie van <a href="http://dokuwiki.org">Dokuwiki</a>. +Meer informatie over deze installer is beschikbaar op zijn eigen <a href="http://dokuwiki.org/installer">documentatiepagina</a>.</p> <p>DokuWiki gebruikt platte tekstbestanden voor het opslaan van wikipagina's en andere informatie die bij deze pagina's horen (bijvoorbeeld plaatjes, zoek-indexen, oude revisies enz.). Om goed te kunnen functioneren, <strong>moet</strong> DokuWiki schrijftoegang hebben tot de directories die deze bestanden bevatten. @@ -10,5 +10,5 @@ wat de beheerder in staat stelt in te loggen en toegang te verkrijgen tot het be Het is niet noodzakelijk voor DokuWiki om te functioneren maar het maakt het een stuk makkelijker om Dokuwiki te beheren.</p> <p>Ervaren gebruikers of gebruikers die een aangepaste configuratie nodig hebben kunnen voor details terecht op de volgende pagina's: -<a href="http://wiki.splitbrain.org/wiki:install">installatie-instructies</a> -en <a href="http://wiki.splitbrain.org/wiki:config">configuratie-instellingen</a>.</p> +<a href="http://dokuwiki.org/install">installatie-instructies</a> +en <a href="http://dokuwiki.org/config">configuratie-instellingen</a>.</p> diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php index 911ffdc10..fdc0c075a 100644 --- a/inc/lang/nl/lang.php +++ b/inc/lang/nl/lang.php @@ -16,6 +16,7 @@ * @author Timon Van Overveldt <timonvo@gmail.com> * @author Jeroen * @author Ricardo Guijt <ricardoguijt@gmail.com> + * @author Gerrit <klapinklapin@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -58,7 +59,7 @@ $lang['btn_draftdel'] = 'Verwijder concept'; $lang['btn_revert'] = 'Herstellen'; $lang['btn_register'] = 'Registreren'; $lang['btn_apply'] = 'Toepassen'; -$lang['btn_media'] = 'Media beheerder'; +$lang['btn_media'] = 'Mediabeheerder'; $lang['loggedinas'] = 'Ingelogd als'; $lang['user'] = 'Gebruikersnaam'; $lang['pass'] = 'Wachtwoord'; @@ -201,6 +202,7 @@ $lang['user_tools'] = 'Gebruikershulpmiddelen'; $lang['site_tools'] = 'Site-hulpmiddelen'; $lang['page_tools'] = 'Paginahulpmiddelen'; $lang['skip_to_content'] = 'spring naar tekst'; +$lang['sidebar'] = 'Zijbalk'; $lang['mail_newpage'] = 'pagina toegevoegd:'; $lang['mail_changed'] = 'pagina aangepast:'; $lang['mail_subscribe_list'] = 'Pagina\'s veranderd in namespace:'; @@ -278,7 +280,7 @@ $lang['i_wikiname'] = 'Wikinaam'; $lang['i_enableacl'] = 'ACLs inschakelen (aanbevolen)'; $lang['i_superuser'] = 'Superuser'; $lang['i_problems'] = 'De installer vond problemen, hieronder aangegeven. Verhelp deze voor je doorgaat.'; -$lang['i_modified'] = 'Uit veiligheidsoverwegingen werkt dit script alleen met nieuwe en onveranderde DokuWiki-installaties. Pak de bestanden opnieuw uit of raadpleeg de <a href="http://wiki.splitbrain.org/wiki:install">Dokuwiki installatie-instructies</a>'; +$lang['i_modified'] = 'Uit veiligheidsoverwegingen werkt dit script alleen met nieuwe en onveranderde DokuWiki-installaties. Pak de bestanden opnieuw uit of raadpleeg de <a href="http://dokuwiki.org/install">Dokuwiki installatie-instructies</a>'; $lang['i_funcna'] = 'PHP functie <code>%s</code> is niet beschikbaar. Wellicht heeft je hosting provider deze uitgeschakeld?'; $lang['i_phpver'] = 'PHP-versie <code>%s</code> is lager dan de vereiste <code>%s</code>. Upgrade PHP.'; $lang['i_permfail'] = '<code>%s</code> is niet schrijfbaar voor DokuWiki. Pas de permissie-instellingen van deze directory aan.'; @@ -326,4 +328,3 @@ $lang['media_perm_read'] = 'Sorry, u heeft niet voldoende rechten om besta $lang['media_perm_upload'] = 'Sorry, u heeft niet voldoende rechten om bestanden te uploaden.'; $lang['media_update'] = 'Upload nieuwe versie'; $lang['media_restore'] = 'Deze versie terugzetten'; -$lang['plugin_install_err'] = 'Plugin is juist geinstalleerd. Hernoem plugin map \'%s\' naar \'%s\'.'; diff --git a/inc/lang/nl/register.txt b/inc/lang/nl/register.txt index 338edcca3..fc31860da 100644 --- a/inc/lang/nl/register.txt +++ b/inc/lang/nl/register.txt @@ -1,4 +1,4 @@ ====== Registreer als nieuwe gebruiker ====== -Vul alle informatie hieronder in om een nieuw account voor deze wiki aan te maken. Zorg dat je een **geldig e-mailadres** opgeeft - als je je wachtwoord hier niet in kunt vullen wordt het naar dit adres verzonden. De gebruikersnaam moet een geldige [[doku>wiki:pagename|pagename]] zijn. +Vul alle informatie hieronder in om een nieuw account voor deze wiki aan te maken. Zorg dat je een **geldig e-mailadres** opgeeft - als je je wachtwoord hier niet in kunt vullen wordt het naar dit adres verzonden. De gebruikersnaam moet een geldige [[doku>pagename|paginanaam]] zijn. diff --git a/inc/lang/nl/resetpwd.txt b/inc/lang/nl/resetpwd.txt new file mode 100644 index 000000000..345e30725 --- /dev/null +++ b/inc/lang/nl/resetpwd.txt @@ -0,0 +1,3 @@ +====== Een nieuw wachtwoord instellen ====== + +Vul alstublieft een nieuw wachtwoord in voor jouw account in deze wiki.
\ No newline at end of file diff --git a/inc/lang/nl/subscr_digest.txt b/inc/lang/nl/subscr_digest.txt index 0e6c2c5ba..9f0fe878c 100644 --- a/inc/lang/nl/subscr_digest.txt +++ b/inc/lang/nl/subscr_digest.txt @@ -9,7 +9,7 @@ De pagina @PAGE@ in de @TITLE@ wiki is veranderd. Hier zijn de wijzigingen: Vorige revisie: @OLDPAGE@ Nieuwe revisie: @NEWPAGE@ -Om het verzenden van deze wijzigingsberichtente te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven. +Om het verzenden van deze wijzigingsberichten te stoppen, logt u in op de wiki op @DOKUWIKIURL@ en bezoekt u @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven. -- Deze email is gegenereerd door DokuWiki op @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/nl/subscr_single.txt b/inc/lang/nl/subscr_single.txt index 3e74bce17..1cd0c85d4 100644 --- a/inc/lang/nl/subscr_single.txt +++ b/inc/lang/nl/subscr_single.txt @@ -1,6 +1,7 @@ Halllo! -De pagina @PAGE@ in de @TITLE@ wiki is veranderd. Hier zijn de wijzigingen: +De pagina @PAGE@ in de @TITLE@ wiki is veranderd. +Hier zijn de wijzigingen: -------------------------------------------------------- @DIFF@ @@ -12,7 +13,7 @@ Wijzigingssamenvatting: @SUMMARY@ Vorige revisie: @OLDPAGE@ Nieuwe revisie: @NEWPAGE@ -Om het verzenden van deze wijzigingsberichtente te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven. +Om het verzenden van deze wijzigingsberichten te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @NEWPAGE@. Vervolgens kunt u "Inschrijvingen wijzigen" gebruiken om inschrijvingen te stoppen. -- Deze email is gegenereerd door DokuWiki op @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/nl/uploadmail.txt b/inc/lang/nl/uploadmail.txt index 1816400d7..59920ae3d 100644 --- a/inc/lang/nl/uploadmail.txt +++ b/inc/lang/nl/uploadmail.txt @@ -1,6 +1,7 @@ Er is een bestand geüpload naar uw DokuWiki. Hier zijn de details; Bestand : @MEDIA@ +Oude revisie: @OLD@ Datum : @DATE@ Browser : @BROWSER@ IP-adres : @IPADDRESS@ diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php index 97ef741ef..cc3d34aed 100644 --- a/inc/lang/no/lang.php +++ b/inc/lang/no/lang.php @@ -323,4 +323,3 @@ $lang['media_perm_read'] = 'Beklager, du har ikke tilgang til å lese file $lang['media_perm_upload'] = 'Beklager, du har ikke tilgang til å laste opp filer.'; $lang['media_update'] = 'Last opp ny versjon'; $lang['media_restore'] = 'Gjenopprett denne versjonen'; -$lang['plugin_install_err'] = 'Tillegget ble feil installert. Skift navn på mappen \'%s\' til \'%s\'.'; diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php index 79d18bbf5..2f448d291 100644 --- a/inc/lang/pl/lang.php +++ b/inc/lang/pl/lang.php @@ -325,4 +325,3 @@ $lang['media_perm_read'] = 'Przepraszamy, nie masz wystarczających uprawn $lang['media_perm_upload'] = 'Przepraszamy, nie masz wystarczających uprawnień do przesyłania plików.'; $lang['media_update'] = 'Prześlij nową wersję'; $lang['media_restore'] = 'Odtwórz tą wersję'; -$lang['plugin_install_err'] = 'Wtyczka zainstalowana nieprawidłowo. Zmień nazwę katalogu wtyczki \'%s\' na \'%s\'.'; diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php index a0b0f57e8..af388985c 100644 --- a/inc/lang/pt/lang.php +++ b/inc/lang/pt/lang.php @@ -317,4 +317,3 @@ $lang['js']['media_drop'] = 'Largue ficheiros aqui para enviar'; $lang['js']['media_cancel'] = 'remover'; $lang['js']['media_overwrt'] = 'Escrever por cima de ficheiros existentes'; -$lang['plugin_install_err'] = "Plugin instalado incorrectamente. Renomeie a pasta do plugin de '%s' para '%s'."; diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php index 41727e521..0c7e02605 100644 --- a/inc/lang/ro/lang.php +++ b/inc/lang/ro/lang.php @@ -320,4 +320,3 @@ $lang['media_perm_read'] = 'Ne pare rău, dar nu aveți suficiente dreptur $lang['media_perm_upload'] = 'Ne pare rău, dar nu aveți suficiente drepturi pentru a putea încărca fișiere.'; $lang['media_update'] = 'Încarcă noua versiune'; $lang['media_restore'] = 'Restaurează această versiune'; -$lang['plugin_install_err'] = 'Modul instalat greșit. Redenumește directorul modulului \'%s\' în \'%s\'.'; diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php index 4c3d26b1d..800b1a1b2 100644 --- a/inc/lang/ru/lang.php +++ b/inc/lang/ru/lang.php @@ -332,4 +332,3 @@ $lang['media_perm_read'] = 'Извините, у Вас недостато $lang['media_perm_upload'] = 'Извините, у Вас недостаточно прав для загрузки файлов.'; $lang['media_update'] = 'Загрузить новую версию'; $lang['media_restore'] = 'Восстановить эту версию'; -$lang['plugin_install_err'] = 'Плагин установлен некорректно. Переименуйте папку плагина из \'%s\' в \'%s\'.'; diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php index 85e899b06..1407474ec 100644 --- a/inc/lang/sk/lang.php +++ b/inc/lang/sk/lang.php @@ -42,6 +42,7 @@ $lang['btn_backtomedia'] = 'Späť na výber súboru'; $lang['btn_subscribe'] = 'Sledovať zmeny'; $lang['btn_profile'] = 'Aktualizovať profil'; $lang['btn_reset'] = 'Zrušiť'; +$lang['btn_resendpwd'] = 'Nastaviť nové heslo'; $lang['btn_draft'] = 'Upraviť koncept'; $lang['btn_recover'] = 'Obnoviť koncept'; $lang['btn_draftdel'] = 'Zmazať koncept'; @@ -78,6 +79,7 @@ $lang['profnoempty'] = 'Prázdne meno alebo mailová adresa nie sú po $lang['profchanged'] = 'Užívateľský účet úspešne zmenený.'; $lang['pwdforget'] = 'Zabudli ste heslo? Získajte nové!'; $lang['resendna'] = 'Táto wiki nepodporuje opätovné zasielanie hesla.'; +$lang['resendpwd'] = 'Nastaviť nové heslo pre'; $lang['resendpwdmissing'] = 'Prepáčte, musíte vyplniť všetky polia.'; $lang['resendpwdnouser'] = 'Prepáčte, nemôžeme nájsť zadaného užívateľa v databáze.'; $lang['resendpwdbadauth'] = 'Prepáčte, tento autorizačný kód nie je platný. Uistite sa, či ste použili celý autorizačný odkaz.'; @@ -90,6 +92,7 @@ $lang['searchmedia_in'] = 'Hľadať v %s'; $lang['txt_upload'] = 'Vyberte súbor ako prílohu'; $lang['txt_filename'] = 'Uložiť ako (voliteľné)'; $lang['txt_overwrt'] = 'Prepísať existujúci súbor'; +$lang['maxuploadsize'] = 'Obmedzenie max. %s na súbor.'; $lang['lockedby'] = 'Práve zamknuté:'; $lang['lockexpire'] = 'Zámok stratí platnosť:'; $lang['js']['willexpire'] = 'Váš zámok pre editáciu za chvíľu stratí platnosť.\nAby ste predišli konfliktom, stlačte tlačítko Náhľad a zámok sa predĺži.'; @@ -184,6 +187,12 @@ $lang['external_edit'] = 'externá úprava'; $lang['summary'] = 'Komentár k úpravám'; $lang['noflash'] = 'Pre zobrazenie tohto obsahu potrebujete <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; $lang['download'] = 'Stiahnuť'; +$lang['tools'] = 'Nástroje'; +$lang['user_tools'] = 'Nástroje používateľa'; +$lang['site_tools'] = 'Nástoje správy stránok'; +$lang['page_tools'] = 'Nástoje stránky'; +$lang['skip_to_content'] = 'skok na obsah'; +$lang['sidebar'] = 'Bočný panel'; $lang['mail_newpage'] = 'stránka pridaná:'; $lang['mail_changed'] = 'stránka zmenená:'; $lang['mail_subscribe_list'] = 'stránky zmenené v mennom priestore:'; @@ -254,6 +263,7 @@ $lang['subscr_style_digest'] = 'email so zhrnutím zmien pre každú stránku $lang['subscr_style_list'] = 'zoznam zmenených stránok od posledného emailu (perióda %.2f dňa)'; $lang['authmodfailed'] = 'Užívateľská autentifikácia nie je možná. Prosím informujte správcu systému.'; $lang['authtempfail'] = 'Užívateľská autentifikácia je dočasne nedostupná. Ak táto situácia pretrváva, prosím informujte správcu systému.'; +$lang['authpwdexpire'] = 'Platnosť hesla vyprší za %d dní, mali by ste ho zmeniť čo najskôr.'; $lang['i_chooselang'] = 'Zvoľte váš jazyk'; $lang['i_installer'] = 'DokuWiki inštalátor'; $lang['i_wikiname'] = 'Názov Wiki'; diff --git a/inc/lang/sk/mailwrap.html b/inc/lang/sk/mailwrap.html new file mode 100644 index 000000000..2e42515fb --- /dev/null +++ b/inc/lang/sk/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>Táto správa bola zaslaná DokuWiki @DOKUWIKIURL@.</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/sk/resetpwd.txt b/inc/lang/sk/resetpwd.txt new file mode 100644 index 000000000..a4df4a545 --- /dev/null +++ b/inc/lang/sk/resetpwd.txt @@ -0,0 +1,3 @@ +====== Nastavenie nového hesla ====== + +Prosím zadajte nové heslo vášho účtu v tejto wiki. diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php index b34ab67e4..3a4dbd22e 100644 --- a/inc/lang/sl/lang.php +++ b/inc/lang/sl/lang.php @@ -311,4 +311,3 @@ $lang['media_perm_read'] = 'Ni ustreznih dovoljenj za branje datotek.'; $lang['media_perm_upload'] = 'Ni ustreznih dovoljenj za nalaganje datotek.'; $lang['media_update'] = 'Naloži novo različico'; $lang['media_restore'] = 'Obnovi to različico'; -$lang['plugin_install_err'] = 'Vstavek ni pravilno nameščen. Preimenujte mapo vstavka\'%s\' v \'%s\'.'; diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php index c9179f6b3..99c4d47e4 100644 --- a/inc/lang/vi/lang.php +++ b/inc/lang/vi/lang.php @@ -263,6 +263,4 @@ $lang['media_perm_upload'] = 'Xin lỗi, bạn không đủ quyền để up $lang['media_update'] = 'Tải lên phiên bản mới'; $lang['media_restore'] = 'Phục hồi phiên bản này'; -$lang['plugin_install_err'] = "Plugin không được cài đặt chính xác.Đổi tên thư mục plugin '%s' thành '%s'."; - //Setup VIM: ex: et ts=2 : diff --git a/inc/lang/zh-tw/admin.txt b/inc/lang/zh-tw/admin.txt index 3cc10335d..5916e7106 100644 --- a/inc/lang/zh-tw/admin.txt +++ b/inc/lang/zh-tw/admin.txt @@ -1,4 +1,3 @@ ====== 管理選單 ====== -以下為 DokuWiki 的管理設定 - +以下為 DokuWiki 的管理設定。
\ No newline at end of file diff --git a/inc/lang/zh-tw/diff.txt b/inc/lang/zh-tw/diff.txt index b2b662ec3..17fad7ba0 100644 --- a/inc/lang/zh-tw/diff.txt +++ b/inc/lang/zh-tw/diff.txt @@ -1,4 +1,3 @@ ====== 差異處 ====== -這裡顯示二個版本的差異處。 - +這裏顯示二個版本的差異處。
\ No newline at end of file diff --git a/inc/lang/zh-tw/index.txt b/inc/lang/zh-tw/index.txt index 11ec223d9..bba277041 100644 --- a/inc/lang/zh-tw/index.txt +++ b/inc/lang/zh-tw/index.txt @@ -1,3 +1,3 @@ ====== 站台地圖 ====== -這個站台地圖列出了所有允許的頁面,依 [[doku>namespaces|命名空間]] 排序。 +這個站台地圖列出了所有允許的頁面,依 [[doku>namespaces|分類空間]] 排序。
\ No newline at end of file diff --git a/inc/lang/zh-tw/install.html b/inc/lang/zh-tw/install.html index f435efc21..2a8b1aac3 100644 --- a/inc/lang/zh-tw/install.html +++ b/inc/lang/zh-tw/install.html @@ -1,8 +1,8 @@ -<p>本頁面旨在幫助您完成第一次安装和配置 <a href="http://dokuwiki.org">Dokuwiki</a>。關於安裝工具的更多訊息請參閱 <a href="http://dokuwiki.org/installer">官方文檔頁面</a>。</p> +<p>本頁面旨在幫助您完成第一次安装和設定 <a href="http://dokuwiki.org">Dokuwiki</a>。關於安裝工具的更多訊息請參閱 <a href="http://dokuwiki.org/installer">官方文檔頁面</a>。</p> <p>DokuWiki 使用普通檔案儲存維基頁面以及與頁面相關的訊息(例如:圖像,搜尋索引,修訂記錄等)。為了正常運作,DokuWiki <strong>必須</strong> 擁有針對那些路徑和檔案的寫入權限。本安裝工具無法設定目錄權限,這通常要透過命令行、FTP 或您主機上的控制台(如cPanel)進行。</p> -<p>本安裝工具將設定您的 DokuWiki 用於 <abbr title="訪問控制列表">ACL</abbr> 的配置檔,它能讓管理員登入並使用「管理」功能來安裝插件、管理用户、管理訪問權限和其他配置設定。它並不是 DokuWiki 正常運作所必須,但安裝之後將更方便管理。</p> +<p>本安裝工具將設定您的 DokuWiki 用於 <abbr title="訪問控制列表">ACL</abbr> 的設定檔,它能讓管理員登入並使用「管理」功能來安裝插件、管理用户、管理訪問權限和其他設定設定。它並不是 DokuWiki 正常運作所必須,但安裝之後將更方便管理。</p> <p>有經驗的用戶或有特殊需求的用戶請參閱更詳細的 <a href="http://dokuwiki.org/install">安裝指南</a> -和 <a href="http://dokuwiki.org/config">配置設定</a>。</p>
\ No newline at end of file +和 <a href="http://dokuwiki.org/config">設定</a>。</p>
\ No newline at end of file diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php index bbbbb71a6..2cceb4012 100644 --- a/inc/lang/zh-tw/lang.php +++ b/inc/lang/zh-tw/lang.php @@ -10,6 +10,7 @@ * @author Cheng-Wei Chien <e.cwchien@gmail.com> * @author Danny Lin * @author Shuo-Ting Jian <shoting@gmail.com> + * @author syaoranhinata@gmail.com */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -45,6 +46,7 @@ $lang['btn_backtomedia'] = '重新選擇圖檔'; $lang['btn_subscribe'] = '訂閱更動通知'; $lang['btn_profile'] = '更新個人資料'; $lang['btn_reset'] = '資料重設'; +$lang['btn_resendpwd'] = '設定新密碼'; $lang['btn_draft'] = '編輯草稿'; $lang['btn_recover'] = '復原草稿'; $lang['btn_draftdel'] = '捨棄草稿'; @@ -60,39 +62,41 @@ $lang['oldpass'] = '目前密碼'; $lang['passchk'] = '確認密碼'; $lang['remember'] = '記住帳號密碼'; $lang['fullname'] = '真實姓名'; -$lang['email'] = 'E-Mail'; +$lang['email'] = '電郵'; $lang['profile'] = '使用者個人資料'; -$lang['badlogin'] = '很抱歉,您的使用者名稱或密碼可能有錯誤'; +$lang['badlogin'] = '很抱歉,您的使用者名稱或密碼可能有錯誤。'; $lang['minoredit'] = '小修改'; $lang['draftdate'] = '草稿已自動存檔於'; $lang['nosecedit'] = '頁面在這之間已被修改,過時的區段資料已載入全頁取代。'; -$lang['regmissing'] = '很抱歉,所有欄位都要填寫'; -$lang['reguexists'] = '很抱歉,本帳號已被註冊'; +$lang['regmissing'] = '很抱歉,所有欄位都要填寫。'; +$lang['reguexists'] = '很抱歉,本帳號已被註冊。'; $lang['regsuccess'] = '使用者已建立,密碼已寄發至該 email。'; -$lang['regsuccess2'] = '使用者已建立'; +$lang['regsuccess2'] = '使用者已建立。'; $lang['regmailfail'] = '寄出密碼信似乎發生錯誤,請跟管理員聯絡!'; $lang['regbadmail'] = '您輸入的 email 似乎不對,如果您認為是正確的,請與管理員聯絡。'; $lang['regbadpass'] = '兩次輸入的密碼不一致,請再試一次。'; $lang['regpwmail'] = '您的 DokuWiki 帳號密碼'; $lang['reghere'] = '您還沒有帳號嗎?註冊一個吧。'; -$lang['profna'] = '本維基不開放修改個人資料'; -$lang['profnochange'] = '未做任何變更'; -$lang['profnoempty'] = '帳號或 email 地址不可空白!'; -$lang['profchanged'] = '個人資料已成功更新囉。'; +$lang['profna'] = '本維基不開放修改個人資料。'; +$lang['profnochange'] = '未做任何變更。'; +$lang['profnoempty'] = '帳號或電郵地址不可空白!'; +$lang['profchanged'] = '個人資料已成功更新。'; $lang['pwdforget'] = '忘記密碼了?索取新密碼!'; -$lang['resendna'] = '本維基不開放重寄密碼'; +$lang['resendna'] = '本維基不開放重寄密碼。'; +$lang['resendpwd'] = '設定新密碼供'; $lang['resendpwdmissing'] = '抱歉,您必須填寫所有欄位。'; -$lang['resendpwdnouser'] = '抱歉,資料庫內找不到這個使用者'; +$lang['resendpwdnouser'] = '抱歉,資料庫內找不到這個使用者。'; $lang['resendpwdbadauth'] = '抱歉,認證碼無效。請確認您使用了完整的確認連結。'; $lang['resendpwdconfirm'] = '確認連結已通過郵件發送給您了。'; $lang['resendpwdsuccess'] = '您的新密碼已寄出。'; $lang['license'] = '若未特別註明,此維基上的內容都是採用以下授權方式:'; $lang['licenseok'] = '注意:編輯此頁面表示您已同意以下的授權方式:'; $lang['searchmedia'] = '搜尋檔名:'; -$lang['searchmedia_in'] = '在 %s 裡搜尋'; +$lang['searchmedia_in'] = '在 %s 裏搜尋'; $lang['txt_upload'] = '請選擇要上傳的檔案'; $lang['txt_filename'] = '請輸入要存在維基內的檔案名稱 (非必要)'; $lang['txt_overwrt'] = '是否要覆蓋原有檔案'; +$lang['maxuploadsize'] = '每個上傳檔案不可大於 %s 。'; $lang['lockedby'] = '目前已被下列人員鎖定'; $lang['lockexpire'] = '預計解除鎖定於'; $lang['js']['willexpire'] = '本頁的編輯鎖定將在一分鐘內到期。要避免發生衝突,請按「預覽」鍵重設鎖定計時。'; @@ -122,12 +126,12 @@ $lang['js']['mediaright'] = '圖像靠右對齊'; $lang['js']['mediacenter'] = '圖像置中對齊'; $lang['js']['medianoalign'] = '不對齊'; $lang['js']['nosmblinks'] = '只有在 Microsoft IE 下才能執行「連結到 Windows shares」。 -不過您仍可複製及貼上這個連結'; +不過您仍可複製及貼上這個連結。'; $lang['js']['linkwiz'] = '建立連結精靈'; $lang['js']['linkto'] = '連結至:'; $lang['js']['del_confirm'] = '確定刪除選取的項目?'; $lang['js']['restore_confirm'] = '確定還原到這個版本?'; -$lang['js']['media_diff'] = '檢視差異:'; +$lang['js']['media_diff'] = '檢視差異:'; $lang['js']['media_diff_both'] = '並排'; $lang['js']['media_diff_opacity'] = '重疊'; $lang['js']['media_diff_portions'] = '滑動'; @@ -145,21 +149,21 @@ $lang['uploadsucc'] = '上傳成功'; $lang['uploadfail'] = '上傳失敗。似乎是權限錯誤?'; $lang['uploadwrong'] = '拒絕上傳。這個副檔名被禁止了!'; $lang['uploadexist'] = '檔案已存在,未處理。'; -$lang['uploadbadcontent'] = '上傳檔案的內容不符合 %s 檔的副檔名'; +$lang['uploadbadcontent'] = '上傳檔案的內容不符合 %s 檔的副檔名。'; $lang['uploadspam'] = '這次的上傳被垃圾訊息黑名單阻檔了。'; $lang['uploadxss'] = '這次的上傳因可能的惡意的內容而被阻檔。'; $lang['uploadsize'] = '上傳的檔案太大了 (最大:%s)'; $lang['deletesucc'] = '檔案 "%s" 已刪除。'; $lang['deletefail'] = '檔案 "%s" 無法刪除,請檢查權限定。'; $lang['mediainuse'] = '檔案 "%s" 未刪除,因為它正被使用。'; -$lang['namespaces'] = '命名空間'; +$lang['namespaces'] = '分類空間'; $lang['mediafiles'] = '可用的檔案有'; -$lang['accessdenied'] = '您不被允許檢視此頁面'; -$lang['mediausage'] = '使用以下的語法來連結此檔案:'; +$lang['accessdenied'] = '您不可以檢視此頁面。'; +$lang['mediausage'] = '使用以下的語法來連結此檔案:'; $lang['mediaview'] = '檢視原始檔案'; $lang['mediaroot'] = 'root'; -$lang['mediaupload'] = '上傳檔案至目前的命名空間。要建立次級命名空間,將其名稱加在「上傳並重命名為」檔案名的前面,並用英文冒號隔開'; -$lang['mediaextchange'] = '檔案類型已由 .%s 變更為 .%s !'; +$lang['mediaupload'] = '上傳檔案至目前的分類空間。要建立子分類空間,將其名稱加在「上傳並重命名為」檔案名的前面,並用英文冒號隔開。'; +$lang['mediaextchange'] = '檔案類型已由 .%s 變更為 .%s !'; $lang['reference'] = '引用到本頁的,合計有'; $lang['ref_inuse'] = '此檔案無法刪除,因為它正被以下頁面使用:'; $lang['ref_hidden'] = '一些參考內容位於您沒有讀取權限的頁面中'; @@ -186,11 +190,17 @@ $lang['external_edit'] = '外部編輯'; $lang['summary'] = '編輯摘要'; $lang['noflash'] = '顯示此內容需要 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>'; $lang['download'] = '下載程式碼片段'; -$lang['mail_newpage'] = '增加的頁面:'; -$lang['mail_changed'] = '變更的頁面:'; -$lang['mail_subscribe_list'] = '命名空間中更動的頁面:'; -$lang['mail_new_user'] = '新使用者:'; -$lang['mail_upload'] = '已上傳檔案:'; +$lang['tools'] = '工具'; +$lang['user_tools'] = '用戶工具'; +$lang['site_tools'] = '網站工具'; +$lang['page_tools'] = '頁面工具'; +$lang['skip_to_content'] = '跳至內容'; +$lang['sidebar'] = '側欄'; +$lang['mail_newpage'] = '增加的頁面:'; +$lang['mail_changed'] = '變更的頁面:'; +$lang['mail_subscribe_list'] = '分類空間中更動的頁面:'; +$lang['mail_new_user'] = '新使用者:'; +$lang['mail_upload'] = '已上傳檔案:'; $lang['changes_type'] = '檢視最近更新類型'; $lang['pages_changes'] = '頁面'; $lang['media_changes'] = '多媒體檔案'; @@ -219,7 +229,7 @@ $lang['qb_media'] = '加入圖片或檔案'; $lang['qb_sig'] = '插入簽名'; $lang['qb_smileys'] = '表情符號'; $lang['qb_chars'] = '特殊字元'; -$lang['upperns'] = '前往父層命名空間'; +$lang['upperns'] = '前往父分類空間'; $lang['admin_register'] = '新增使用者'; $lang['metaedit'] = '編輯後設資料'; $lang['metasaveerr'] = '後設資料寫入失敗'; @@ -245,7 +255,7 @@ $lang['subscr_unsubscribe_success'] = '已將 %s 移除自 %s 的訂閱列表'; $lang['subscr_unsubscribe_error'] = '將 %s 移除自 %s 的訂閱列表時發生錯誤'; $lang['subscr_already_subscribed'] = '%s 已經被 %s 訂閱了'; $lang['subscr_not_subscribed'] = '%s 尚未被 %s 訂閱'; -$lang['subscr_m_not_subscribed'] = '您尚未訂閱目前的頁面或命名空間。'; +$lang['subscr_m_not_subscribed'] = '您尚未訂閱目前的頁面或分類空間。'; $lang['subscr_m_new_header'] = '加入訂閱'; $lang['subscr_m_current_header'] = '目前訂閱'; $lang['subscr_m_unsubscribe'] = '取消訂閱'; @@ -256,6 +266,7 @@ $lang['subscr_style_digest'] = '對每個頁面發送更改的摘要信件 ( $lang['subscr_style_list'] = '自上次發信以來更改的頁面的列表 (每 %.2f 天)'; $lang['authmodfailed'] = '帳號認證的設定不正確,請通知該維基管理員。'; $lang['authtempfail'] = '帳號認證目前暫不提供,若本狀況持續發生的話,請通知該維基管理員。'; +$lang['authpwdexpire'] = '您的密碼將在 %d 天內到期,請馬上更換新密碼。'; $lang['i_chooselang'] = '選擇您的語系'; $lang['i_installer'] = 'DokuWiki 安裝工具'; $lang['i_wikiname'] = '維基名稱'; @@ -280,7 +291,7 @@ $lang['i_pol1'] = '公開的維基 (任何人可讀取,註冊 $lang['i_pol2'] = '封閉的維基 (只有註冊使用者可讀取、寫入、上傳)'; $lang['i_retry'] = '重試'; $lang['i_license'] = '請選擇您想要的內容發布許可協議:'; -$lang['recent_global'] = '您正在閱讀命名空間: <b>%s</b> 中的變更。您亦可觀看整個維基的<a href="%s">最近更新</a>。'; +$lang['recent_global'] = '您正在閱讀分類空間: <b>%s</b> 中的變更。您亦可觀看整個維基的<a href="%s">最近更新</a>。'; $lang['years'] = '%d 年前'; $lang['months'] = '%d 個月前'; $lang['weeks'] = '%d 週前'; @@ -299,7 +310,7 @@ $lang['media_list_thumbs'] = '縮圖'; $lang['media_list_rows'] = '列表'; $lang['media_sort_name'] = '名稱'; $lang['media_sort_date'] = '日期'; -$lang['media_namespaces'] = '選擇命名空間'; +$lang['media_namespaces'] = '選擇分類空間'; $lang['media_files'] = '在 %s 中的檔案'; $lang['media_upload'] = '上傳至 %s'; $lang['media_search'] = '在 %s 中搜尋'; @@ -308,8 +319,7 @@ $lang['media_viewold'] = '%s 在 %s'; $lang['media_edit'] = '編輯 %s'; $lang['media_history'] = '%s 的歷史紀錄'; $lang['media_meta_edited'] = '元資料已編輯'; -$lang['media_perm_read'] = '抱歉,您沒有足夠權限讀取檔案'; +$lang['media_perm_read'] = '抱歉,您沒有足夠權限讀取檔案。'; $lang['media_perm_upload'] = '抱歉,您沒有足夠權限上傳檔案。'; $lang['media_update'] = '上傳新的版本'; $lang['media_restore'] = '還原這個版本'; -$lang['plugin_install_err'] = '插件安裝錯誤。將插件目錄 "%s" 重新命名為 "%s"'; diff --git a/inc/lang/zh-tw/mailwrap.html b/inc/lang/zh-tw/mailwrap.html new file mode 100644 index 000000000..9cd5faacd --- /dev/null +++ b/inc/lang/zh-tw/mailwrap.html @@ -0,0 +1,13 @@ +<html> +<head> +<title>@TITLE@</title> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> +</head> +<body> + +@HTMLBODY@ + +<br /><hr /> +<small>這郵件由DokuWiki at @DOKUWIKIURL@. 生成</small> +</body> +</html>
\ No newline at end of file diff --git a/inc/lang/zh-tw/resetpwd.txt b/inc/lang/zh-tw/resetpwd.txt new file mode 100644 index 000000000..f760335af --- /dev/null +++ b/inc/lang/zh-tw/resetpwd.txt @@ -0,0 +1,3 @@ +====== 設定新密碼 ====== + +請為您的帳戶輸入新密碼。
\ No newline at end of file diff --git a/inc/lang/zh-tw/subscr_digest.txt b/inc/lang/zh-tw/subscr_digest.txt index a26e73050..a0f2be73e 100644 --- a/inc/lang/zh-tw/subscr_digest.txt +++ b/inc/lang/zh-tw/subscr_digest.txt @@ -12,8 +12,8 @@ 要取消頁面提醒,請登入維基 @DOKUWIKIURL@ 然後拜訪 @SUBSCRIBE@ -並取消訂閱頁面或命名空間的更改。 +並取消訂閱頁面或分類空間的更改。 -- 本信件由以下 DokuWiki 站台產生: -@DOKUWIKIURL@ +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/zh-tw/subscr_form.txt b/inc/lang/zh-tw/subscr_form.txt index 0ad675cc8..394d4cbad 100644 --- a/inc/lang/zh-tw/subscr_form.txt +++ b/inc/lang/zh-tw/subscr_form.txt @@ -1,3 +1,3 @@ ====== 訂閱管理 ====== -這個頁面允許您管理在目前頁面和命名空間的訂閱。
\ No newline at end of file +這個頁面允許您管理在目前頁面和分類空間的訂閱。
\ No newline at end of file diff --git a/inc/lang/zh-tw/subscr_list.txt b/inc/lang/zh-tw/subscr_list.txt index 2a1b26c6e..078eae63e 100644 --- a/inc/lang/zh-tw/subscr_list.txt +++ b/inc/lang/zh-tw/subscr_list.txt @@ -1,6 +1,6 @@ 您好! -維基 @TITLE@ 的 @PAGE@ 命名空間的頁面已更改。 +維基 @TITLE@ 的 @PAGE@ 分類空間的頁面已更改。 更改內容如下: -------------------------------------------------------- @@ -9,8 +9,8 @@ 要取消頁面提醒,請登入維基 @DOKUWIKIURL@ 然後拜訪 @SUBSCRIBE@ -並取消訂閱頁面或命名空間的更改。 +並取消訂閱頁面或分類空間的更改。 -- 本信件由以下 DokuWiki 站台產生: -@DOKUWIKIURL@ +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/zh-tw/subscr_single.txt b/inc/lang/zh-tw/subscr_single.txt index f3c623c5c..5128140d0 100644 --- a/inc/lang/zh-tw/subscr_single.txt +++ b/inc/lang/zh-tw/subscr_single.txt @@ -15,8 +15,8 @@ 要取消頁面提醒,請登入維基 @DOKUWIKIURL@ 然後拜訪 @NEWPAGE@ -並取消訂閱頁面或命名空間的更改。 +並取消訂閱頁面或分類空間的更改。 -- 本信件由以下 DokuWiki 站台產生: -@DOKUWIKIURL@ +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php index 9ea0f5e7f..b21a74ed5 100644 --- a/inc/lang/zh/lang.php +++ b/inc/lang/zh/lang.php @@ -190,7 +190,7 @@ $lang['lastmod'] = '最后更改'; $lang['by'] = '由'; $lang['deleted'] = '移除'; $lang['created'] = '创建'; -$lang['restored'] = '已恢复为旧版'; +$lang['restored'] = '已恢复为旧版 (%s)'; $lang['external_edit'] = '外部编辑'; $lang['summary'] = '编辑摘要'; $lang['noflash'] = '需要 <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash 插件</a> 来播放本内容。 '; @@ -200,6 +200,7 @@ $lang['user_tools'] = '用户工具'; $lang['site_tools'] = '站点工具'; $lang['page_tools'] = '页面工具'; $lang['skip_to_content'] = '跳至内容'; +$lang['sidebar'] = '侧边栏'; $lang['mail_newpage'] = '添加页面:'; $lang['mail_changed'] = '更改页面:'; $lang['mail_subscribe_list'] = '命名空间中改变的页面:'; @@ -329,4 +330,3 @@ $lang['media_perm_read'] = '抱歉,您没有足够权限读取这些文 $lang['media_perm_upload'] = '抱歉,您没有足够权限来上传文件。'; $lang['media_update'] = '上传新版本'; $lang['media_restore'] = '恢复这个版本'; -$lang['plugin_install_err'] = '插件安装不正确。重命名插件目录“%s”为“%s”。'; diff --git a/inc/load.php b/inc/load.php index b676518e7..b8a279523 100644 --- a/inc/load.php +++ b/inc/load.php @@ -95,13 +95,13 @@ function load_autoload($name){ } // Plugin loading - if(preg_match('/^(helper|syntax|action|admin|renderer|remote)_plugin_([^_]+)(?:_([^_]+))?$/', + if(preg_match('/^(helper|syntax|action|admin|renderer|remote)_plugin_('.DOKU_PLUGIN_NAME_REGEX.')(?:_([^_]+))?$/', $name, $m)) { // try to load the wanted plugin file $c = ((count($m) === 4) ? "/{$m[3]}" : ''); $plg = DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"; if(@file_exists($plg)){ - include DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"; + include_once DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"; } return; } diff --git a/inc/pageutils.php b/inc/pageutils.php index d6abff894..55cc081a1 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -199,7 +199,8 @@ function noNSorNS($id) { * Creates a XHTML valid linkid from a given headline title * * @param string $title The headline title - * @param array $check Existing IDs (title => number) + * @param array|bool $check Existing IDs (title => number) + * @return string the title * @author Andreas Gohr <andi@splitbrain.org> */ function sectionID($title,&$check) { diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index e18718746..b4e78a530 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -358,6 +358,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { /** * Execute PHP code if allowed * + * @param string $text PHP code that is either executed or printed * @param string $wrapper html element to wrap result if $conf['phpok'] is okff * * @author Andreas Gohr <andi@splitbrain.org> @@ -382,6 +383,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { /** * Insert HTML if allowed * + * @param string $text html text * @param string $wrapper html element to wrap result if $conf['htmlok'] is okff * * @author Andreas Gohr <andi@splitbrain.org> diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php index 11636fb91..0b4041a77 100644 --- a/inc/plugincontroller.class.php +++ b/inc/plugincontroller.class.php @@ -70,7 +70,6 @@ class Doku_Plugin_Controller { //we keep all loaded plugins available in global scope for reuse global $DOKU_PLUGINS; - global $lang; list($plugin,$component) = $this->_splitName($name); @@ -97,7 +96,10 @@ class Doku_Plugin_Controller { $dir = $this->get_directory($plugin); $inf = confToHash(DOKU_PLUGIN."$dir/plugin.info.txt"); if($inf['base'] && $inf['base'] != $plugin){ - msg(sprintf($lang['plugin_install_err'],hsc($plugin),hsc($inf['base'])),-1); + msg(sprintf("Plugin installed incorrectly. Rename plugin directory '%s' to '%s'.", hsc($plugin), hsc($inf['base'])), -1); + } elseif (preg_match('/^'.DOKU_PLUGIN_NAME_REGEX.'$/', $plugin) !== 1) { + msg(sprintf("Plugin name '%s' is not a valid plugin name, only the characters a-z and 0-9 are allowed. ". + 'Maybe the plugin has been installed in the wrong directory?', hsc($plugin)), -1); } return null; } diff --git a/inc/pluginutils.php b/inc/pluginutils.php index 53cfedf82..7c37d4f7f 100644 --- a/inc/pluginutils.php +++ b/inc/pluginutils.php @@ -8,6 +8,8 @@ // plugin related constants if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +// note that only [a-z0-9]+ is officially supported, this is only to support plugins that don't follow these conventions, too +if(!defined('DOKU_PLUGIN_NAME_REGEX')) define('DOKU_PLUGIN_NAME_REGEX', '[a-zA-Z0-9\x7f-\xff]+'); /** * Original plugin functions, remain for backwards compatibility diff --git a/inc/subscription.php b/inc/subscription.php index 1bee1152e..6b201c266 100644 --- a/inc/subscription.php +++ b/inc/subscription.php @@ -132,7 +132,7 @@ function subscription_set($user, $page, $style, $data = null, // Delete subscription if one exists and $overwrite is true. If $overwrite // is false, fail. $subs = subscription_find($page, array('user' => $user)); - if (count($subs) > 0 && array_pop(array_keys($subs)) === $page) { + if (count($subs) > 0 && isset($subs[$page])) { if (!$overwrite) { msg(sprintf($lang['subscr_already_subscribed'], $user, prettyprint_id($page)), -1); @@ -396,12 +396,14 @@ function subscription_send($subscriber_mail, $replaces, $subject, $id, $template $text = rawLocale($template); $trep = array_merge($replaces, array('PAGE' => $id)); + $hrep = $trep; + $hrep['DIFF'] = nl2br(htmlspecialchars($hrep['DIFF'])); $subject = $lang['mail_' . $subject] . ' ' . $id; $mail = new Mailer(); $mail->bcc($subscriber_mail); $mail->subject($subject); - $mail->setBody($text,$trep); + $mail->setBody($text,$trep,$hrep); $mail->from($conf['mailfromnobody']); $mail->setHeader( 'List-Unsubscribe', |