| | } |
| | |
| | - private function deltaCopy( |
| | - string $base, |
| | - string $delta, |
| | - int &$position, |
| | - int $opcode |
| | - ): string { |
| | - $offset = 0; |
| | - $length = 0; |
| | - |
| | - if( $opcode & 1 ) { $offset |= ord( $delta[$position++] ); } |
| | - if( $opcode & 2 ) { $offset |= ord( $delta[$position++] ) << 8; } |
| | - if( $opcode & 4 ) { $offset |= ord( $delta[$position++] ) << 16; } |
| | - if( $opcode & 8 ) { $offset |= ord( $delta[$position++] ) << 24; } |
| | - if( $opcode & 16 ) { $length |= ord( $delta[$position++] ); } |
| | - if( $opcode & 32 ) { $length |= ord( $delta[$position++] ) << 8; } |
| | - if( $opcode & 64 ) { $length |= ord( $delta[$position++] ) << 16; } |
| | - |
| | - return substr( $base, $offset, ($length === 0 ? 0x10000 : $length) ); |
| | - } |
| | - |
| | private function skipSize( string $data, int &$position ): void { |
| | while( ord( $data[$position++] ) & 128 ) { |