- the ability to obtain elements via getElementBySId() and getElementByMetaId()
- a better way to build Matlab bindings
But also a new Conversion API.
So what is so special about it, and how would you use it? Previously we had a number of additional functions such as:
on the SBMLDocument. This meant that the document had to know how to do all these operations. Now we went ahead and introduced just one more level of abstraction:
- SBMLDocument::convert(ConversionOptions options)
When called this function will look through a registry and find the best converter that matches the options (uhm … or none, if that might be the case, in which case the conversion would fail). Then that converter runs on the document to change it. And reports the status.
We have created converters for the tasks mentioned above: setLevelAndVersion, expandFunctionsDefinitions, expandInitialAssignments and also stripPackage (which removes a specific SBML L3 package from the current document).
The biggest advantage of course is that all these converters are available from a registry, that means:
- it is possible to replace existing converters
- and to add new ones!
I have started with a first flattening converter (not complete yet) for the COMP package. So this might be something that package writers might want to consider, perhaps they would like their package to serialize to a Level 2 annotation or some such thing!
More on this at COMBINE, I hope to see you there.