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