1<?php 2 3/** 4 * Hoa 5 * 6 * 7 * @license 8 * 9 * New BSD License 10 * 11 * Copyright © 2007-2017, Hoa community. All rights reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions are met: 15 * * Redistributions of source code must retain the above copyright 16 * notice, this list of conditions and the following disclaimer. 17 * * Redistributions in binary form must reproduce the above copyright 18 * notice, this list of conditions and the following disclaimer in the 19 * documentation and/or other materials provided with the distribution. 20 * * Neither the name of the Hoa nor the names of its contributors may be 21 * used to endorse or promote products derived from this software without 22 * specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE 28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37namespace Hoa\Stream\IStream; 38 39/** 40 * Interface \Hoa\Stream\IStream\In. 41 * 42 * Interface for input. 43 * 44 * @copyright Copyright © 2007-2017 Hoa community 45 * @license New BSD License 46 */ 47interface In extends Stream 48{ 49 /** 50 * Test for end-of-stream. 51 * 52 * @return bool 53 */ 54 public function eof(); 55 56 /** 57 * Read n characters. 58 * 59 * @param int $length Length. 60 * @return string 61 */ 62 public function read($length); 63 64 /** 65 * Alias of $this->read(). 66 * 67 * @param int $length Length. 68 * @return string 69 */ 70 public function readString($length); 71 72 /** 73 * Read a character. 74 * It could be equivalent to $this->read(1). 75 * 76 * @return string 77 */ 78 public function readCharacter(); 79 80 /** 81 * Read a boolean. 82 * 83 * @return bool 84 */ 85 public function readBoolean(); 86 87 /** 88 * Read an integer. 89 * 90 * @param int $length Length. 91 * @return int 92 */ 93 public function readInteger($length = 1); 94 95 /** 96 * Read a float. 97 * 98 * @param int $length Length. 99 * @return float 100 */ 101 public function readFloat($length = 1); 102 103 /** 104 * Read an array. 105 * In most cases, it could be an alias to the $this->scanf() method. 106 * 107 * @param mixed $argument Argument (because the behavior is very 108 * different according to the implementation). 109 * @return array 110 */ 111 public function readArray($argument = null); 112 113 /** 114 * Read a line. 115 * 116 * @return string 117 */ 118 public function readLine(); 119 120 /** 121 * Read all, i.e. read as much as possible. 122 * 123 * @param int $offset Offset. 124 * @return string 125 */ 126 public function readAll($offset = 0); 127 128 /** 129 * Parse input from a stream according to a format. 130 * 131 * @param string $format Format (see printf's formats). 132 * @return array 133 */ 134 public function scanf($format); 135} 136