From 863721bf82c0de7a74fa383d7843f27c38c8139e Mon Sep 17 00:00:00 2001 From: parker Date: Wed, 20 Aug 2025 02:55:55 +0100 Subject: [PATCH] docs: add Attribute.h doc comments --- src/Engine/Operator/Attribute.h | 38 +++++++++++++++++++++++++++++++++ src/Engine/Types.h | 8 +++++++ 2 files changed, 46 insertions(+) diff --git a/src/Engine/Operator/Attribute.h b/src/Engine/Operator/Attribute.h index cb96ef0..304a04e 100644 --- a/src/Engine/Operator/Attribute.h +++ b/src/Engine/Operator/Attribute.h @@ -15,15 +15,53 @@ namespace enzo{ template class AttributeHandle; + /** + * @class enzo::ga::Attribute + * @brief Containers for geometry data. + * + * Attributes are the containers for geometry data in the engine. + * Each attribute is a single column in the spreadsheet that makes up your geometry. + * The column has a single name and type. Based on the attribute owner it will also + * have a value for each element. For example, if the owner is a point then your + * attribute might be Color, your type might be a vector, and the attribute will + * have a color value for each point in the mesh. Attributes own the underlying + * storage for their values, which is contiguous and strongly typed + * (e.g., ints, floats, vectors, bools). This allows a single attribute class + * to store data regardless of the type without templates. + * Attributes cannot be read or written from by themselves. + * For that an attribute handle is required, (see #enzo::ga::AttributeHandle). + * + * @note Values are strongly typed; invalid type combinations are guarded both + * at compile time (via handles) and at runtime (defensive checks). + */ class Attribute { public: + /** + * @brief Construct a new attribute and initialize its typed storage. + * + * @param name Human-readable identifier, spaces are not permitted (unique within a collection/scope). + * @param type #ga::AttributeType that attribute values will be stored in. + * + */ Attribute(std::string name, ga::AttributeType type); Attribute(const Attribute& other); + /** + * @brief Returns the attribute type this attribute stores. + */ AttributeType getType() const; + /** + * @brief Returns the name of this attribute. + */ std::string getName() const; + /** + * @brief Returns the number of components in the type (eg. StringT is 1, vectorT is 3). + */ unsigned int getTypeSize() const; + /** + * @brief Changes the number of elements stored + */ void resize(size_t size); diff --git a/src/Engine/Types.h b/src/Engine/Types.h index 7e93b73..31524ca 100644 --- a/src/Engine/Types.h +++ b/src/Engine/Types.h @@ -1,3 +1,8 @@ +/** + * @file Types.h + * @brief Basic attribute, parameter, and node types for Enzo. + */ + #pragma once #include @@ -13,6 +18,9 @@ namespace enzo PRIMITIVE, GLOBAL }; + /** + * @brief Data types available to store attribute values in. + */ enum class AttributeType { intT,