<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- template designed by Marco Von Ballmoos -->
<title>File Source for PelDataWindow.php</title>
<link rel="stylesheet" href="../media/stylesheet.css" />
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
</head>
<body>
<h1>Source for file PelDataWindow.php</h1>
<p>Documentation is available at <a href="../PEL/_PelDataWindow.php.html">PelDataWindow.php</a></p>
<div class="src-code">
<div class="src-code"><ol><li><div class="src-line"><a name="a1"></a><span class="src-php"><?php</span></div></li>
<li><div class="src-line"><a name="a2"></a> </div></li>
<li><div class="src-line"><a name="a3"></a><span class="src-comm">/* PEL: PHP Exif Library. A library with support for reading and</span></div></li>
<li><div class="src-line"><a name="a4"></a><span class="src-comm"> * writing all Exif headers in JPEG and TIFF images using PHP.</span></div></li>
<li><div class="src-line"><a name="a5"></a><span class="src-comm"> *</span></div></li>
<li><div class="src-line"><a name="a6"></a><span class="src-comm"> * Copyright (C) 2004, 2005 Martin Geisler.</span></div></li>
<li><div class="src-line"><a name="a7"></a><span class="src-comm"> *</span></div></li>
<li><div class="src-line"><a name="a8"></a><span class="src-comm"> * This program is free software; you can redistribute it and/or modify</span></div></li>
<li><div class="src-line"><a name="a9"></a><span class="src-comm"> * it under the terms of the GNU General Public License as published by</span></div></li>
<li><div class="src-line"><a name="a10"></a><span class="src-comm"> * the Free Software Foundation; either version 2 of the License, or</span></div></li>
<li><div class="src-line"><a name="a11"></a><span class="src-comm"> * (at your option) any later version.</span></div></li>
<li><div class="src-line"><a name="a12"></a><span class="src-comm"> *</span></div></li>
<li><div class="src-line"><a name="a13"></a><span class="src-comm"> * This program is distributed in the hope that it will be useful,</span></div></li>
<li><div class="src-line"><a name="a14"></a><span class="src-comm"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div></li>
<li><div class="src-line"><a name="a15"></a><span class="src-comm"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div></li>
<li><div class="src-line"><a name="a16"></a><span class="src-comm"> * GNU General Public License for more details.</span></div></li>
<li><div class="src-line"><a name="a17"></a><span class="src-comm"> *</span></div></li>
<li><div class="src-line"><a name="a18"></a><span class="src-comm"> * You should have received a copy of the GNU General Public License</span></div></li>
<li><div class="src-line"><a name="a19"></a><span class="src-comm"> * along with this program in the file COPYING; if not, write to the</span></div></li>
<li><div class="src-line"><a name="a20"></a><span class="src-comm"> * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,</span></div></li>
<li><div class="src-line"><a name="a21"></a><span class="src-comm"> * Boston, MA 02110-1301 USA</span></div></li>
<li><div class="src-line"><a name="a22"></a><span class="src-comm"> */</span></div></li>
<li><div class="src-line"><a name="a23"></a> </div></li>
<li><div class="src-line"><a name="a24"></a><span class="src-doc">/* $Id: PelDataWindow.php 387 2005-10-05 11:02:52Z mgeisler $ */</span></div></li>
<li><div class="src-line"><a name="a25"></a> </div></li>
<li><div class="src-line"><a name="a26"></a> </div></li>
<li><div class="src-line"><a name="a27"></a><span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a28"></a><span class="src-doc"> * A container for bytes with a limited window of accessible bytes.</span></div></li>
<li><div class="src-line"><a name="a29"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a30"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@author</span><span class="src-doc"> Martin Geisler <hide@address.com></span></div></li>
<li><div class="src-line"><a name="a31"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@version</span><span class="src-doc"> $Revision: 387 $</span></div></li>
<li><div class="src-line"><a name="a32"></a><span class="src-doc"> * </span><span class="src-doc-tag">@date</span><span class="src-doc"> $Date: 2005-10-05 13:02:52 +0200 (Wed, 05 Oct 2005) $</span></div></li>
<li><div class="src-line"><a name="a33"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@license</span><span class="src-doc"> http://www.gnu.org/licenses/gpl.html GNU General Public License (GPL)</span></div></li>
<li><div class="src-line"><a name="a34"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> PEL</span></div></li>
<li><div class="src-line"><a name="a35"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a36"></a> </div></li>
<li><div class="src-line"><a name="a37"></a><span class="src-doc">/**#@+ Required class definitions. */</span></div></li>
<li><div class="src-line"><a name="a38"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-str">'PelException.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a39"></a><span class="src-inc">require_once</span><span class="src-sym">(</span><span class="src-str">'PelConvert.php'</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a40"></a><span class="src-doc-close-template">/**#@-*/</span></div></li>
<li><div class="src-line"><a name="a41"></a> </div></li>
<li><div class="src-line"><a name="a42"></a> </div></li>
<li><div class="src-line"><a name="a43"></a><span class="src-doc-template"> * An exception thrown when an invalid offset is encountered.</span></div></li>
<li><div class="src-line"><a name="a44"></a><span class="src-doc-template"> *</span></div></li>
<li><div class="src-line"><a name="a45"></a><span class="src-doc-template"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc-template"> PEL</span></div></li>
<li><div class="src-line"><a name="a46"></a><span class="src-doc-template"> * </span><span class="src-doc-coretag">@subpackage</span><span class="src-doc-template"> Exception</span></div></li>
<li><div class="src-line"><a name="a48"></a><span class="src-doc-template"> */</span></div></li>
<li><div class="src-line"><a name="a49"></a><span class="src-key">class </span><a href="../PEL/Exception/PelDataWindowOffsetException.html">PelDataWindowOffsetException</a> <span class="src-key">extends </span><a href="../PEL/Exception/PelException.html">PelException</a> <span class="src-sym">{</span><span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a50"></a> </div></li>
<li><div class="src-line"><a name="a51"></a><span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a52"></a><span class="src-doc"> * An exception thrown when an invalid window is encountered.</span></div></li>
<li><div class="src-line"><a name="a53"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a54"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> PEL</span></div></li>
<li><div class="src-line"><a name="a55"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@subpackage</span><span class="src-doc"> Exception</span></div></li>
<li><div class="src-line"><a name="a56"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a57"></a><span class="src-key">class </span><a href="../PEL/Exception/PelDataWindowWindowException.html">PelDataWindowWindowException</a> <span class="src-key">extends </span><a href="../PEL/Exception/PelException.html">PelException</a> <span class="src-sym">{</span><span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a58"></a> </div></li>
<li><div class="src-line"><a name="a59"></a><span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a60"></a><span class="src-doc"> * The window.</span></div></li>
<li><div class="src-line"><a name="a61"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a62"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@package</span><span class="src-doc"> PEL</span></div></li>
<li><div class="src-line"><a name="a63"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a64"></a><span class="src-key">class </span><a href="../PEL/PelDataWindow.html">PelDataWindow</a> <span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a65"></a> </div></li>
<li><div class="src-line"><a name="a66"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a67"></a><span class="src-doc"> * The data held by this window.</span></div></li>
<li><div class="src-line"><a name="a68"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a69"></a><span class="src-doc"> * The string can contain any kind of data, including binary data.</span></div></li>
<li><div class="src-line"><a name="a70"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a71"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">string </span></div></li>
<li><div class="src-line"><a name="a72"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a73"></a> <span class="src-key">private </span><span class="src-var">$data </span>= <span class="src-str">''</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a74"></a> </div></li>
<li><div class="src-line"><a name="a75"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a76"></a><span class="src-doc"> * The byte order currently in use.</span></div></li>
<li><div class="src-line"><a name="a77"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a78"></a><span class="src-doc"> * This will be the byte order used when data is read using the for</span></div></li>
<li><div class="src-line"><a name="a79"></a><span class="src-doc"> * example the </span><span class="src-doc-inlinetag">{@link getShort}</span><span class="src-doc"> function. It must be one of </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a80"></a><span class="src-doc"> * PelConvert::LITTLE_ENDIAN} and </span><span class="src-doc-inlinetag">{@link PelConvert::BIG_ENDIAN}</span><span class="src-doc">.</span></div></li>
<li><div class="src-line"><a name="a81"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a82"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">PelByteOrder </span></div></li>
<li><div class="src-line"><a name="a83"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> setByteOrder, getByteOrder</span></div></li>
<li><div class="src-line"><a name="a84"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a85"></a> <span class="src-key">private </span><span class="src-var">$order</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a86"></a> </div></li>
<li><div class="src-line"><a name="a87"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a88"></a><span class="src-doc"> * The start of the current window.</span></div></li>
<li><div class="src-line"><a name="a89"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a90"></a><span class="src-doc"> * All offsets used for access into the data will count from this</span></div></li>
<li><div class="src-line"><a name="a91"></a><span class="src-doc"> * offset, effectively limiting access to a window starting at this</span></div></li>
<li><div class="src-line"><a name="a92"></a><span class="src-doc"> * byte.</span></div></li>
<li><div class="src-line"><a name="a93"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a94"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">int </span></div></li>
<li><div class="src-line"><a name="a95"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> setWindowStart</span></div></li>
<li><div class="src-line"><a name="a96"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a97"></a> <span class="src-key">private </span><span class="src-var">$start </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a98"></a> </div></li>
<li><div class="src-line"><a name="a99"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a100"></a><span class="src-doc"> * The size of the current window.</span></div></li>
<li><div class="src-line"><a name="a101"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a102"></a><span class="src-doc"> * All offsets used for access into the data will be limited by this</span></div></li>
<li><div class="src-line"><a name="a103"></a><span class="src-doc"> * variable. A valid offset must be strictly less than this</span></div></li>
<li><div class="src-line"><a name="a104"></a><span class="src-doc"> * variable.</span></div></li>
<li><div class="src-line"><a name="a105"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a106"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@var </span><span class="src-doc-type">int </span></div></li>
<li><div class="src-line"><a name="a107"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> setWindowSize</span></div></li>
<li><div class="src-line"><a name="a108"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a109"></a> <span class="src-key">private </span><span class="src-var">$size </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a110"></a> </div></li>
<li><div class="src-line"><a name="a111"></a> </div></li>
<li><div class="src-line"><a name="a112"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a113"></a><span class="src-doc"> * Construct a new data window with the data supplied.</span></div></li>
<li><div class="src-line"><a name="a114"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a115"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc">the data that this window will contain. The data</span></div></li>
<li><div class="src-line"><a name="a116"></a><span class="src-doc"> * will be copied into the new data window.</span></div></li>
<li><div class="src-line"><a name="a117"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a118"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">boolean </span><span class="src-doc">the initial byte order of the window. This must</span></div></li>
<li><div class="src-line"><a name="a119"></a><span class="src-doc"> * be either </span><span class="src-doc-inlinetag">{@link PelConvert::LITTLE_ENDIAN}</span><span class="src-doc"> or </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a120"></a><span class="src-doc"> * PelConvert::BIG_ENDIAN}. This will be used when integers are</span></div></li>
<li><div class="src-line"><a name="a121"></a><span class="src-doc"> * read from the data, and it can be changed later with </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a122"></a><span class="src-doc"> * setByteOrder()}.</span></div></li>
<li><div class="src-line"><a name="a123"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a124"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#method__construct">__construct</a><span class="src-sym">(</span><span class="src-var">$d </span>= <span class="src-str">''</span><span class="src-sym">, </span><span class="src-var">$e </span>= <span class="src-id">PelConvert</span><span class="src-sym">::</span><span class="src-id">LITTLE_ENDIAN</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a125"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data </span>= <span class="src-var">$d</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a126"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order </span>= <span class="src-var">$e</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a127"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size </span>= <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$d</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a128"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a129"></a> </div></li>
<li><div class="src-line"><a name="a130"></a> </div></li>
<li><div class="src-line"><a name="a131"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a132"></a><span class="src-doc"> * Get the size of the data window.</span></div></li>
<li><div class="src-line"><a name="a133"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a134"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">int </span><span class="src-doc">the number of bytes covered by the window. The</span></div></li>
<li><div class="src-line"><a name="a135"></a><span class="src-doc"> * allowed offsets go from 0 up to this number minus one.</span></div></li>
<li><div class="src-line"><a name="a136"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a137"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@see</span><span class="src-doc"> getBytes()</span></div></li>
<li><div class="src-line"><a name="a138"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a139"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetSize">getSize</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a140"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a141"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a142"></a> </div></li>
<li><div class="src-line"><a name="a143"></a> </div></li>
<li><div class="src-line"><a name="a144"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a145"></a><span class="src-doc"> * Change the byte order of the data.</span></div></li>
<li><div class="src-line"><a name="a146"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a147"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">PelByteOrder </span><span class="src-doc">the new byte order. This must be either</span></div></li>
<li><div class="src-line"><a name="a148"></a><span class="src-doc"> * </span><span class="src-doc-inlinetag">{@link PelConvert::LITTLE_ENDIAN}</span><span class="src-doc"> or </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a149"></a><span class="src-doc"> * PelConvert::BIG_ENDIAN}.</span></div></li>
<li><div class="src-line"><a name="a150"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a151"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodsetByteOrder">setByteOrder</a><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a152"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order </span>= <span class="src-var">$o</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a153"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a154"></a> </div></li>
<li><div class="src-line"><a name="a155"></a> </div></li>
<li><div class="src-line"><a name="a156"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a157"></a><span class="src-doc"> * Get the currently used byte order.</span></div></li>
<li><div class="src-line"><a name="a158"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a159"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">PelByteOrder </span><span class="src-doc">this will be either </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a160"></a><span class="src-doc"> * PelConvert::LITTLE_ENDIAN} or </span><span class="src-doc-inlinetag">{@link PelConvert::BIG_ENDIAN}</span><span class="src-doc">.</span></div></li>
<li><div class="src-line"><a name="a161"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a162"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetByteOrder">getByteOrder</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a163"></a> <span class="src-key">return </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a164"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a165"></a> </div></li>
<li><div class="src-line"><a name="a166"></a> </div></li>
<li><div class="src-line"><a name="a167"></a> <span class="src-comm">/* Move the start of the window forward.</span></div></li>
<li><div class="src-line"><a name="a168"></a><span class="src-comm"> *</span></div></li>
<li><div class="src-line"><a name="a169"></a><span class="src-comm"> * @param int the new start of the window. All new offsets will be</span></div></li>
<li><div class="src-line"><a name="a170"></a><span class="src-comm"> * calculated from this new start offset, and the size of the window</span></div></li>
<li><div class="src-line"><a name="a171"></a><span class="src-comm"> * will shrink to keep the end of the window in place.</span></div></li>
<li><div class="src-line"><a name="a172"></a><span class="src-comm"> */</span></div></li>
<li><div class="src-line"><a name="a173"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodsetWindowStart">setWindowStart</a><span class="src-sym">(</span><span class="src-var">$start</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a174"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$start </span>< <span class="src-num">0 </span>|| <span class="src-var">$start </span>> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a175"></a> throw <span class="src-key">new </span><span class="src-id"><a href="../PEL/Exception/PelDataWindowWindowException.html">PelDataWindowWindowException</a></span><span class="src-sym">(</span><span class="src-str">'Window [%d, %d] does ' </span>.</div></li>
<li><div class="src-line"><a name="a176"></a> <span class="src-str">'not fit in window [0, %d]'</span><span class="src-sym">,</span></div></li>
<li><div class="src-line"><a name="a177"></a> <span class="src-var">$start</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a178"></a> </div></li>
<li><div class="src-line"><a name="a179"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start </span>+= <span class="src-var">$start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a180"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size </span>-= <span class="src-var">$start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a181"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a182"></a> </div></li>
<li><div class="src-line"><a name="a183"></a> </div></li>
<li><div class="src-line"><a name="a184"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a185"></a><span class="src-doc"> * Adjust the size of the window.</span></div></li>
<li><div class="src-line"><a name="a186"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a187"></a><span class="src-doc"> * The size can only be made smaller.</span></div></li>
<li><div class="src-line"><a name="a188"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a189"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the desired size of the window. If the argument is</span></div></li>
<li><div class="src-line"><a name="a190"></a><span class="src-doc"> * negative, the window will be shrunk by the argument.</span></div></li>
<li><div class="src-line"><a name="a191"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a192"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodsetWindowSize">setWindowSize</a><span class="src-sym">(</span><span class="src-var">$size</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a193"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$size </span>< <span class="src-num">0</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a194"></a> <span class="src-var">$size </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a195"></a> </div></li>
<li><div class="src-line"><a name="a196"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$size </span>< <span class="src-num">0 </span>|| <span class="src-var">$size </span>> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a197"></a> throw <span class="src-key">new </span><span class="src-id"><a href="../PEL/Exception/PelDataWindowWindowException.html">PelDataWindowWindowException</a></span><span class="src-sym">(</span><span class="src-str">'Window [0, %d] ' </span>.</div></li>
<li><div class="src-line"><a name="a198"></a> <span class="src-str">'does not fit in window [0, %d]'</span><span class="src-sym">,</span></div></li>
<li><div class="src-line"><a name="a199"></a> <span class="src-var">$size</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a200"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size </span>= <span class="src-var">$size</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a201"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a202"></a> </div></li>
<li><div class="src-line"><a name="a203"></a> </div></li>
<li><div class="src-line"><a name="a204"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a205"></a><span class="src-doc"> * Make a new data window with the same data as the this window.</span></div></li>
<li><div class="src-line"><a name="a206"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a207"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc">if an integer is supplied, then it will be the start</span></div></li>
<li><div class="src-line"><a name="a208"></a><span class="src-doc"> * of the window in the clone. If left unspecified, then the clone</span></div></li>
<li><div class="src-line"><a name="a209"></a><span class="src-doc"> * will inherit the start from this object.</span></div></li>
<li><div class="src-line"><a name="a210"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a211"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">mixed </span><span class="src-doc">if an integer is supplied, then it will be the size</span></div></li>
<li><div class="src-line"><a name="a212"></a><span class="src-doc"> * of the window in the clone. If left unspecified, then the clone</span></div></li>
<li><div class="src-line"><a name="a213"></a><span class="src-doc"> * will inherit the size from this object.</span></div></li>
<li><div class="src-line"><a name="a214"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a215"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">PelDataWindow </span><span class="src-doc">a new window that operates on the same data</span></div></li>
<li><div class="src-line"><a name="a216"></a><span class="src-doc"> * as this window, but (optionally) with a smaller window size.</span></div></li>
<li><div class="src-line"><a name="a217"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a218"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetClone">getClone</a><span class="src-sym">(</span><span class="src-var">$start </span>= <span class="src-id">false</span><span class="src-sym">, </span><span class="src-var">$size </span>= <span class="src-id">false</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a219"></a> <span class="src-var">$c </span>= <span class="src-key">clone </span><span class="src-var">$this</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a220"></a> </div></li>
<li><div class="src-line"><a name="a221"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_int">is_int</a><span class="src-sym">(</span><span class="src-var">$start</span><span class="src-sym">))</span></div></li>
<li><div class="src-line"><a name="a222"></a> <span class="src-var">$c</span><span class="src-sym">-></span><span class="src-id">setWindowStart</span><span class="src-sym">(</span><span class="src-var">$start</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a223"></a> </div></li>
<li><div class="src-line"><a name="a224"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_int">is_int</a><span class="src-sym">(</span><span class="src-var">$size</span><span class="src-sym">))</span></div></li>
<li><div class="src-line"><a name="a225"></a> <span class="src-var">$c</span><span class="src-sym">-></span><span class="src-id">setWindowSize</span><span class="src-sym">(</span><span class="src-var">$size</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a226"></a> </div></li>
<li><div class="src-line"><a name="a227"></a> <span class="src-key">return </span><span class="src-var">$c</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a228"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a229"></a> </div></li>
<li><div class="src-line"><a name="a230"></a> </div></li>
<li><div class="src-line"><a name="a231"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a232"></a><span class="src-doc"> * Validate an offset against the current window.</span></div></li>
<li><div class="src-line"><a name="a233"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a234"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset to be validated. If the offset is negative</span></div></li>
<li><div class="src-line"><a name="a235"></a><span class="src-doc"> * or if it is greater than or equal to the current window size,</span></div></li>
<li><div class="src-line"><a name="a236"></a><span class="src-doc"> * then a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span><span class="src-doc"> is thrown.</span></div></li>
<li><div class="src-line"><a name="a237"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a238"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">void </span><span class="src-doc">if the offset is valid nothing is returned, if it is</span></div></li>
<li><div class="src-line"><a name="a239"></a><span class="src-doc"> * invalid a new </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span><span class="src-doc"> is thrown.</span></div></li>
<li><div class="src-line"><a name="a240"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a241"></a> <span class="src-key">private </span><span class="src-key">function </span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a242"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$o </span>< <span class="src-num">0 </span>|| <span class="src-var">$o </span>>= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a243"></a> throw <span class="src-key">new </span><span class="src-id"><a href="../PEL/Exception/PelDataWindowOffsetException.html">PelDataWindowOffsetException</a></span><span class="src-sym">(</span><span class="src-str">'Offset %d not within [%d, %d]'</span><span class="src-sym">,</span></div></li>
<li><div class="src-line"><a name="a244"></a> <span class="src-var">$o</span><span class="src-sym">, </span><span class="src-num">0</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span>-<span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a245"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a246"></a> </div></li>
<li><div class="src-line"><a name="a247"></a> </div></li>
<li><div class="src-line"><a name="a248"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a249"></a><span class="src-doc"> * Return some or all bytes visible in the window.</span></div></li>
<li><div class="src-line"><a name="a250"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a251"></a><span class="src-doc"> * This method works just like the standard </span><span class="src-doc-inlinetag">{@link substr()}</span></div></li>
<li><div class="src-line"><a name="a252"></a><span class="src-doc"> * function in PHP with the exception that it works within the</span></div></li>
<li><div class="src-line"><a name="a253"></a><span class="src-doc"> * window of accessible bytes and does strict range checking.</span></div></li>
<li><div class="src-line"><a name="a254"></a><span class="src-doc"> * </span></div></li>
<li><div class="src-line"><a name="a255"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset to the first byte returned. If a negative</span></div></li>
<li><div class="src-line"><a name="a256"></a><span class="src-doc"> * number is given, then the counting will be from the end of the</span></div></li>
<li><div class="src-line"><a name="a257"></a><span class="src-doc"> * window. Invalid offsets will result in a </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a258"></a><span class="src-doc"> * PelDataWindowOffsetException} being thrown.</span></div></li>
<li><div class="src-line"><a name="a259"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a260"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the size of the sub-window. If a negative number is</span></div></li>
<li><div class="src-line"><a name="a261"></a><span class="src-doc"> * given, then that many bytes will be omitted from the result.</span></div></li>
<li><div class="src-line"><a name="a262"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a263"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">a subset of the bytes in the window. This will</span></div></li>
<li><div class="src-line"><a name="a264"></a><span class="src-doc"> * always return no more than </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc"> bytes.</span></div></li>
<li><div class="src-line"><a name="a265"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a266"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetBytes">getBytes</a><span class="src-sym">(</span><span class="src-var">$start </span>= <span class="src-id">false</span><span class="src-sym">, </span><span class="src-var">$size </span>= <span class="src-id">false</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a267"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_int">is_int</a><span class="src-sym">(</span><span class="src-var">$start</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a268"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$start </span>< <span class="src-num">0</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a269"></a> <span class="src-var">$start </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a270"></a> </div></li>
<li><div class="src-line"><a name="a271"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$start</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a272"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a273"></a> <span class="src-var">$start </span>= <span class="src-num">0</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a274"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a275"></a> </div></li>
<li><div class="src-line"><a name="a276"></a> <span class="src-key">if </span><span class="src-sym">(</span><a href="http://www.php.net/is_int">is_int</a><span class="src-sym">(</span><span class="src-var">$size</span><span class="src-sym">)) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a277"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$size </span><= <span class="src-num">0</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a278"></a> <span class="src-var">$size </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size </span>- <span class="src-var">$start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a279"></a> </div></li>
<li><div class="src-line"><a name="a280"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$start</span>+<span class="src-var">$size</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a281"></a> <span class="src-sym">} </span><span class="src-key">else </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a282"></a> <span class="src-var">$size </span>= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">size </span>- <span class="src-var">$start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a283"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a284"></a> </div></li>
<li><div class="src-line"><a name="a285"></a> <span class="src-key">return </span><a href="http://www.php.net/substr">substr</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start </span>+ <span class="src-var">$start</span><span class="src-sym">, </span><span class="src-var">$size</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a286"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a287"></a> </div></li>
<li><div class="src-line"><a name="a288"></a> </div></li>
<li><div class="src-line"><a name="a289"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a290"></a><span class="src-doc"> * Return an unsigned byte from the data.</span></div></li>
<li><div class="src-line"><a name="a291"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a292"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a293"></a><span class="src-doc"> * return the first byte in the current allowed window. The last</span></div></li>
<li><div class="src-line"><a name="a294"></a><span class="src-doc"> * valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-1. Invalid offsets</span></div></li>
<li><div class="src-line"><a name="a295"></a><span class="src-doc"> * will result in a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span><span class="src-doc"> being</span></div></li>
<li><div class="src-line"><a name="a296"></a><span class="src-doc"> * thrown.</span></div></li>
<li><div class="src-line"><a name="a297"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a298"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">int </span><span class="src-doc"> the unsigned byte found at offset.</span></div></li>
<li><div class="src-line"><a name="a299"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a300"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetByte">getByte</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a301"></a> <span class="src-comm">/* Validate the offset --- this throws an exception if offset is</span></div></li>
<li><div class="src-line"><a name="a302"></a><span class="src-comm"> * out of range. */</span></div></li>
<li><div class="src-line"><a name="a303"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a304"></a> </div></li>
<li><div class="src-line"><a name="a305"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a306"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a307"></a> </div></li>
<li><div class="src-line"><a name="a308"></a> <span class="src-comm">/* Return an unsigned byte. */</span></div></li>
<li><div class="src-line"><a name="a309"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/PelConvert.html">PelConvert</a></span><span class="src-sym">::</span><a href="../PEL/PelConvert.html#methodbytesToByte">bytesToByte</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a310"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a311"></a> </div></li>
<li><div class="src-line"><a name="a312"></a> </div></li>
<li><div class="src-line"><a name="a313"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a314"></a><span class="src-doc"> * Return a signed byte from the data.</span></div></li>
<li><div class="src-line"><a name="a315"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a316"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a317"></a><span class="src-doc"> * return the first byte in the current allowed window. The last</span></div></li>
<li><div class="src-line"><a name="a318"></a><span class="src-doc"> * valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-1. Invalid offsets</span></div></li>
<li><div class="src-line"><a name="a319"></a><span class="src-doc"> * will result in a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span><span class="src-doc"> being</span></div></li>
<li><div class="src-line"><a name="a320"></a><span class="src-doc"> * thrown.</span></div></li>
<li><div class="src-line"><a name="a321"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a322"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">int </span><span class="src-doc"> the signed byte found at offset.</span></div></li>
<li><div class="src-line"><a name="a323"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a324"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetSByte">getSByte</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a325"></a> <span class="src-comm">/* Validate the offset --- this throws an exception if offset is</span></div></li>
<li><div class="src-line"><a name="a326"></a><span class="src-comm"> * out of range. */</span></div></li>
<li><div class="src-line"><a name="a327"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a328"></a> </div></li>
<li><div class="src-line"><a name="a329"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a330"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a331"></a> </div></li>
<li><div class="src-line"><a name="a332"></a> <span class="src-comm">/* Return a signed byte. */</span></div></li>
<li><div class="src-line"><a name="a333"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/PelConvert.html">PelConvert</a></span><span class="src-sym">::</span><a href="../PEL/PelConvert.html#methodbytesToSByte">bytesToSByte</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a334"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a335"></a> </div></li>
<li><div class="src-line"><a name="a336"></a> </div></li>
<li><div class="src-line"><a name="a337"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a338"></a><span class="src-doc"> * Return an unsigned short read from the data.</span></div></li>
<li><div class="src-line"><a name="a339"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a340"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a341"></a><span class="src-doc"> * return the first short available in the current allowed window.</span></div></li>
<li><div class="src-line"><a name="a342"></a><span class="src-doc"> * The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-2. Invalid</span></div></li>
<li><div class="src-line"><a name="a343"></a><span class="src-doc"> * offsets will result in a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span></div></li>
<li><div class="src-line"><a name="a344"></a><span class="src-doc"> * being thrown.</span></div></li>
<li><div class="src-line"><a name="a345"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a346"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">int </span><span class="src-doc"> the unsigned short found at offset.</span></div></li>
<li><div class="src-line"><a name="a347"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a348"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetShort">getShort</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a349"></a> <span class="src-comm">/* Validate the offset+1 to see if we can safely get two bytes ---</span></div></li>
<li><div class="src-line"><a name="a350"></a><span class="src-comm"> * this throws an exception if offset is out of range. */</span></div></li>
<li><div class="src-line"><a name="a351"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a352"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span>+<span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a353"></a> </div></li>
<li><div class="src-line"><a name="a354"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a355"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a356"></a> </div></li>
<li><div class="src-line"><a name="a357"></a> <span class="src-comm">/* Return an unsigned short. */</span></div></li>
<li><div class="src-line"><a name="a358"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/PelConvert.html">PelConvert</a></span><span class="src-sym">::</span><a href="../PEL/PelConvert.html#methodbytesToShort">bytesToShort</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$o</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a359"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a360"></a> </div></li>
<li><div class="src-line"><a name="a361"></a> </div></li>
<li><div class="src-line"><a name="a362"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a363"></a><span class="src-doc"> * Return a signed short read from the data.</span></div></li>
<li><div class="src-line"><a name="a364"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a365"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a366"></a><span class="src-doc"> * return the first short available in the current allowed window.</span></div></li>
<li><div class="src-line"><a name="a367"></a><span class="src-doc"> * The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-2. Invalid</span></div></li>
<li><div class="src-line"><a name="a368"></a><span class="src-doc"> * offsets will result in a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span></div></li>
<li><div class="src-line"><a name="a369"></a><span class="src-doc"> * being thrown.</span></div></li>
<li><div class="src-line"><a name="a370"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a371"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">int </span><span class="src-doc"> the signed short found at offset.</span></div></li>
<li><div class="src-line"><a name="a372"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a373"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetSShort">getSShort</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a374"></a> <span class="src-comm">/* Validate the offset+1 to see if we can safely get two bytes ---</span></div></li>
<li><div class="src-line"><a name="a375"></a><span class="src-comm"> * this throws an exception if offset is out of range. */</span></div></li>
<li><div class="src-line"><a name="a376"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a377"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span>+<span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a378"></a> </div></li>
<li><div class="src-line"><a name="a379"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a380"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a381"></a> </div></li>
<li><div class="src-line"><a name="a382"></a> <span class="src-comm">/* Return a signed short. */</span></div></li>
<li><div class="src-line"><a name="a383"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/PelConvert.html">PelConvert</a></span><span class="src-sym">::</span><a href="../PEL/PelConvert.html#methodbytesToSShort">bytesToSShort</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$o</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a384"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a385"></a> </div></li>
<li><div class="src-line"><a name="a386"></a> </div></li>
<li><div class="src-line"><a name="a387"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a388"></a><span class="src-doc"> * Return an unsigned long read from the data.</span></div></li>
<li><div class="src-line"><a name="a389"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a390"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a391"></a><span class="src-doc"> * return the first long available in the current allowed window.</span></div></li>
<li><div class="src-line"><a name="a392"></a><span class="src-doc"> * The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-4. Invalid</span></div></li>
<li><div class="src-line"><a name="a393"></a><span class="src-doc"> * offsets will result in a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span></div></li>
<li><div class="src-line"><a name="a394"></a><span class="src-doc"> * being thrown.</span></div></li>
<li><div class="src-line"><a name="a395"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a396"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">int </span><span class="src-doc"> the unsigned long found at offset.</span></div></li>
<li><div class="src-line"><a name="a397"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a398"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetLong">getLong</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a399"></a> <span class="src-comm">/* Validate the offset+3 to see if we can safely get four bytes</span></div></li>
<li><div class="src-line"><a name="a400"></a><span class="src-comm"> * --- this throws an exception if offset is out of range. */</span></div></li>
<li><div class="src-line"><a name="a401"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a402"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span>+<span class="src-num">3</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a403"></a> </div></li>
<li><div class="src-line"><a name="a404"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a405"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a406"></a> </div></li>
<li><div class="src-line"><a name="a407"></a> <span class="src-comm">/* Return an unsigned long. */</span></div></li>
<li><div class="src-line"><a name="a408"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/PelConvert.html">PelConvert</a></span><span class="src-sym">::</span><a href="../PEL/PelConvert.html#methodbytesToLong">bytesToLong</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$o</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a409"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a410"></a> </div></li>
<li><div class="src-line"><a name="a411"></a> </div></li>
<li><div class="src-line"><a name="a412"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a413"></a><span class="src-doc"> * Return a signed long read from the data.</span></div></li>
<li><div class="src-line"><a name="a414"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a415"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a416"></a><span class="src-doc"> * return the first long available in the current allowed window.</span></div></li>
<li><div class="src-line"><a name="a417"></a><span class="src-doc"> * The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-4. Invalid</span></div></li>
<li><div class="src-line"><a name="a418"></a><span class="src-doc"> * offsets will result in a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span></div></li>
<li><div class="src-line"><a name="a419"></a><span class="src-doc"> * being thrown.</span></div></li>
<li><div class="src-line"><a name="a420"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a421"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc"> </span><span class="src-doc-type">int </span><span class="src-doc"> the signed long found at offset.</span></div></li>
<li><div class="src-line"><a name="a422"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a423"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetSLong">getSLong</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a424"></a> <span class="src-comm">/* Validate the offset+3 to see if we can safely get four bytes</span></div></li>
<li><div class="src-line"><a name="a425"></a><span class="src-comm"> * --- this throws an exception if offset is out of range. */</span></div></li>
<li><div class="src-line"><a name="a426"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a427"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span>+<span class="src-num">3</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a428"></a> </div></li>
<li><div class="src-line"><a name="a429"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a430"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a431"></a> </div></li>
<li><div class="src-line"><a name="a432"></a> <span class="src-comm">/* Return a signed long. */</span></div></li>
<li><div class="src-line"><a name="a433"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/PelConvert.html">PelConvert</a></span><span class="src-sym">::</span><a href="../PEL/PelConvert.html#methodbytesToSLong">bytesToSLong</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">, </span><span class="src-var">$o</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">order</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a434"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a435"></a> </div></li>
<li><div class="src-line"><a name="a436"></a> </div></li>
<li><div class="src-line"><a name="a437"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a438"></a><span class="src-doc"> * Return an unsigned rational read from the data.</span></div></li>
<li><div class="src-line"><a name="a439"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a440"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a441"></a><span class="src-doc"> * return the first rational available in the current allowed</span></div></li>
<li><div class="src-line"><a name="a442"></a><span class="src-doc"> * window. The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-8.</span></div></li>
<li><div class="src-line"><a name="a443"></a><span class="src-doc"> * Invalid offsets will result in a </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a444"></a><span class="src-doc"> * PelDataWindowOffsetException} being thrown.</span></div></li>
<li><div class="src-line"><a name="a445"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a446"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">the unsigned rational found at offset. A rational</span></div></li>
<li><div class="src-line"><a name="a447"></a><span class="src-doc"> * number is represented as an array of two numbers: the enumerator</span></div></li>
<li><div class="src-line"><a name="a448"></a><span class="src-doc"> * and denominator. Both of these numbers will be unsigned longs.</span></div></li>
<li><div class="src-line"><a name="a449"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a450"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetRational">getRational</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a451"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../PEL/PelDataWindow.html#methodgetLong">getLong</a><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../PEL/PelDataWindow.html#methodgetLong">getLong</a><span class="src-sym">(</span><span class="src-var">$o</span>+<span class="src-num">4</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a452"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a453"></a> </div></li>
<li><div class="src-line"><a name="a454"></a> </div></li>
<li><div class="src-line"><a name="a455"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a456"></a><span class="src-doc"> * Return a signed rational read from the data.</span></div></li>
<li><div class="src-line"><a name="a457"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a458"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will</span></div></li>
<li><div class="src-line"><a name="a459"></a><span class="src-doc"> * return the first rational available in the current allowed</span></div></li>
<li><div class="src-line"><a name="a460"></a><span class="src-doc"> * window. The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span><span class="src-doc">-8.</span></div></li>
<li><div class="src-line"><a name="a461"></a><span class="src-doc"> * Invalid offsets will result in a </span><span class="src-doc-inlinetag">{@link }</span></div></li>
<li><div class="src-line"><a name="a462"></a><span class="src-doc"> * PelDataWindowOffsetException} being thrown.</span></div></li>
<li><div class="src-line"><a name="a463"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a464"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">array </span><span class="src-doc">the signed rational found at offset. A rational</span></div></li>
<li><div class="src-line"><a name="a465"></a><span class="src-doc"> * number is represented as an array of two numbers: the enumerator</span></div></li>
<li><div class="src-line"><a name="a466"></a><span class="src-doc"> * and denominator. Both of these numbers will be signed longs.</span></div></li>
<li><div class="src-line"><a name="a467"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a468"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodgetSRational">getSRational</a><span class="src-sym">(</span><span class="src-var">$o </span>= <span class="src-num">0</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a469"></a> <span class="src-key">return </span><span class="src-key">array</span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../PEL/PelDataWindow.html#methodgetSLong">getSLong</a><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><a href="../PEL/PelDataWindow.html#methodgetSLong">getSLong</a><span class="src-sym">(</span><span class="src-var">$o</span>+<span class="src-num">4</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a470"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a471"></a> </div></li>
<li><div class="src-line"><a name="a472"></a> </div></li>
<li><div class="src-line"><a name="a473"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a474"></a><span class="src-doc"> * String comparison on substrings.</span></div></li>
<li><div class="src-line"><a name="a475"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a476"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">int </span><span class="src-doc">the offset into the data. An offset of zero will make</span></div></li>
<li><div class="src-line"><a name="a477"></a><span class="src-doc"> * the comparison start with the very first byte available in the</span></div></li>
<li><div class="src-line"><a name="a478"></a><span class="src-doc"> * window. The last valid offset is equal to </span><span class="src-doc-inlinetag">{@link getSize()}</span></div></li>
<li><div class="src-line"><a name="a479"></a><span class="src-doc"> * minus the length of the string. If the string is too long, then</span></div></li>
<li><div class="src-line"><a name="a480"></a><span class="src-doc"> * a </span><span class="src-doc-inlinetag">{@link PelDataWindowOffsetException}</span><span class="src-doc"> will be thrown.</span></div></li>
<li><div class="src-line"><a name="a481"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a482"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@param </span><span class="src-doc-type">string </span><span class="src-doc">the string to compare with.</span></div></li>
<li><div class="src-line"><a name="a483"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a484"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">boolean </span><span class="src-doc">true if the string given matches the data in the</span></div></li>
<li><div class="src-line"><a name="a485"></a><span class="src-doc"> * window, at the specified offset, false otherwise. The comparison</span></div></li>
<li><div class="src-line"><a name="a486"></a><span class="src-doc"> * will stop as soon as a mismatch if found.</span></div></li>
<li><div class="src-line"><a name="a487"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a488"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#methodstrcmp">strcmp</a><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">, </span><span class="src-var">$str</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a489"></a> <span class="src-comm">/* Validate the offset of the final character we might have to</span></div></li>
<li><div class="src-line"><a name="a490"></a><span class="src-comm"> * check. */</span></div></li>
<li><div class="src-line"><a name="a491"></a> <span class="src-var">$s </span>= <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$str</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a492"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a493"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">validateOffset</span><span class="src-sym">(</span><span class="src-var">$o </span>+ <span class="src-var">$s </span>- <span class="src-num">1</span><span class="src-sym">)</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a494"></a> </div></li>
<li><div class="src-line"><a name="a495"></a> <span class="src-comm">/* Translate the offset into an offset into the data. */</span></div></li>
<li><div class="src-line"><a name="a496"></a> <span class="src-var">$o </span>+= <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">start</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a497"></a> </div></li>
<li><div class="src-line"><a name="a498"></a> <span class="src-comm">/* Check each character, return as soon as the answer is known. */</span></div></li>
<li><div class="src-line"><a name="a499"></a> <span class="src-key">for </span><span class="src-sym">(</span><span class="src-var">$i </span>= <span class="src-num">0</span><span class="src-sym">; </span><span class="src-var">$i </span>< <span class="src-var">$s</span><span class="src-sym">; </span><span class="src-var">$i</span>++<span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a500"></a> <span class="src-key">if </span><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-var">data</span><span class="src-sym">{</span><span class="src-var">$o </span>+ <span class="src-var">$i</span><span class="src-sym">} </span>!= <span class="src-var">$str</span><span class="src-sym">{</span><span class="src-var">$i</span><span class="src-sym">}</span><span class="src-sym">)</span></div></li>
<li><div class="src-line"><a name="a501"></a> <span class="src-key">return </span><span class="src-id">false</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a502"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a503"></a> </div></li>
<li><div class="src-line"><a name="a504"></a> <span class="src-comm">/* All characters matches each other, return true. */</span></div></li>
<li><div class="src-line"><a name="a505"></a> <span class="src-key">return </span><span class="src-id">true</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a506"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a507"></a> </div></li>
<li><div class="src-line"><a name="a508"></a> </div></li>
<li><div class="src-line"><a name="a509"></a> <span class="src-doc">/**</span></div></li>
<li><div class="src-line"><a name="a510"></a><span class="src-doc"> * Return a string representation of the data window.</span></div></li>
<li><div class="src-line"><a name="a511"></a><span class="src-doc"> *</span></div></li>
<li><div class="src-line"><a name="a512"></a><span class="src-doc"> * </span><span class="src-doc-coretag">@return </span><span class="src-doc-type">string </span><span class="src-doc">a description of the window with information about</span></div></li>
<li><div class="src-line"><a name="a513"></a><span class="src-doc"> * the number of bytes accessible, the total number of bytes, and</span></div></li>
<li><div class="src-line"><a name="a514"></a><span class="src-doc"> * the window start and stop.</span></div></li>
<li><div class="src-line"><a name="a515"></a><span class="src-doc"> */</span></div></li>
<li><div class="src-line"><a name="a516"></a> <span class="src-key">function </span><a href="../PEL/PelDataWindow.html#method__toString">__toString</a><span class="src-sym">(</span><span class="src-sym">) </span><span class="src-sym">{</span></div></li>
<li><div class="src-line"><a name="a517"></a> <span class="src-key">return </span><span class="src-id"><a href="../PEL/Pel.html">Pel</a></span><span class="src-sym">::</span><a href="../PEL/Pel.html#methodfmt">fmt</a><span class="src-sym">(</span><span class="src-str">'DataWindow: %d bytes in [%d, %d] of %d bytes'</span><span class="src-sym">,</span></div></li>
<li><div class="src-line"><a name="a518"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">size</span><span class="src-sym">,</span></div></li>
<li><div class="src-line"><a name="a519"></a> <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">start</span><span class="src-sym">, </span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">start </span>+ <span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">size</span><span class="src-sym">,</span></div></li>
<li><div class="src-line"><a name="a520"></a> <a href="http://www.php.net/strlen">strlen</a><span class="src-sym">(</span><span class="src-var">$this</span><span class="src-sym">-></span><span class="src-id">data</span><span class="src-sym">))</span><span class="src-sym">;</span></div></li>
<li><div class="src-line"><a name="a521"></a> <span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a522"></a> </div></li>
<li><div class="src-line"><a name="a523"></a><span class="src-sym">}</span></div></li>
<li><div class="src-line"><a name="a524"></a> </div></li>
<li><div class="src-line"><a name="a525"></a><span class="src-php">?></span></div></li>
</ol></div>
</div>
<p class="notes" id="credit">
Documentation generated on Tue, 19 Dec 2006 01:08:17 +0100 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.0</a>
<a target="_top" href="http://sourceforge.net/"><img src="http://sourceforge.net/sflogo.php?group_id=108380&type=1" width="88" height="31" border="0" align="right" alt="SourceForge.net Logo" /></a>
</p>
</body>
</html>