mirror of
https://github.com/TomHarte/CLK.git
synced 2024-11-30 04:50:08 +00:00
Documented.
This commit is contained in:
parent
c2349ee3f4
commit
fda90c5aef
@ -34,9 +34,9 @@ uint8_t *ArrayBuilder::get_input_storage(size_t size)
|
|||||||
return get_storage(size, input_);
|
return get_storage(size, input_);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *ArrayBuilder::reget_input_storage(size_t &size)
|
uint8_t *ArrayBuilder::get_unflushed_input(size_t &size)
|
||||||
{
|
{
|
||||||
return input_.reget_storage(size);
|
return input_.get_unflushed(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *ArrayBuilder::get_output_storage(size_t size)
|
uint8_t *ArrayBuilder::get_output_storage(size_t size)
|
||||||
@ -44,9 +44,9 @@ uint8_t *ArrayBuilder::get_output_storage(size_t size)
|
|||||||
return get_storage(size, output_);
|
return get_storage(size, output_);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *ArrayBuilder::reget_output_storage(size_t &size)
|
uint8_t *ArrayBuilder::get_unflushed_input(size_t &size)
|
||||||
{
|
{
|
||||||
return output_.reget_storage(size);
|
return output_.get_unflushed(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArrayBuilder::flush()
|
void ArrayBuilder::flush()
|
||||||
@ -127,7 +127,7 @@ uint8_t *ArrayBuilder::Buffer::get_storage(size_t size)
|
|||||||
return pointer;
|
return pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *ArrayBuilder::Buffer::reget_storage(size_t &size)
|
uint8_t *ArrayBuilder::Buffer::get_unflushed(size_t &size)
|
||||||
{
|
{
|
||||||
if(is_full)
|
if(is_full)
|
||||||
{
|
{
|
||||||
|
@ -37,22 +37,43 @@ class ArrayBuilder {
|
|||||||
/// to the @c submission_function. [Teleological: this is provided as a testing hook.]
|
/// to the @c submission_function. [Teleological: this is provided as a testing hook.]
|
||||||
ArrayBuilder(size_t input_size, size_t output_size, std::function<void(bool is_input, uint8_t *, size_t)> submission_function);
|
ArrayBuilder(size_t input_size, size_t output_size, std::function<void(bool is_input, uint8_t *, size_t)> submission_function);
|
||||||
|
|
||||||
/// Attempts to add @c size bytes
|
/// Attempts to add @c size bytes to the input set.
|
||||||
|
/// @returns a pointer to the allocated area if allocation was possible; @c nullptr otherwise.
|
||||||
uint8_t *get_input_storage(size_t size);
|
uint8_t *get_input_storage(size_t size);
|
||||||
uint8_t *reget_input_storage(size_t &size);
|
|
||||||
|
|
||||||
|
/// Gets the size of and a pointer to all data so far added to the input set but not yet flushed.
|
||||||
|
/// @returns a pointer from which it is safe to access @c size elements, which contains all regions returned via
|
||||||
|
/// @c get_input_storage in FIFO order.
|
||||||
|
uint8_t *get_unflushed_input(size_t &size);
|
||||||
|
|
||||||
|
/// Attempts to add @c size bytes to the output set.
|
||||||
|
/// @returns a pointer to the allocated area if allocation was possible; @c nullptr otherwise.
|
||||||
uint8_t *get_output_storage(size_t size);
|
uint8_t *get_output_storage(size_t size);
|
||||||
uint8_t *reget_output_storage(size_t &size);
|
|
||||||
|
|
||||||
|
/// Gets the size of and a pointer to all data so far added to the output set but not yet flushed.
|
||||||
|
/// @returns a pointer from which it is safe to access @c size elements, which contains all regions returned via
|
||||||
|
/// @c get_input_storage in FIFO order.
|
||||||
|
uint8_t *get_unflushed_output(size_t &size);
|
||||||
|
|
||||||
|
/// @returns @c true if either of the input or output storage areas is currently exhausted; @c false otherwise.
|
||||||
bool is_full();
|
bool is_full();
|
||||||
|
|
||||||
|
/// If neither input nor output was exhausted since the last flush, atomically commits both input and output
|
||||||
|
/// up to the currently allocated size for use upon the next @c submit. Otherwise acts as a no-op.
|
||||||
void flush();
|
void flush();
|
||||||
|
|
||||||
|
/// Binds the input array to GL_ARRAY_BUFFER.
|
||||||
void bind_input();
|
void bind_input();
|
||||||
|
|
||||||
|
/// Binds the output array to GL_ARRAY_BUFFER.
|
||||||
void bind_output();
|
void bind_output();
|
||||||
|
|
||||||
struct Submission {
|
struct Submission {
|
||||||
size_t input_size, output_size;
|
size_t input_size, output_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Submits all flushed input and output data to the corresponding arrays.
|
||||||
|
/// @returns A @c Submission record, indicating how much data of each type was submitted.
|
||||||
Submission submit();
|
Submission submit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -62,7 +83,7 @@ class ArrayBuilder {
|
|||||||
~Buffer();
|
~Buffer();
|
||||||
|
|
||||||
uint8_t *get_storage(size_t size);
|
uint8_t *get_storage(size_t size);
|
||||||
uint8_t *reget_storage(size_t &size);
|
uint8_t *get_unflushed(size_t &size);
|
||||||
|
|
||||||
void flush();
|
void flush();
|
||||||
size_t submit(bool is_input);
|
size_t submit(bool is_input);
|
||||||
@ -82,7 +103,6 @@ class ArrayBuilder {
|
|||||||
|
|
||||||
std::mutex buffer_mutex_;
|
std::mutex buffer_mutex_;
|
||||||
bool is_full_;
|
bool is_full_;
|
||||||
;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user