@@ -680,12 +680,12 @@ function updateVariableSolverData!( dfg::AbstractDFG,
680
680
updateVariableSolverData! (dfg, sourceVariable. label, vnd, useCopy, fields; warn_if_absent= warn_if_absent)
681
681
end
682
682
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 )
689
689
# I think cloud would do this in bulk for speed
690
690
for var in sourceVariables
691
691
updateVariableSolverData! (dfg, var. label, getSolverData (var, solveKey), useCopy, fields; warn_if_absent= warn_if_absent)
@@ -694,22 +694,38 @@ end
694
694
695
695
"""
696
696
$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
711
717
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
+ #
713
729
714
730
"""
715
731
$(SIGNATURES)
0 commit comments