/* * $HEADER$ */ /** @file * * Implementation for taking care of the attribute that can hang off a comm, * win or datatype. */ #ifndef LAM_ATTRIBUTE_H #define LAM_ATTRIBUTE_H #include #include "mpi.h" #include "lam_config.h" #include "lam/lfc/lam_object.h" #include "lam/lfc/lam_bitmap.h" #include "lam/lfc/lam_hash_table.h" #include "mpi/communicator/communicator.h" #include "mpi/datatype/datatype.h" #include "mpi/win/win.h" /* ******************************************************************* */ /* VPS: These to be moved into mpi.h or mpisys.h later on. This is just to make things compile now, should take other value in a different enum later */ enum lam_consts{ LAM_PREDEFINED = 1, MPI_ERROR, MPI_INVALID_ATTR_KEYVAL, }; /* ******************************************************************* */ enum lam_attribute_type_t{ COMM_ATTR = 1, /**< The attribute belongs to a comm object. Starts with 1 so that we can have it initialized to 0 using memset in the constructor */ WIN_ATTR, /**< The attribute belongs to a win object */ TYPE_ATTR /**< The attribute belongs to datatype object */ }; typedef enum lam_attribute_type_t lam_attribute_type_t; struct lam_attrkey_t { lam_hash_table_t super; /**< hash table pointer which will contain pair */ int a_fhandle; /**