static size_t size_array (gfc_expr *e) { mpz_t array_size; size_t elt_size = gfc_target_expr_size (e->value.constructor->expr); gfc_array_size (e, &array_size); return (size_t)mpz_get_ui (array_size) * elt_size; }
static int encode_array (gfc_expr *expr, unsigned char *buffer, size_t buffer_size) { mpz_t array_size; int i; int ptr = 0; gfc_array_size (expr, &array_size); for (i = 0; i < (int)mpz_get_ui (array_size); i++) { ptr += gfc_target_encode_expr (gfc_get_array_element (expr, i), &buffer[ptr], buffer_size - ptr); } mpz_clear (array_size); return ptr; }
static int encode_array (gfc_expr *expr, unsigned char *buffer, size_t buffer_size) { mpz_t array_size; int i; int ptr = 0; gfc_constructor_base ctor = expr->value.constructor; gfc_array_size (expr, &array_size); for (i = 0; i < (int)mpz_get_ui (array_size); i++) { ptr += gfc_target_encode_expr (gfc_constructor_lookup_expr (ctor, i), &buffer[ptr], buffer_size - ptr); } mpz_clear (array_size); return ptr; }