/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
/*
* (C) 2001 by Argonne National Laboratory.
* See COPYRIGHT in top-level directory.
*/
#include <mpiimpl.h>
#include <mpir_dataloop.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct external32_basic_size {
MPI_Datatype el_type;
MPI_Aint el_size;
} external32_basic_size_t;
static external32_basic_size_t external32_basic_size_array[] = {
{MPI_PACKED, 1},
{MPI_BYTE, 1},
{MPI_CHAR, 1},
{MPI_UNSIGNED_CHAR, 1},
{MPI_SIGNED_CHAR, 1},
{MPI_WCHAR, 2},
{MPI_SHORT, 2},
{MPI_UNSIGNED_SHORT, 2},
{MPI_INT, 4},
{MPI_UNSIGNED, 4},
{MPI_LONG, 4},
{MPI_UNSIGNED_LONG, 4},
{MPI_LONG_LONG, 8},
{MPI_LONG_LONG_INT, 8},
{MPI_UNSIGNED_LONG_LONG, 8},
{MPI_FLOAT, 4},
{MPI_DOUBLE, 8},
{MPI_LONG_DOUBLE, 16},
{MPI_C_BOOL, 1},
{MPI_INT8_T, 1},
{MPI_INT16_T, 2},
{MPI_INT32_T, 4},
{MPI_INT64_T, 8},
{MPI_UINT8_T, 1},
{MPI_UINT16_T, 2},
{MPI_UINT32_T, 4},
{MPI_UINT64_T, 8},
{MPI_AINT, 8},
{MPI_COUNT, 8},
{MPI_OFFSET, 8},
{MPI_C_COMPLEX, 2 * 4},
{MPI_C_FLOAT_COMPLEX, 2 * 4},
{MPI_C_DOUBLE_COMPLEX, 2 * 8},
{MPI_C_LONG_DOUBLE_COMPLEX, 2 * 16},
{MPI_CHARACTER, 1},
{MPI_LOGICAL, 4},
{MPI_INTEGER, 4},
{MPI_REAL, 4},
{MPI_DOUBLE_PRECISION, 8},
{MPI_COMPLEX, 8},
{MPI_DOUBLE_COMPLEX, 16},
{MPI_INTEGER1, 1},
{MPI_INTEGER2, 2},
{MPI_INTEGER4, 4},
{MPI_INTEGER8, 8},
{MPI_INTEGER16, 16},
{MPI_REAL4, 4},
{MPI_REAL8, 8},
{MPI_REAL16, 16},
{MPI_COMPLEX8, 2 * 4},
{MPI_COMPLEX16, 2 * 8},
{MPI_COMPLEX32, 2 * 16},
{MPI_CXX_BOOL, 1},
{MPI_CXX_FLOAT_COMPLEX, 2 * 4},
{MPI_CXX_DOUBLE_COMPLEX, 2 * 8},
{MPI_CXX_LONG_DOUBLE_COMPLEX, 2 * 16}
};
MPI_Aint MPII_Datatype_get_basic_size_external32(MPI_Datatype el_type)
{
MPI_Aint ret = (MPI_Aint) 0;
unsigned int i = 0;
for (i = 0; i < (sizeof(external32_basic_size_array) / sizeof(external32_basic_size_t)); i++) {
if (external32_basic_size_array[i].el_type == el_type) {
ret = external32_basic_size_array[i].el_size;
break;
}
}
return ret;
}