Skip to content

Commit 16b82a4

Browse files
authored
Merge pull request #869 from JuliaRobotics/22Q1/enh/cloneSolveKey
more capable cloneSolveKey! (pre-deprecation)
2 parents 24ef7c0 + 93df3b5 commit 16b82a4

File tree

4 files changed

+56
-24
lines changed

4 files changed

+56
-24
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "DistributedFactorGraphs"
22
uuid = "b5cc3c7e-6572-11e9-2517-99fb8daf2f04"
3-
version = "0.18.1"
3+
version = "0.18.2"
44

55
[deps]
66
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"

src/Deprecated.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ end
6666
## Deprecate before v0.19
6767
##=================================================================================
6868

69+
# FIXME, change this to a deprecation in v0.19
70+
export deepcopySupersolve!, deepcopySolvekeys!
71+
const deepcopySupersolve! = cloneSolveKey!
72+
# @deprecate deepcopySupersolve!(w...;kw...) cloneSolveKey!(w...;kw...)
73+
const deepcopySolvekeys! = cloneSolveKey!
74+
# @deprecate deepcopySolvekeys!(w...;kw...) cloneSolveKey!(w...;kw...)
75+
6976
@deprecate dfgplot(w...;kw...) plotDFG(w...;kw...)
7077

7178
export FunctorInferenceType, PackedInferenceType
@@ -81,4 +88,14 @@ export DefaultDFG
8188

8289
const DefaultDFG = LightDFG
8390

91+
92+
## ================================================================================
93+
## Deprecate before v0.20
94+
##=================================================================================
95+
96+
# FIXME uncomment before start of v0.19
97+
# @deprecate deepcopySupersolve!(w...;kw...) cloneSolveKey!(w...;kw...)
98+
# @deprecate deepcopySolvekeys!(w...;kw...) cloneSolveKey!(w...;kw...)
99+
100+
84101
#

src/DistributedFactorGraphs.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,7 @@ export getVariableSolverData,
154154
deleteVariableSolverData!,
155155
listVariableSolverData,
156156
mergeVariableSolverData!,
157-
deepcopySolvekeys!,
158-
deepcopySupersolve!
157+
cloneSolveKey!
159158

160159

161160
# PPE

src/services/DFGVariable.jl

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -680,12 +680,12 @@ function updateVariableSolverData!( dfg::AbstractDFG,
680680
updateVariableSolverData!(dfg, sourceVariable.label, vnd, useCopy, fields; warn_if_absent=warn_if_absent)
681681
end
682682

683-
function updateVariableSolverData!(dfg::AbstractDFG,
684-
sourceVariables::Vector{<:DFGVariable},
685-
solveKey::Symbol=:default,
686-
useCopy::Bool=true,
687-
fields::Vector{Symbol}=Symbol[];
688-
warn_if_absent::Bool=true)
683+
function updateVariableSolverData!( dfg::AbstractDFG,
684+
sourceVariables::Vector{<:DFGVariable},
685+
solveKey::Symbol=:default,
686+
useCopy::Bool=true,
687+
fields::Vector{Symbol}=Symbol[];
688+
warn_if_absent::Bool=true)
689689
#I think cloud would do this in bulk for speed
690690
for var in sourceVariables
691691
updateVariableSolverData!(dfg, var.label, getSolverData(var, solveKey), useCopy, fields; warn_if_absent=warn_if_absent)
@@ -694,22 +694,38 @@ end
694694

695695
"""
696696
$SIGNATURES
697-
Duplicate a supersolve (solveKey).
698-
"""
699-
function deepcopySolvekeys!(dfg::AbstractDFG,
700-
dest::Symbol,
701-
src::Symbol;
702-
solvable::Int=0,
703-
labels=ls(dfg, solvable=solvable),
704-
verbose::Bool=false )
705-
#
706-
for x in labels
707-
sd = deepcopy(getSolverData(getVariable(dfg,x), src))
708-
sd.solveKey = dest
709-
updateVariableSolverData!(dfg, x, sd, true, Symbol[]; warn_if_absent=verbose )
710-
end
697+
Duplicate a `solveKey`` into a destination from a source.
698+
699+
Notes
700+
- Can copy between graphs, or to different solveKeys within one graph.
701+
"""
702+
function cloneSolveKey!(dest_dfg::AbstractDFG,
703+
dest::Symbol,
704+
src_dfg::AbstractDFG,
705+
src::Symbol;
706+
solvable::Int=0,
707+
labels=intersect(ls(dest_dfg, solvable=solvable), ls(src_dfg, solvable=solvable)),
708+
verbose::Bool=false )
709+
#
710+
for x in labels
711+
sd = deepcopy(getSolverData(getVariable(src_dfg, x), src))
712+
sd.solveKey = dest
713+
updateVariableSolverData!(dest_dfg, x, sd, true, Symbol[]; warn_if_absent=verbose )
714+
end
715+
716+
nothing
711717
end
712-
const deepcopySupersolve! = deepcopySolvekeys!
718+
719+
function cloneSolveKey!( dfg::AbstractDFG,
720+
dest::Symbol,
721+
src::Symbol;
722+
kw... )
723+
#
724+
@assert dest != src "Must copy to a different solveKey within the same graph, $dest."
725+
cloneSolveKey!(dfg, dest, dfg, src; kw...)
726+
end
727+
728+
#
713729

714730
"""
715731
$(SIGNATURES)

0 commit comments

Comments
 (0)