ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
reusex::core::ComponentRecord Struct Reference

Core-owned persistence contract for a row of the building_components table (#227). More...

#include <component_record.hpp>

Collaboration diagram for reusex::core::ComponentRecord:

Public Attributes

std::string name
 name column — unique; the UPSERT conflict target.
std::string guid
 guid column (schema v8) — stable, immutable identity.
std::string type
 type column — component-type discriminator as stored, e.g. "window".
std::vector< uint8_t > vertex_data
 vertex_data blob — boundary vertices as packed little-endian float64 xyz triples (3 * 8 bytes per vertex).
std::array< double, 4 > plane {0.0, 0.0, 0.0, 0.0}
 plane blob — Hessian normal form [a,b,c,d] of ax+by+cz+d=0, always persisted as 4 * 8 bytes.
int parent_id = -1
 parent_id column — optional link to a parent component, -1 if none.
double confidence = -1.0
 confidence column — detection confidence, -1 if manual.
std::string metadata
 metadata column — opaque JSON TEXT owned by the geometry layer.
std::string notes
 notes column — free-form text. Bound as NULL when empty.

Detailed Description

Core-owned persistence contract for a row of the building_components table (#227).

ProjectDB (Layer 2) stores and loads only this POD, so persistence needs no knowledge of geometry::BuildingComponent / geometry::CoplanarPolygon (Layer 1½ geometry types). The mapping in both directions lives in the geometry layer — see geometry/component_persistence.hpp.

Every member corresponds 1:1 to a column of building_components; the on-disk representation is unchanged from before the POD was introduced. vertex_count is not a member: it is derived from vertex_data.

Definition at line 25 of file component_record.hpp.

Member Data Documentation

◆ confidence

double reusex::core::ComponentRecord::confidence = -1.0

confidence column — detection confidence, -1 if manual.

Definition at line 43 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ guid

std::string reusex::core::ComponentRecord::guid

guid column (schema v8) — stable, immutable identity.

Empty means "generate one on first save"; preserved across upserts.

Definition at line 30 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ metadata

std::string reusex::core::ComponentRecord::metadata

metadata column — opaque JSON TEXT owned by the geometry layer.

Carries the type-specific variant payload and the source_instance_guid provenance link (issue #211). Bound as NULL when empty.

Definition at line 47 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ name

std::string reusex::core::ComponentRecord::name

name column — unique; the UPSERT conflict target.

Definition at line 27 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ notes

std::string reusex::core::ComponentRecord::notes

notes column — free-form text. Bound as NULL when empty.

Definition at line 49 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ parent_id

int reusex::core::ComponentRecord::parent_id = -1

parent_id column — optional link to a parent component, -1 if none.

Definition at line 41 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ plane

std::array<double, 4> reusex::core::ComponentRecord::plane {0.0, 0.0, 0.0, 0.0}

plane blob — Hessian normal form [a,b,c,d] of ax+by+cz+d=0, always persisted as 4 * 8 bytes.

Definition at line 39 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ type

std::string reusex::core::ComponentRecord::type

type column — component-type discriminator as stored, e.g. "window".

Definition at line 32 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().

◆ vertex_data

std::vector<uint8_t> reusex::core::ComponentRecord::vertex_data

vertex_data blob — boundary vertices as packed little-endian float64 xyz triples (3 * 8 bytes per vertex).

The vertex_count column is written as vertex_data.size() / (3 * sizeof(double)).

Definition at line 36 of file component_record.hpp.

Referenced by reusex::geometry::from_component_record(), and reusex::geometry::to_component_record().


The documentation for this struct was generated from the following file: