@@ -27,6 +27,8 @@ function isbridged end
27
27
function isbridged (b:: AbstractBridgeOptimizer , :: Type{CI{F, S}} ) where {F, S}
28
28
return isbridged (b, F, S)
29
29
end
30
+ # We don't bridge variables.
31
+ isbridged (b:: AbstractBridgeOptimizer , :: Type{VI} ) = false
30
32
31
33
"""
32
34
supportsbridgingconstraint(b::AbstractBridgeOptimizer,
@@ -318,11 +320,36 @@ end
318
320
# Name
319
321
function MOI. canget (b:: AbstractBridgeOptimizer , IdxT:: Type{<:MOI.Index} ,
320
322
name:: String )
321
- return MOI. canget (b. model, IdxT, name)
323
+ if isbridged (b, IdxT)
324
+ return MOI. canget (b. bridged, IdxT, name)
325
+ else
326
+ return MOI. canget (b. model, IdxT, name)
327
+ end
322
328
end
323
329
function MOI. get (b:: AbstractBridgeOptimizer , IdxT:: Type{<:MOI.Index} ,
324
330
name:: String )
325
- return MOI. get (b. model, IdxT, name)
331
+ if isbridged (b, IdxT)
332
+ return MOI. get (b. bridged, IdxT, name)
333
+ else
334
+ return MOI. get (b. model, IdxT, name)
335
+ end
336
+ end
337
+
338
+ # For the type-unstable case, we have no information as to whether the
339
+ # constraint is in the bridge or the model. Therefore, we try the model first,
340
+ # and then the bridge if that fails. As such, we need canget for either the
341
+ # bridge or the model.
342
+ function MOI. canget (b:: AbstractBridgeOptimizer , IdxT:: Type{CI} ,
343
+ name:: String )
344
+ return MOI. canget (b. bridged, IdxT, name) || MOI. canget (b. model, IdxT, name)
345
+ end
346
+ function MOI. get (b:: AbstractBridgeOptimizer , IdxT:: Type{CI} ,
347
+ name:: String )
348
+ if MOI. canget (b. model, IdxT, name)
349
+ return MOI. get (b. model, IdxT, name)
350
+ else
351
+ return MOI. get (b. bridged, IdxT, name)
352
+ end
326
353
end
327
354
328
355
# Constraints
0 commit comments