212 std::unique_ptr<const ReadAttribute> owned_attribute_;
218 owned_attribute_ = std::move(attribute);
229 return attribute_->
size();
237 attribute_->
get(index, &value);
244 return attribute_->
get_span().template typed<T>();
252 std::unique_ptr<WriteAttribute> owned_attribute_;
258 owned_attribute_ = std::move(attribute);
269 return attribute_->
size();
277 attribute_->
get(index, &value);
283 attribute_->
set(index, &value);
Generic geometry attributes built on CustomData.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
const AttributeDomain domain_
const CPPType & cpp_type_
virtual void get_internal(const int64_t index, void *r_value) const =0
virtual void initialize_span() const
CustomDataType custom_data_type() const
fn::GSpan get_span() const
const CPPType & cpp_type() const
Span< T > get_span() const
void get(const int64_t index, void *r_value) const
AttributeDomain domain() const
const CustomDataType custom_data_type_
ReadAttribute(AttributeDomain domain, const CPPType &cpp_type, const int64_t size)
T operator[](const int64_t index) const
Span< T > get_span() const
TypedReadAttribute(ReadAttributePtr attribute)
TypedReadAttribute(const ReadAttribute &attribute)
TypedWriteAttribute(WriteAttribute &attribute)
TypedWriteAttribute(WriteAttributePtr attribute)
T operator[](const int64_t index) const
void set(const int64_t index, const T &value)
MutableSpan< T > get_span_for_write_only()
MutableSpan< T > get_span()
const CustomDataType custom_data_type_
AttributeDomain domain() const
virtual void set_internal(const int64_t index, const void *value)=0
void get(const int64_t index, void *r_value) const
void set(const int64_t index, const void *value)
virtual void get_internal(const int64_t index, void *r_value) const =0
MutableSpan< T > get_span_for_write_only()
WriteAttribute(AttributeDomain domain, const CPPType &cpp_type, const int64_t size)
virtual void initialize_span(const bool write_only)
virtual void apply_span_if_necessary()
fn::GMutableSpan get_span_for_write_only()
fn::GMutableSpan get_span()
CustomDataType custom_data_type() const
const AttributeDomain domain_
const CPPType & cpp_type_
virtual ~WriteAttribute()
bool array_should_be_applied_
const CPPType & cpp_type() const
MutableSpan< T > get_span()
MutableSpan< T > typed() const
CustomDataType cpp_type_to_custom_data_type(const CPPType &type)
AttributeDomain attribute_domain_highest_priority(Span< AttributeDomain > domains)
std::unique_ptr< WriteAttribute > WriteAttributePtr
const CPPType * custom_data_type_to_cpp_type(const CustomDataType type)
std::unique_ptr< ReadAttribute > ReadAttributePtr
CustomDataType attribute_data_type_highest_complexity(Span< CustomDataType > data_types)