@@ -107,15 +107,21 @@ function MOI.delete(model::AbstractModel, vis::Vector{MOI.VariableIndex})
107107 return
108108end
109109
110- function MOI. is_valid (
110+ # `AbstractModel` fields `.variables` and `.constraints` act like a
111+ # `StructOfConstraints` where `.variables` contains the `VariableIndex`-in-`S`
112+ # constraints and `.constraints` contains the other constraints.
113+ function constraints (
111114 model:: AbstractModel ,
112- ci:: CI{MOI.VariableIndex,S} ,
113- ) where {S}
114- return MOI. is_valid (model. variables, ci)
115+ ci:: MOI.ConstraintIndex{MOI.VariableIndex} ,
116+ )
117+ return model. variables
118+ end
119+ function constraints (model:: AbstractModel , ci:: MOI.ConstraintIndex )
120+ return model. constraints
115121end
116122
117123function MOI. is_valid (model:: AbstractModel , ci:: MOI.ConstraintIndex )
118- return MOI. is_valid (model . constraints, ci)
124+ return MOI. is_valid (constraints (model, ci) , ci)
119125end
120126
121127function MOI. is_valid (model:: AbstractModel , x:: MOI.VariableIndex )
@@ -375,21 +381,8 @@ function MOI.get(
375381 return MOI. get (model. constraints, attr, ci)
376382end
377383
378- function _delete_constraint (
379- model:: AbstractModel ,
380- ci:: MOI.ConstraintIndex{MOI.VariableIndex,S} ,
381- ) where {S}
382- MOI. throw_if_not_valid (model, ci)
383- MOI. delete (model. variables, ci)
384- return
385- end
386-
387- function _delete_constraint (model:: AbstractModel , ci:: MOI.ConstraintIndex )
388- return MOI. delete (model. constraints, ci)
389- end
390-
391384function MOI. delete (model:: AbstractModel , ci:: MOI.ConstraintIndex )
392- _delete_constraint ( model, ci)
385+ MOI . delete ( constraints ( model, ci) , ci)
393386 model. name_to_con = nothing
394387 delete! (model. con_to_name, ci)
395388 return
@@ -404,43 +397,13 @@ function MOI.modify(
404397 return
405398end
406399
407- function MOI. set (
408- :: AbstractModel ,
409- :: MOI.ConstraintFunction ,
410- :: MOI.ConstraintIndex{MOI.VariableIndex,<:MOI.AbstractScalarSet} ,
411- :: MOI.VariableIndex ,
412- )
413- return throw (MOI. SettingVariableIndexNotAllowed ())
414- end
415-
416- function MOI. set (
417- model:: AbstractModel{T} ,
418- attr:: MOI.ConstraintSet ,
419- ci:: MOI.ConstraintIndex{MOI.VariableIndex,S} ,
420- set:: S ,
421- ) where {T,S<: SUPPORTED_VARIABLE_SCALAR_SETS{T} }
422- MOI. throw_if_not_valid (model, ci)
423- MOI. set (model. variables, attr, ci, set)
424- return
425- end
426-
427- function MOI. set (
428- model:: AbstractModel ,
429- attr:: MOI.ConstraintSet ,
430- ci:: MOI.ConstraintIndex{<:MOI.AbstractFunction,S} ,
431- set:: S ,
432- ) where {S<: MOI.AbstractSet }
433- MOI. set (model. constraints, attr, ci, set)
434- return
435- end
436-
437400function MOI. set (
438401 model:: AbstractModel ,
439- attr:: MOI.ConstraintFunction ,
440- ci:: MOI.ConstraintIndex{F,<:MOI.AbstractSet} ,
441- func :: F ,
442- ) where {F <: MOI.AbstractFunction }
443- MOI. set (model . constraints, attr, ci, func )
402+ attr:: Union{ MOI.ConstraintFunction,MOI.ConstraintSet} ,
403+ ci:: MOI.ConstraintIndex ,
404+ value ,
405+ )
406+ MOI. set (constraints (model, ci), attr, ci, value )
444407 return
445408end
446409
@@ -482,29 +445,12 @@ function MOI.get(
482445 return MOI. get (model. constraints, loc)
483446end
484447
485- function MOI. get (
486- model:: AbstractModel ,
487- :: MOI.ConstraintFunction ,
488- ci:: CI{MOI.VariableIndex} ,
489- )
490- MOI. throw_if_not_valid (model, ci)
491- return MOI. VariableIndex (ci. value)
492- end
493448function MOI. get (
494449 model:: AbstractModel ,
495450 attr:: Union{MOI.ConstraintFunction,MOI.ConstraintSet} ,
496451 ci:: MOI.ConstraintIndex ,
497452)
498- return MOI. get (model. constraints, attr, ci)
499- end
500-
501- function MOI. get (
502- model:: AbstractModel ,
503- :: MOI.ConstraintSet ,
504- ci:: CI{MOI.VariableIndex,S} ,
505- ) where {S}
506- MOI. throw_if_not_valid (model, ci)
507- return set_from_constants (model. variables, S, ci. value)
453+ return MOI. get (constraints (model, ci), attr, ci)
508454end
509455
510456function MOI. is_empty (model:: AbstractModel )
0 commit comments