11#ifndef OAKFIELD_SIM_BUFFER_H
12#define OAKFIELD_SIM_BUFFER_H
129 size_t index_count,
size_t *out_offset);
Multidimensional contiguous field abstraction with configurable layout.
SimResult
Return codes shared by libsimcore modules.
Definition field.h:29
const char * sim_buffer_data_type_name(SimBufferDataType type)
Return a stable lowercase name for a buffer storage type.
SimBufferView sim_buffer_view(const SimBuffer *buffer)
Return a non-owning view over an owning buffer.
const SimFieldLayout * sim_buffer_layout(const SimBuffer *buffer)
Return the immutable layout descriptor for an owning buffer.
SimBuffer * sim_buffer_create(size_t rank, const size_t *shape, SimBufferDataType type)
Allocate a zero-initialized owning buffer with row-major layout.
void * sim_buffer_data(SimBuffer *buffer)
Return a mutable pointer to owned element storage.
SimBufferDataType
Scalar storage types supported by standalone buffers and generic views.
Definition sim_buffer.h:26
@ SIM_BUFFER_I32
Definition sim_buffer.h:30
@ SIM_BUFFER_U64
Definition sim_buffer.h:33
@ SIM_BUFFER_UNKNOWN
Definition sim_buffer.h:29
@ SIM_BUFFER_I64
Definition sim_buffer.h:31
@ SIM_BUFFER_DOUBLE
Definition sim_buffer.h:27
@ SIM_BUFFER_U32
Definition sim_buffer.h:32
@ SIM_BUFFER_U8
Definition sim_buffer.h:35
@ SIM_BUFFER_I8
Definition sim_buffer.h:34
@ SIM_BUFFER_COMPLEX_DOUBLE
Definition sim_buffer.h:28
SimResult sim_buffer_reshape(SimBuffer *buffer, size_t rank, const size_t *shape)
Replace a buffer's layout without changing its element count.
bool sim_buffer_view_is_valid(const SimBufferView *view)
Test whether a buffer view has data, count, and a supported type.
bool sim_buffer_view_set_complex(SimBufferView *view, size_t logical_index, SimComplexDouble value)
Write a SimComplexDouble value into a logical view element.
size_t sim_buffer_element_size(SimBufferDataType type)
Return the storage size of one buffer element.
size_t sim_buffer_bytes(const SimBuffer *buffer)
Return the storage size in bytes.
SimBufferDataType sim_buffer_data_type_from_scalar_domain(SimScalarDomain domain)
Map a scalar-domain descriptor to a supported buffer storage type.
bool sim_buffer_view_offset_for_linear_index(const SimBufferView *view, size_t logical_index, size_t *out_offset)
Resolve a linear logical index to a physical element offset.
SimBuffer * sim_buffer_create_1d(size_t count, SimBufferDataType type)
Allocate a one-dimensional zero-initialized owning buffer.
bool sim_buffer_view_offset_for_indices(const SimBufferView *view, const size_t *indices, size_t index_count, size_t *out_offset)
Resolve multidimensional logical indices to a physical element offset.
bool sim_buffer_view_get_complex(const SimBufferView *view, size_t logical_index, SimComplexDouble *out_value)
Read a logical value as a SimComplexDouble.
SimBuffer * sim_buffer_clone_view(const SimBufferView *view)
Copy a buffer view into a compact owning row-major buffer.
SimScalarDomain sim_buffer_data_type_to_scalar_domain(SimBufferDataType type)
Map a buffer storage type to its scalar-domain descriptor.
SimBufferDataType sim_buffer_type(const SimBuffer *buffer)
Return the buffer storage type.
size_t sim_buffer_count(const SimBuffer *buffer)
Return the logical element count.
const void * sim_buffer_const_data(const SimBuffer *buffer)
Return a read-only pointer to owned element storage.
SimBufferDataType sim_buffer_data_type_from_element_size(size_t element_size)
Infer a legacy buffer type from an element byte size.
void sim_buffer_destroy(SimBuffer *buffer)
Release an owning buffer and its storage.
Non-owning typed view over contiguous, strided, or indexed scalar storage.
Definition sim_buffer.h:41
size_t count
Definition sim_buffer.h:43
const size_t * logical_to_physical
Definition sim_buffer.h:46
SimFieldLayout layout
Definition sim_buffer.h:45
void * data
Definition sim_buffer.h:42
SimBufferDataType type
Definition sim_buffer.h:44
Owning contiguous typed buffer for research-facing bulk APIs.
Definition sim_buffer.h:52
size_t * stride_storage
Definition sim_buffer.h:58
size_t count
Definition sim_buffer.h:54
void * data
Definition sim_buffer.h:53
SimBufferDataType type
Definition sim_buffer.h:56
size_t bytes
Definition sim_buffer.h:55
size_t * shape_storage
Definition sim_buffer.h:57
SimFieldLayout layout
Definition sim_buffer.h:59
Explicit in-memory representation for a complex double scalar (re, im)
Definition field.h:175
Layout description for a field.
Definition field.h:147
Unified scalar-domain descriptor.
Definition field.h:116