ReUseX  0.0.5
3D Point Cloud Processing for Building Reuse
Loading...
Searching...
No Matches
materialepas_types.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#pragma once
6
8
9#include <optional>
10#include <string>
11#include <vector>
12
13namespace reusex::core {
14
15// ===========================================================================
16// Section 1: Owner
17// ===========================================================================
18
22struct Owner {
25 std::string contact_email;
26 std::string leksikon_guid_contact_email = "0Bwj05D$55V931bq9VaBE5";
27
30 std::string contact_name;
31 std::string leksikon_guid_contact_name = "17BdeQk152gR5YUt5oSLfp";
32
35 std::string company_name;
36 std::string leksikon_guid_company_name = "1bb51PIefCe9uHGCmR0gFJ";
37};
38
39// ===========================================================================
40// Section 2: Construction Item Description
41// ===========================================================================
42
49 std::string designation;
50 std::string leksikon_guid_designation = "2_mYRkA$9EcwXAxqBGoMrM";
51
54 std::vector<std::string> images;
55 std::string leksikon_guid_images = "1dvQfmc2z9lB_rwknYkM3y";
56
59 std::optional<bool> has_qr_code;
60 std::string leksikon_guid_has_qr_code = "06moAxe0j7EutROb0dD3B7";
61
64 std::optional<bool> has_rfid_tag;
65 std::string leksikon_guid_has_rfid_tag = "2$Owq1iHrAuw$ASWOXAk9p";
66
69 std::vector<Material> materials;
70 std::string leksikon_guid_materials = "1R_z75Gd52OQYxVkJ$E3ZU";
71
77 std::vector<std::string> assembly_methods;
78 std::string leksikon_guid_assembly_methods = "0N7Qwopp125xrULezqArw4";
79
82 std::optional<int> year_of_installation;
83 std::string leksikon_guid_year_of_installation = "294ZkUyYn6TfdwCsbo2X63";
84
87 std::optional<int> year_of_construction;
88 std::string leksikon_guid_year_of_construction = "17LFECVML6buNXwBLz416Y";
89};
90
91// ===========================================================================
92// Section 3: Product Information
93// ===========================================================================
94
101 std::string manufacturer;
102 std::string leksikon_guid_manufacturer = "1QwFy1F3T4dPe2N2cbsuRv";
103
106 std::string gtin;
107 std::string leksikon_guid_gtin = "1rQ9Z5vy5AygUSncyWuhXr";
108
111 std::string product_name;
112 std::string leksikon_guid_product_name = "198tMTFIX5PecEfAwMEIeo";
113
116 std::string model_label;
117 std::string leksikon_guid_model_label = "06t2gkj49FNvMebmltrHXV";
118
121 std::optional<int> production_year;
122 std::string leksikon_guid_production_year = "3nif2XJKH8r9I09LfEYaRm";
123};
124
125// ===========================================================================
126// Section 4: Certifications, Approvals and Declarations
127// ===========================================================================
128
135 std::optional<bool> has_epd;
136 std::string leksikon_guid_has_epd = "2_jn1$mEr1780H5QOiEj6O";
137
143 std::string leksikon_guid_epd_programme_operator = "0ORiYBKRnCFQzUwOsNqbYn";
144
148 std::string leksikon_guid_epd_operator_web_domain = "2kqTixLBr9sBqGKYs9lNSI";
149
153 std::string leksikon_guid_epd_registration_number = "2aCraAVB91qw8CzrM6x3ia";
154
157 std::optional<double> reference_service_life;
158 std::string leksikon_guid_reference_service_life = "28mSsPe_z69BksBt5oRXMl";
159
162 std::optional<bool> has_safety_data_sheet;
163 std::string leksikon_guid_has_safety_data_sheet = "3D1KFVwbDBuumnIBZZHQId";
164
168 std::vector<std::string> declaration_of_performance;
170 "1tqCmrJwn3yvF$k2lU2fFa";
171
175 std::vector<std::string> technical_documentation;
176 std::string leksikon_guid_technical_documentation = "1IfrbnqGv5Pu3GBuocLZgi";
177
181 std::vector<std::string> non_destructive_tests;
182 std::string leksikon_guid_non_destructive_tests = "0aTBceworF$QTXM6CqyOdV";
183
186 std::optional<double> assessed_period_of_use;
187 std::string leksikon_guid_assessed_period_of_use = "3xW23JRMTAzOQb79uZW3qC";
188
191 std::optional<double> avg_service_life_build;
192 std::string leksikon_guid_avg_service_life_build = "2TtVRWo_56mBphAcSiFIHG";
193
196 std::optional<double> remaining_service_life_rsl;
198 "2id4UZ8ynAF9DEzV0NC_wT";
199
202 std::optional<double> remaining_service_life_build;
204 "27gXAA5Iz7lgcOytMRqOBv";
205};
206
207// ===========================================================================
208// Section 5: Dimensions and Geometry
209// ===========================================================================
210
217 std::optional<double> width_mm;
218 std::string leksikon_guid_width_mm = "3NHBUedX9438Hi3mwD15$Z";
219
222 std::optional<double> height_mm;
223 std::string leksikon_guid_height_mm = "2G$wMhUvL2LgKNY0J66oAT";
224
227 std::optional<double> length_mm;
228 std::string leksikon_guid_length_mm = "1uUn3YWZfBaPqYQMo_$Om$";
229
232 std::optional<double> thickness_mm;
233 std::string leksikon_guid_thickness_mm = "0SyXPZ9an9vh49k$Lgkvly";
234
237 std::optional<double> depth_mm;
238 std::string leksikon_guid_depth_mm = "1$OV5du3LFWwa$P7SfJhAr";
239
242 std::optional<double> volume_m3;
243 std::string leksikon_guid_volume_m3 = "3IHRMkfs9EDPXVvPJ0hbFn";
244
247 std::optional<double> surface_area_m2;
248 std::string leksikon_guid_surface_area_m2 = "3Cs4d96Ff1nPGHWlsTyYIS";
249
252 std::optional<double> inner_diameter_mm;
253 std::string leksikon_guid_inner_diameter_mm = "0ayREcz2zBuPWmCDTem2a8";
254
257 std::optional<double> outer_diameter_mm;
258 std::string leksikon_guid_outer_diameter_mm = "3BWwvo0lf3iAd_34y7ac$4";
259
262 std::optional<double> weight_kg;
263 std::string leksikon_guid_weight_kg = "1XyLvnxf94pwJW6LWaD6Zw";
264
267 std::string technical_drawing;
268 std::string leksikon_guid_technical_drawing = "2d01jZqvP7GOR3V$coAprV";
269};
270
271// ===========================================================================
272// Section 6: Condition
273// ===========================================================================
274
278struct Condition {
281 std::vector<std::string> photo_documentation;
282 std::string leksikon_guid_photo_documentation = "3$DH1Zm_r9_gzqdwKK39Ua";
283
286 std::optional<bool> visual_inspection_performed;
288 "2jB20LC_nEzBN4_j2ypip8";
289
292 std::optional<bool> has_signs_of_damage;
293 std::string leksikon_guid_has_signs_of_damage = "0rQimGJFHEueqtqwbwBaC5";
294
297 std::optional<bool> is_deformed;
298 std::string leksikon_guid_is_deformed = "1g6mt3SrvDlho6YqBIu1lW";
299
302 std::optional<bool> is_scratched;
303 std::string leksikon_guid_is_scratched = "365luGupDCfwgtD32gGGrS";
304
307 std::optional<bool> is_surface_intact;
308 std::string leksikon_guid_is_surface_intact = "2GO932BuX5EvXOecmhbbl3";
309
312 std::optional<bool> has_intact_edges;
313 std::string leksikon_guid_has_intact_edges = "0AoBmqQ9v1pw7ca1VVp_Za";
314
317 std::optional<bool> has_signs_of_degradation;
318 std::string leksikon_guid_has_signs_of_degradation = "01lVHQF$XAneE8CFtajgr_";
319};
320
321// ===========================================================================
322// Section 7: Pollution - Content and Emissions (with nested types)
323// ===========================================================================
324
335 std::string leksikon_guid_content_method = "2ympiI4PL6c8ooh9Agqnz4";
336
343 std::string leksikon_guid_analyzed_substance = "3Y2oTiV9r3NfoZQBVP_Bpx";
344
347 std::string cas_number;
348 std::string leksikon_guid_cas_number = "2tZYDby2H2PADWYcTMn50O";
349
352 std::string ec_number;
353 std::string leksikon_guid_ec_number = "1cV5alHQ93Zu44Uv4Iuqoj";
354
357 std::optional<double> concentration_mg_per_kg;
358 std::string leksikon_guid_concentration_mg_per_kg = "0yw_0Ggsf6ihdShOA1niRl";
359};
360
367struct Emission {
372 std::string standard;
373 std::string leksikon_guid_standard = "1Kx6G$uIXEZO3Br$MEsdaB";
374
379 std::string type;
380 std::string leksikon_guid_type = "12ZQ3obYHB1OhXiyy3LcfK";
381
384 std::optional<double> lower_interval;
385 std::string leksikon_guid_lower_interval = "1dSnTNTGD5YQPcgcbzMJaD";
386
389 std::optional<double> upper_interval;
390 std::string leksikon_guid_upper_interval = "3YTotdivHEeQS4ij2Xa7PU";
391
395 std::string leksikon_guid_quantity_type = "33HQrsPDn9uhOu$7D3HhWU";
396
399 std::string measuring_unit;
400 std::string leksikon_guid_measuring_unit = "3d1HQUJVb23ReixUzvSyvS";
401
404 std::optional<double> quantity;
405 std::string leksikon_guid_quantity = "0lZ6gflK18WBte7dMyQQ$h";
406};
407
411struct Pollution {
416 "2E6_MQ4Cn36f0s6CVYxQOR";
417
421 std::string leksikon_guid_is_chemically_treated = "1Cf0jFllr2HAk8FOmT2VGr";
422
429 std::vector<std::string> surface_treatments;
430 std::string leksikon_guid_surface_treatments = "1zV5ZyYKT6CPWjKdTEZ1K0";
431
434 std::vector<DangerousSubstance> dangerous_substances;
435
438 std::vector<Emission> emissions;
439
442 std::optional<bool> intended_for_indoor_use;
443 std::string leksikon_guid_intended_for_indoor_use = "2W1zl8TFb459xOVytRmX3J";
444
449 std::string labelling_scheme;
450 std::string leksikon_guid_labelling_scheme = "3Txv$QA7zCp8azbWeuubx2";
451
455 std::string emission_level;
456 std::string leksikon_guid_emission_level = "3areU4Rpv9gfbeDNE9eBgA";
457
460 std::optional<bool> has_asbestos_analysis;
461 std::string leksikon_guid_has_asbestos_analysis = "2962p$Lwj68Br6satSNLAn";
462};
463
464// ===========================================================================
465// Section 8: Environmental and Resource Potential
466// ===========================================================================
467
474 std::optional<bool> takeback_scheme_available;
476 "2__I$nkL94YRI_YCBy0ou8";
477
480 std::optional<bool> consists_of_separate_parts;
482 "2nZqcaXkz7YPHhKI$FMowg";
483};
484
485// ===========================================================================
486// Section 9: Other Essential Properties (Fire)
487// ===========================================================================
488
497 std::string reaction_to_fire;
498 std::string leksikon_guid_reaction_to_fire = "2bipZ4JrzDnwNZZHkwfk8O";
499
505 std::string leksikon_guid_resistance_to_fire = "0NlhENUQr4YA5$p0zBrXSp";
506
513 "1DdkDjj1H7POQtnzDtu7CC";
514
518 std::string leksikon_guid_field_of_application = "37sNiQNwHC399AW2B60MrY";
519};
520
521// ===========================================================================
522// Section 10: History
523// ===========================================================================
524
528struct History {
534 std::vector<std::string> previous_usage_environments;
536 "3BiwSSLEz9l8YLgoWcixHq";
537};
538
539} // namespace reusex::core
EmissionQuantityType
Emission quantity type.
TriState
Tri-state value for Yes/No/Unknown fields.
@ unknown
Unknown / not determined.
SubstanceContentMethod
Method used to determine substance content.
@ assumed
Assumed based on knowledge or documentation.
Certifications, approvals and declarations for the item.
std::optional< double > reference_service_life
Reference service life in years.
std::string epd_registration_number
EPD registration number.
std::string epd_operator_web_domain
EPD programme operator web domain (URL).
std::optional< double > avg_service_life_build
Average service life according to BUILD methodology (years).
std::optional< double > assessed_period_of_use
Assessed period of use in years.
std::optional< bool > has_safety_data_sheet
Whether a safety data sheet exists.
std::optional< double > remaining_service_life_build
Remaining service life according to BUILD methodology (years).
std::optional< double > remaining_service_life_rsl
Remaining service life (RSL) in years.
std::string epd_programme_operator
EPD programme operator name.
std::vector< std::string > non_destructive_tests
Non-destructive test results.
std::vector< std::string > technical_documentation
Technical documentation references.
std::vector< std::string > declaration_of_performance
Declaration of performance references.
std::optional< bool > has_epd
Whether an Environmental Product Declaration (EPD) exists.
Condition assessment of the construction item.
std::optional< bool > has_intact_edges
Whether edges are intact.
std::optional< bool > visual_inspection_performed
Whether a visual inspection has been performed.
std::optional< bool > is_surface_intact
Whether the surface is intact.
std::string leksikon_guid_has_signs_of_degradation
std::optional< bool > has_signs_of_damage
Whether the item has signs of damage.
std::string leksikon_guid_visual_inspection_performed
std::string leksikon_guid_has_signs_of_damage
std::vector< std::string > photo_documentation
Photo documentation images (URLs or base64).
std::string leksikon_guid_photo_documentation
std::optional< bool > is_deformed
Whether the item is deformed.
std::optional< bool > is_scratched
Whether the item is scratched.
std::optional< bool > has_signs_of_degradation
Whether the item has signs of degradation.
Description of the reused construction item.
std::optional< int > year_of_installation
Year the item was installed in the building.
std::vector< Material > materials
Materials the construction item is made of (closed value list).
std::optional< int > year_of_construction
Year of construction of the building.
std::optional< bool > has_rfid_tag
Whether the item has an RFID tag.
std::optional< bool > has_qr_code
Whether the item has a QR code.
std::string designation
Designation of the construction item.
std::vector< std::string > assembly_methods
Assembly methods used for the construction item.
std::vector< std::string > images
Images of the construction item (URLs or base64).
Dangerous substance analysis record.
SubstanceContentMethod content_method
Method used to determine substance content.
std::optional< double > concentration_mg_per_kg
Concentration of substance in mg/kg.
std::string ec_number
EC (EINECS) number of the substance.
std::string analyzed_substance
Which chemical substance was analyzed for.
std::string cas_number
CAS registry number of the substance.
Physical dimensions and geometry of the construction item.
std::optional< double > inner_diameter_mm
Inner diameter in millimeters.
std::optional< double > width_mm
Width in millimeters.
std::optional< double > volume_m3
Volume in cubic meters.
std::string technical_drawing
Technical drawing (image URL or base64).
std::optional< double > depth_mm
Depth in millimeters.
std::optional< double > thickness_mm
Thickness in millimeters.
std::optional< double > height_mm
Height in millimeters.
std::optional< double > weight_kg
Weight in kilograms.
std::optional< double > surface_area_m2
Surface area of product in square meters.
std::optional< double > length_mm
Length in millimeters.
std::optional< double > outer_diameter_mm
Outer diameter in millimeters.
Emission measurement record.
std::string measuring_unit
Measuring unit for the emission quantity.
std::string type
Type of emission measured.
std::string standard
Emission standard (ISO or other standard code).
std::optional< double > quantity
Measured emission quantity.
std::optional< double > upper_interval
Upper bound of emission interval.
std::optional< double > lower_interval
Lower bound of emission interval.
EmissionQuantityType quantity_type
How the emission quantity is expressed.
Environmental and resource potential for sustainable utilization.
std::optional< bool > takeback_scheme_available
Whether a take-back scheme is available.
std::optional< bool > consists_of_separate_parts
Whether the item consists of naturally separate parts.
Fire-related properties of the construction item.
std::string reaction_to_fire
Reaction to fire classification (Euroclass code).
std::string field_of_application
Field of application in relation to fire.
std::string resistance_to_fire
Resistance to fire classification.
std::string leksikon_guid_documentation_of_fire_classification
std::string documentation_of_fire_classification
Documentation of fire classification.
Historical usage information for the construction item.
std::vector< std::string > previous_usage_environments
Previous usage environments.
std::string leksikon_guid_previous_usage_environments
Owner contact information for the material passport.
std::string contact_name
Contact name of the material passport owner.
std::string leksikon_guid_contact_name
std::string leksikon_guid_company_name
std::string contact_email
Contact email of the material passport owner.
std::string leksikon_guid_contact_email
std::string company_name
Company name of the material passport owner.
Pollution, content and emission information.
std::string labelling_scheme
Labelling scheme for emissions.
std::string leksikon_guid_contains_reach_substances
std::vector< Emission > emissions
Emission measurement records.
std::vector< std::string > surface_treatments
Surface treatments applied to the item.
std::string emission_level
Emission level classification.
std::optional< bool > intended_for_indoor_use
Whether the item is intended for indoor use.
TriState is_chemically_treated
Whether the item has been chemically treated.
std::optional< bool > has_asbestos_analysis
Whether an asbestos analysis has been performed.
std::vector< DangerousSubstance > dangerous_substances
Dangerous substance analysis records.
std::string leksikon_guid_has_asbestos_analysis
std::string leksikon_guid_intended_for_indoor_use
TriState contains_reach_substances
Whether the item contains substances on REACH candidate list.
std::string leksikon_guid_is_chemically_treated
Original product information.
std::string model_label
Model label / product identifier.
std::string product_name
Product name.
std::string gtin
Global Trade Item Number (GTIN / EAN barcode).
std::optional< int > production_year
Year the product was manufactured.
std::string manufacturer
Original manufacturer name.