solidcore

Units / geom

geom.attribute green

Layer
1
Upstream lines
920
Functions
90
Rust module
geom::attribute

Source: crates/solidcore/src/geom/attribute.rs

Upstream: source/SMLib/inc/SmAttribute.h, source/SMLib/src/SmAttribute.cpp

Notes

GREEN: PR #80 region lookup integration; 2029/2029 native comparisons, zero failures/deferrals, max_rel_err=0; all 2029 perturbations detected. merge_with_regions resolves actual typed regions and optional B-rep identities through RegionLookup; the legacy merge entry point explicitly requires context for merge-region attributes. Earlier port notes: 90 fns; largest: SmMergeRegionAttribute::Merge, SmAttribute::Split, SmColorAttribute::PropagateRegionsThroughBooleans, SmAttributeData::ReadIndexedAttributesFromDB; cycle back-edges (call into later units; stub or co-port): geom.a_object(14), geom.object(11), query.brep(6), geom.vector3d(4), query.tess(4), topology.shell(3), curve.composite_curve_p1(2); unit-SCC #22 (220 units); 319 upstream test entry points reach this unit; PARTIAL: difftest 2029 cases (29 fixture + 2000 generated), 1991 pass bit-identical, 38 deferred (topology.shell 38: SmRegion::GetBrep in SmMergeRegionAttribute::Merge); 200k-seed run clean; SmAObject attribute-list methods co-ported into AttributeStore (CO-PORT(geom.a_object)), SmObject::IsKindOf co-ported (geom.object); region_type::VOID / INFINITE arms of merge-with-regions (PR #154 review): script ops 32 SetIsVoid(0/1/2) and 33 MakeInfinite (the object becomes the infinite region of a fresh SmBrep; skipped once any attribute exists) mirrored by RegionScene::set_is_void / make_infinite; generated cases that create merge-region attributes first draw those ops, so the add_region classification is compared on the void, UNSURE and infinite sides (mutating the INFINITE arm fails generated cases). Missing region context is Unported(topology.shell), not InvalidInput

Difftest

Cases
2,029
Passed
2,029
Deferred
0
Failed
0
Both errored
0
Max rel. error
0.0
Tolerance
1e-09 rel.
Seeds
16

Blocked by

Nothing: no deferred cases.

Report JSON (per-case results)

Dependencies

Depends on: topology.database_io green

Soft dependencies: none

Dependents: blend.fillet_executive_p1 todo boolean.merge_p1 partial boolean.merge_p4 todo curve.composite_curve_p1 green geom.a_object partial query.brep claimed query.tess partial topology.brep_data partial

Soft dependents: blend.fillet_corner_p1 todo blend.fillet_executive_p3 todo blend.fillet_geom_p4 todo boolean.merge_p3 todo geom.object partial mass.integrator partial sweep.topology_sweep claimed

Upstream functions

