/** * A gettext Plural-Forms parser. * * @since 4.9.0 */ class Plural_Forms { /** * Operator characters. * * @since 4.9.0 * @var string OP_CHARS Operator characters. */ const OP_CHARS = '|&> 6, '<' => 5, '<=' => 5, '>' => 5, '>=' => 5, '==' => 4, '!=' => 4, '&&' => 3, '||' => 2, '?:' => 1, '?' => 1, '(' => 0, ')' => 0, ); /** * Tokens generated from the string. * * @since 4.9.0 * @var array $tokens List of tokens. */ protected $tokens = array(); /** * Cache for repeated calls to the function. * * @since 4.9.0 * @var array $cache Map of $n => $result */ protected $cache = array(); /** * Constructor. * * @since 4.9.0 * * @param string $str Plural function (just the bit after `plural=` from Plural-Forms) */ public function __construct( $str ) { $this->parse( $str ); } /** * Parse a Plural-Forms string into tokens. * * Uses the shunting-yard algorithm to convert the string to Reverse Polish * Notation tokens. * * @since 4.9.0 * * @param string $str String to parse. */ protected function parse( $str ) { $pos = 0; $len = strlen( $str ); // Convert infix operators to postfix using the shunting-yard algorithm. $output = array(); $stack = array(); while ( $pos < $len ) { $next = substr( $str, $pos, 1 ); switch ( $next ) { // Ignore whitespace case ' ': case "\t": $pos++; break; // Variable (n) case 'n': $output[] = array( 'var' ); $pos++; break; // Parentheses case '(': $stack[] = $next; $pos++; break; case ')': $found = false; while ( ! empty( $stack ) ) { $o2 = $stack[ count( $stack ) - 1 ]; if ( $o2 !== '(' ) { $output[] = array( 'op', array_pop( $stack ) ); continue; } // Discard open paren. array_pop( $stack ); $found = true; break; } if ( ! $found ) { throw new Exception( 'Mismatched parentheses' ); } $pos++; break; // Operators case '|': case '&': case '>': case '<': case '!': case '=': case '%': case '?': $end_operator = strspn( $str, self::OP_CHARS, $pos ); $operator = substr( $str, $pos, $end_operator ); if ( ! array_key_exists( $operator, self::$op_precedence ) ) { throw new Exception( sprintf( 'Unknown operator "%s"', $operator ) ); } while ( ! empty( $stack ) ) { $o2 = $stack[ count( $stack ) - 1 ]; // Ternary is right-associative in C if ( $operator === '?:' || $operator === '?' ) { if ( self::$op_precedence[ $operator ] >= self::$op_precedence[ $o2 ] ) { break; } } elseif ( self::$op_precedence[ $operator ] > self::$op_precedence[ $o2 ] ) { break; } $output[] = array( 'op', array_pop( $stack ) ); } $stack[] = $operator; $pos += $end_operator; break; // Ternary "else" case ':': $found = false; $s_pos = count( $stack ) - 1; while ( $s_pos >= 0 ) { $o2 = $stack[ $s_pos ]; if ( $o2 !== '?' ) { $output[] = array( 'op', array_pop( $stack ) ); $s_pos--; continue; } // Replace. $stack[ $s_pos ] = '?:'; $found = true; break; } if ( ! $found ) { throw new Exception( 'Missing starting "?" ternary operator' ); } $pos++; break; // Default - number or invalid default: if ( $next >= '0' && $next <= '9' ) { $span = strspn( $str, self::NUM_CHARS, $pos ); $output[] = array( 'value', intval( substr( $str, $pos, $span ) ) ); $pos += $span; continue; } throw new Exception( sprintf( 'Unknown symbol "%s"', $next ) ); } } while ( ! empty( $stack ) ) { $o2 = array_pop( $stack ); if ( $o2 === '(' || $o2 === ')' ) { throw new Exception( 'Mismatched parentheses' ); } $output[] = array( 'op', $o2 ); } $this->tokens = $output; } /** * Get the plural form for a number. * * Caches the value for repeated calls. * * @since 4.9.0 * * @param int $num Number to get plural form for. * @return int Plural form value. */ public function get( $num ) { if ( isset( $this->cache[ $num ] ) ) { return $this->cache[ $num ]; } return $this->cache[ $num ] = $this->execute( $num ); } /** * Execute the plural form function. * * @since 4.9.0 * * @param int $n Variable "n" to substitute. * @return int Plural form value. */ public function execute( $n ) { $stack = array(); $i = 0; $total = count( $this->tokens ); while ( $i < $total ) { $next = $this->tokens[$i]; $i++; if ( $next[0] === 'var' ) { $stack[] = $n; continue; } elseif ( $next[0] === 'value' ) { $stack[] = $next[1]; continue; } // Only operators left. switch ( $next[1] ) { case '%': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 % $v2; break; case '||': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 || $v2; break; case '&&': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 && $v2; break; case '<': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 < $v2; break; case '<=': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 <= $v2; break; case '>': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 > $v2; break; case '>=': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 >= $v2; break; case '!=': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 != $v2; break; case '==': $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 == $v2; break; case '?:': $v3 = array_pop( $stack ); $v2 = array_pop( $stack ); $v1 = array_pop( $stack ); $stack[] = $v1 ? $v2 : $v3; break; default: throw new Exception( sprintf( 'Unknown operator "%s"', $next[1] ) ); } } if ( count( $stack ) !== 1 ) { throw new Exception( 'Too many values remaining on the stack' ); } return (int) $stack[0]; } } /** * Contains Translation_Entry class * * @version $Id: entry.php 1157 2015-11-20 04:30:11Z dd32 $ * @package pomo * @subpackage entry */ if ( ! class_exists( 'Translation_Entry', false ) ): /** * Translation_Entry class encapsulates a translatable string */ class Translation_Entry { /** * Whether the entry contains a string and its plural form, default is false * * @var boolean */ var $is_plural = false; var $context = null; var $singular = null; var $plural = null; var $translations = array(); var $translator_comments = ''; var $extracted_comments = ''; var $references = array(); var $flags = array(); /** * @param array $args associative array, support following keys: * - singular (string) -- the string to translate, if omitted and empty entry will be created * - plural (string) -- the plural form of the string, setting this will set {@link $is_plural} to true * - translations (array) -- translations of the string and possibly -- its plural forms * - context (string) -- a string differentiating two equal strings used in different contexts * - translator_comments (string) -- comments left by translators * - extracted_comments (string) -- comments left by developers * - references (array) -- places in the code this strings is used, in relative_to_root_path/file.php:linenum form * - flags (array) -- flags like php-format */ function __construct( $args = array() ) { // if no singular -- empty object if (!isset($args['singular'])) { return; } // get member variable values from args hash foreach ($args as $varname => $value) { $this->$varname = $value; } if (isset($args['plural']) && $args['plural']) $this->is_plural = true; if (!is_array($this->translations)) $this->translations = array(); if (!is_array($this->references)) $this->references = array(); if (!is_array($this->flags)) $this->flags = array(); } /** * PHP4 constructor. */ public function Translation_Entry( $args = array() ) { self::__construct( $args ); } /** * Generates a unique key for this entry * * @return string|bool the key or false if the entry is empty */ function key() { if ( null === $this->singular || '' === $this->singular ) return false; // Prepend context and EOT, like in MO files $key = !$this->context? $this->singular : $this->context.chr(4).$this->singular; // Standardize on \n line endings $key = str_replace( array( "\r\n", "\r" ), "\n", $key ); return $key; } /** * @param object $other */ function merge_with(&$other) { $this->flags = array_unique( array_merge( $this->flags, $other->flags ) ); $this->references = array_unique( array_merge( $this->references, $other->references ) ); if ( $this->extracted_comments != $other->extracted_comments ) { $this->extracted_comments .= $other->extracted_comments; } } } endif; /** * Classes, which help reading streams of data from files. * Based on the classes from Danilo Segan * * @version $Id: streams.php 1157 2015-11-20 04:30:11Z dd32 $ * @package pomo * @subpackage streams */ if ( ! class_exists( 'POMO_Reader', false ) ): class POMO_Reader { var $endian = 'little'; var $_post = ''; /** * PHP5 constructor. */ function __construct() { $this->is_overloaded = ((ini_get("mbstring.func_overload") & 2) != 0) && function_exists('mb_substr'); $this->_pos = 0; } /** * PHP4 constructor. */ public function POMO_Reader() { self::__construct(); } /** * Sets the endianness of the file. * * @param $endian string 'big' or 'little' */ function setEndian($endian) { $this->endian = $endian; } /** * Reads a 32bit Integer from the Stream * * @return mixed The integer, corresponding to the next 32 bits from * the stream of false if there are not enough bytes or on error */ function readint32() { $bytes = $this->read(4); if (4 != $this->strlen($bytes)) return false; $endian_letter = ('big' == $this->endian)? 'N' : 'V'; $int = unpack($endian_letter, $bytes); return reset( $int ); } /** * Reads an array of 32-bit Integers from the Stream * * @param integer count How many elements should be read * @return mixed Array of integers or false if there isn't * enough data or on error */ function readint32array($count) { $bytes = $this->read(4 * $count); if (4*$count != $this->strlen($bytes)) return false; $endian_letter = ('big' == $this->endian)? 'N' : 'V'; return unpack($endian_letter.$count, $bytes); } /** * @param string $string * @param int $start * @param int $length * @return string */ function substr($string, $start, $length) { if ($this->is_overloaded) { return mb_substr($string, $start, $length, 'ascii'); } else { return substr($string, $start, $length); } } /** * @param string $string * @return int */ function strlen($string) { if ($this->is_overloaded) { return mb_strlen($string, 'ascii'); } else { return strlen($string); } } /** * @param string $string * @param int $chunk_size * @return array */ function str_split($string, $chunk_size) { if (!function_exists('str_split')) { $length = $this->strlen($string); $out = array(); for ($i = 0; $i < $length; $i += $chunk_size) $out[] = $this->substr($string, $i, $chunk_size); return $out; } else { return str_split( $string, $chunk_size ); } } /** * @return int */ function pos() { return $this->_pos; } /** * @return true */ function is_resource() { return true; } /** * @return true */ function close() { return true; } } endif; if ( ! class_exists( 'POMO_FileReader', false ) ): class POMO_FileReader extends POMO_Reader { /** * @param string $filename */ function __construct( $filename ) { parent::POMO_Reader(); $this->_f = fopen($filename, 'rb'); } /** * PHP4 constructor. */ public function POMO_FileReader( $filename ) { self::__construct( $filename ); } /** * @param int $bytes */ function read($bytes) { return fread($this->_f, $bytes); } /** * @param int $pos * @return boolean */ function seekto($pos) { if ( -1 == fseek($this->_f, $pos, SEEK_SET)) { return false; } $this->_pos = $pos; return true; } /** * @return bool */ function is_resource() { return is_resource($this->_f); } /** * @return bool */ function feof() { return feof($this->_f); } /** * @return bool */ function close() { return fclose($this->_f); } /** * @return string */ function read_all() { $all = ''; while ( !$this->feof() ) $all .= $this->read(4096); return $all; } } endif; if ( ! class_exists( 'POMO_StringReader', false ) ): /** * Provides file-like methods for manipulating a string instead * of a physical file. */ class POMO_StringReader extends POMO_Reader { var $_str = ''; /** * PHP5 constructor. */ function __construct( $str = '' ) { parent::POMO_Reader(); $this->_str = $str; $this->_pos = 0; } /** * PHP4 constructor. */ public function POMO_StringReader( $str = '' ) { self::__construct( $str ); } /** * @param string $bytes * @return string */ function read($bytes) { $data = $this->substr($this->_str, $this->_pos, $bytes); $this->_pos += $bytes; if ($this->strlen($this->_str) < $this->_pos) $this->_pos = $this->strlen($this->_str); return $data; } /** * @param int $pos * @return int */ function seekto($pos) { $this->_pos = $pos; if ($this->strlen($this->_str) < $this->_pos) $this->_pos = $this->strlen($this->_str); return $this->_pos; } /** * @return int */ function length() { return $this->strlen($this->_str); } /** * @return string */ function read_all() { return $this->substr($this->_str, $this->_pos, $this->strlen($this->_str)); } } endif; if ( ! class_exists( 'POMO_CachedFileReader', false ) ): /** * Reads the contents of the file in the beginning. */ class POMO_CachedFileReader extends POMO_StringReader { /** * PHP5 constructor. */ function __construct( $filename ) { parent::POMO_StringReader(); $this->_str = file_get_contents($filename); if (false === $this->_str) return false; $this->_pos = 0; } /** * PHP4 constructor. */ public function POMO_CachedFileReader( $filename ) { self::__construct( $filename ); } } endif; if ( ! class_exists( 'POMO_CachedIntFileReader', false ) ): /** * Reads the contents of the file in the beginning. */ class POMO_CachedIntFileReader extends POMO_CachedFileReader { /** * PHP5 constructor. */ public function __construct( $filename ) { parent::POMO_CachedFileReader($filename); } /** * PHP4 constructor. */ function POMO_CachedIntFileReader( $filename ) { self::__construct( $filename ); } } endif; Cadini
Menswear Collection
Menswear Collection  
Menswear Collection
Find out more
Made to measure
Made to measure  
Made to measure
Find out more
Latest Collection
Latest Collection  
Latest Collection
Find out more
Stores Worldwide
Stores Worldwide  
Stores Worldwide
Find out more
Accessories
Accessories  
Accessories
Find out more

The brand and the company is called by the name of the group of mountains “il cadini_stores_LogoGruppo dei Cadini di Misurina”, close to the lake of Misurina in Cortina (Northern Italy). It is a group of dolomites, which have exclusive variety of rocks, types of hills and valleys.

It is coherent with the company’s big range of products, which include classic and casual men’s wear and also complementing accessories, which creates a complete contemporary “total look”. Moreover, the word “ciadin”, from which derives the name of the mountain group itself, means “amphitheatre”.

 

Logo Cadini FAVICONThe fashion show concept of Cadini “total look” stands for the origin of its name also Etruscans, which have a big imprint in Italian history with a deep tradition of  sculpture manufacture.

In their heritage of bronze sculptures, one of this symbols became the logo of the company: a picture of a styled etruscan bronze horse wich was used to represents strength and power,  features of a confident contemporary man.

Watch the Pressroom

old-newspaper

 

 

 

 

 

newcollection-minOur New Collection Autumn Winter 2018  will be presented at

Pitti Uomo Immagine , Padiglione Centrale, Florence, Italy

from the 9th to the 12th of January 2018.

If you wish to have more info about our New Collection

please contact us by e-mail info@cadini.com

or by phone (0039) 055-573401

Cadini is not just a menswear brand..... Cadini is an attitude

apteka mujchine for man ukonkemerovo woditely driver.