49 #ifndef REDUCT_TRANS_VECTOR_OPERATORS_H
50 #define REDUCT_TRANS_VECTOR_OPERATORS_H
56 #include "RTOp_MPI_config.h"
63 #define CALL_API MPIAPI
68 typedef Teuchos_Ordinal RTOp_index_type;
69 typedef double RTOp_value_type;
70 typedef char RTOp_char_type;
191 typedef void* RTOp_ReductTarget;
192 #define RTOp_REDUCT_OBJ_NULL 0
193 #define RTOp_NUM_DATA_TYPES 3
258 typedef void (CALL_API *RTOp_reduct_op_func_ptr_t) (
void *,
void *,
int *, RTOp_Datatype * );
264 #define RTOp_ERR_INVALID_USAGE -1
266 #define RTOp_ERR_INVALID_NUM_VECS -2
268 #define RTOp_ERR_INVALID_NUM_TARG_VECS -3
270 #define RTOp_ERR_INCOMPATIBLE_VECS -5
272 #define RTOp_SERVER_INCOMPATIBLE_OPS -6
274 #define RTOp_SERVER_OP_NAME_TOO_LONG -7
299 RTOp_index_type global_offset;
301 RTOp_index_type sub_dim;
303 const RTOp_value_type *values;
305 ptrdiff_t values_stride;
332 RTOp_index_type global_offset;
334 RTOp_index_type sub_dim;
336 RTOp_value_type *values;
338 ptrdiff_t values_stride;
344 RTOp_index_type global_offset, RTOp_index_type sub_dim
345 ,
const RTOp_value_type values[], ptrdiff_t values_stride
356 RTOp_index_type global_offset, RTOp_index_type sub_dim
357 ,RTOp_value_type values[], ptrdiff_t values_stride
426 ,
const char** op_name
462 ,RTOp_value_type value_data[]
464 ,RTOp_index_type index_data[]
466 ,RTOp_char_type char_data[]
484 ,
const RTOp_value_type value_data[]
486 ,
const RTOp_index_type index_data[]
488 ,
const RTOp_char_type char_data[]
543 ,RTOp_ReductTarget *reduct_obj
566 ,RTOp_ReductTarget reduct_obj
589 , RTOp_ReductTarget* reduct_obj );
603 ,
const RTOp_ReductTarget reduct_obj
605 ,RTOp_value_type value_data[]
607 ,RTOp_index_type index_data[]
609 ,RTOp_char_type char_data[]
624 ,
const RTOp_value_type value_data[]
626 ,
const RTOp_index_type index_data[]
628 ,
const RTOp_char_type char_data[]
629 ,RTOp_ReductTarget reduct_obj
641 ,
int *coord_invariant
711 ,
const int num_targ_vecs
713 ,RTOp_ReductTarget reduct_obj
742 ,RTOp_ReductTarget in_reduct_obj
743 ,RTOp_ReductTarget inout_reduct_obj
770 ,RTOp_reduct_op_func_ptr_t *reduct_op_func_ptr
836 ,RTOp_ReductTarget reduct_obj );
846 ,RTOp_ReductTarget reduct_obj );
848 int (*reduce_reduct_objs)(
850 ,RTOp_ReductTarget in_reduct_obj, RTOp_ReductTarget inout_reduct_obj );
852 int (*get_reduct_op)(
854 ,RTOp_reduct_op_func_ptr_t* reduct_op_func_ptr );
909 ,
const void* instance_data
943 ,
const void *instance_data
981 ,
const void *instance_data
1021 ,
const void *instance_data
1054 ,
const void *instance_data
1057 ,RTOp_value_type value_data[]
1059 ,RTOp_index_type index_data[]
1061 ,RTOp_char_type char_data[]
1099 ,
const void *instance_data
1101 ,
const RTOp_value_type value_data[]
1103 ,
const RTOp_index_type index_data[]
1105 ,
const RTOp_char_type char_data[]
1181 const char op_class_name[]
1210 ,
char op_class_name[]
1239 const char op_class_name[]
1241 ,
const RTOp_value_type value_data[]
1243 ,
const RTOp_index_type index_data[]
1245 ,
const RTOp_char_type char_data[]
int RTOp_get_reduct_type_num_entries(const struct RTOp_RTOp *op, int *num_values, int *num_indexes, int *num_chars)
int RTOp_load_op_state(int num_values, const RTOp_value_type value_data[], int num_indexes, const RTOp_index_type index_data[], int num_chars, const RTOp_char_type char_data[], struct RTOp_RTOp *op)
int(* get_obj_type_num_entries)(const struct RTOp_obj_type_vtbl_t *vtbl, const void *instance_data, int *num_values, int *num_indexes, int *num_chars)
int RTOp_load_reduct_obj_state(const struct RTOp_RTOp *op, int num_values, const RTOp_value_type value_data[], int num_indexes, const RTOp_index_type index_data[], int num_chars, const RTOp_char_type char_data[], RTOp_ReductTarget reduct_obj)
int RTOp_reduct_obj_create(const struct RTOp_RTOp *op, RTOp_ReductTarget *reduct_obj)
void RTOp_mutable_sub_vector(RTOp_index_type global_offset, RTOp_index_type sub_dim, RTOp_value_type values[], ptrdiff_t values_stride, struct RTOp_MutableSubVector *sub_vec)
int RTOp_reduce_reduct_objs(const struct RTOp_RTOp *op, RTOp_ReductTarget in_reduct_obj, RTOp_ReductTarget inout_reduct_obj)
int(* obj_create)(const struct RTOp_obj_type_vtbl_t *vtbl, const void *instance_data, void **obj)
typedef void(CALL_API *RTOp_reduct_op_func_ptr_t)(void *
int RTOp_extract_reduct_obj_state(const struct RTOp_RTOp *op, const RTOp_ReductTarget reduct_obj, int num_values, RTOp_value_type value_data[], int num_indexes, RTOp_index_type index_data[], int num_chars, RTOp_char_type char_data[])
int(* extract_state)(const struct RTOp_obj_type_vtbl_t *vtbl, const void *instance_data, void *obj, int num_values, RTOp_value_type value_data[], int num_indexes, RTOp_index_type index_data[], int num_chars, RTOp_char_type char_data[])
void RTOp_sub_vector(RTOp_index_type global_offset, RTOp_index_type sub_dim, const RTOp_value_type values[], ptrdiff_t values_stride, struct RTOp_SubVector *sub_vec)
int RTOp_reduct_obj_free(const struct RTOp_RTOp *op, RTOp_ReductTarget *reduct_obj)
int RTOp_get_op_type_num_entries(const struct RTOp_RTOp *op, int *num_values, int *num_indexes, int *num_chars)
int RTOp_get_op_name(const struct RTOp_RTOp *op, const char **op_name)
int RTOp_apply_op(const struct RTOp_RTOp *op, const int num_vecs, const struct RTOp_SubVector sub_vecs[], const int num_targ_vecs, const struct RTOp_MutableSubVector targ_sub_vecs[], RTOp_ReductTarget reduct_obj)
int RTOp_Server_lookup_op_name(const struct RTOp_RTOp_vtbl_t *op_class_vtbl, char op_class_name[])
int RTOp_Server_add_op_name_vtbl(const char op_class_name[], const struct RTOp_RTOp_vtbl_t *op_class_vtbl)
int RTOp_free_op(struct RTOp_RTOp *op)
int RTOp_extract_op_state(const struct RTOp_RTOp *op, int num_values, RTOp_value_type value_data[], int num_indexes, RTOp_index_type index_data[], int num_chars, RTOp_char_type char_data[])
int(* obj_free)(const struct RTOp_obj_type_vtbl_t *vtbl, const void *instance_data, void **obj)
int(* obj_reinit)(const struct RTOp_obj_type_vtbl_t *vtbl, const void *instance_data, void *obj)
int(* reduct_obj_reinit)(const struct RTOp_RTOp_vtbl_t *vtbl, const void *obj_data, RTOp_ReductTarget reduct_obj)
int RTOp_Server_construct_op(const char op_class_name[], int num_values, const RTOp_value_type value_data[], int num_indexes, const RTOp_index_type index_data[], int num_chars, const RTOp_char_type char_data[], struct RTOp_RTOp *op)
int(* load_state)(const struct RTOp_obj_type_vtbl_t *vtbl, const void *instance_data, int num_values, const RTOp_value_type value_data[], int num_indexes, const RTOp_index_type index_data[], int num_chars, const RTOp_char_type char_data[], void **obj)
void RTOp_mutable_sub_vector_null(struct RTOp_MutableSubVector *sub_vec)
int RTOp_reduct_obj_reinit(const struct RTOp_RTOp *op, RTOp_ReductTarget reduct_obj)
int RTOp_get_reduct_op(const struct RTOp_RTOp *op, RTOp_reduct_op_func_ptr_t *reduct_op_func_ptr)
void RTOp_Server_dump(FILE *file)
void RTOp_sub_vector_null(struct RTOp_SubVector *sub_vec)
int RTOp_coord_invariant(const struct RTOp_RTOp *op, int *coord_invariant)