This source file includes following definitions.
- opal_value_array_construct
- opal_value_array_destruct
- opal_value_array_set_size
   1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 
  10 
  11 
  12 
  13 
  14 
  15 
  16 
  17 
  18 
  19 #include "opal_config.h"
  20 
  21 #include "opal/class/opal_value_array.h"
  22 
  23 
  24 static void opal_value_array_construct(opal_value_array_t* array)
  25 {
  26     array->array_items = NULL;
  27     array->array_size = 0;
  28     array->array_item_sizeof = 0;
  29     array->array_alloc_size = 0;
  30 }
  31 
  32 static void opal_value_array_destruct(opal_value_array_t* array)
  33 {
  34     if (NULL != array->array_items)
  35         free(array->array_items);
  36 }
  37 
  38 OBJ_CLASS_INSTANCE(
  39     opal_value_array_t,
  40     opal_object_t,
  41     opal_value_array_construct,
  42     opal_value_array_destruct
  43 );
  44 
  45 
  46 int opal_value_array_set_size(opal_value_array_t* array, size_t size)
  47 {
  48 #if OPAL_ENABLE_DEBUG
  49     if(array->array_item_sizeof == 0) {
  50         opal_output(0, "opal_value_array_set_size: item size must be initialized");
  51         return OPAL_ERR_BAD_PARAM;
  52     }
  53 #endif
  54 
  55     if(size > array->array_alloc_size) {
  56         while(array->array_alloc_size < size)
  57             array->array_alloc_size <<= 1;
  58         array->array_items = (unsigned char *)realloc(array->array_items,
  59             array->array_alloc_size * array->array_item_sizeof);
  60         if (NULL == array->array_items)
  61             return OPAL_ERR_OUT_OF_RESOURCE;
  62     }
  63     array->array_size = size;
  64     return OPAL_SUCCESS;
  65 }
  66