+ int sendcount = std::stoi(action[2]);
+ std::shared_ptr<std::vector<int>> recvcounts(new std::vector<int>(comm_size));
+ std::vector<int> disps(comm_size, 0);
+
+ int datatype_index = 0, disp_index = 0;
+ if (action[3 + 2 * comm_size]) { /* datatype + disp are specified */
+ datatype_index = 3 + comm_size;
+ disp_index = datatype_index + 1;
+ } else if (action[3 + 2 * comm_size]) { /* disps specified; datatype is not specified; use the default one */
+ datatype_index = -1;
+ disp_index = 3 + comm_size;
+ } else if (action[3 + comm_size]) { /* only datatype, no disp specified */
+ datatype_index = 3 + comm_size;
+ }