00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef MIMOTERAWRITER_HH
00026 #define MIMOTERAWRITER_HH
00027
00028
00029 # include "mimotera++/MimoteraEvent.hh"
00030
00031 # ifdef __cplusplus
00032
00033 # include <iostream>
00034 # include <fstream>
00035
00036 namespace Mimotera {
00037
00041 enum WritingMode_t {
00049 NEW = 0,
00050
00053 RECREATE = 1,
00054
00057 APPEND = 2
00058 };
00059
00060
00061
00082 class MimoteraWriter {
00083
00084 public:
00085
00097 MimoteraWriter( const char * filename, WritingMode_t mode = RECREATE );
00098
00101 ~MimoteraWriter();
00102
00109 off_t writeEvent( MimoteraEvent * event ) ;
00110
00113 void close() { if ( _mimoteraFile ) _mimoteraFile->close(); }
00114
00115 private:
00116
00119 std::ofstream * _mimoteraFile;
00120
00123 size_t _iEvt;
00124
00127 std::streampos _currentPosition;
00128
00131 std::streampos _previousPosition;
00132
00135 unsigned short _tempHeader[ kMimoteraInfoSize ] ;
00136
00139 unsigned short _tempTrash[ kTrashSize ] ;
00140
00143 bool _hasValidFile;
00144
00145 };
00146
00169 }
00170
00171 # else
00172
00173 # include <stdio.h>
00174 # include <sys/types.h>
00175
00176
00177 typedef struct MimoteraWriter { } MimoteraWriter;
00178
00179
00180 typedef enum WritingMode_t {
00181 NEW = 0,
00182 RECREATE = 1,
00183 APPEND = 2
00184 } WritingMode_t ;
00185
00186 # endif
00187
00188 # ifdef __cplusplus
00189 extern "C" {
00190 namespace Mimotera {
00191 # endif
00192
00202 extern MimoteraWriter * MimoteraWriter_create( const char * filename, WritingMode_t mode );
00203
00211 extern MimoteraWriter * MimoteraWriter_create_cpp( const char * filename, WritingMode_t mode );
00212
00224 extern void MimoteraWriter_dispose( MimoteraWriter * writer );
00225
00231 extern void MimoteraWriter_dispose_cpp( MimoteraWriter * writer );
00232
00241 extern off_t MimoteraWriter_writeEvent( MimoteraWriter * writer, MimoteraEvent * event );
00242
00249 extern off_t MimoteraWriter_writeEvent_cpp( MimoteraWriter * writer, MimoteraEvent * event );
00250
00257 extern void MimoteraWriter_close( MimoteraWriter * writer );
00258
00264 extern void MimoteraWriter_close_cpp( MimoteraWriter * writer );
00265
00266 # ifdef __cplusplus
00267 }
00268 }
00269 # endif
00270
00271 #endif
00272
00273