This source file includes following definitions.
- opal_datatype_construct
- opal_datatype_destruct
- opal_datatype_create
- opal_datatype_create_desc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include "opal_config.h"
24
25 #include <stddef.h>
26
27 #include "opal/constants.h"
28 #include "opal/datatype/opal_datatype.h"
29 #include "opal/datatype/opal_datatype_internal.h"
30 #include "limits.h"
31 #include "opal/prefetch.h"
32
33 static void opal_datatype_construct( opal_datatype_t* pData )
34 {
35 pData->size = 0;
36 pData->flags = OPAL_DATATYPE_FLAG_CONTIGUOUS;
37 pData->id = 0;
38 pData->bdt_used = 0;
39 pData->size = 0;
40 pData->true_lb = LONG_MAX;
41 pData->true_ub = LONG_MIN;
42 pData->lb = LONG_MAX;
43 pData->ub = LONG_MIN;
44 pData->align = 1;
45 pData->nbElems = 0;
46 memset(pData->name, 0, OPAL_MAX_OBJECT_NAME);
47
48 pData->desc.desc = NULL;
49 pData->desc.length = 0;
50 pData->desc.used = 0;
51
52 pData->opt_desc.desc = NULL;
53 pData->opt_desc.length = 0;
54 pData->opt_desc.used = 0;
55
56 pData->ptypes = NULL;
57 pData->loops = 0;
58 }
59
60 static void opal_datatype_destruct( opal_datatype_t* datatype )
61 {
62
63
64
65
66 if( NULL != datatype->opt_desc.desc ) {
67 if( datatype->opt_desc.desc != datatype->desc.desc )
68 free( datatype->opt_desc.desc );
69 datatype->opt_desc.length = 0;
70 datatype->opt_desc.used = 0;
71 datatype->opt_desc.desc = NULL;
72 }
73 if (!opal_datatype_is_predefined(datatype)) {
74 if( NULL != datatype->desc.desc ) {
75 free( datatype->desc.desc );
76 datatype->desc.length = 0;
77 datatype->desc.used = 0;
78 datatype->desc.desc = NULL;
79 }
80 }
81
82 if( (NULL != datatype->ptypes) && (!opal_datatype_is_predefined(datatype)) ) {
83 free(datatype->ptypes);
84 datatype->ptypes = NULL;
85 }
86
87
88 datatype->name[0] = '\0';
89 }
90
91 OBJ_CLASS_INSTANCE(opal_datatype_t, opal_object_t, opal_datatype_construct, opal_datatype_destruct);
92
93 opal_datatype_t* opal_datatype_create( int32_t expectedSize )
94 {
95 opal_datatype_t* datatype = (opal_datatype_t*)OBJ_NEW(opal_datatype_t);
96
97 if( expectedSize == -1 ) expectedSize = DT_INCREASE_STACK;
98 datatype->desc.length = expectedSize + 1;
99 datatype->desc.used = 0;
100 datatype->desc.desc = (dt_elem_desc_t*)calloc(datatype->desc.length, sizeof(dt_elem_desc_t));
101
102 memset( datatype->name, 0, OPAL_MAX_OBJECT_NAME );
103 return datatype;
104 }
105
106 int32_t opal_datatype_create_desc( opal_datatype_t * datatype, int32_t expectedSize )
107 {
108 if( expectedSize == -1 )
109 expectedSize = DT_INCREASE_STACK;
110 datatype->desc.length = expectedSize + 1;
111 datatype->desc.used = 0;
112 datatype->desc.desc = (dt_elem_desc_t*)calloc(datatype->desc.length, sizeof(dt_elem_desc_t));
113 if (NULL == datatype->desc.desc)
114 return OPAL_ERR_OUT_OF_RESOURCE;
115 return OPAL_SUCCESS;
116 }