Added new interfaces for file i/o classes.
[core.git] / inc / classes / main / iterator / io / class_FileIoIterator.php
1 <?php
2 /**
3  * A file i/o iterator
4  *
5  * @author              Roland Haeder <webmaster@ship-simu.org>
6  * @version             0.0.0
7  * @copyright   Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Hub Developer Team
8  * @license             GNU GPL 3.0 or any newer version
9  * @link                http://www.ship-simu.org
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
23  */
24 class FileIoIterator extends BaseIterator implements SeekableWritableFileIterator {
25         /**
26          * Current absolute seek position (returned by key())
27          */
28         private $seekPosition = FALSE;
29
30         /**
31          * Total entries (read from file)
32          */
33         private $totalEntriesFile = FALSE;
34
35         /**
36          * Protected constructor
37          *
38          * @return      void
39          */
40         protected function __construct () {
41                 // Call parent constructor
42                 parent::__construct(__CLASS__);
43         }
44
45         /**
46          * Creates an instance of this class
47          *
48          * @param       $pointerInstance        An instance of a InputOutputPointer class
49          * @return      $iteratorInstance       An instance of a Iterator class
50          */
51         public final static function createFileIoIterator (InputOutputPointer $pointerInstance) {
52                 // Get new instance
53                 $iteratorInstance = new FileIoIterator();
54
55                 // Set the instance here
56                 $iteratorInstance->setPointerInstance($pointerInstance);
57
58                 // Return the prepared instance
59                 return $iteratorInstance;
60         }
61
62         /**
63          * Gets currently read data
64          *
65          * @return      $current        Currently read data
66          */
67         public function current () {
68                 // Default is null
69                 $current = null;
70
71                 $this->partialStub('Please implement this method.');
72
73                 // Return it
74                 return $current;
75         }
76
77         /**
78          * Gets current seek position ("key").
79          *
80          * @return      $key    Current key in iteration
81          */
82         public function key () {
83                 // Default is null
84                 $key = null;
85
86                 $this->partialStub('Please implement this method.');
87
88                 // Return it
89                 return $key;
90         }
91
92         /**
93          * Advances to next "block" of bytes
94          *
95          * @return      void
96          */
97         public function next () {
98                 $this->partialStub('Please implement this method.');
99         }
100
101         /**
102          * Rewinds to the beginning of the file
103          *
104          * @return      void
105          */
106         public function rewind () {
107                 $this->partialStub('Please implement this method.');
108         }
109
110         /**
111          * Seeks to given position
112          *
113          * @param       $seekPosition   Seek position in file
114          * @return      void
115          */
116         public function seek ($seedPosition) {
117                 $this->partialStub('Please implement this method. seekPosition=' . $seekPosition);
118         }
119
120         /**
121          * Size of file stack
122          *
123          * @return      $size   Size (in bytes) of file
124          */
125         public function size () {
126                 // Call the pointer object
127                 $size = $this->getPointerInstance()->size();
128
129                 // Return result
130                 return $size;
131         }
132
133         /**
134          * Checks wether the current entry is valid (not at the end of the file).
135          * This method will return TRUE if an emptied (nulled) entry has been found.
136          *
137          * @return      void
138          */
139         public function valid () {
140                 $this->partialStub('Please implement this method.');
141         }
142 }
143
144 // [EOF]
145 ?>