NAPA Compiler V4.50
Author: Yves Leduc, yves.leduc.be@gmail.com
Loading...
Searching...
No Matches
C:/Simulate/Napados/Source/rm.c File Reference
#include "./napa.h"
#include "./proto.h"

Go to the source code of this file.

Macros

#define EXTERN   extern

Functions

void napa_IO_manager_function (void)
void napa_data_record_function (void)

Macro Definition Documentation

◆ EXTERN

#define EXTERN   extern

Definition at line 4 of file rm.c.

Function Documentation

◆ napa_data_record_function()

void napa_data_record_function ( void )

Definition at line 509 of file rm.c.

509 {
510 if (!Pointer_Flag) {
511 return;
512 }
513 (void) fprintf(STDOUT, "\n\n/* %s */\n\n", multiple('*', 124L));
514 (void) fprintf(STDOUT, "IO_COMMAND napa_record_manager");
515 (void) fprintf(STDOUT, "(IO_COMMAND command, DATA_RECORD *record, long length, long nrow, long ncol, const char *name) {\n");
516 (void) fprintf(STDOUT, " switch (command) {\n");
517 (void) fprintf(STDOUT, " case ALLOCATE:\n");
518 (void) fprintf(STDOUT, " (void) snprintf(record->name, (size_t) 127, \"%%s\", name);\n");
519 (void) fprintf(STDOUT, " record->length = length;\n");
520 (void) fprintf(STDOUT, " record->nrow = nrow;\n");
521 (void) fprintf(STDOUT, " record->ncol = ncol;\n");
522 (void) fprintf(STDOUT, " record->i_ptr = (I_TYPE**) calloc((size_t) length, sizeof (I_TYPE*));\n");
523 (void) fprintf(STDOUT, " record->d_ptr = (R_TYPE**) calloc((size_t) length, sizeof (R_TYPE*));\n");
524 (void) fprintf(STDOUT, " record->c_ptr = (C_TYPE**) calloc((size_t) length, sizeof (C_TYPE*));\n");
525 (void) fprintf(STDOUT, " if ( ((I_TYPE**) NULL == record->i_ptr) ||");
526 (void) fprintf(STDOUT, " ((R_TYPE**) NULL == record->d_ptr) || ((C_TYPE**) NULL == record->c_ptr) ) {\n");
527 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (array of pointers)\\n\");\n");
528 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" A dynamic memory allocation error occurred for <%%s[%%ld]>\\n\", name, length);\n");
529 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
530 (void) fprintf(STDOUT, " } %*s /* no break */\n", 91, " ");
531 /* no break*/
532 (void) fprintf(STDOUT, " case RESET:\n");
533 (void) fprintf(STDOUT, " if ( '\\0' != record->name[0] ) {\n");
534 (void) fprintf(STDOUT, " *record->i_ptr = (I_TYPE*) NULL;\n");
535 (void) fprintf(STDOUT, " *record->d_ptr = (R_TYPE*) NULL;\n");
536 (void) fprintf(STDOUT, " *record->c_ptr = (C_TYPE*) NULL;\n");
537 (void) fprintf(STDOUT, " }\n");
538 (void) fprintf(STDOUT, " break;\n");
539 (void) fprintf(STDOUT, " case FREE:\n");
540 (void) fprintf(STDOUT, " if ( '\\0' != record->name[0] ) {\n");
541 (void) fprintf(STDOUT, " record->name[0] = '\\0';\n");
542 (void) fprintf(STDOUT, " free(record->i_ptr); record->i_ptr = (I_TYPE**) NULL;\n");
543 (void) fprintf(STDOUT, " free(record->d_ptr); record->d_ptr = (R_TYPE**) NULL;\n");
544 (void) fprintf(STDOUT, " free(record->c_ptr); record->c_ptr = (C_TYPE**) NULL;\n");
545 (void) fprintf(STDOUT, " }\n");
546 (void) fprintf(STDOUT, " break;\n");
547 (void) fprintf(STDOUT, " default:\n");
548 (void) fprintf(STDOUT, " break;\n");
549 (void) fprintf(STDOUT, " }\n");
550 (void) fprintf(STDOUT, " return command;\n");
551 (void) fprintf(STDOUT, "}\n");
552 return;
553}
#define STDOUT
Definition napa.h:104
EXTERN int Pointer_Flag
Definition napa.h:875
char * multiple(char c, long n)
Definition tk.c:1801

References multiple(), Pointer_Flag, and STDOUT.

