Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Update copyright lines.
[simgrid.git] / src / smpi / bindings / smpi_pmpi_info.cpp
1 /* Copyright (c) 2007-2021. 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_info.hpp"
8
9 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(smpi_pmpi);
10
11 /* PMPI User level calls */
12
13 int PMPI_Info_create( MPI_Info *info){
14   CHECK_NULL(1, MPI_ERR_ARG, info)
15   *info = new simgrid::smpi::Info();
16   return MPI_SUCCESS;
17 }
18
19 int PMPI_Info_set( MPI_Info info, const char *key, const char *value){
20   CHECK_INFO(1, info)
21   CHECK_NULL(2, MPI_ERR_INFO_KEY, key)
22   CHECK_NULL(3, MPI_ERR_INFO_VALUE, value)
23   info->set(key, value);
24   return MPI_SUCCESS;
25 }
26
27 int PMPI_Info_free( MPI_Info *info){
28   CHECK_NULL(1, MPI_ERR_ARG, info)
29   CHECK_INFO(1, *info)
30   simgrid::smpi::Info::unref(*info);
31   *info=MPI_INFO_NULL;
32   return MPI_SUCCESS;
33 }
34
35 int PMPI_Info_get(MPI_Info info, const char *key,int valuelen, char *value, int *flag){
36   CHECK_INFO(1, info)
37   if (valuelen <0)
38     return MPI_ERR_ARG;
39   CHECK_NULL(2, MPI_ERR_INFO_KEY, key)
40   CHECK_NULL(3, MPI_ERR_INFO_VALUE, value)
41   CHECK_NULL(4, MPI_ERR_ARG, flag)
42   *flag=false;
43   return info->get(key, valuelen, value, flag);
44 }
45
46 int PMPI_Info_dup(MPI_Info info, MPI_Info *newinfo){
47   CHECK_INFO(1, info)
48   CHECK_NULL(2, MPI_ERR_ARG, newinfo)
49   *newinfo = new simgrid::smpi::Info(info);
50   return MPI_SUCCESS;
51 }
52
53 int PMPI_Info_delete(MPI_Info info, const char *key){
54   CHECK_INFO(1, info)
55   CHECK_NULL(2, MPI_ERR_INFO_KEY, key)
56   return info->remove(key);
57 }
58
59 int PMPI_Info_get_nkeys( MPI_Info info, int *nkeys){
60   CHECK_INFO(1, info)
61   CHECK_NULL(2, MPI_ERR_ARG, nkeys)
62   return info->get_nkeys(nkeys);
63 }
64
65 int PMPI_Info_get_nthkey( MPI_Info info, int n, char *key){
66   CHECK_INFO(1, info)
67   CHECK_NULL(2, MPI_ERR_INFO_KEY, key)
68   if (n<0 || n> MPI_MAX_INFO_KEY)
69     return MPI_ERR_ARG;
70   return info->get_nthkey(n, key);
71 }
72
73 int PMPI_Info_get_valuelen( MPI_Info info, const char *key, int *valuelen, int *flag){
74   *flag=false;
75   CHECK_INFO(1, info)
76   CHECK_NULL(2, MPI_ERR_INFO_KEY, key)
77   CHECK_NULL(2, MPI_ERR_INFO_VALUE, valuelen)
78   return info->get_valuelen(key, valuelen, flag);
79 }
80
81 MPI_Info PMPI_Info_f2c(MPI_Fint info){
82   if(info==-1)
83     return MPI_INFO_NULL;
84   return simgrid::smpi::Info::f2c(info);
85 }
86
87 MPI_Fint PMPI_Info_c2f(MPI_Info info){
88   if(info==MPI_INFO_NULL)
89     return -1;
90   return info->c2f();
91 }