1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-30 00:00:11 +01:00

sample: add sample_data_{insert, remove}()

This commit is contained in:
Steffen Vogel 2019-03-08 15:21:46 +01:00
parent 3f6ddaa653
commit c906143338
2 changed files with 21 additions and 0 deletions

View file

@ -136,6 +136,10 @@ int sample_decref_many(struct sample *smps[], int cnt);
enum signal_type sample_format(const struct sample *s, unsigned idx); enum signal_type sample_format(const struct sample *s, unsigned idx);
void sample_data_insert(struct sample *smp, const union signal_data *src, size_t offset, size_t len);
void sample_data_remove(struct sample *smp, size_t offset, size_t len);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -301,3 +301,20 @@ void sample_dump(struct sample *s)
if (s->signals) if (s->signals)
signal_list_dump(s->signals, s->data, s->length); signal_list_dump(s->signals, s->data, s->length);
} }
void sample_data_insert(struct sample *smp, const union signal_data *src, size_t offset, size_t len)
{
memmove(&smp->data[offset + len], &smp->data[offset], sizeof(smp->data[0]) * (smp->length - offset));
memcpy(&smp->data[offset], src, sizeof(smp->data[0]) * len);
smp->length += len;
}
void sample_data_remove(struct sample *smp, size_t offset, size_t len)
{
size_t sz = sizeof(smp->data[0]) * len;
memmove(&smp->data[offset], &smp->data[offset + len], sz);
smp->length -= len;
}