This source file includes following definitions.
- MPI_T_enum_get_item
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "ompi/mpi/tool/mpit-internal.h"
15
16 #if OPAL_HAVE_WEAK_SYMBOLS && OMPI_PROFILING_DEFINES
17 #pragma weak MPI_T_enum_get_item = PMPI_T_enum_get_item
18 #endif
19
20 #if OMPI_PROFILING_DEFINES
21 #include "ompi/mpi/tool/profile/defines.h"
22 #endif
23
24
25 int MPI_T_enum_get_item(MPI_T_enum enumtype, int index, int *value, char *name,
26 int *name_len)
27 {
28 const char *tmp;
29 int rc, count;
30
31 if (!mpit_is_initialized ()) {
32 return MPI_T_ERR_NOT_INITIALIZED;
33 }
34
35 ompi_mpit_lock ();
36
37 do {
38 rc = enumtype->get_count (enumtype, &count);
39 if (OPAL_SUCCESS != rc) {
40 rc = MPI_ERR_OTHER;
41 break;
42 }
43
44 if (index >= count) {
45 rc = MPI_T_ERR_INVALID_INDEX;
46 break;
47 }
48
49 rc = enumtype->get_value(enumtype, index, value, &tmp);
50 if (OPAL_SUCCESS != rc) {
51 rc = MPI_ERR_OTHER;
52 break;
53 }
54
55 mpit_copy_string(name, name_len, tmp);
56 } while (0);
57
58 ompi_mpit_unlock ();
59
60 return rc;
61 }