Upstream functionDefined atLinesRust (from the file header)
SmAttribute::SmAttributeSmAttribute.h:63410[Attribute]
SmAttribute::SmAttributeSmAttribute.h:6465[Attribute]
SmAttribute::~SmAttributeSmAttribute.h:65319[AttributeStore::destroy]
SmAttribute::MakeCopySmAttribute.h:6742[Attribute::make_copy]
SmAttribute::GetAttributeIDSmAttribute.h:6891[Attribute::attribute_id] / [Attribute::behavior]
SmAttribute::GetBehaviorSmAttribute.h:6901[Attribute::attribute_id] / [Attribute::behavior]
SmAttribute::IsPropagatedThroughBooleansSmAttribute.h:7362[Attribute::is_propagated_through_booleans]
SmAttribute::PropagateRegionsThroughBooleansSmAttribute.h:7397[AttributeStore::propagate_regions_through_booleans]
SmAttribute::GetTypeSmAttribute.h:7961[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmAttribute::GetTypeStringSmAttribute.h:7961[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmGenericAttribute::~SmGenericAttributeSmAttribute.h:8381
SmGenericAttribute::MakeCopySmAttribute.h:8415[Attribute::make_copy]
SmGenericAttribute::GetTypeSmAttribute.h:8851[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmGenericAttribute::GetTypeStringSmAttribute.h:8851[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmLongAttribute::SmLongAttributeSmAttribute.h:9004[AttributeValue]
SmLongAttribute::~SmLongAttributeSmAttribute.h:9121
SmLongAttribute::MakeCopySmAttribute.h:9152[Attribute::make_copy]
SmLongAttribute::GetValueSmAttribute.h:9251[Attribute::long_value]
SmLongAttribute::GetTypeSmAttribute.h:9381[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmLongAttribute::GetTypeStringSmAttribute.h:9381[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmPointerAttribute::SmPointerAttributeSmAttribute.h:9584[Attribute::pointer]
SmPointerAttribute::SmPointerAttributeSmAttribute.h:9634[Attribute::pointer]
SmPointerAttribute::~SmPointerAttributeSmAttribute.h:9691
SmPointerAttribute::MakeCopySmAttribute.h:9722[Attribute::make_copy]
SmPointerAttribute::GetTypeSmAttribute.h:9881[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmPointerAttribute::GetTypeStringSmAttribute.h:9881[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmPointerListAttribute::SmPointerListAttributeSmAttribute.h:10103[Attribute::pointer_list]
SmPointerListAttribute::~SmPointerListAttributeSmAttribute.h:10151
SmPointerListAttribute::MakeCopySmAttribute.h:10182[Attribute::make_copy]
SmPointerListAttribute::GetTypeSmAttribute.h:10331[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmPointerListAttribute::GetTypeStringSmAttribute.h:10331[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmVector3dAttribute::SmVector3dAttributeSmAttribute.h:10494[Attribute::vector3d]
SmVector3dAttribute::~SmVector3dAttributeSmAttribute.h:10601
SmVector3dAttribute::MakeCopySmAttribute.h:10632[Attribute::make_copy]
SmVector3dAttribute::SetValueSmAttribute.h:10731[Attribute::vector3d_value] / [Attribute::set_vector3d_value]
SmVector3dAttribute::GetValueSmAttribute.h:10751[Attribute::vector3d_value] / [Attribute::set_vector3d_value]
SmVector3dAttribute::GetTypeSmAttribute.h:10861[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmVector3dAttribute::GetTypeStringSmAttribute.h:10861[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmMergeRegionAttribute::SmMergeRegionAttributeSmAttribute.h:11329[region_type]
SmMergeRegionAttribute::~SmMergeRegionAttributeSmAttribute.h:11431
SmMergeRegionAttribute::MakeCopySmAttribute.h:11462[Attribute::make_copy]
SmMergeRegionAttribute::GetThisRegionsSmAttribute.h:11701[MergeRegionData]
SmMergeRegionAttribute::GetThisRegionTypesSmAttribute.h:11711[MergeRegionData]
SmMergeRegionAttribute::GetThisRegionSmAttribute.h:11721[MergeRegionData]
SmMergeRegionAttribute::GetOtherRegionsSmAttribute.h:11761[MergeRegionData]
SmMergeRegionAttribute::GetOperationSmAttribute.h:11811[MergeRegionData]
SmMergeRegionAttribute::SetOperationSmAttribute.h:11821[MergeRegionData]
SmMergeRegionAttribute::HasThisInfiniteRegionSmAttribute.h:11909[MergeRegionData::has_this_infinite_region] / [MergeRegionData::has_other_infinite_region]
SmMergeRegionAttribute::HasOtherInfiniteRegionSmAttribute.h:12019[MergeRegionData::has_this_infinite_region] / [MergeRegionData::has_other_infinite_region]
SmMergeRegionAttribute::GetTypeSmAttribute.h:12401[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmMergeRegionAttribute::GetTypeStringSmAttribute.h:12401[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmTagAttribute::~SmTagAttributeSmAttribute.h:13051
SmTagAttribute::MakeCopySmAttribute.h:13082[Attribute::make_copy]
SmTagAttribute::GetTypeSmAttribute.h:13471[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmTagAttribute::GetTypeStringSmAttribute.h:13471[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmColorAttribute::SmColorAttributeSmAttribute.h:13985[Attribute::color]
SmColorAttribute::~SmColorAttributeSmAttribute.h:14091
SmColorAttribute::MakeCopySmAttribute.h:14122[Attribute::make_copy]
SmColorAttribute::IsPropagatedThroughBooleansSmAttribute.h:14171[Attribute::is_propagated_through_booleans]
SmColorAttribute::GetTypeSmAttribute.h:14291[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmColorAttribute::GetTypeStringSmAttribute.h:14291[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmAttributeData::ReadIndexedAttributesFromDBSmAttribute.cpp:21080[AttributeStore::read_indexed_attributes_from_db]
SmAttribute::SplitSmAttribute.cpp:37788[AttributeStore::split]
SmAttribute::CopySmAttribute.cpp:47647[AttributeStore::copy]
SmAttribute::MergeSmAttribute.cpp:53147append_new_regions (private)
SmAttribute::CoincidentSmAttribute.cpp:58850[AttributeStore::coincident]
SmAttribute::EditSmAttribute.cpp:6454[AttributeStore::edit] / [AttributeStore::destruction]
SmAttribute::DestructionSmAttribute.cpp:6584[AttributeStore::edit] / [AttributeStore::destruction]
SmMergeRegionAttribute::SmMergeRegionAttributeSmAttribute.cpp:78225[region_type]
SmMergeRegionAttribute::MergeSmAttribute.cpp:816126append_new_regions (private)
SmMergeRegionAttribute::HasAnySolidSmAttribute.cpp:94920[MergeRegionData::has_any_solid]
SmMergeRegionAttribute::HasAnyOtherPropagatedAttribsSmAttribute.cpp:100626[AttributeStore::has_any_other_propagated_attribs]
SmMergeRegionAttribute::SetRegionsSmAttribute.cpp:103823[MergeRegionData::set_regions]
SmColorAttribute::PropagateRegionsThroughBooleansSmAttribute.cpp:110181[AttributeStore::propagate_regions_through_booleans]
SmAttribute::IsKindOfSmAttribute.cpp:11874[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmLongAttribute::IsKindOfSmAttribute.cpp:12264[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmPointerAttribute::IsKindOfSmAttribute.cpp:12684[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmMergeRegionAttribute::IsKindOfSmAttribute.cpp:13094[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmPointerListAttribute::IsKindOfSmAttribute.cpp:13834[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmVector3dAttribute::IsKindOfSmAttribute.cpp:14404[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmColorAttribute::IsKindOfSmAttribute.cpp:14754[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmGenericAttribute::SmGenericAttributeSmAttribute.cpp:154113[Attribute::generic]
SmAttribute::RemoveUserSmAttribute.cpp:157736[AttributeStore::add_user] / [AttributeStore::remove_user] / [AttributeStore::users]
SmAttribute::fromClearAttributesSmAttribute.cpp:163512[AttributeStore::from_clear_attributes]
SmAttribute::AddUserSmAttribute.cpp:165411[AttributeStore::add_user] / [AttributeStore::remove_user] / [AttributeStore::users]
SmAttribute::GetUsersSmAttribute.cpp:167110[AttributeStore::add_user] / [AttributeStore::remove_user] / [AttributeStore::users]
SmTagAttribute::SmTagAttributeSmAttribute.cpp:168714[Attribute::tag]
SmTagAttribute::SmTagAttributeSmAttribute.cpp:170814[Attribute::tag]
SmGenericAttribute::IsKindOfSmAttribute.cpp:18714[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
SmTagAttribute::IsKindOfSmAttribute.cpp:19384[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]
Module file-header table (45 rows)
RustUpstream
[Attribute]SmAttribute and its derived classes
[AttributeValue]the derived class (SmLongAttribute, ...) and its data
[Behavior]SmAttributeBehaviorType
[ids]the SM_AI_* attribute ids
[tag_ids]the SM_TI_* tag id types
[type_code]the Sm*Attribute_TYPE / SmObject_TYPE values
[region_type]the region type literals of SmMergeRegionAttribute
[Attribute::new]SmAttribute(ULONG, SmAttributeBehaviorType)
[Attribute::generic]SmGenericAttribute(...)
[Attribute::long]SmLongAttribute(...)
[Attribute::pointer]SmPointerAttribute(ULONG, void*, ...)
[Attribute::pointer_list]SmPointerListAttribute(...)
[Attribute::vector3d]SmVector3dAttribute(...)
[Attribute::color]SmColorAttribute(ULONG, const SmVector3d&, ...)
[Attribute::tag]SmTagAttribute(ULONG, long x8, ...)
[Attribute::merge_region]SmMergeRegionAttribute(SmRegion*, ULONG, SmRegion*, ULONG)
[Attribute::make_copy]every MakeCopy override and copy constructor
[Attribute::attribute_id] / [Attribute::behavior]GetAttributeID / GetBehavior
[Attribute::type_code] / [Attribute::type_string] / [Attribute::is_kind_of]GetType / GetTypeString / IsKindOf (every class)
[Attribute::is_propagated_through_booleans]IsPropagatedThroughBooleans (base, SmColorAttribute)
[Attribute::long_value]SmLongAttribute::GetValue
[Attribute::vector3d_value] / [Attribute::set_vector3d_value]SmVector3dAttribute::GetValue / SetValue
[MergeRegionData]SmMergeRegionAttribute data and simple accessors (GetThisRegions, GetThisRegionTypes, GetThisRegion, GetOtherRegions, GetOperation, SetOperation)
[MergeRegionData::has_this_infinite_region] / [MergeRegionData::has_other_infinite_region]HasThisInfiniteRegion / HasOtherInfiniteRegion
[MergeRegionData::has_any_solid]SmMergeRegionAttribute::HasAnySolid
[MergeRegionData::set_regions]SmMergeRegionAttribute::SetRegions
append_new_regions (private)the two accumulation loops of SmMergeRegionAttribute::Merge
[AttributeStore]the heap of attributes plus every SmAObject::m_pAttributes list
[AttributeStore::destroy]SmAttribute::~SmAttribute (delete pAttr)
[AttributeStore::add_user] / [AttributeStore::remove_user] / [AttributeStore::users]AddUser / RemoveUser / GetUsers
[AttributeStore::from_clear_attributes]SmAttribute::fromClearAttributes
[AttributeStore::split]SmAttribute::Split
[AttributeStore::copy]SmAttribute::Copy
[AttributeStore::merge]Merge (base, SmMergeRegionAttribute)
[AttributeStore::coincident]SmAttribute::Coincident
[AttributeStore::edit] / [AttributeStore::destruction]SmAttribute::Edit / Destruction (no-ops)
[AttributeStore::propagate_regions_through_booleans]PropagateRegionsThroughBooleans (base, SmColorAttribute)
[AttributeStore::has_any_other_propagated_attribs]SmMergeRegionAttribute::HasAnyOtherPropagatedAttribs
[AttributeStore::read_indexed_attributes_from_db]SmAttributeData::ReadIndexedAttributesFromDB
[AttributeStore::read_indexed_attributes_from_db_partial]the same, with the out-param a failed line skip leaves
[AttributeStore::add_attribute]SmAObject::AddAttribute (co-ported)
[AttributeStore::remove_attribute]SmAObject::RemoveAttribute (co-ported)
[AttributeStore::clear_attributes]SmAObject::ClearAttributes (co-ported)
[AttributeStore::attributes]SmAObject::GetAttributes (co-ported)
[AttributeStore::find_attribute]SmAObject::FindAttribute (co-ported)

Upstream tests reaching this unit

prog_test:my_test_extent3d, prog_test:my_test_vector2d, prog_test:my_test_surface_closest_point, prog_test:my_test_drop_point, prog_test:my_test_matrix, prog_test:my_test_reversed_line_join