12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include "SoundBlock.h"
- #include <memory.h>
- #include <malloc.h>
- SoundBlock::SoundBlock()
- {
- data = 0;
- size = 0;
- next = 0;
- prev = 0;
- start = 0;
- used = 0;
- }
- SoundBlock::~SoundBlock()
- {
- if (data) free(data);
- }
- void SoundBlock::SetData(void *new_data, size_t new_size)
- {
- if (!data) data = malloc(new_size);
- else if (new_size > size)
- {
- data = realloc(data, new_size);
- if (!data) data = malloc(new_size);
- else size = new_size;
- }
- if (data)
- {
- memcpy(data, new_data, new_size);
- used = new_size;
- }
- else
- {
- used = 0;
- }
- start = 0;
- }
- void SoundBlock::Advance(size_t d)
- {
- used -= d;
- start += d;
- }
- const void *SoundBlock::GetData()
- {
- return (char*)data + start;
- }
- size_t SoundBlock::GetDataSize()
- {
- return used;
- }
- size_t SoundBlock::Dump(void * out, size_t out_size)
- {
- const void * src = GetData();
- if (out_size > used) out_size = used;
- memcpy(out, src, out_size);
- Advance(out_size);
- return out_size;
- }
- void SoundBlock::Clear()
- {
- used = 0;
- }
|