@@ -26,6 +26,7 @@ using qvi_mpi_group_tab_t = std::unordered_map<
26
26
>;
27
27
28
28
struct qvi_mpi_group_s {
29
+ int qvim_rc = QV_SUCCESS;
29
30
/* * ID used for table lookups */
30
31
qvi_mpi_group_id_t tabid = 0 ;
31
32
/* * ID (rank) in group */
@@ -34,6 +35,20 @@ struct qvi_mpi_group_s {
34
35
int size = 0 ;
35
36
/* * MPI communicator */
36
37
MPI_Comm mpi_comm = MPI_COMM_NULL;
38
+ /* * Constructor */
39
+ qvi_mpi_group_s (void ) = default ;
40
+ /* * Destructor */
41
+ ~qvi_mpi_group_s (void ) = default ;
42
+ /* * Assignment operator. */
43
+ void operator =
44
+ (const qvi_mpi_group_s &src)
45
+ {
46
+ qvim_rc = src.qvim_rc ;
47
+ tabid = src.tabid ;
48
+ id = src.id ;
49
+ size = src.size ;
50
+ mpi_comm = src.mpi_comm ;
51
+ }
37
52
};
38
53
39
54
struct qvi_mpi_s {
@@ -81,8 +96,7 @@ cp_mpi_group(
81
96
const qvi_mpi_group_t *src,
82
97
qvi_mpi_group_t *dst
83
98
) {
84
- static_assert (std::is_trivially_copyable<qvi_mpi_group_t >::value, " " );
85
- memmove (dst, src, sizeof (*src));
99
+ *dst = *src;
86
100
}
87
101
88
102
/* *
@@ -422,25 +436,14 @@ int
422
436
qvi_mpi_group_new (
423
437
qvi_mpi_group_t **group
424
438
) {
425
- int rc = QV_SUCCESS;
426
-
427
- qvi_mpi_group_t *igroup = qvi_new qvi_mpi_group_t ();
428
- if (!igroup) rc = QV_ERR_OOR;
429
-
430
- *group = igroup;
431
- return rc;
439
+ return qvi_new_rc (group);
432
440
}
433
441
434
442
void
435
443
qvi_mpi_group_free (
436
444
qvi_mpi_group_t **group
437
445
) {
438
- if (!group) return ;
439
- qvi_mpi_group_t *igroup = *group;
440
- if (!igroup) goto out;
441
- delete igroup;
442
- out:
443
- *group = nullptr ;
446
+ qvi_delete (group);
444
447
}
445
448
446
449
int
0 commit comments