mirror of
https://github.com/MillironX/XAM.jl.git
synced 2024-11-14 22:33:14 +00:00
Quick fix for BioCore.RecordHelper: unsafe_parse_decimal
This commit is contained in:
parent
c4f3c4b0df
commit
2cad552f63
1 changed files with 32 additions and 1 deletions
|
@ -9,12 +9,43 @@ import Automa
|
||||||
import Automa.RegExp: @re_str
|
import Automa.RegExp: @re_str
|
||||||
import BioAlignments
|
import BioAlignments
|
||||||
import BioGenerics.Exceptions: missingerror
|
import BioGenerics.Exceptions: missingerror
|
||||||
import BioGenerics.RecordHelper: unsafe_parse_decimal
|
|
||||||
import BioGenerics: isfilled, header
|
import BioGenerics: isfilled, header
|
||||||
import BioSequences
|
import BioSequences
|
||||||
import BufferedStreams
|
import BufferedStreams
|
||||||
using Printf: @sprintf
|
using Printf: @sprintf
|
||||||
|
|
||||||
|
|
||||||
|
#TODO: update import BioCore.RecordHelper: unsafe_parse_decimal
|
||||||
|
# r"[0-9]+" must match `data[range]`.
|
||||||
|
function unsafe_parse_decimal(::Type{T}, data::Vector{UInt8}, range::UnitRange{Int}) where {T<:Unsigned}
|
||||||
|
x = zero(T)
|
||||||
|
@inbounds for i in range
|
||||||
|
x = Base.Checked.checked_mul(x, 10 % T)
|
||||||
|
x = Base.Checked.checked_add(x, (data[i] - UInt8('0')) % T)
|
||||||
|
end
|
||||||
|
return x
|
||||||
|
end
|
||||||
|
|
||||||
|
# r"[-+]?[0-9]+" must match `data[range]`.
|
||||||
|
function unsafe_parse_decimal(::Type{T}, data::Vector{UInt8}, range::UnitRange{Int}) where {T<:Signed}
|
||||||
|
lo = first(range)
|
||||||
|
if data[lo] == UInt8('-')
|
||||||
|
sign = T(-1)
|
||||||
|
lo += 1
|
||||||
|
elseif data[lo] == UInt8('+')
|
||||||
|
sign = T(+1)
|
||||||
|
lo += 1
|
||||||
|
else
|
||||||
|
sign = T(+1)
|
||||||
|
end
|
||||||
|
x = zero(T)
|
||||||
|
@inbounds for i in lo:last(range)
|
||||||
|
x = Base.Checked.checked_mul(x, 10 % T)
|
||||||
|
x = Base.Checked.checked_add(x, (data[i] - UInt8('0')) % T)
|
||||||
|
end
|
||||||
|
return sign * x
|
||||||
|
end
|
||||||
|
|
||||||
include("flags.jl")
|
include("flags.jl")
|
||||||
include("metainfo.jl")
|
include("metainfo.jl")
|
||||||
include("record.jl")
|
include("record.jl")
|
||||||
|
|
Loading…
Reference in a new issue