457
457
458
458
function get_and_set_val! (
459
459
rng,
460
- vi:: AbstractVarInfo ,
460
+ vi:: VarInfoOrThreadSafeVarInfo ,
461
461
vns:: AbstractVector{<:VarName} ,
462
462
dist:: MultivariateDistribution ,
463
463
spl:: Union{SampleFromPrior,SampleFromUniform} ,
@@ -470,7 +470,7 @@ function get_and_set_val!(
470
470
r = init (rng, dist, spl, n)
471
471
for i in 1 : n
472
472
vn = vns[i]
473
- vi[vn] = vectorize (dist, maybe_link (vi, vn, dist, r[:, i]))
473
+ setindex!! (vi, vectorize (dist, maybe_link (vi, vn, dist, r[:, i])), vn )
474
474
setorder! (vi, vn, get_num_produce (vi))
475
475
end
476
476
else
494
494
495
495
function get_and_set_val! (
496
496
rng,
497
- vi:: AbstractVarInfo ,
497
+ vi:: VarInfoOrThreadSafeVarInfo ,
498
498
vns:: AbstractArray{<:VarName} ,
499
499
dists:: Union{Distribution,AbstractArray{<:Distribution}} ,
500
500
spl:: Union{SampleFromPrior,SampleFromUniform} ,
@@ -508,7 +508,7 @@ function get_and_set_val!(
508
508
for i in eachindex (vns)
509
509
vn = vns[i]
510
510
dist = dists isa AbstractArray ? dists[i] : dists
511
- vi[vn] = vectorize (dist, maybe_link (vi, vn, dist, r[i]))
511
+ setindex!! (vi, vectorize (dist, maybe_link (vi, vn, dist, r[i])), vn )
512
512
setorder! (vi, vn, get_num_produce (vi))
513
513
end
514
514
else
@@ -538,27 +538,27 @@ function get_and_set_val!(
538
538
end
539
539
540
540
function set_val! (
541
- vi:: AbstractVarInfo ,
541
+ vi:: VarInfoOrThreadSafeVarInfo ,
542
542
vns:: AbstractVector{<:VarName} ,
543
543
dist:: MultivariateDistribution ,
544
544
val:: AbstractMatrix ,
545
545
)
546
546
@assert size (val, 2 ) == length (vns)
547
547
foreach (enumerate (vns)) do (i, vn)
548
- vi[vn] = val[:, i]
548
+ setindex!! (vi, val[:, i], vn)
549
549
end
550
550
return val
551
551
end
552
552
function set_val! (
553
- vi:: AbstractVarInfo ,
553
+ vi:: VarInfoOrThreadSafeVarInfo ,
554
554
vns:: AbstractArray{<:VarName} ,
555
555
dists:: Union{Distribution,AbstractArray{<:Distribution}} ,
556
556
val:: AbstractArray ,
557
557
)
558
558
@assert size (val) == size (vns)
559
559
foreach (CartesianIndices (val)) do ind
560
560
dist = dists isa AbstractArray ? dists[ind] : dists
561
- vi[vns[ind]] = vectorize (dist, val[ind])
561
+ setindex!! (vi, vectorize (dist, val[ind]), vns [ind])
562
562
end
563
563
return val
564
564
end
0 commit comments