Referenced by main().

◆ napa_IO_manager_function()

void napa_IO_manager_function ( void )

Definition at line 58 of file rm.c.

58 {
59 int extension_flag; /* choose between full or streamlined IO managers */
60 extension_flag = ((UserTool_Flag) || (Post_Flag) || (Call_Flag) || (Load_Flag));
61 (void) fprintf(STDOUT, "\n\n");
62#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
63 if (extension_flag) {
64 (void) fprintf(STDOUT, "/* *** EXTENDED I/O RESOURCES MANAGER *** [Case Insensitive OS] %s */\n", multiple('*', 63L));
65 } else {
66 (void) fprintf(STDOUT, "/* *** STREAMLINED I/O RESOURCES MANAGER *** [Case Insensitive OS] %s */\n", multiple('*', 60L));
67 }
68#else
69 if (extension_flag) { /* simplify IO manager when it is possible */
70 (void) fprintf(STDOUT, "/* *** EXTENDED I/O RESOURCES MANAGER *** [Case Sensitive OS] %s */\n", multiple('*', 65L));
71 } else {
72 (void) fprintf(STDOUT, "/* *** STREAMLINED I/O RESOURCES MANAGER *** [Case Sensitive OS] %s */\n", multiple('*', 62L));
73 }
74#endif
75 (void) fprintf(STDOUT, "/* *** OPERATIONS: ");
76 if (extension_flag) {
77 (void) fprintf(STDOUT, " OPENREAD, REWIND, OPENWRITE, OPENAPPEND, REWRITE,");
78 (void) fprintf(STDOUT, " CLOSE, DELETE, QUERY, DEBUG, FREE %*s */\n\n", 20, " ");
79 } else {
80 (void) fprintf(STDOUT, " OPENREAD, OPENWRITE, CLOSE, FREE %*s */\n\n", 71, " ");
81 }
82 (void) fprintf(STDOUT, "IO_COMMAND napa_IO_manager(IO_COMMAND command, FILE **fp, const char *filename, const char *suffix, const char *tag) {\n");
83 (void) fprintf(STDOUT, " static long id = 0L;\n" );
84 (void) fprintf(STDOUT, " const size_t sz = 255;\n" );
85 (void) fprintf(STDOUT, " char user[256] = {'\\0'};\n");
86#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
87 (void) fprintf(STDOUT, " char nam1[256] = {'\\0'};\n");
88 (void) fprintf(STDOUT, " char nam2[256] = {'\\0'};\n");
89 (void) fprintf(STDOUT, " char nam3[256] = {'\\0'};\n");
90 if ((UserTool_Flag) || (Call_Flag) || (Load_Flag)) {
91 (void) fprintf(STDOUT, " char str[3] = \" \";\n" );
92 } else {
93 (void) fprintf(STDOUT, " char str[2] = \" \";\n" );
94 }
95#else
96 (void) fprintf(STDOUT, " char str[2] = \" \";\n" );
97#endif
98 (void) fprintf(STDOUT, " int iflag = false;\n" );
99 (void) fprintf(STDOUT, " int oflag = false;\n" );
100 (void) fprintf(STDOUT, " long index = 0L;\n" );
101 (void) fprintf(STDOUT, " long length = 0L;\n" );
102 (void) fprintf(STDOUT, " long i, j;\n" );
103 (void) fprintf(STDOUT, " if ( EOF == fflush((FILE*) NULL) ) {\n");
104 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
105 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Flushing data from buffers I/O was not successful\\n\" );\n" );
106 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
107 (void) fprintf(STDOUT, " }\n");
108
109 (void) fprintf(STDOUT, " if ( FREE != command ) {\n");
110 (void) fprintf(STDOUT, " length = (long) strlen(filename);\n");
111 (void) fprintf(STDOUT, " if ( 0L == length ) {\n");
112 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
113 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream name is missing\\n\");\n");
114 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
115 (void) fprintf(STDOUT, " }\n");
116 (void) fprintf(STDOUT, " length = MIN(1L + length + ((long) strlen(suffix)), (long) sz);\n");
117 (void) fprintf(STDOUT, " (void) snprintf(user, (size_t) length, \"%%s\", filename);\n");
118 (void) fprintf(STDOUT, " if ( (char*) NULL == strstr(user, \".\") ) {\n");
119 (void) fprintf(STDOUT, " if ( (0 != strncmp(\"stdin\", user, sz))");
120 (void) fprintf(STDOUT, " && (0 != strncmp(\"stdout\", user, sz))");
121 (void) fprintf(STDOUT, " && (0 != strncmp(\"stderr\", user, sz)) ) {\n");
122 (void) fprintf(STDOUT, " (void) strcat(user, suffix);\n");
123 (void) fprintf(STDOUT, " }\n");
124 (void) fprintf(STDOUT, " }\n");
125#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
126 (void) fprintf(STDOUT, " for (i = 0L; i < ((long) strlen(user)); i++) {\n");
127 (void) fprintf(STDOUT, " nam1[i] = (char) tolower((int) user[i]);\n");
128 (void) fprintf(STDOUT, " }\n");
129#endif
130 (void) fprintf(STDOUT, " index = -1L;\n");
131 (void) fprintf(STDOUT, " for (i = 0L; i < napa_IO_count; i++) {\n");
132#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
133 (void) fprintf(STDOUT, " for (j = 0L; j <= ((long) strlen(napa_IO_record[i].user)); j++) {\n");
134 (void) fprintf(STDOUT, " nam2[j] = (char) tolower((int) ((napa_IO_record[i].user)[j]));\n");
135 (void) fprintf(STDOUT, " }\n");
136 (void) fprintf(STDOUT, " if ( 0 == strncmp(nam1, nam2, sz) ) {\n");
137 (void) fprintf(STDOUT, " index = i;\n");
138 (void) fprintf(STDOUT, " if ( 0 != strncmp(napa_IO_record[index].user, user, sz) ) {\n");
139 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\\n\", tag);\n");
140 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Collision between I/O streams in a case-insensitive context:\");\n");
141 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" <%%s> and <%%s>\\n\\n\", user, napa_IO_record[index].user);\n" );
142 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
143 (void) fprintf(STDOUT, " }\n");
144 (void) fprintf(STDOUT, " break;\n");
145 (void) fprintf(STDOUT, " }\n");
146#else
147 (void) fprintf(STDOUT, " if ( 0 == strncmp(napa_IO_record[i].user, user, sz) ) {\n");
148 (void) fprintf(STDOUT, " index = i;\n");
149 (void) fprintf(STDOUT, " break;\n");
150 (void) fprintf(STDOUT, " }\n");
151#endif
152 (void) fprintf(STDOUT, " }\n");
153 (void) fprintf(STDOUT, " }\n");
154 (void) fprintf(STDOUT, " (void) snprintf(nam3, sz, \"%%s.out\", ORIGIN);\n");
155#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
156 (void) fprintf(STDOUT, " for (i = 0L; i < ((long) strlen(nam3)); i++) {\n");
157 (void) fprintf(STDOUT, " nam3[i] = (char) tolower((int) nam3[i]);\n");
158 (void) fprintf(STDOUT, " }\n");
159#endif
160 (void) fprintf(STDOUT, " if ( 0 == strncmp(nam1, nam3, sz) ) {\n");
161 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
162 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" <%%s>, the name of an I/O cannot be identical to a name possibly used as 'stdout'\\n\", user);\n");
163 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
164 (void) fprintf(STDOUT, " }\n");
165 (void) fprintf(STDOUT, " switch (command) {\n");
166
167 /* Begin of OPEN commands */
168 if (extension_flag) {
169 (void) fprintf(STDOUT, " case OPENWRITE_BINARY:\n");
170 (void) fprintf(STDOUT, " case OPENAPPEND_BINARY:\n");
171#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
172 (void) fprintf(STDOUT, " str[1] = 'b';\n"); /* no break! */
173#endif
174 }
175 (void) fprintf(STDOUT, " case OPENWRITE:\n");
176 if (extension_flag) {
177 (void) fprintf(STDOUT, " case OPENAPPEND:\n");
178 (void) fprintf(STDOUT, " case REWRITE:\n");
179 }
180 (void) fprintf(STDOUT, " if ( 0 == strncmp(\"stdin\", user, sz) ) {\n");
181 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
182 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The standard input stream <%%s> cannot be opened for write\\n\", user);\n" );
183 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
184 (void) fprintf(STDOUT, " }\n");
185 if (extension_flag) {
186 (void) fprintf(STDOUT, " str[0] = ( (OPENAPPEND == command) || (OPENAPPEND_BINARY == command) ) ? 'a' : 'w';\n");
187 } else {
188 (void) fprintf(STDOUT, " str[0] = 'w';\n");
189 }
190 if ((!Output_Flag) && (!Dump_Flag) && (!Assert_Flag)) {
191 (void) fprintf(STDOUT, " napa_output_flag = true;\n");
192 }
193 (void) fprintf(STDOUT, " oflag = true;\n");
194 (void) fprintf(STDOUT, " break;\n");
195 if (extension_flag) {
196 (void) fprintf(STDOUT, " case OPENREAD_BINARY:\n");
197#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
198 (void) fprintf(STDOUT, " str[1] = 'b';\n"); /* no break! */
199#endif
200 }
201 (void) fprintf(STDOUT, " case OPENREAD:\n");
202 (void) fprintf(STDOUT, " if ( (0 == strncmp(\"stdout\", user, sz)) || (0 == strncmp(\"stderr\", user, sz)) ) {\n");
203 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n" );
204 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The standard I/O stream <%%s> cannot be opened for read\\n\", user);\n");
205 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
206 (void) fprintf(STDOUT, " }\n");
207 (void) fprintf(STDOUT, " str[0] = 'r';\n");
208 (void) fprintf(STDOUT, " iflag = true;\n");
209 (void) fprintf(STDOUT, " break;\n");
210 /* OPEN commands processing will continue */
211
212 /* Begin of REWIND command */
213 if (extension_flag) {
214 (void) fprintf(STDOUT, " case REWIND:\n");
215 (void) fprintf(STDOUT, " if ( (0 == strncmp(\"stdin\", user, sz))");
216 (void) fprintf(STDOUT, " || (0 == strncmp(\"stdout\", user, sz))");
217 (void) fprintf(STDOUT, " || (0 == strncmp(\"stderr\", user, sz)) ) {\n");
218 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n" );
219 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Rewind of standard I/O stream <%%s> is not possible\\n\", user);\n");
220 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
221 (void) fprintf(STDOUT, " }\n");
222 (void) fprintf(STDOUT, " if ( -1L == index ) {\n");
223 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
224 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Rewind of I/O stream <%%s> is not possible");
225 (void) fprintf(STDOUT, " as it has not been registered\\n\", user);\n");
226 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
227 (void) fprintf(STDOUT, " }\n");
228 (void) fprintf(STDOUT, " if ( DELETE == napa_IO_record[index].mode ) {\n");
229 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
230 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Rewind of I/O stream <%%s> is not possible");
231 (void) fprintf(STDOUT, " as it has been deleted\\n\", user);\n");
232 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
233 (void) fprintf(STDOUT, " }\n");
234 (void) fprintf(STDOUT, " if ( ((FILE*) NULL) == napa_IO_record[index].f_ptr ) {\n");
235 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
236 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Rewind of I/O stream <%%s> is not possible");
237 (void) fprintf(STDOUT, " as it is not currently open\\n\", user);\n");
238 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
239 (void) fprintf(STDOUT, " }\n");
240 (void) fprintf(STDOUT, " rewind(napa_IO_record[index].f_ptr);\n");
241 (void) fprintf(STDOUT, "#if (defined(DEBUG_MODE_IO) || defined(ALL_DEBUG))\n");
242 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)\");\n", "Rewind I/O stream" );
243 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" %%18s for %%-18s <- %% .0Lf\\n\", user, tag, napa_abs_loop);\n");
244 (void) fprintf(STDOUT, "#endif\n");
245 (void) fprintf(STDOUT, " return napa_IO_record[index].mode;\n");
246 }
247 /* End of REWIND command */
248
249 /* Begin of CLOSE command */
250 (void) fprintf(STDOUT, " case CLOSE:\n");
251 (void) fprintf(STDOUT, " if ( -1L == index ) {\n");
252 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
253 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> cannot be closed");
254 (void) fprintf(STDOUT, " as it has not been registered\\n\", user);\n");
255 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
256 (void) fprintf(STDOUT, " }\n");
257 (void) fprintf(STDOUT, " if ( ((FILE*) NULL) == napa_IO_record[index].f_ptr ) {\n");
258 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
259 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> is already closed\\n\", user);\n");
260 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
261 (void) fprintf(STDOUT, " }\n");
262 if (extension_flag) {
263 (void) fprintf(STDOUT, " if ( DELETE == napa_IO_record[index].mode ) {\n");
264 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n" );
265 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> cannot be closed");
266 (void) fprintf(STDOUT, " as it has been deleted\\n\", user);\n");
267 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
268 (void) fprintf(STDOUT, " }\n");
269 }
270 (void) fprintf(STDOUT, " if ( (0 != strncmp(\"stdin\", user, sz))");
271 (void) fprintf(STDOUT, " && (0 != strncmp(\"stdout\", user, sz))");
272 (void) fprintf(STDOUT, " && (0 != strncmp(\"stderr\", user, sz)) ) {\n");
273 (void) fprintf(STDOUT, " if ( EOF == fclose(napa_IO_record[index].f_ptr) ) {\n");
274 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
275 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Unable to close I/O stream <%%s>\\n\", user);\n");
276 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
277 (void) fprintf(STDOUT, " }\n");
278 (void) fprintf(STDOUT, " }\n");
279 (void) fprintf(STDOUT, " napa_IO_record[index].f_ptr = (FILE*) NULL;\n");
280 (void) fprintf(STDOUT, " napa_IO_record[index].mode = command;\n");
281 (void) fprintf(STDOUT, "#if (defined(DEBUG_MODE_IO) || defined(ALL_DEBUG))\n");
282 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)\");\n", "Close I/O stream" );
283 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" %%18s for %%-18s <- %% .0Lf\\n\", user, tag, napa_abs_loop);\n");
284 (void) fprintf(STDOUT, "#endif\n");
285 (void) fprintf(STDOUT, " *fp = (FILE*) NULL;\n");
286 (void) fprintf(STDOUT, " return command;\n");
287 /* End of CLOSE command */
288
289 /* Begin of DELETE command */
290 if (extension_flag) {
291 (void) fprintf(STDOUT, " case DELETE:\n");
292 (void) fprintf(STDOUT, " if ( (0 == strncmp(\"stdin\", user, sz))");
293 (void) fprintf(STDOUT, " || (0 == strncmp(\"stdout\", user, sz))");
294 (void) fprintf(STDOUT, " || (0 == strncmp(\"stderr\", user, sz)) ) {\n");
295 (void) fprintf(STDOUT, " return UNKNOWN;\n"); /* trying to delete a standard IO is not an error */
296 (void) fprintf(STDOUT, " }\n");
297 (void) fprintf(STDOUT, " if ( -1L == index ) {\n");
298 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
299 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> cannot be deleted");
300 (void) fprintf(STDOUT, " as it has not been registered\\n\", user);\n");
301 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
302 (void) fprintf(STDOUT, " }\n");
303 (void) fprintf(STDOUT, " if ( !napa_IO_record[index].oflag ) {\n"); /* the file is not an output of the simulation */
304 (void) fprintf(STDOUT, "#if (defined(DEBUG_MODE_IO) || defined(ALL_DEBUG))\n");
305 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Debug Information: (%-18s)\");\n", "I/O stream");
306 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> is not deleted, ");
307 (void) fprintf(STDOUT, "as it was not produced during the simulation\\n\\n\", user);\n");
308 (void) fprintf(STDOUT, "#endif\n");
309 (void) fprintf(STDOUT, " return napa_IO_record[index].mode;\n"); /* return previous mode */
310 (void) fprintf(STDOUT, " }\n");
311 (void) fprintf(STDOUT, " if ( ((FILE*) NULL) != napa_IO_record[index].f_ptr ) {\n");
312 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
313 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> cannot be deleted");
314 (void) fprintf(STDOUT, " as it is not closed\\n\", user);\n");
315 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
316 (void) fprintf(STDOUT, " }\n");
317 (void) fprintf(STDOUT, " if ( DELETE == napa_IO_record[index].mode ) {\n");
318 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
319 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> has already been deleted\\n\", user);\n");
320 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
321 (void) fprintf(STDOUT, " }\n");
322 (void) fprintf(STDOUT, " if ( 0 != remove(napa_IO_record[index].user) ) {\n");
323 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
324 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The deletion of I/O stream <%%s> did not succeed\\n\", user);\n");
325 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
326 (void) fprintf(STDOUT, " }\n");
327 (void) fprintf(STDOUT, " napa_IO_record[index].iflag = false;\n");
328 (void) fprintf(STDOUT, " napa_IO_record[index].oflag = false;\n");
329 (void) fprintf(STDOUT, " napa_IO_record[index].mode = command;\n");
330 (void) fprintf(STDOUT, "#if (defined(DEBUG_MODE_IO) || defined(ALL_DEBUG))\n");
331 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)\");\n", "Delete I/O stream" );
332 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" %%18s for %%-18s <- %% .0Lf\\n\", user, tag, napa_abs_loop);\n");
333 (void) fprintf(STDOUT, "#endif\n");
334 (void) fprintf(STDOUT, " return command;\n");
335 /* End of DELETE command */
336
337 /* Begin of QUERY command */
338 (void) fprintf(STDOUT, " case QUERY:\n");
339 (void) fprintf(STDOUT, " return ( -1L == index ) ? UNKNOWN : napa_IO_record[index].mode;\n");
340 /* End of QUERY command */
341
342 /* Begin of DEBUG command */
343 (void) fprintf(STDOUT, " case DEBUG:\n");
344 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Debug Information: (%-18s)\");\n", "I/O stream");
345 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" %%18s for %%-18s <- %% .0Lf\\n\", user, tag, napa_abs_loop);\n");
346 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" This I/O stream\");\n");
347 (void) fprintf(STDOUT, " if ( -1L < index ) {\n");
348 (void) fprintf(STDOUT, " if ( (napa_IO_record[index].iflag) && (napa_IO_record[index].oflag) ) {\n");
349 (void) fprintf(STDOUT, " (void) fprintf(stderr, \", which was used as input and output,\");\n");
350 (void) fprintf(STDOUT, " } else {\n");
351 (void) fprintf(STDOUT, " if ( napa_IO_record[index].iflag ) {\n");
352 (void) fprintf(STDOUT, " (void) fprintf(stderr, \", which was used as input,\" );\n");
353 (void) fprintf(STDOUT, " }\n");
354 (void) fprintf(STDOUT, " if ( napa_IO_record[index].oflag ) {\n");
355 (void) fprintf(STDOUT, " (void) fprintf(stderr, \", which was used as output,\");\n");
356 (void) fprintf(STDOUT, " }\n");
357 (void) fprintf(STDOUT, " }\n");
358 (void) fprintf(STDOUT, " if ( DELETE == napa_IO_record[index].mode ) {\n");
359 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" has been deleted\\n\");\n");
360 (void) fprintf(STDOUT, " } else {\n");
361 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" is currently in mode <%%d>, \", napa_IO_record[index].mode);\n" );
362 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" i.e. '%%s'\\n\", IO_COMMAND_NAME(napa_IO_record[index].mode));\n");
363 (void) fprintf(STDOUT, " }\n");
364 (void) fprintf(STDOUT, " } else {\n");
365 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" has not been registered\\n\");\n");
366 (void) fprintf(STDOUT, " }\n");
367 (void) fprintf(STDOUT, " return command;\n");
368 }
369 /* End of DEBUG command */
370
371 /* Begin of FREE command */
372 (void) fprintf(STDOUT, " case FREE:\n");
373 (void) fprintf(STDOUT, " if ( 0L >= napa_IO_count ) {\n");
374 (void) fprintf(STDOUT, " return command;\n");
375 (void) fprintf(STDOUT, " }\n");
376 (void) fprintf(STDOUT, " j = 0L;\n");
377 (void) fprintf(STDOUT, " for (i = 0L; i < napa_IO_count; i++) {\n");
378 if (extension_flag) {
379 (void) fprintf(STDOUT, " if ( (UNKNOWN == napa_IO_record[i].mode) || (DELETE == napa_IO_record[i].mode) ) {\n");
380 (void) fprintf(STDOUT, " continue;\n");
381 (void) fprintf(STDOUT, " }\n");
382 } else {
383 (void) fprintf(STDOUT, " if ( UNKNOWN == napa_IO_record[i].mode ) {\n");
384 (void) fprintf(STDOUT, " continue;\n");
385 (void) fprintf(STDOUT, " }\n");
386 }
387 (void) fprintf(STDOUT, " if ( CLOSE == napa_IO_record[i].mode ) {\n");
388 (void) fprintf(STDOUT, "#if ((defined(DEBUG_MODE_IO) || defined(ALL_DEBUG)) && defined(VERBOSE))\n");
389 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)", "Purge I/O stream");
390 (void) fprintf(STDOUT, " < record[%%ld] >\\n\", napa_IO_record[i].id);\n");
391 (void) fprintf(STDOUT, "#endif\n");
392 (void) fprintf(STDOUT, " free(napa_IO_record[i].user);\n");
393 (void) fprintf(STDOUT, " napa_IO_record[i].user = (char*) NULL;\n");
394 (void) fprintf(STDOUT, " } else {\n");
395 (void) fprintf(STDOUT, " (void) strcpy(napa_IO_record[j].user, napa_IO_record[i].user);\n");
396 (void) fprintf(STDOUT, " napa_IO_record[j].f_ptr = napa_IO_record[i].f_ptr;\n");
397 (void) fprintf(STDOUT, " napa_IO_record[j].id = napa_IO_record[i].id;\n");
398 (void) fprintf(STDOUT, " napa_IO_record[j].mode = napa_IO_record[i].mode;\n");
399 (void) fprintf(STDOUT, " napa_IO_record[j].iflag = napa_IO_record[i].iflag;\n");
400 (void) fprintf(STDOUT, " napa_IO_record[j].oflag = napa_IO_record[i].oflag;\n");
401 (void) fprintf(STDOUT, " j++;\n");
402 (void) fprintf(STDOUT, " }\n");
403 (void) fprintf(STDOUT, " }\n");
404 (void) fprintf(STDOUT, " napa_IO_count = j;\n");
405 (void) fprintf(STDOUT, "#if ((defined(DEBUG_MODE_IO) || defined(ALL_DEBUG)) && defined(VERBOSE))\n");
406 (void) fprintf(STDOUT, " if ( 0L < napa_IO_count ) {\n");
407 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)\");\n", "Purge I/O stream");
408 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" %%ld I/O records are still allocated\\n\", napa_IO_count);\n" );
409 (void) fprintf(STDOUT, " }\n");
410 (void) fprintf(STDOUT, "#endif\n");
411 (void) fprintf(STDOUT, " return command;\n");
412 /* End of FREE command */
413
414 /* Unknown commands */
415 if (!extension_flag) {
416#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
417 (void) fprintf(STDOUT, " case OPENREAD_BINARY:\n");
418#endif
419 (void) fprintf(STDOUT, " case REWIND:\n");
420 (void) fprintf(STDOUT, " case OPENAPPEND:\n");
421#if (IS_WIN64 == PLATFORM) /* case-insensitive OS */
422 (void) fprintf(STDOUT, " case OPENAPPEND_BINARY:\n");
423 (void) fprintf(STDOUT, " case OPENWRITE_BINARY:\n");
424#endif
425 (void) fprintf(STDOUT, " case REWRITE:\n");
426 (void) fprintf(STDOUT, " case QUERY:\n");
427 (void) fprintf(STDOUT, " case DEBUG:\n");
428 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
429 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream management command <%%d> is not implemented");
430 (void) fprintf(STDOUT, " in this streamlined manager\\n\", command);\n");
431 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
432 }
433 (void) fprintf(STDOUT, " default:\n");
434 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
435 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Unknown I/O stream management command <%%d>\\n\", command);\n" );
436 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
437 (void) fprintf(STDOUT, " }\n");
438
439 /* Continue OPEN commands processing */
440 (void) fprintf(STDOUT, " if ( -1L == index ) {\n");
441 (void) fprintf(STDOUT, " napa_IO_record[napa_IO_count].user = (char*) calloc((size_t) (1L+length), sizeof(char));\n");
442 (void) fprintf(STDOUT, " if ( (char*) NULL == napa_IO_record[napa_IO_count].user ) {\n");
443 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
444 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" A dynamic memory allocation error occurred");
445 (void) fprintf(STDOUT, " while recording I/O stream <%%s>\\n\", user);\n");
446 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
447 (void) fprintf(STDOUT, " }\n");
448 (void) fprintf(STDOUT, " } else {\n");
449 (void) fprintf(STDOUT, " if ( ((FILE*) NULL) != napa_IO_record[index].f_ptr ) {\n");
450 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
451 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" The I/O stream <%%s> cannot be opened twice\\n\", user);\n");
452 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
453 (void) fprintf(STDOUT, " }\n");
454 (void) fprintf(STDOUT, " }\n");
455 (void) fprintf(STDOUT, " if ( 0 == strncmp(\"stdin\", user, sz) ) {\n");
456 (void) fprintf(STDOUT, " *fp = stdin;\n");
457 (void) fprintf(STDOUT, " } else if ( 0 == strncmp(\"stdout\", user, sz) ) {\n");
458 (void) fprintf(STDOUT, " *fp = stdout;\n");
459 (void) fprintf(STDOUT, " } else if ( 0 == strncmp(\"stderr\", user, sz) ) {\n");
460 (void) fprintf(STDOUT, " *fp = stderr;\n");
461 (void) fprintf(STDOUT, " } else {\n");
462 (void) fprintf(STDOUT, " *fp = fopen(user, str);\n");
463 (void) fprintf(STDOUT, " if ( (FILE*) NULL == *fp ) {\n");
464 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
465 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Unable to open I/O file <%%s>\\n\", user);\n");
466 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
467 (void) fprintf(STDOUT, " }\n");
468 (void) fprintf(STDOUT, " }\n");
469 (void) fprintf(STDOUT, " if ( -1L == index ) {\n");
470 (void) fprintf(STDOUT, " (void) strcpy(napa_IO_record[napa_IO_count].user, user);\n");
471 (void) fprintf(STDOUT, " napa_IO_record[napa_IO_count].f_ptr = *fp;\n");
472 (void) fprintf(STDOUT, " napa_IO_record[napa_IO_count].id = id;\n");
473 (void) fprintf(STDOUT, " napa_IO_record[napa_IO_count].mode = command;\n");
474 (void) fprintf(STDOUT, " napa_IO_record[napa_IO_count].iflag = iflag || napa_IO_record[napa_IO_count].iflag;\n");
475 (void) fprintf(STDOUT, " napa_IO_record[napa_IO_count].oflag = oflag || napa_IO_record[napa_IO_count].oflag;\n");
476 (void) fprintf(STDOUT, "#if ((defined(DEBUG_MODE_IO) || defined(ALL_DEBUG)) && defined(VERBOSE))\n");
477 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)", "Create I/O stream");
478 (void) fprintf(STDOUT, " < record[%%ld] >\\n\", id);\n");
479 (void) fprintf(STDOUT, "#endif\n");
480 (void) fprintf(STDOUT, " id++;\n");
481 (void) fprintf(STDOUT, " napa_IO_count++;\n");
482 (void) fprintf(STDOUT, " if ( %ldL <= napa_IO_count ) {\n", MAXFILES);
483 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"\\nNAPA Run Time Error: (I/O manager for %%s)\\n\", tag);\n");
484 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" Internal arrays overflow (max = %ld I/O)", MAXFILES);
485 (void) fprintf(STDOUT, " while registering I/O stream <%%s>\\n\", user);\n");
486 (void) fprintf(STDOUT, " napa_exit(EXIT_FAILURE);\n");
487 (void) fprintf(STDOUT, " }\n");
488 (void) fprintf(STDOUT, " } else {\n");
489 (void) fprintf(STDOUT, " napa_IO_record[index].f_ptr = *fp;\n");
490 (void) fprintf(STDOUT, " napa_IO_record[index].mode = command;\n");
491 (void) fprintf(STDOUT, " napa_IO_record[index].iflag = iflag || napa_IO_record[index].iflag;\n");
492 (void) fprintf(STDOUT, " napa_IO_record[index].oflag = oflag || napa_IO_record[index].oflag;\n");
493 (void) fprintf(STDOUT, " }\n");
494 (void) fprintf(STDOUT, "#if (defined(DEBUG_MODE_IO) || defined(ALL_DEBUG))\n");
495 (void) fprintf(STDOUT, " (void) fprintf(stderr, \"NAPA Debug Information: (%-18s)\");\n", "Open I/O stream" );
496 (void) fprintf(STDOUT, " (void) fprintf(stderr, \" %%18s for %%-18s <- %% .0Lf\\n\", user, tag, napa_abs_loop);\n");
497 (void) fprintf(STDOUT, "#endif\n");
498 if (extension_flag) {
499 (void) fprintf(STDOUT, " if ( REWRITE == command ) {\n");
500 (void) fprintf(STDOUT, " (void) napa_IO_manager(CLOSE, fp, filename, suffix, tag);\n");
501 (void) fprintf(STDOUT, " }\n");
502 }
503 (void) fprintf(STDOUT, " return command;\n");
504 (void) fprintf(STDOUT, "}\n");
505 return;
506}
EXTERN int Post_Flag
Definition napa.h:876
EXTERN int Load_Flag
Definition napa.h:865
EXTERN int Dump_Flag
Definition napa.h:852
#define MAXFILES
Definition napa.h:204
EXTERN int UserTool_Flag
Definition napa.h:888
EXTERN int Assert_Flag
Definition napa.h:844
EXTERN int Output_Flag
Definition napa.h:872
EXTERN int Call_Flag
Definition napa.h:845

References Assert_Flag, Call_Flag, Dump_Flag, Load_Flag, MAXFILES, multiple(), Output_Flag, Post_Flag, STDOUT, and UserTool_Flag.

Referenced by main().