General | |
|
| |
| struct nl_data * | nl_data_alloc (void *buf, size_t size) |
| Allocate a new abstract data object. | |
| struct nl_data * | nl_data_clone (struct nl_data *src) |
| Clone an abstract data object. | |
| int | nl_data_append (struct nl_data *data, void *buf, size_t size) |
| Append data to an abstract data object. | |
| void | nl_data_free (struct nl_data *data) |
| Free an abstract data object. | |
Attribute Access | |
|
| |
| void * | nl_data_get (struct nl_data *data) |
| Get data buffer of abstract data object. | |
| size_t | nl_data_get_size (struct nl_data *data) |
| Get size of data buffer of abstract data object. | |
Misc | |
|
| |
| int | nl_data_cmp (struct nl_data *a, struct nl_data *b) |
| Compare two abstract data objects. | |
| struct nl_data* nl_data_alloc | ( | void * | buf, | |
| size_t | size | |||
| ) | [read] |
| buf | Data buffer containing the actual data. | |
| size | Size of data buffer. |
Allocates a new abstract data and copies the specified data buffer into the new handle.
Definition at line 38 of file data.c.
Referenced by nl_data_clone(), and nla_get_data().
00039 { 00040 struct nl_data *data; 00041 00042 data = calloc(1, sizeof(*data)); 00043 if (!data) 00044 goto errout; 00045 00046 data->d_data = calloc(1, size); 00047 if (!data->d_data) { 00048 free(data); 00049 goto errout; 00050 } 00051 00052 data->d_size = size; 00053 00054 if (buf) 00055 memcpy(data->d_data, buf, size); 00056 00057 return data; 00058 errout: 00059 nl_errno(ENOMEM); 00060 return NULL; 00061 }
| struct nl_data* nl_data_clone | ( | struct nl_data * | src | ) | [read] |
| src | Abstract data object |
Definition at line 69 of file data.c.
References nl_data_alloc().
00070 { 00071 return nl_data_alloc(src->d_data, src->d_size); 00072 }
| int nl_data_append | ( | struct nl_data * | data, | |
| void * | buf, | |||
| size_t | size | |||
| ) |
| data | Abstract data object. | |
| buf | Data buffer containing the data to be appended. | |
| size | Size of data to be apppended. |
Reallocates an abstract data and copies the specified data buffer into the new handle.
Definition at line 85 of file data.c.
Referenced by rtnl_u32_add_key().
00086 { 00087 if (size < 0) 00088 BUG(); 00089 00090 if (size > 0) { 00091 data->d_data = realloc(data->d_data, data->d_size + size); 00092 if (!data->d_data) 00093 return nl_errno(ENOMEM); 00094 00095 if (buf) 00096 memcpy(data->d_data + data->d_size, buf, size); 00097 else 00098 memset(data->d_data + data->d_size, 0, size); 00099 00100 data->d_size += size; 00101 } 00102 00103 return 0; 00104 }
| void nl_data_free | ( | struct nl_data * | data | ) |
| void* nl_data_get | ( | struct nl_data * | data | ) |
| data | Abstract data object. |
Definition at line 130 of file data.c.
Referenced by nl_data_cmp(), and nla_put_data().
| size_t nl_data_get_size | ( | struct nl_data * | data | ) |
| data | Abstract data object. |
Definition at line 140 of file data.c.
Referenced by nl_data_cmp(), and nla_put_data().
| int nl_data_cmp | ( | struct nl_data * | a, | |
| struct nl_data * | b | |||
| ) |
| a | Abstract data object. | |
| b | Another abstract data object. |
Definition at line 160 of file data.c.
References nl_data_get(), and nl_data_get_size().
00161 { 00162 void *a_ = nl_data_get(a); 00163 void *b_ = nl_data_get(b); 00164 00165 if (a_ && b_) 00166 return memcmp(a_, b_, nl_data_get_size(a)); 00167 else 00168 return -1; 00169 }
1.6.1