Skip to content

Commit 39eb8ff

Browse files
author
Alexey Stukalov
committed
SemOptimizer_impltype(engine)
return the type that implements SemOptimizer{engine}
1 parent 5a8f483 commit 39eb8ff

5 files changed

Lines changed: 15 additions & 10 deletions

File tree

ext/SEMNLOptExt/NLopt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ struct SemOptimizerNLopt <: SemOptimizer{:NLopt}
1313
inequality_constraints::Vector{NLoptConstraint}
1414
end
1515

16+
SEM.SemOptimizer_impltype(::Val{:NLopt}) = SemOptimizerNLopt
17+
1618
############################################################################################
1719
### Constructor
1820
############################################################################################
@@ -109,8 +111,6 @@ end
109111

110112
SEM.SemOptimizer(::Val{:NLopt}, args...; kwargs...) = SemOptimizerNLopt(args...; kwargs...)
111113

112-
SEM.optimizer_engine_doc(engine::Val{:NLopt}) = doc(SemOptimizerNLopt)
113-
114114
############################################################################################
115115
### Recommended methods
116116
############################################################################################

ext/SEMProximalOptExt/ProximalAlgorithms.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ end
99

1010
SEM.SemOptimizer{:Proximal}(args...; kwargs...) = SemOptimizerProximal(args...; kwargs...)
1111

12-
SEM.optimizer_engine_doc(engine::Val{:Proximal}) = doc(SemOptimizerProximal)
12+
SEM.SemOptimizer_impltype(::Val{:Proximal}) = SemOptimizerProximal
1313

1414
"""
1515
Connects to `ProximalAlgorithms.jl` as the optimization backend. For more information on

src/optimizer/Empty.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ struct SemOptimizerEmpty <: SemOptimizer{:Empty} end
1414

1515
SemOptimizer(::Val{:Empty}) = SemOptimizerEmpty()
1616

17-
optimizer_engine_doc(engine::Val{:Empty}) = doc(SemOptimizerEmpty)
17+
SemOptimizer_impltype(::Val{:Empty}) = SemOptimizerEmpty
1818

1919
############################################################################################
2020
### Recommended methods

src/optimizer/abstract.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,20 @@ into the current session.
6464
"""
6565
optimizer_engines() = Symbol[optimizer_engine(opt_type) for opt_type in subtypes(SemOptimizer)]
6666

67+
# return the type implementing SemOptimizer{engine}
68+
# should be overridden in the extension
69+
SemOptimizer_impltype(engine::Symbol) = SemOptimizer_impltype(Val(engine))
70+
71+
SemOptimizer_impltype(::Val{E}) where {E} = throw_engine_error(E)
72+
6773
"""
6874
optimizer_engine_doc(engine::Symbol)
6975
70-
Shows information on the optimizer engine.
71-
For a list of available engines, call `optimizer_engines`.
72-
"""
73-
optimizer_engine_doc(engine) = optimizer_engine_doc(Val(engine))
76+
Shows documentation for the optimizer engine.
7477
75-
optimizer_engine_doc(::Val{E}) where {E} = throw_engine_error(E)
78+
For a list of available engines, call [`optimizer_engines`](@ref).
79+
"""
80+
optimizer_engine_doc(engine) = doc(SemOptimizer_impltype(engine))
7681

7782
"""
7883
fit([optim::SemOptimizer], model::AbstractSem;

src/optimizer/optim.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ SemOptimizerOptim(;
6161

6262
SemOptimizer(::Val{:Optim}, args...; kwargs...) = SemOptimizerOptim(args...; kwargs...)
6363

64-
SEM.optimizer_engine_doc(engine::Val{:Optim}) = doc(SemOptimizerOptim)
64+
SemOptimizer_impltype(::Val{:Optim}) = SemOptimizerOptim
6565

6666
############################################################################################
6767
### Recommended methods

0 commit comments

Comments
 (0)