1 /*-------------------------------------------------------------------------
2 This software is provided 'as-is', without any express or implied warranty.
3 In no event will the authors be held liable for any damages arising from
4 the use of this software.
5
6 Permission is granted to anyone to use this software for any purpose,
7 including commercial applications, and to alter it and redistribute it
8 freely, subject to the following restrictions:
9
10 1. The origin of this software must not be misrepresented; you must not
11 claim that you wrote the original software. If you use this software
12 in a product, an acknowledgment in the product documentation would be
13 appreciated but is not required.
14
15 2. Altered source versions must be plainly marked as such, and must not
16 be misrepresented as being the original software.
17
18 3. This notice may not be removed or altered from any source distribution.
19 -------------------------------------------------------------------------*/
20
21 #include <stdlib.h>
22 #include <stdio.h>
23 #include <stdarg.h>
24 #include <string.h>
25 #include "fortran_macros.h"
26 #include "cgns_io.h"
27 #ifdef MEM_DEBUG
28 #include "cg_malloc.h"
29 #endif
30
31 #if defined(_WIN32) && defined(BUILD_DLL)
32 # define CGIODLL __declspec(dllexport)
33 #else
34 # define CGIODLL
35 #endif
36
37 /*=========================================================
38 * local string conversions
39 *=========================================================*/
40
to_c_string(char * f_str,int f_len,char * c_str,int c_len)41 static int to_c_string(char *f_str, int f_len, char *c_str, int c_len)
42 {
43 int i, iend;
44
45 for (iend = f_len-1; iend >= 0; iend--) {
46 if (f_str[iend] != ' ') break;
47 }
48 if (iend >= c_len) iend = c_len - 1;
49
50 for (i = 0; i <= iend; i++)
51 c_str[i] = f_str[i];
52 c_str[i] = 0;
53 return i;
54 }
55
56 /*---------------------------------------------------------*/
57
to_f_string(char * c_str,char * f_str,int f_len)58 static int to_f_string(char *c_str, char *f_str, int f_len)
59 {
60 int i, c_len;
61
62 c_len = (int)strlen(c_str);
63 if (c_len > f_len) c_len = f_len;
64
65 for (i = 0; i < c_len; i++)
66 f_str[i] = c_str[i];
67 while (i < f_len)
68 f_str[i++] = ' ';
69 return f_len;
70 }
71
72 /*---------------------------------------------------------*/
73
new_c_string(char * str,int len,cgint_f * ier)74 static char *new_c_string (char *str, int len, cgint_f *ier)
75 {
76 char *c_str;
77
78 if (len < 1 || str == NULL) {
79 *ier = (cgint_f)CGIO_ERR_NULL_STRING;
80 return NULL;
81 } else if ( len == 2 && strncmp(str, "\0", 2) == 0 ) {
82 *ier = (cgint_f)CGIO_ERR_NULL_STRING;
83 return NULL;
84 }
85
86 c_str = (char *) malloc (len + 1);
87 if (c_str == NULL) {
88 *ier = (cgint_f)CGIO_ERR_MALLOC;
89 return NULL;
90 }
91 to_c_string (str, len, c_str, len);
92 if (strlen(c_str) < 1) {
93 free (c_str);
94 *ier = (cgint_f)CGIO_ERR_NULL_STRING;
95 return NULL;
96 }
97 *ier = 0;
98 return c_str;
99 }
100
101 /*=========================================================
102 * paths for searching for linked-to files
103 *=========================================================*/
104
FMNAME(cgio_path_add_f,CGIO_PATH_ADD_F)105 CGIODLL void FMNAME(cgio_path_add_f, CGIO_PATH_ADD_F) (
106 STR_PSTR(path), cgint_f *ier STR_PLEN(path))
107 {
108 char *c_path = new_c_string(STR_PTR(path), STR_LEN(path), ier);
109
110 if (*ier == 0) {
111 *ier = (cgint_f)cgio_path_add(c_path);
112 free(c_path);
113 }
114 }
115
116 /*---------------------------------------------------------*/
117
FMNAME(cgio_path_delete_f,CGIO_PATH_DELETE_F)118 CGIODLL void FMNAME(cgio_path_delete_f, CGIO_PATH_DELETE_F) (
119 STR_PSTR(path), cgint_f *ier STR_PLEN(path))
120 {
121 char *c_path = new_c_string(STR_PTR(path), STR_LEN(path), ier);
122
123 if (*ier == CGIO_ERR_MALLOC) return;
124 *ier = (cgint_f)cgio_path_delete(c_path);
125 if (c_path) free(c_path);
126 }
127
128 /*=========================================================
129 * utility routines independent of open files
130 *=========================================================*/
131
cgio_is_supported_f(cgsize_t * file_type,cgint_f * ier)132 CGIODLL void cgio_is_supported_f(
133 cgsize_t *file_type, cgint_f *ier)
134 {
135 *ier = (cgint_f)cgio_is_supported((int)*file_type);
136 }
137
138 /*---------------------------------------------------------*/
139
FMNAME(cgio_check_file_f,CGIO_CHECK_FILE_F)140 CGIODLL void FMNAME(cgio_check_file_f, CGIO_CHECK_FILE_F) (
141 STR_PSTR(filename), cgint_f *file_type, cgint_f *ier STR_PLEN(filename))
142 {
143 int i_file_type;
144 char *c_name = new_c_string(STR_PTR(filename), STR_LEN(filename), ier);
145
146 if (*ier == 0) {
147 *ier = (cgint_f)cgio_check_file(c_name, &i_file_type);
148 *file_type = (cgint_f)i_file_type;
149 free(c_name);
150 }
151 }
152
153 /*=========================================================
154 * file operations
155 *=========================================================*/
156
FMNAME(cgio_open_file_f,CGIO_OPEN_FILE_F)157 CGIODLL void FMNAME(cgio_open_file_f, CGIO_OPEN_FILE_F) (
158 STR_PSTR(filename), cgint_f *file_mode, cgint_f *file_type,
159 cgint_f *cgio_num, cgint_f *ier STR_PLEN(filename))
160 {
161 int i_cgio_num;
162 char *c_name = new_c_string(STR_PTR(filename), STR_LEN(filename), ier);
163
164 if (*ier == 0) {
165 *ier = (cgint_f)cgio_open_file(c_name, (int)*file_mode, (int)*file_type, &i_cgio_num);
166 *cgio_num = (cgint_f)i_cgio_num;
167 free(c_name);
168 }
169 }
170
171 /*---------------------------------------------------------*/
172
cgio_close_file_f(cgint_f * cgio_num,cgint_f * ier)173 CGIODLL void cgio_close_file_f(
174 cgint_f *cgio_num, cgint_f *ier)
175 {
176 *ier = (cgint_f)cgio_close_file((int)*cgio_num);
177 }
178
179 /*---------------------------------------------------------*/
180
cgio_flush_to_disk_f(cgint_f * cgio_num,cgint_f * ier)181 CGIODLL void cgio_flush_to_disk_f(
182 cgint_f *cgio_num, cgint_f *ier)
183 {
184 *ier = (cgint_f)cgio_flush_to_disk((int)*cgio_num);
185 }
186
187 /*=========================================================
188 * file information
189 *=========================================================*/
190
FMNAME(cgio_library_version_f,CGIO_LIBRARY_VERSION_F)191 CGIODLL void FMNAME(cgio_library_version_f, CGIO_LIBRARY_VERSION_F) (
192 cgint_f *cgio_num, STR_PSTR(version), cgint_f *ier STR_PLEN(version))
193 {
194 char c_version[CGIO_MAX_VERSION_LENGTH+1];
195
196 *ier = (cgint_f)cgio_library_version((int)*cgio_num, c_version);
197 if (*ier == 0)
198 to_f_string(c_version, STR_PTR(version), STR_LEN(version));
199 }
200
201 /*---------------------------------------------------------*/
202
FMNAME(cgio_file_version_f,CGIO_FILE_VERSION_F)203 CGIODLL void FMNAME(cgio_file_version_f, CGIO_FILE_VERSION_F) (
204 cgint_f *cgio_num, STR_PSTR(file_version), STR_PSTR(creation_date),
205 STR_PSTR(modified_date), cgint_f *ier STR_PLEN(file_version)
206 STR_PLEN(creation_date) STR_PLEN(modified_date))
207 {
208 char c_version[CGIO_MAX_VERSION_LENGTH+1];
209 char c_cdate[CGIO_MAX_VERSION_LENGTH+1];
210 char c_mdate[CGIO_MAX_VERSION_LENGTH+1];
211
212 *ier = (cgint_f)cgio_file_version((int)*cgio_num, c_version, c_cdate, c_mdate);
213 if (*ier == 0) {
214 to_f_string(c_version, STR_PTR(file_version), STR_LEN(file_version));
215 to_f_string(c_cdate, STR_PTR(creation_date), STR_LEN(creation_date));
216 to_f_string(c_mdate, STR_PTR(modified_date), STR_LEN(modified_date));
217 }
218 }
219
220 /*---------------------------------------------------------*/
221
cgio_get_root_id_f(cgint_f * cgio_num,double * rootid,cgint_f * ier)222 CGIODLL void cgio_get_root_id_f(
223 cgint_f *cgio_num, double *rootid, cgint_f *ier)
224 {
225 *ier = (cgint_f)cgio_get_root_id((int)*cgio_num, rootid);
226 }
227
228 /*---------------------------------------------------------*/
229
cgio_get_file_type_f(cgint_f * cgio_num,cgint_f * file_type,cgint_f * ier)230 CGIODLL void cgio_get_file_type_f(
231 cgint_f *cgio_num, cgint_f *file_type, cgint_f *ier)
232 {
233 int i_file_type;
234
235 *ier = (cgint_f)cgio_get_file_type((int)*cgio_num, &i_file_type);
236 *file_type = (cgint_f)i_file_type;
237 }
238
239 /*=========================================================
240 * error handling
241 *=========================================================*/
242
cgio_error_code_f(cgint_f * errcode,cgint_f * file_type)243 CGIODLL void cgio_error_code_f(
244 cgint_f *errcode, cgint_f *file_type)
245 {
246 int i_errcode, i_file_type;
247
248 cgio_error_code(&i_errcode, &i_file_type);
249 *errcode = (cgint_f)i_errcode;
250 *file_type = (cgint_f)i_file_type;
251 }
252
253 /*---------------------------------------------------------*/
254
FMNAME(cgio_error_message_f,CGIO_ERROR_MESSAGE_F)255 CGIODLL void FMNAME(cgio_error_message_f,CGIO_ERROR_MESSAGE_F) (
256 STR_PSTR(errmsg), cgint_f *ier STR_PLEN(errmsg))
257 {
258 char c_error[CGIO_MAX_ERROR_LENGTH+1];
259
260 *ier = (cgint_f)cgio_error_message(c_error);
261 if (*ier == 0)
262 to_f_string(c_error, STR_PTR(errmsg), STR_LEN(errmsg));
263 }
264
265 /*---------------------------------------------------------*/
266
FMNAME(cgio_error_exit_f,CGIO_ERROR_EXIT_F)267 CGIODLL void FMNAME(cgio_error_exit_f, CGIO_ERROR_EXIT_F)(
268 STR_PSTR(errmsg) STR_PLEN(errmsg))
269 {
270 cgint_f ier;
271 char *c_error = new_c_string(STR_PTR(errmsg), STR_LEN(errmsg), &ier);
272
273 cgio_error_exit(c_error);
274 }
275
276 /*---------------------------------------------------------*/
277
cgio_error_abort_f(cgint_f * abort_flag)278 CGIODLL void cgio_error_abort_f(
279 cgint_f *abort_flag)
280 {
281 cgio_error_abort((int)*abort_flag);
282 }
283
284 /*=========================================================
285 * basic node operations
286 *=========================================================*/
287
FMNAME(cgio_create_node_f,CGIO_CREATE_NODE_F)288 CGIODLL void FMNAME(cgio_create_node_f, CGIO_CREATE_NODE_F) (
289 cgint_f *cgio_num, double *pid, STR_PSTR(name),
290 double *id, cgint_f *ier STR_PLEN(name))
291 {
292 char c_name[CGIO_MAX_NAME_LENGTH+1];
293
294 to_c_string(STR_PTR(name), STR_LEN(name), c_name, CGIO_MAX_NAME_LENGTH);
295 *ier = (cgint_f)cgio_create_node((int)*cgio_num, *pid, c_name, id);
296 }
297
298 /*---------------------------------------------------------*/
299
FMNAME(cgio_new_node_f,CGIO_NEW_NODE_F)300 CGIODLL void FMNAME(cgio_new_node_f, CGIO_NEW_NODE_F) (
301 cgint_f *cgio_num, double *pid, STR_PSTR(name), STR_PSTR(label),
302 STR_PSTR(data_type), cgint_f *ndims, cgsize_t *dims, void *data,
303 double *id, cgint_f *ier STR_PLEN(name) STR_PLEN(label) STR_PLEN(data_type))
304 {
305 char c_name[CGIO_MAX_NAME_LENGTH+1];
306 char c_label[CGIO_MAX_LABEL_LENGTH+1];
307 char c_dtype[CGIO_MAX_DATATYPE_LENGTH+1];
308
309 to_c_string(STR_PTR(name), STR_LEN(name), c_name, CGIO_MAX_NAME_LENGTH);
310 to_c_string(STR_PTR(label), STR_LEN(label), c_label, CGIO_MAX_LABEL_LENGTH);
311 to_c_string(STR_PTR(data_type), STR_LEN(data_type),
312 c_dtype, CGIO_MAX_DATATYPE_LENGTH);
313 *ier = (cgint_f)cgio_new_node((int)*cgio_num, *pid, c_name, c_label, c_dtype,
314 (int)*ndims, dims, data, id);
315 }
316
317 /*---------------------------------------------------------*/
318
cgio_delete_node_f(cgint_f * cgio_num,double * pid,double * id,cgint_f * ier)319 CGIODLL void cgio_delete_node_f(
320 cgint_f *cgio_num, double *pid, double *id, cgint_f *ier)
321 {
322 *ier = (cgint_f)cgio_delete_node((int)*cgio_num, *pid, *id);
323 }
324
325 /*---------------------------------------------------------*/
326
cgio_move_node_f(cgint_f * cgio_num,double * pid,double * id,double * npid,cgint_f * ier)327 CGIODLL void cgio_move_node_f(
328 cgint_f *cgio_num, double *pid, double *id, double *npid, cgint_f *ier)
329 {
330 *ier = (cgint_f)cgio_move_node((int)*cgio_num, *pid, *id, *npid);
331 }
332
333 /*---------------------------------------------------------*/
334
cgio_release_id_f(cgint_f * cgio_num,double * id,cgint_f * ier)335 CGIODLL void cgio_release_id_f(
336 cgint_f *cgio_num, double *id, cgint_f *ier)
337 {
338 *ier = (cgint_f)cgio_release_id((int)*cgio_num, *id);
339 }
340
341 /*=========================================================
342 * links
343 *=========================================================*/
344
cgio_is_link_f(cgint_f * cgio_num,double * id,cgint_f * link_len,cgint_f * ier)345 CGIODLL void cgio_is_link_f(
346 cgint_f *cgio_num, double *id, cgint_f *link_len, cgint_f *ier)
347 {
348 int i_link_len;
349
350 *ier = (cgint_f)cgio_is_link((int)*cgio_num, *id, &i_link_len);
351 *link_len = (cgint_f)i_link_len;
352 }
353
354 /*---------------------------------------------------------*/
355
cgio_link_size_f(cgint_f * cgio_num,double * id,cgint_f * file_len,cgint_f * name_len,cgint_f * ier)356 CGIODLL void cgio_link_size_f(
357 cgint_f *cgio_num, double *id, cgint_f *file_len,
358 cgint_f *name_len, cgint_f *ier)
359 {
360 int i_file_len, i_name_len;
361
362 *ier = (cgint_f)cgio_link_size((int)*cgio_num, *id, &i_file_len, &i_name_len);
363 *file_len = (cgint_f)i_file_len;
364 *name_len = (cgint_f)i_name_len;
365 }
366
367 /*---------------------------------------------------------*/
368
FMNAME(cgio_create_link_f,CGIO_CREATE_LINK_F)369 CGIODLL void FMNAME(cgio_create_link_f, CGIO_CREATE_LINK_F) (
370 cgint_f *cgio_num, double *pid, STR_PSTR(name), STR_PSTR(filename),
371 STR_PSTR(name_in_file), double *id, cgint_f *ier
372 STR_PLEN(name) STR_PLEN(filename) STR_PLEN(name_in_file))
373 {
374 char c_name[CGIO_MAX_NAME_LENGTH+1];
375 char *c_file, *c_link;
376
377 c_file = new_c_string(STR_PTR(filename), STR_LEN(filename), ier);
378 if (*ier) {
379 if (*ier != CGIO_ERR_NULL_STRING) return;
380 c_file = "";
381 }
382 c_link = new_c_string(STR_PTR(name_in_file), STR_LEN(name_in_file), ier);
383 if (*ier) {
384 if (*c_file) free(c_file);
385 return;
386 }
387 to_c_string(STR_PTR(name), STR_LEN(name), c_name, CGIO_MAX_NAME_LENGTH);
388 *ier = (cgint_f)cgio_create_link((int)*cgio_num, *pid, c_name, c_file, c_link, id);
389 if (*c_file) free(c_file);
390 free(c_link);
391 }
392
393 /*---------------------------------------------------------*/
394
FMNAME(cgio_get_link_f,CGIO_GET_LINK_F)395 CGIODLL void FMNAME(cgio_get_link_f, CGIO_GET_LINK_F) (
396 cgint_f *cgio_num, double *id, STR_PSTR(filename), STR_PSTR(name_in_file),
397 cgint_f *ier STR_PLEN(filename) STR_PLEN(name_in_file))
398 {
399 char c_file[CGIO_MAX_FILE_LENGTH+1];
400 char c_link[CGIO_MAX_LINK_LENGTH+1];
401
402 *ier = (cgint_f)cgio_get_link((int)*cgio_num, *id, c_file, c_link);
403 if (*ier == 0) {
404 to_f_string(c_file, STR_PTR(filename), STR_LEN(filename));
405 to_f_string(c_link, STR_PTR(name_in_file), STR_LEN(name_in_file));
406 }
407 }
408
409 /*=========================================================
410 * node children
411 *=========================================================*/
412
cgio_number_children_f(cgint_f * cgio_num,double * pid,cgint_f * num_children,cgint_f * ier)413 CGIODLL void cgio_number_children_f(
414 cgint_f *cgio_num, double *pid, cgint_f *num_children, cgint_f *ier)
415 {
416 int i_num_children;
417
418 *ier = cgio_number_children(*cgio_num, *pid, &i_num_children);
419 *num_children = (cgint_f)i_num_children;
420 }
421
422 /*---------------------------------------------------------*/
423
cgio_children_ids_f(cgint_f * cgio_num,double * pid,cgint_f * start,cgint_f * max_ret,cgint_f * num_ret,double * ids,cgint_f * ier)424 CGIODLL void cgio_children_ids_f(
425 cgint_f *cgio_num, double *pid, cgint_f *start, cgint_f *max_ret,
426 cgint_f *num_ret, double *ids, cgint_f *ier)
427 {
428 int i_num_ret;
429
430 *ier = cgio_children_ids((int)*cgio_num, *pid, (int)*start, (int)*max_ret,
431 &i_num_ret, ids);
432 *num_ret = (cgint_f)i_num_ret;
433 }
434
435 /*---------------------------------------------------------*/
436
FMNAME(cgio_children_names_f,CGIO_CHILDREN_NAMES_F)437 CGIODLL void FMNAME(cgio_children_names_f, CGIO_CHILDREN_NAMES_F) (
438 cgint_f *cgio_num, double *pid, cgint_f *start, cgint_f *max_ret,
439 cgint_f *name_len, cgint_f *num_ret, STR_PSTR(names),
440 cgint_f *ier STR_PLEN(names))
441 {
442 int i_num_ret, i_name_len = (int)*name_len;
443 char *c_names;
444
445 c_names = (char *) malloc ((size_t)*max_ret * (CGIO_MAX_NAME_LENGTH + 1));
446 if (c_names == NULL) {
447 *ier = (cgint_f)CGIO_ERR_MALLOC;
448 return;
449 }
450 *ier = (cgint_f)cgio_children_names((int)*cgio_num, *pid, (int)*start, (int)*max_ret,
451 CGIO_MAX_NAME_LENGTH + 1, &i_num_ret, c_names);
452 if (*ier == 0) {
453 int n;
454 char *pc = c_names;
455 char *pf = STR_PTR(names);
456 for (n = 0; n < i_num_ret; n++) {
457 to_f_string(pc, pf, i_name_len);
458 pc += (CGIO_MAX_NAME_LENGTH + 1);
459 pf += i_name_len;
460 }
461 *num_ret = (cgint_f)i_num_ret;
462 }
463 free(c_names);
464 }
465
466 /*=========================================================
467 * read nodes
468 *=========================================================*/
469
FMNAME(cgio_get_node_id_f,CGIO_GET_NODE_ID_F)470 CGIODLL void FMNAME(cgio_get_node_id_f, CGIO_GET_NODE_ID_F) (
471 cgint_f *cgio_num, double *pid, STR_PSTR(name), double *id,
472 cgint_f *ier STR_PLEN(name))
473 {
474 char c_name[CGIO_MAX_NAME_LENGTH+1];
475
476 to_c_string(STR_PTR(name), STR_LEN(name), c_name, CGIO_MAX_NAME_LENGTH);
477 *ier = (cgint_f)cgio_get_node_id((int)*cgio_num, *pid, c_name, id);
478 }
479
480 /*---------------------------------------------------------*/
481
FMNAME(cgio_get_name_f,CGIO_GET_NAME_F)482 CGIODLL void FMNAME(cgio_get_name_f, CGIO_GET_NAME_F) (
483 cgint_f *cgio_num, double *id, STR_PSTR(name),
484 cgint_f *ier STR_PLEN(name))
485 {
486 char c_name[CGIO_MAX_NAME_LENGTH+1];
487
488 *ier = (cgint_f)cgio_get_name((int)*cgio_num, *id, c_name);
489 if (*ier == 0)
490 to_f_string(c_name, STR_PTR(name), STR_LEN(name));
491 }
492
493 /*---------------------------------------------------------*/
494
FMNAME(cgio_get_label_f,CGIO_GET_LABEL_F)495 CGIODLL void FMNAME(cgio_get_label_f, CGIO_GET_LABEL_F) (
496 cgint_f *cgio_num, double *id, STR_PSTR(label),
497 cgint_f *ier STR_PLEN(label))
498 {
499 char c_label[CGIO_MAX_LABEL_LENGTH+1];
500
501 *ier = (cgint_f)cgio_get_label((int)*cgio_num, *id, c_label);
502 if (*ier == 0)
503 to_f_string(c_label, STR_PTR(label), STR_LEN(label));
504 }
505
506 /*---------------------------------------------------------*/
507
FMNAME(cgio_get_data_type_f,CGIO_GET_DATA_TYPE_F)508 CGIODLL void FMNAME(cgio_get_data_type_f, CGIO_GET_DATA_TYPE_F) (
509 cgint_f *cgio_num, double *id, STR_PSTR(data_type),
510 cgint_f *ier STR_PLEN(data_type))
511 {
512 char c_type[CGIO_MAX_DATATYPE_LENGTH+1];
513
514 *ier = (cgint_f)cgio_get_data_type((int)*cgio_num, *id, c_type);
515 if (*ier == 0)
516 to_f_string(c_type, STR_PTR(data_type), STR_LEN(data_type));
517 }
518
519 /*---------------------------------------------------------*/
520
cgio_get_data_size_f(cgint_f * cgio_num,double * id,cgsize_t * size,cgint_f * ier)521 CGIODLL void cgio_get_data_size_f(
522 cgint_f *cgio_num, double *id, cgsize_t *size, cgint_f *ier)
523 {
524 cglong_t data_size;
525
526 *ier = (cgint_f)cgio_get_data_size((int)*cgio_num, *id, &data_size);
527 *size = (cgsize_t)data_size;
528 }
529
530 /*---------------------------------------------------------*/
531
FMNAME(cgio_read_all_data_type_f,CGIO_READ_ALL_DATA_TYPE_F)532 CGIODLL void FMNAME(cgio_read_all_data_type_f, CGIO_READ_ALL_DATA_TYPE_F) (
533 cgint_f *cgio_num, double *id, STR_PSTR(m_data_type), void *data, cgint_f *ier STR_PLEN(m_data_type))
534 {
535 char c_dtype[CGIO_MAX_DATATYPE_LENGTH+1];
536 to_c_string(STR_PTR(m_data_type), STR_LEN(m_data_type), c_dtype, CGIO_MAX_DATATYPE_LENGTH);
537 *ier = (cgint_f)cgio_read_all_data_type((int)*cgio_num, *id, c_dtype, data);
538 }
539
540 /*---------------------------------------------------------*/
541
FMNAME(cgio_read_block_data_type_f,CGIO_READ_BLOCK_DATA_TYPE_F)542 CGIODLL void FMNAME(cgio_read_block_data_type_f, CGIO_READ_BLOCK_DATA_TYPE_F) (
543 cgint_f *cgio_num, double *id, cgsize_t *b_start, cgsize_t *b_end,
544 STR_PSTR(m_data_type), void *data, cgint_f *ier STR_PLEN(m_data_type))
545 {
546 char c_dtype[CGIO_MAX_DATATYPE_LENGTH+1];
547 to_c_string(STR_PTR(m_data_type), STR_LEN(m_data_type), c_dtype, CGIO_MAX_DATATYPE_LENGTH);
548 *ier = (cgint_f)cgio_read_block_data_type((int)*cgio_num, *id, *b_start, *b_end, c_dtype, data);
549 }
550
551 /*---------------------------------------------------------*/
552
FMNAME(cgio_read_data_type_f,CGIO_READ_DATA_TYPE_F)553 CGIODLL void FMNAME(cgio_read_data_type_f, CGIO_READ_DATA_TYPE_F) (
554 cgint_f *cgio_num, double *id, cgsize_t *s_start, cgsize_t *s_end,
555 cgsize_t *s_stride, STR_PSTR(m_data_type), cgint_f *m_ndims, cgsize_t *m_dims, cgsize_t *m_start,
556 cgsize_t *m_end, cgsize_t *m_stride, void *data, cgint_f *ier STR_PLEN(m_data_type))
557 {
558 char c_dtype[CGIO_MAX_DATATYPE_LENGTH+1];
559 to_c_string(STR_PTR(m_data_type), STR_LEN(m_data_type), c_dtype, CGIO_MAX_DATATYPE_LENGTH);
560 *ier = (cgint_f)cgio_read_data_type((int)*cgio_num, *id, s_start, s_end, s_stride, c_dtype,
561 (int)*m_ndims, m_dims, m_start, m_end, m_stride, data);
562 }
563
564 /*=========================================================
565 * write nodes
566 *=========================================================*/
567
FMNAME(cgio_set_name_f,CGIO_SET_NAME_F)568 CGIODLL void FMNAME(cgio_set_name_f, CGIO_SET_NAME_F) (
569 cgint_f *cgio_num, double *pid, double *id, STR_PSTR(name),
570 cgint_f *ier STR_PLEN(name))
571 {
572 char c_name[CGIO_MAX_NAME_LENGTH+1];
573
574 to_c_string(STR_PTR(name), STR_LEN(name), c_name, CGIO_MAX_NAME_LENGTH);
575 *ier = (cgint_f)cgio_set_name((int)*cgio_num, *pid, *id, c_name);
576 }
577
578 /*---------------------------------------------------------*/
579
FMNAME(cgio_set_label_f,CGIO_SET_LABEL_F)580 CGIODLL void FMNAME(cgio_set_label_f, CGIO_SET_LABEL_F) (
581 cgint_f *cgio_num, double *id, STR_PSTR(label),
582 cgint_f *ier STR_PLEN(label))
583 {
584 char c_label[CGIO_MAX_LABEL_LENGTH+1];
585
586 to_c_string(STR_PTR(label), STR_LEN(label), c_label, CGIO_MAX_LABEL_LENGTH);
587 *ier = (cgint_f)cgio_set_label((int)*cgio_num, *id, c_label);
588 }
589
590 /*---------------------------------------------------------*/
591
FMNAME(cgio_write_all_data_f,CGIO_WRITE_ALL_DATA_F)592 CGIODLL void FMNAME(cgio_write_all_data_f, CGIO_WRITE_ALL_DATA_F) (
593 cgint_f *cgio_num, double *id, void *data, cgint_f *ier)
594 {
595 *ier = (cgint_f)cgio_write_all_data((int)*cgio_num, *id, data);
596 }
597
598 /*---------------------------------------------------------*/
599
FMNAME(cgio_write_block_data_f,CGIO_WRITE_BLOCK_DATA_F)600 CGIODLL void FMNAME(cgio_write_block_data_f, CGIO_WRITE_BLOCK_DATA_F) (
601 cgint_f *cgio_num, double *id, cgsize_t *b_start, cgsize_t *b_end,
602 void *data, cgint_f *ier)
603 {
604 *ier = (cgint_f)cgio_write_block_data((int)*cgio_num, *id, *b_start, *b_end, data);
605 }
606
607 /*---------------------------------------------------------*/
608
FMNAME(cgio_write_data_f,CGIO_WRITE_DATA_F)609 CGIODLL void FMNAME(cgio_write_data_f, CGIO_WRITE_DATA_F) (
610 cgint_f *cgio_num, double *id, cgsize_t *s_start, cgsize_t *s_end,
611 cgsize_t *s_stride, cgsize_t *m_ndims, cgsize_t *m_dims, cgsize_t *m_start,
612 cgsize_t *m_end, cgsize_t *m_stride, void *data, cgint_f *ier)
613 {
614 *ier = (cgint_f)cgio_write_data((int)*cgio_num, *id, s_start, s_end, s_stride,
615 (int)*m_ndims, m_dims, m_start, m_end, m_stride, data);
616 }
617
618 #undef CGIODLL
619
620