Remove dynamic exceptions
[anna.git] / include / anna / io / BinaryReader.hpp
1 // ANNA - Anna is Not Nothingness Anymore                                                         //
2 //                                                                                                //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo                         //
4 //                                                                                                //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite                           //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
7
8
9 #ifndef anna_io_BinaryReader_hpp
10 #define anna_io_BinaryReader_hpp
11
12 #include <anna/core/DataBlock.hpp>
13 #include <anna/io/AbstractReader.hpp>
14
15 namespace anna {
16
17 namespace io {
18
19 /**
20    Lector de ficheros de texto.
21 */
22 class BinaryReader : public AbstractReader, public DataBlock {
23 public:
24   /**
25      Constructor.
26      \param blockSize Tamaño del bloque de lectura.
27      \warning Si utilizamos este constructor debemos invocar al método open antes
28      de usar cualquier otro método de la clase.
29   */
30   BinaryReader(const int blockSize);
31
32   /**
33      Constructor.
34      \param filename Ruta completa del fichero a leer.
35      \param blockSize Tamaño del bloque de lectura.
36   */
37   BinaryReader(const char* filename, const int blockSize);
38
39   /**
40      Constructor.
41      \param filename Ruta completa del fichero a leer.
42      \param blockSize Tamaño del bloque de lectura.
43   */
44   BinaryReader(const std::string& filename, const int blockSize);
45
46   /**
47      Destructor.
48   */
49   virtual ~BinaryReader();
50
51   /**
52      Devuelve el contenido de la línea actual o NULL si se ha llegado al fin del fichero.
53      \return El contenido de la línea actual o NULL si se ha llegado al fin del fichero.
54   */
55   const DataBlock* fetch() noexcept(false);
56
57 private:
58   const int a_blockSize;
59 };
60
61 }
62 }
63 #endif