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;
169 std::string leksikon_guid_declaration_of_performance = "1tqCmrJwn3yvF$k2lU2fFa";
170
174 std::vector<std::string> technical_documentation;
175 std::string leksikon_guid_technical_documentation = "1IfrbnqGv5Pu3GBuocLZgi";
176
180 std::vector<std::string> non_destructive_tests;
181 std::string leksikon_guid_non_destructive_tests = "0aTBceworF$QTXM6CqyOdV";
182
185 std::optional<double> assessed_period_of_use;
186 std::string leksikon_guid_assessed_period_of_use = "3xW23JRMTAzOQb79uZW3qC";
187
190 std::optional<double> avg_service_life_build;
191 std::string leksikon_guid_avg_service_life_build = "2TtVRWo_56mBphAcSiFIHG";
192
195 std::optional<double> remaining_service_life_rsl;
196 std::string leksikon_guid_remaining_service_life_rsl = "2id4UZ8ynAF9DEzV0NC_wT";
197
200 std::optional<double> remaining_service_life_build;
201 std::string leksikon_guid_remaining_service_life_build = "27gXAA5Iz7lgcOytMRqOBv";
202};
203
204// ===========================================================================
205// Section 5: Dimensions and Geometry
206// ===========================================================================
207
214 std::optional<double> width_mm;
215 std::string leksikon_guid_width_mm = "3NHBUedX9438Hi3mwD15$Z";
216
219 std::optional<double> height_mm;
220 std::string leksikon_guid_height_mm = "2G$wMhUvL2LgKNY0J66oAT";
221
224 std::optional<double> length_mm;
225 std::string leksikon_guid_length_mm = "1uUn3YWZfBaPqYQMo_$Om$";
226
229 std::optional<double> thickness_mm;
230 std::string leksikon_guid_thickness_mm = "0SyXPZ9an9vh49k$Lgkvly";
231
234 std::optional<double> depth_mm;
235 std::string leksikon_guid_depth_mm = "1$OV5du3LFWwa$P7SfJhAr";
236
239 std::optional<double> volume_m3;
240 std::string leksikon_guid_volume_m3 = "3IHRMkfs9EDPXVvPJ0hbFn";
241
244 std::optional<double> surface_area_m2;
245 std::string leksikon_guid_surface_area_m2 = "3Cs4d96Ff1nPGHWlsTyYIS";
246
249 std::optional<double> inner_diameter_mm;
250 std::string leksikon_guid_inner_diameter_mm = "0ayREcz2zBuPWmCDTem2a8";
251
254 std::optional<double> outer_diameter_mm;
255 std::string leksikon_guid_outer_diameter_mm = "3BWwvo0lf3iAd_34y7ac$4";
256
259 std::optional<double> weight_kg;
260 std::string leksikon_guid_weight_kg = "1XyLvnxf94pwJW6LWaD6Zw";
261
264 std::string technical_drawing;
265 std::string leksikon_guid_technical_drawing = "2d01jZqvP7GOR3V$coAprV";
266};
267
268// ===========================================================================
269// Section 6: Condition
270// ===========================================================================
271
275struct Condition {
278 std::vector<std::string> photo_documentation;
279 std::string leksikon_guid_photo_documentation = "3$DH1Zm_r9_gzqdwKK39Ua";
280
283 std::optional<bool> visual_inspection_performed;
284 std::string leksikon_guid_visual_inspection_performed = "2jB20LC_nEzBN4_j2ypip8";
285
288 std::optional<bool> has_signs_of_damage;
289 std::string leksikon_guid_has_signs_of_damage = "0rQimGJFHEueqtqwbwBaC5";
290
293 std::optional<bool> is_deformed;
294 std::string leksikon_guid_is_deformed = "1g6mt3SrvDlho6YqBIu1lW";
295
298 std::optional<bool> is_scratched;
299 std::string leksikon_guid_is_scratched = "365luGupDCfwgtD32gGGrS";
300
303 std::optional<bool> is_surface_intact;
304 std::string leksikon_guid_is_surface_intact = "2GO932BuX5EvXOecmhbbl3";
305
308 std::optional<bool> has_intact_edges;
309 std::string leksikon_guid_has_intact_edges = "0AoBmqQ9v1pw7ca1VVp_Za";
310
313 std::optional<bool> has_signs_of_degradation;
314 std::string leksikon_guid_has_signs_of_degradation = "01lVHQF$XAneE8CFtajgr_";
315};
316
317// ===========================================================================
318// Section 7: Pollution - Content and Emissions (with nested types)
319// ===========================================================================
320
331 std::string leksikon_guid_content_method = "2ympiI4PL6c8ooh9Agqnz4";
332
339 std::string leksikon_guid_analyzed_substance = "3Y2oTiV9r3NfoZQBVP_Bpx";
340
343 std::string cas_number;
344 std::string leksikon_guid_cas_number = "2tZYDby2H2PADWYcTMn50O";
345
348 std::string ec_number;
349 std::string leksikon_guid_ec_number = "1cV5alHQ93Zu44Uv4Iuqoj";
350
353 std::optional<double> concentration_mg_per_kg;
354 std::string leksikon_guid_concentration_mg_per_kg = "0yw_0Ggsf6ihdShOA1niRl";
355};
356
363struct Emission {
368 std::string standard;
369 std::string leksikon_guid_standard = "1Kx6G$uIXEZO3Br$MEsdaB";
370
375 std::string type;
376 std::string leksikon_guid_type = "12ZQ3obYHB1OhXiyy3LcfK";
377
380 std::optional<double> lower_interval;
381 std::string leksikon_guid_lower_interval = "1dSnTNTGD5YQPcgcbzMJaD";
382
385 std::optional<double> upper_interval;
386 std::string leksikon_guid_upper_interval = "3YTotdivHEeQS4ij2Xa7PU";
387
391 std::string leksikon_guid_quantity_type = "33HQrsPDn9uhOu$7D3HhWU";
392
395 std::string measuring_unit;
396 std::string leksikon_guid_measuring_unit = "3d1HQUJVb23ReixUzvSyvS";
397
400 std::optional<double> quantity;
401 std::string leksikon_guid_quantity = "0lZ6gflK18WBte7dMyQQ$h";
402};
403
407struct Pollution {
411 std::string leksikon_guid_contains_reach_substances = "2E6_MQ4Cn36f0s6CVYxQOR";
412
416 std::string leksikon_guid_is_chemically_treated = "1Cf0jFllr2HAk8FOmT2VGr";
417
424 std::vector<std::string> surface_treatments;
425 std::string leksikon_guid_surface_treatments = "1zV5ZyYKT6CPWjKdTEZ1K0";
426
429 std::vector<DangerousSubstance> dangerous_substances;
430
433 std::vector<Emission> emissions;
434
437 std::optional<bool> intended_for_indoor_use;
438 std::string leksikon_guid_intended_for_indoor_use = "2W1zl8TFb459xOVytRmX3J";
439
444 std::string labelling_scheme;
445 std::string leksikon_guid_labelling_scheme = "3Txv$QA7zCp8azbWeuubx2";
446
450 std::string emission_level;
451 std::string leksikon_guid_emission_level = "3areU4Rpv9gfbeDNE9eBgA";
452
455 std::optional<bool> has_asbestos_analysis;
456 std::string leksikon_guid_has_asbestos_analysis = "2962p$Lwj68Br6satSNLAn";
457};
458
459// ===========================================================================
460// Section 8: Environmental and Resource Potential
461// ===========================================================================
462
469 std::optional<bool> takeback_scheme_available;
470 std::string leksikon_guid_takeback_scheme_available = "2__I$nkL94YRI_YCBy0ou8";
471
474 std::optional<bool> consists_of_separate_parts;
475 std::string leksikon_guid_consists_of_separate_parts = "2nZqcaXkz7YPHhKI$FMowg";
476};
477
478// ===========================================================================
479// Section 9: Other Essential Properties (Fire)
480// ===========================================================================
481
490 std::string reaction_to_fire;
491 std::string leksikon_guid_reaction_to_fire = "2bipZ4JrzDnwNZZHkwfk8O";
492
498 std::string leksikon_guid_resistance_to_fire = "0NlhENUQr4YA5$p0zBrXSp";
499
505 std::string leksikon_guid_documentation_of_fire_classification = "1DdkDjj1H7POQtnzDtu7CC";
506
510 std::string leksikon_guid_field_of_application = "37sNiQNwHC399AW2B60MrY";
511};
512
513// ===========================================================================
514// Section 10: History
515// ===========================================================================
516
520struct History {
526 std::vector<std::string> previous_usage_environments;
527 std::string leksikon_guid_previous_usage_environments = "3BiwSSLEz9l8YLgoWcixHq";
528};
529
530} // 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.