miller/c/input/lrec_reader.h
2016-01-31 23:40:52 -05:00

27 lines
1.1 KiB
C

#ifndef LREC_READER_H
#define LREC_READER_H
#include <stdio.h>
#include "lib/context.h"
#include "containers/lrec.h"
#include "input/file_reader_mmap.h"
struct _lrec_reader_t; // forward reference for method declarations
// The void* pvhandle is either FILE* for stdio readers or file_reader_mmap_state_t* for mmap readers.
typedef void* lrec_reader_open_func_t(void* pvstate, char* prepipe, char* filename);
typedef void lrec_reader_close_func_t(void* pvstate, void* pvhandle, char* prepipe);
typedef lrec_t* lrec_reader_process_func_t(void* pvstate, void* pvhandle, context_t* pctx);
typedef void lrec_reader_sof_func_t(void* pvstate, void* pvhandle);
typedef void lrec_reader_free_func_t(struct _lrec_reader_t* preader);
typedef struct _lrec_reader_t {
void* pvstate;
lrec_reader_open_func_t* popen_func;
lrec_reader_close_func_t* pclose_func;
lrec_reader_process_func_t* pprocess_func;
lrec_reader_sof_func_t* psof_func;
lrec_reader_free_func_t* pfree_func; // virtual destructor
} lrec_reader_t;
#endif // LREC_READER_H