NEURON
nrnfilewrap.h
Go to the documentation of this file.
1 #ifndef nrnfilewrap_h
2 #define nrnfilewrap_h
3 
4 
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <nrnmpiuse.h>
8 
9 #if !defined(USE_NRNFILEWRAP)
10 #define USE_NRNFILEWRAP 0
11 #endif
12 
13 
14 #include "hocstr.h"
15 
16 #if USE_NRNFILEWRAP
17 
18 typedef struct NrnFILEWrap {
19  FILE* f;
20  unsigned char* buf;
21  size_t ip, cnt;
22 } NrnFILEWrap;
23 
24 extern char* fgets_unlimited(HocStr* s, NrnFILEWrap* f);
25 extern NrnFILEWrap* nrn_fw_wrap(FILE* f);
26 extern void nrn_fw_delete(NrnFILEWrap* fw);
27 #define nrn_fw_eq(fw,ff) (fw->f == ff)
28 extern int nrn_fw_fclose(NrnFILEWrap* fw);
30 extern NrnFILEWrap* nrn_fw_fopen(const char* path, const char* mode);
31 extern int nrn_fw_fseek(NrnFILEWrap* fw, long offset, int whence);
32 extern int nrn_fw_getc(NrnFILEWrap* fw);
33 extern int nrn_fw_ungetc(int c, NrnFILEWrap* fw);
34 extern int nrn_fw_fscanf(NrnFILEWrap* fw, const char* format, ...);
35 extern int nrn_fw_readaccess(const char* path);
36 
37 #else /* not USE_NRNFILEWRAP */
38 
39 #define NrnFILEWrap FILE
40 extern char* fgets_unlimited(HocStr* s, NrnFILEWrap* f);
41 #define nrn_fw_wrap(f) f
42 #define nrn_fw_delete(fw) /**/
43 #define nrn_fw_eq(fw,ff) (fw == ff)
44 #define nrn_fw_fclose fclose
45 #define nrn_fw_set_stdin() stdin
46 #define nrn_fw_fopen fopen
47 #define nrn_fw_fseek fseek
48 #define nrn_fw_getc(fw) getc(fw)
49 #define nrn_fw_ungetc(c,fw) ungetc(c,fw)
50 #define nrn_fw_fscanf fscanf
51 
52 #endif
53 
54 extern NrnFILEWrap* hoc_fin;
55 
56 
57 #endif
#define nrn_fw_set_stdin()
Definition: nrnfilewrap.h:45
#define nrn_fw_getc(fw)
Definition: nrnfilewrap.h:48
#define nrn_fw_wrap(f)
Definition: nrnfilewrap.h:41
#define nrn_fw_delete(fw)
Definition: nrnfilewrap.h:42
Definition: hocstr.h:8
_CONST char * s
Definition: system.cpp:74
#define nrn_fw_fopen
Definition: nrnfilewrap.h:46
#define nrn_fw_fscanf
Definition: nrnfilewrap.h:50
#define cnt
Definition: spt2queue.cpp:19
#define nrn_fw_fseek
Definition: nrnfilewrap.h:47
static char * format
Definition: matrixio.c:386
char * fgets_unlimited(HocStr *s, NrnFILEWrap *f)
Definition: hoc.cpp:944
#define nrn_fw_fclose
Definition: nrnfilewrap.h:44
#define c
char buf[512]
Definition: init.cpp:13
NrnFILEWrap * hoc_fin
#define nrn_fw_ungetc(c, fw)
Definition: nrnfilewrap.h:49
#define NrnFILEWrap
Definition: nrnfilewrap.h:39