@@ -216,7 +216,7 @@ class FlatConverter :
216
216
MP_ASSERT_ALWAYS (!IsUnused (GetInitExpression (v))
217
217
|| IsBridgingToBeConsidered (GetInitExpression (v)),
218
218
" An expression's redefinition\n "
219
- " is about to be lost. Contact \n "
219
+ " could be lost. Please contact \n "
220
220
" AMPL customer support." );
221
221
}
222
222
@@ -365,10 +365,11 @@ class FlatConverter :
365
365
public: // for ConstraintKeeper
366
366
// / RunConversion() of a constraint in the flat phase:
367
367
// / Assume mixed context if not set.
368
+ // / @return Context used for redefinition
368
369
// / @note Do not use directly. Call via
369
370
// / ConstraintKeeper.ConvertConstraint().
370
371
template <class Constraint >
371
- void RunConversion (const Constraint& con, int i, int depth) {
372
+ Context RunConversion (const Constraint& con, int i, int depth) {
372
373
assert (
373
374
!GET_CONSTRAINT_KEEPER (Constraint).IsRedundant (i));
374
375
constr_depth_ = depth+1 ;
@@ -379,7 +380,7 @@ class FlatConverter :
379
380
*static_cast <Impl*>(this ),
380
381
GET_CONSTRAINT_KEEPER (Constraint).SelectValueNodeRange (i)
381
382
};
382
- MP_DISPATCH (Convert (con, i));
383
+ return MP_DISPATCH (Convert (con, i));
383
384
}
384
385
385
386
// / Query if a constraint type
@@ -528,36 +529,39 @@ class FlatConverter :
528
529
// /
529
530
// / New way is to use the \a i parameter for bridging
530
531
template <class Constraint >
531
- void Convert (const Constraint& con, int ) {
532
- MPD ( Convert (con) );
532
+ Context Convert (const Constraint& con, int ) {
533
+ return MPD ( Convert (con) );
533
534
}
534
535
535
- // / By default, we complain about someone trying to convert an unknown constraint
536
+ // / By default, we complain about someone trying to
537
+ // / convert an unknown constraint
536
538
template <class Constraint >
537
- void Convert (const Constraint& ) {
539
+ Context Convert (const Constraint& ) {
538
540
MP_RAISE (
539
541
std::string (" Constraint type '" ) +
540
542
Constraint::GetTypeName () +
541
543
" ' is neither accepted by '" +
542
544
ModelAPI::GetTypeName () +
543
545
" ', nor is conversion implemented" );
546
+ return Context::CTX_NONE;
544
547
}
545
548
546
549
// ////////////////////////// SOME SPECIFIC CONSTRAINT CONVERTERS
547
550
// / ///////////////////////////////////// ///////////////////////////
548
551
549
552
// / If backend does not like LFC, we redefine it here
550
- void Convert (const LinearFunctionalConstraint& ldc) {
553
+ Context Convert (const LinearFunctionalConstraint& ldc) {
551
554
MPD ( AddConstraint (ldc.to_linear_constraint ()) );
555
+ return Context::CTX_MIX;
552
556
}
553
557
// / Say we can (for acc:_all=0)
554
558
bool IfHasCvt_impl (const LinearFunctionalConstraint* ) {
555
559
return true ;
556
560
}
557
561
558
562
// / If backend does not like QFC, we redefine it
559
- void Convert (const QuadraticFunctionalConstraint& qdc) {
560
- qdc.AddQuadraticConstraint (*(Impl*)this );
563
+ Context Convert (const QuadraticFunctionalConstraint& qdc) {
564
+ return qdc.AddQuadraticConstraint (*(Impl*)this );
561
565
}
562
566
// / Say we can
563
567
bool IfHasCvt_impl (const QuadraticFunctionalConstraint* ) {
@@ -1738,7 +1742,8 @@ class FlatConverter :
1738
1742
STORE_CONSTRAINT_TYPE__NO_MAP (
1739
1743
UnaryEncodingConstraint, " acc:uenc" )
1740
1744
// / Dummy conversion for UEncConstr
1741
- void Convert (const UnaryEncodingConstraint& ) { }
1745
+ Context Convert (const UnaryEncodingConstraint& )
1746
+ { return Context::CTX_ROOT; }
1742
1747
// / Say we can (for acc:_all=0)
1743
1748
bool IfHasCvt_impl (const UnaryEncodingConstraint* ) {
1744
1749
return true ;
0 commit comments