This source file includes following definitions.
- opal_reachable_construct
- opal_reachable_destruct
- opal_reachable_allocate
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 #include "opal_config.h"
  12 
  13 #include "opal/class/opal_object.h"
  14 
  15 #include "opal/mca/reachable/reachable.h"
  16 #include "opal/mca/reachable/base/base.h"
  17 
  18 
  19 static void opal_reachable_construct(opal_reachable_t *reachable)
  20 {
  21     reachable->weights = NULL;
  22 }
  23 
  24 
  25 static void opal_reachable_destruct(opal_reachable_t * reachable)
  26 {
  27     if (NULL != reachable->memory) {
  28         free(reachable->memory);
  29     }
  30 }
  31 
  32 
  33 opal_reachable_t * opal_reachable_allocate(unsigned int num_local,
  34                                            unsigned int num_remote)
  35 {
  36     char *memory;
  37     unsigned int i;
  38     opal_reachable_t *reachable = OBJ_NEW(opal_reachable_t);
  39 
  40     reachable->num_local = num_local;
  41     reachable->num_remote = num_remote;
  42 
  43     
  44 
  45     memory = malloc(sizeof(int*) * num_local +
  46                     num_local * (sizeof(int) * num_remote));
  47     if (memory == NULL) return NULL;
  48 
  49     reachable->memory = (void*)memory;
  50     reachable->weights = (int**)reachable->memory;
  51     memory += (sizeof(int*) * num_local);
  52 
  53     for (i = 0; i < num_local; i++) {
  54         reachable->weights[i] = (int*)memory;
  55         memory += (sizeof(int) * num_remote);
  56     }
  57 
  58     return reachable;
  59 }
  60 
  61 OBJ_CLASS_INSTANCE(
  62     opal_reachable_t,
  63     opal_object_t,
  64     opal_reachable_construct,
  65     opal_reachable_destruct
  66 );