Home | History | Annotate | Download | only in lib

Lines Matching full:data

2  * lib/data.c		Abstract Data
14 * @defgroup data Abstract Data
16 * Abstract data type representing a binary data blob.
19 * - @core_doc{_abstract_data, Abstract Data}
26 * #include <netlink/data.h>
41 * Allocate a new abstract data object.
42 * @arg buf Data buffer containing the actual data.
43 * @arg size Size of data buffer.
45 * Allocates a new abstract data and copies the specified data
48 * @return Newly allocated data handle or NULL
52 struct nl_data *data;
54 data = calloc(1, sizeof(*data));
55 if (!data)
58 data->d_data = calloc(1, size);
59 if (!data->d_data) {
60 free(data);
64 data->d_size = size;
67 memcpy(data->d_data, buf, size);
69 return data;
75 * Allocate abstract data object based on netlink attribute.
78 * Allocates a new abstract data and copies the payload of the
79 * attribute to the abstract data object.
82 * @return Newly allocated data handle or NULL
90 * Clone an abstract data object.
91 * @arg src Abstract data object
101 * Append data to an abstract data object.
102 * @arg data Abstract data object.
103 * @arg buf Data buffer containing the data to be appended.
104 * @arg size Size of data to be apppended.
106 * Reallocates an abstract data and copies the specified data
111 int nl_data_append(struct nl_data *data, void *buf, size_t size)
114 data->d_data = realloc(data->d_data, data->d_size + size);
115 if (!data->d_data)
119 memcpy(data->d_data + data->d_size, buf, size);
121 memset(data->d_data + data->d_size, 0, size);
123 data->d_size += size;
130 * Free an abstract data object.
131 * @arg data Abstract data object.
133 void nl_data_free(struct nl_data *data)
135 if (data)
136 free(data->d_data);
138 free(data);
149 * Get data buffer of abstract data object.
150 * @arg data Abstract data object.
151 * @return Data buffer or NULL if empty.
153 void *nl_data_get(struct nl_data *data)
155 return data->d_size > 0 ? data->d_data : NULL;
159 * Get size of data buffer of abstract data object.
160 * @arg data Abstract data object.
161 * @return Size of data buffer.
163 size_t nl_data_get_size(struct nl_data *data)
165 return data->d_size;
176 * Compare two abstract data objects.
177 * @arg a Abstract data object.
178 * @arg b Another abstract data object.