Skip to content

Commit

Permalink
use the safer Object_createChild SBML methods.
Browse files Browse the repository at this point in the history
This depends on sbmlteam/libsbml#252 to be merged,
because some of the functions were actually not exposed to the C API.

Creating the members from the parent objects seems safer because all XML
metadata and versioning info gets automatically propagated. Also the code is a
bit shorter.
  • Loading branch information
exaexa committed Jul 18, 2022
1 parent 8705bd1 commit 9577bc1
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 209 deletions.
27 changes: 0 additions & 27 deletions src/unitful.jl
Original file line number Diff line number Diff line change
Expand Up @@ -101,30 +101,3 @@ string ID.
"""
unitful(m::Model, val::Tuple{Float64,String}, default_unit::String) =
unitful(m, val, unitful(m.units[default_unit]))

function unit_definition(id::String, units::UnitDefinition)::VPtr
unit_definition = ccall(
sbml(:UnitDefinition_create),
VPtr,
(Cint, Cint),
WRITESBML_DEFAULT_LEVEL,
WRITESBML_DEFAULT_VERSION,
)
ccall(sbml(:UnitDefinition_setId), Cint, (VPtr, Cstring), unit_definition, id)
isnothing(units.name) || ccall(
sbml(:UnitDefinition_setName),
Cint,
(VPtr, Cstring),
unit_definition,
units.name,
)
for unit in units.unit_parts
unit_ptr = ccall(sbml(:UnitDefinition_createUnit), VPtr, (VPtr,), unit_definition)
unit_kind = ccall(sbml(:UnitKind_forName), Cint, (Cstring,), unit.kind)
ccall(sbml(:Unit_setKind), Cint, (VPtr, Cint), unit_ptr, unit_kind)
ccall(sbml(:Unit_setScale), Cint, (VPtr, Cint), unit_ptr, unit.scale)
ccall(sbml(:Unit_setExponent), Cint, (VPtr, Cint), unit_ptr, unit.exponent)
ccall(sbml(:Unit_setMultiplier), Cint, (VPtr, Cdouble), unit_ptr, unit.multiplier)
end
return unit_definition
end
Loading

0 comments on commit 9577bc1

Please sign in to comment.