Qualia  0.2
DiskXFile.h
Go to the documentation of this file.
1 // Copyright (C) 2003--2004 Ronan Collobert (collober@idiap.ch)
2 //
3 // This file is part of Torch 3.1.
4 //
5 // All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions
9 // are met:
10 // 1. Redistributions of source code must retain the above copyright
11 // notice, this list of conditions and the following disclaimer.
12 // 2. Redistributions in binary form must reproduce the above copyright
13 // notice, this list of conditions and the following disclaimer in the
14 // documentation and/or other materials provided with the distribution.
15 // 3. The name of the author may not be used to endorse or promote products
16 // derived from this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 
29 #ifndef DISK_X_FILE_INC
30 #define DISK_X_FILE_INC
31 
32 #include <qualia/core/common.h>
33 #include <qualia/core/XFile.h>
34 
35 #include <stdio.h>
36 
41 class DiskXFile : public XFile
42 {
43  private:
44  static bool is_native_mode;
45  char *buffer_block;
47  void reverseMemory(void *ptr_, int block_size, int n_blocks);
48 
49  public:
50  FILE *file;
51  bool is_opened;
52  bool its_a_pipe;
53 
55  DiskXFile(const char *file_name, const char *open_flags);
56 
58  DiskXFile(FILE *file_);
59 
60  //-----
61 
63  static bool isLittleEndianProcessor();
64 
66  static bool isBigEndianProcessor();
67 
69  static bool isNativeMode();
70 
75  static void setNativeMode();
76 
81  static void setLittleEndianMode();
82 
87  static void setBigEndianMode();
88 
89  //-----
90 
91  // XFile interface.
92  virtual int read(void *ptr, int block_size, int n_blocks);
93  virtual int write(const void *ptr, int block_size, int n_blocks);
94  virtual int eof();
95  virtual int flush();
96  virtual int seek(long offset, int whence);
97  virtual long tell();
98  virtual void rewind();
99  virtual int printf(const char *format, ...);
100 
101  // DiskXFile interface.
102  virtual int scanf(const char *format, void *ptr) ;
103  virtual char *gets(char *dest, int size_);
104 
105  //-----
106 
107  virtual ~DiskXFile();
108 };
109 
110 #endif