Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Reduce dupplication around smpi factors
[simgrid.git] / src / smpi / bindings / smpi_f77_file.cpp
1 /* Copyright (c) 2010-2022. The SimGrid Team. All rights reserved.          */
2
3 /* This program is free software; you can redistribute it and/or modify it
4  * under the terms of the license (GNU LGPL) which comes with this package. */
5
6 #include "private.hpp"
7 #include "smpi_file.hpp"
8 #include "smpi_errhandler.hpp"
9 #include "smpi_info.hpp"
10
11 extern "C" { // This should really use the C linkage to be usable from Fortran
12
13 void mpi_file_close_ ( int* file, int* ierr){
14   MPI_File tmp = simgrid::smpi::File::f2c(*file);
15   *ierr =  MPI_File_close(&tmp);
16   if(*ierr == MPI_SUCCESS) {
17     simgrid::smpi::F2C::free_f(*file);
18   }
19 }
20
21 void mpi_file_delete_ ( char* filename, int* info, int* ierr){
22   *ierr= MPI_File_delete(filename, simgrid::smpi::Info::f2c(*info));
23 }
24
25 void mpi_file_open_ ( int* comm, char* filename, int* amode, int* info, int* fh, int* ierr){
26   MPI_File tmp;
27   *ierr= MPI_File_open(simgrid::smpi::Comm::f2c(*comm), filename, *amode, simgrid::smpi::Info::f2c(*info), &tmp);
28   if (*ierr == MPI_SUCCESS) {
29     *fh = tmp->c2f();
30   }
31 }
32
33 void mpi_file_seek_(int* fh, MPI_Offset* offset, int* whence, int* ierr){
34         *ierr= MPI_File_seek(simgrid::smpi::File::f2c(*fh), *offset, *whence);
35 }
36
37 void mpi_file_seek_shared_(int* fh, MPI_Offset* offset, int* whence, int* ierr){
38         *ierr= MPI_File_seek_shared(simgrid::smpi::File::f2c(*fh), *offset, *whence);
39 }
40
41 void mpi_file_get_position_(int* fh, MPI_Offset* offset, int* ierr){
42         *ierr= MPI_File_get_position(simgrid::smpi::File::f2c(*fh), offset);
43 }
44
45 void mpi_file_get_position_shared_(int* fh, MPI_Offset* offset, int* ierr){
46         *ierr= MPI_File_get_position_shared(simgrid::smpi::File::f2c(*fh), offset);
47 }
48
49 void mpi_file_get_size_(int* fh, MPI_Offset* size, int* ierr){
50         *ierr= MPI_File_get_size(simgrid::smpi::File::f2c(*fh), size);
51 }
52
53 void mpi_file_set_size_(int* fh, MPI_Offset* size, int* ierr){
54         *ierr= MPI_File_set_size(simgrid::smpi::File::f2c(*fh), *size);
55 }
56
57 void mpi_file_read_ ( int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr){
58   *ierr=  MPI_File_read(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
59 }
60
61 void mpi_file_read_shared_(int* fh, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
62   *ierr=  MPI_File_read_shared(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
63 }
64
65 void mpi_file_read_all_(int* fh, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
66   *ierr=  MPI_File_read_all(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
67 }
68
69 void mpi_file_read_ordered_(int* fh, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
70   *ierr=  MPI_File_read_ordered(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
71 }
72
73 void mpi_file_read_at_(int* fh, MPI_Offset* offset, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
74   *ierr=  MPI_File_read_at(simgrid::smpi::File::f2c(*fh), *offset, buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
75 }
76
77 void mpi_file_read_at_all_(int* fh, MPI_Offset* offset, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
78   *ierr=  MPI_File_read_at_all(simgrid::smpi::File::f2c(*fh), *offset, buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
79 }
80
81 void mpi_file_write_ ( int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr){
82   *ierr=  MPI_File_write(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
83 }
84
85 void mpi_file_write_shared_(int* fh, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
86   *ierr=  MPI_File_write_shared(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
87 }
88
89 void mpi_file_write_ordered_(int* fh, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
90   *ierr=  MPI_File_write_ordered(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
91 }
92
93 void mpi_file_write_at_(int* fh, MPI_Offset* offset, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
94   *ierr=  MPI_File_write_at(simgrid::smpi::File::f2c(*fh), *offset, buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
95 }
96
97 void mpi_file_write_at_all_(int* fh, MPI_Offset* offset, void *buf, int* count, int* datatype, MPI_Status* status, int* ierr){
98   *ierr=  MPI_File_write_at_all(simgrid::smpi::File::f2c(*fh), *offset, buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
99 }
100
101 void mpi_file_write_all_ ( int* fh, void* buf, int* count, int* datatype, MPI_Status* status, int* ierr){
102   *ierr=  MPI_File_write_all(simgrid::smpi::File::f2c(*fh), buf, *count, simgrid::smpi::Datatype::f2c(*datatype), status);
103 }
104
105 void mpi_file_set_view_ ( int* fh, MPI_Offset* offset, int* etype, int* filetype, char* datarep, int* info, int* ierr){
106   *ierr= MPI_File_set_view(simgrid::smpi::File::f2c(*fh) , *offset, simgrid::smpi::Datatype::f2c(*etype), simgrid::smpi::Datatype::f2c(*filetype), datarep, simgrid::smpi::Info::f2c(*info));
107 }
108
109 void mpi_file_get_view_(int* fh, MPI_Offset* disp, int* etype, int* filetype, char *datarep, int* ierr){
110   MPI_Datatype tmp;
111   MPI_Datatype tmp2;
112   *ierr= MPI_File_get_view(simgrid::smpi::File::f2c(*fh) , disp, &tmp, &tmp2, datarep);
113   if(*ierr == MPI_SUCCESS) {
114     *etype = tmp->c2f();
115     *filetype = tmp2->c2f();
116   }
117 }
118
119
120 }