ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
component_persistence.hpp File Reference

Mapping between geometry::BuildingComponent and the core-owned persistence POD core::ComponentRecord, plus thin ProjectDB conveniences (#227). More...

#include "reusex/core/ProjectDB.hpp"
#include "reusex/core/component_record.hpp"
#include "reusex/geometry/BuildingComponent.hpp"
#include "reusex/geometry/CoplanarPolygon.hpp"
#include <string>
#include <string_view>
#include <vector>
Include dependency graph for component_persistence.hpp:

Go to the source code of this file.

Namespaces

namespace  reusex
namespace  reusex::geometry

Functions

core::ComponentRecord reusex::geometry::to_component_record (const BuildingComponent &component)
 Flatten a component into the persistence POD.
BuildingComponent reusex::geometry::from_component_record (const core::ComponentRecord &record)
 Rebuild a component from the persistence POD.
void reusex::geometry::save_building_component (ProjectDB &db, const BuildingComponent &component)
 Insert or replace component, keyed by its name.
void reusex::geometry::update_building_component_by_guid (ProjectDB &db, const BuildingComponent &component)
 Update an existing component's mutable fields, matched by its immutable guid.
BuildingComponent reusex::geometry::building_component (const ProjectDB &db, std::string_view name)
 Load the component stored under name. Throws if absent.
std::vector< std::string > reusex::geometry::list_building_components (const ProjectDB &db, ComponentType type)
 Names of all stored components of the given type.

Detailed Description

Mapping between geometry::BuildingComponent and the core-owned persistence POD core::ComponentRecord, plus thin ProjectDB conveniences (#227).

ProjectDB stores only the POD, so core no longer knows about the geometry types. The knowledge of how a BuildingComponent flattens into a row therefore lives here, on the geometry side of the boundary.

Layering note: this is a header-only adapter. It is deliberately NOT compiled into reusex_geometry_common (there is no matching .cpp), so that module keeps its Layer-1½ position and never links core. Consumers that include it — io, apps/rux, tests — already link both reusex_core and reusex_geometry_common. See docs/STANDARDS.md §1.

Definition in file component_persistence.hpp.