I suggest we use this issue card to track ongoing work (aka as dashboard/ChangeLog)
Observation: Link implementation is invasive too complex, thus making SOFA respectively long to compile and hard to maintain / support.
An ongoing work led by @damienmarchal aims at:
simplifying the Link implementation:
avoiding the use of Traits
split SingleLink into several cases: links between Data (DataLink), links between multiple Data (DataMultiLink?) links between BaseObject (?)
reducing massively used / included of SingleLinks
DONE:
introduce Data Link (#1491 )
remove duplicated SingleLink<> parentData in BaseData to ease further refactoring (#1491 )
replace the use of the SingleLink by a DataLink class in BaseData.h (#1491 )
remove traits code from Link.h and BaseLink.h. (#1503 )
remove reflection code in BaseData (#1541)
Also done:
use forward declaration to reduce dependency (due to headers included in header) between modules --> cleaning code dependency graph and reducing compilation time (#1509 )
DataContentValue : was there as DataValue, extracted from Data and renamed as DataContentValue
PathResolver : mechanism to generalize for resolving path (parsing string, search in graph, convert in to an object), extracted from Link in order isolate it (for now reoriente towards existing SOFA functions)
Next step :
refactoring the whole Link to separate SingleLink & MultiLink
rename AbstractDataLink as BaseDataLink ?
remove reflection mechanism inn BaseData (due to removal of SingleLink for Data)
I suggest we use this issue card to track ongoing work (aka as dashboard/ChangeLog) Observation: Link implementation is invasive too complex, thus making SOFA respectively long to compile and hard to maintain / support.
An ongoing work led by @damienmarchal aims at:
DONE:
Also done:
Next step :
Suggested labels: