Generated on for Gecode by doxygen 1.17.0
var-type.hpp
Go to the documentation of this file.
1/*
2 * CAUTION:
3 * This file has been automatically generated. Do not edit,
4 * edit the following files instead:
5 * - ./gecode/int/var-imp/int.vis
6 * - ./gecode/int/var-imp/bool.vis
7 * - ./gecode/set/var-imp/set.vis
8 * - ./gecode/float/var-imp/float.vis
9 *
10 * This file contains generated code fragments which are
11 * copyrighted as follows:
12 *
13 * Main author:
14 * Christian Schulte <schulte@gecode.dev>
15 *
16 * Contributing authors:
17 * Kris Coester <kris.coester@sap.com>
18 * Alexander Shepil <alexander.shepil@sap.com>
19 * Mikael Zayenz Lagerkvist <lagerkvist@gecode.dev>
20 *
21 * Copyright:
22 * Christian Schulte, 2007
23 * Kris Coester, 2024
24 * Alexander Shepil, 2024
25 * Mikael Zayenz Lagerkvist, 2026
26 *
27 * The generated code fragments are part of Gecode, the generic
28 * constraint development environment:
29 * http://www.gecode.dev
30 *
31 * Permission is hereby granted, free of charge, to any person obtaining
32 * a copy of this software and associated documentation files (the
33 * "Software"), to deal in the Software without restriction, including
34 * without limitation the rights to use, copy, modify, merge, publish,
35 * distribute, sublicense, and/or sell copies of the Software, and to
36 * permit persons to whom the Software is furnished to do so, subject to
37 * the following conditions:
38 *
39 * The above copyright notice and this permission notice shall be
40 * included in all copies or substantial portions of the Software.
41 *
42 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
43 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
44 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
45 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
46 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
47 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
48 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
49 *
50 */
51
52#ifdef GECODE_HAS_INT_VARS
53namespace Gecode { namespace Int {
59
110}}
111#endif
112#ifdef GECODE_HAS_INT_VARS
113namespace Gecode { namespace Int {
119
136}}
137#endif
138#ifdef GECODE_HAS_SET_VARS
139namespace Gecode { namespace Set {
145
258}}
259#endif
260#ifdef GECODE_HAS_FLOAT_VARS
261namespace Gecode { namespace Float {
267
302}}
303#endif
304#ifdef GECODE_HAS_INT_VARS
305namespace Gecode { namespace Int {
308 public:
310 static const int idx_c = 0;
312 static const int idx_d = -1;
316 static const int free_bits = 0;
318 static const int med_fst = 0;
320 static const int med_lst = med_fst + 2;
322 static const int med_mask = ((1 << 2) - 1) << med_fst;
327 };
328}}
329#else
330namespace Gecode { namespace Int {
332 class IntVarImpConf {
333 public:
335 static const int idx_c = -1;
337 static const int idx_d = -1;
339 static const int med_lst = 0;
340 };
341}}
342#endif
343#ifdef GECODE_HAS_INT_VARS
344namespace Gecode { namespace Int {
347 public:
355 static const int free_bits = 2;
359 static const int med_lst = med_fst + 1;
361 static const int med_mask = ((1 << 1) - 1) << med_fst;
366 };
367}}
368#else
369namespace Gecode { namespace Int {
371 class BoolVarImpConf {
372 public:
374 static const int idx_c = Gecode::Int::IntVarImpConf::idx_c;
376 static const int idx_d = Gecode::Int::IntVarImpConf::idx_d;
379 };
380}}
381#endif
382#ifdef GECODE_HAS_SET_VARS
383namespace Gecode { namespace Set {
386 public:
394 static const int free_bits = 0;
398 static const int med_lst = med_fst + 4;
400 static const int med_mask = ((1 << 4) - 1) << med_fst;
405 };
406}}
407#else
408namespace Gecode { namespace Set {
410 class SetVarImpConf {
411 public:
413 static const int idx_c = Gecode::Int::BoolVarImpConf::idx_c;
415 static const int idx_d = Gecode::Int::BoolVarImpConf::idx_d;
418 };
419}}
420#endif
421#ifdef GECODE_HAS_FLOAT_VARS
422namespace Gecode { namespace Float {
425 public:
433 static const int free_bits = 0;
437 static const int med_lst = med_fst + 2;
439 static const int med_mask = ((1 << 2) - 1) << med_fst;
444 };
445}}
446#else
447namespace Gecode { namespace Float {
449 class FloatVarImpConf {
450 public:
452 static const int idx_c = Gecode::Set::SetVarImpConf::idx_c;
454 static const int idx_d = Gecode::Set::SetVarImpConf::idx_d;
457 };
458}}
459#endif
460
461namespace Gecode {
462
465 public:
472 };
473
474}
475
476#ifdef GECODE_HAS_INT_VARS
477namespace Gecode { namespace Int {
478 forceinline Gecode::ModEvent
480 static const Gecode::ModEvent me_c = (
481 (
482 (ME_INT_NONE << 0) | // [ME_INT_NONE][ME_INT_NONE]
483 (ME_INT_VAL << 2) | // [ME_INT_NONE][ME_INT_VAL ]
484 (ME_INT_BND << 4) | // [ME_INT_NONE][ME_INT_BND ]
485 (ME_INT_DOM << 6) // [ME_INT_NONE][ME_INT_DOM ]
486 ) |
487 (
488 (ME_INT_VAL << 8) | // [ME_INT_VAL ][ME_INT_NONE]
489 (ME_INT_VAL << 10) | // [ME_INT_VAL ][ME_INT_VAL ]
490 (ME_INT_VAL << 12) | // [ME_INT_VAL ][ME_INT_BND ]
491 (ME_INT_VAL << 14) // [ME_INT_VAL ][ME_INT_DOM ]
492 ) |
493 (
494 (ME_INT_BND << 16) | // [ME_INT_BND ][ME_INT_NONE]
495 (ME_INT_VAL << 18) | // [ME_INT_BND ][ME_INT_VAL ]
496 (ME_INT_BND << 20) | // [ME_INT_BND ][ME_INT_BND ]
497 (ME_INT_BND << 22) // [ME_INT_BND ][ME_INT_DOM ]
498 ) |
499 (
500 (ME_INT_DOM << 24) | // [ME_INT_DOM ][ME_INT_NONE]
501 (ME_INT_VAL << 26) | // [ME_INT_DOM ][ME_INT_VAL ]
502 (ME_INT_BND << 28) | // [ME_INT_DOM ][ME_INT_BND ]
503 (ME_INT_DOM << 30) // [ME_INT_DOM ][ME_INT_DOM ]
504 )
505 );
506 return ((me_c >> (me2 << 3)) >> (me1 << 1)) & 3;
507 }
508 forceinline bool
510 switch (me) {
511 case ME_INT_NONE:
512 return false;
513 case ME_INT_VAL:
514 {
515 Gecode::ModEventDelta med_int = med & med_mask;
516 if (med_int == (ME_INT_VAL << med_fst))
517 return false;
518 med ^= med_int;
519 med ^= ME_INT_VAL << med_fst;
520 break;
521 }
522 case ME_INT_BND:
523 {
524 static const Gecode::ModEvent me_c = (
525 ((ME_INT_NONE ^ ME_INT_BND ) << 0) |
526 ((ME_INT_VAL ^ ME_INT_VAL ) << 4) |
527 ((ME_INT_BND ^ ME_INT_BND ) << 8) |
528 ((ME_INT_DOM ^ ME_INT_BND ) << 12)
529 );
530 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
531 Gecode::ModEvent me_n = (me_c >> (me_o << 2)) & (med_mask >> med_fst);
532 if (me_n == 0)
533 return false;
534 med ^= me_n << med_fst;
535 break;
536 }
537 case ME_INT_DOM:
538 {
539 Gecode::ModEventDelta med_int = med & med_mask;
540 if (med_int != 0)
541 return false;
542 med |= ME_INT_DOM << med_fst;
543 break;
544 }
545 default: GECODE_NEVER;
546 }
547 return true;
548 }
549
550}}
551#endif
552#ifdef GECODE_HAS_INT_VARS
553namespace Gecode { namespace Int {
554 forceinline Gecode::ModEvent
556 return me1 | me2;
557 }
558 forceinline bool
560 switch (me) {
561 case ME_BOOL_NONE:
562 return false;
563 case ME_BOOL_VAL:
564 if ((med & (ME_BOOL_VAL << med_fst)) != 0)
565 return false;
566 med |= ME_BOOL_VAL << med_fst;
567 break;
568 default: GECODE_NEVER;
569 }
570 return true;
571 }
572
573}}
574#endif
575#ifdef GECODE_HAS_SET_VARS
576namespace Gecode { namespace Set {
577 forceinline Gecode::ModEvent
579 static const Gecode::ModEvent me_c[ME_SET_CBB+1][ME_SET_CBB+1] = {
580 {
581 ME_SET_NONE, // [ME_SET_NONE][ME_SET_NONE]
582 ME_SET_VAL , // [ME_SET_NONE][ME_SET_VAL ]
583 ME_SET_CARD, // [ME_SET_NONE][ME_SET_CARD]
584 ME_SET_LUB , // [ME_SET_NONE][ME_SET_LUB ]
585 ME_SET_GLB , // [ME_SET_NONE][ME_SET_GLB ]
586 ME_SET_BB , // [ME_SET_NONE][ME_SET_BB ]
587 ME_SET_CLUB, // [ME_SET_NONE][ME_SET_CLUB]
588 ME_SET_CGLB, // [ME_SET_NONE][ME_SET_CGLB]
589 ME_SET_CBB // [ME_SET_NONE][ME_SET_CBB ]
590 },
591 {
592 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_NONE]
593 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_VAL ]
594 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_CARD]
595 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_LUB ]
596 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_GLB ]
597 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_BB ]
598 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_CLUB]
599 ME_SET_VAL , // [ME_SET_VAL ][ME_SET_CGLB]
600 ME_SET_VAL // [ME_SET_VAL ][ME_SET_CBB ]
601 },
602 {
603 ME_SET_CARD, // [ME_SET_CARD][ME_SET_NONE]
604 ME_SET_VAL , // [ME_SET_CARD][ME_SET_VAL ]
605 ME_SET_CARD, // [ME_SET_CARD][ME_SET_CARD]
606 ME_SET_CLUB, // [ME_SET_CARD][ME_SET_LUB ]
607 ME_SET_CGLB, // [ME_SET_CARD][ME_SET_GLB ]
608 ME_SET_CBB , // [ME_SET_CARD][ME_SET_BB ]
609 ME_SET_CLUB, // [ME_SET_CARD][ME_SET_CLUB]
610 ME_SET_CGLB, // [ME_SET_CARD][ME_SET_CGLB]
611 ME_SET_CBB // [ME_SET_CARD][ME_SET_CBB ]
612 },
613 {
614 ME_SET_LUB , // [ME_SET_LUB ][ME_SET_NONE]
615 ME_SET_VAL , // [ME_SET_LUB ][ME_SET_VAL ]
616 ME_SET_CLUB, // [ME_SET_LUB ][ME_SET_CARD]
617 ME_SET_LUB , // [ME_SET_LUB ][ME_SET_LUB ]
618 ME_SET_BB , // [ME_SET_LUB ][ME_SET_GLB ]
619 ME_SET_BB , // [ME_SET_LUB ][ME_SET_BB ]
620 ME_SET_CLUB, // [ME_SET_LUB ][ME_SET_CLUB]
621 ME_SET_CBB , // [ME_SET_LUB ][ME_SET_CGLB]
622 ME_SET_CBB // [ME_SET_LUB ][ME_SET_CBB ]
623 },
624 {
625 ME_SET_GLB , // [ME_SET_GLB ][ME_SET_NONE]
626 ME_SET_VAL , // [ME_SET_GLB ][ME_SET_VAL ]
627 ME_SET_CGLB, // [ME_SET_GLB ][ME_SET_CARD]
628 ME_SET_BB , // [ME_SET_GLB ][ME_SET_LUB ]
629 ME_SET_GLB , // [ME_SET_GLB ][ME_SET_GLB ]
630 ME_SET_BB , // [ME_SET_GLB ][ME_SET_BB ]
631 ME_SET_CBB , // [ME_SET_GLB ][ME_SET_CLUB]
632 ME_SET_CGLB, // [ME_SET_GLB ][ME_SET_CGLB]
633 ME_SET_CBB // [ME_SET_GLB ][ME_SET_CBB ]
634 },
635 {
636 ME_SET_BB , // [ME_SET_BB ][ME_SET_NONE]
637 ME_SET_VAL , // [ME_SET_BB ][ME_SET_VAL ]
638 ME_SET_CBB , // [ME_SET_BB ][ME_SET_CARD]
639 ME_SET_BB , // [ME_SET_BB ][ME_SET_LUB ]
640 ME_SET_BB , // [ME_SET_BB ][ME_SET_GLB ]
641 ME_SET_BB , // [ME_SET_BB ][ME_SET_BB ]
642 ME_SET_CBB , // [ME_SET_BB ][ME_SET_CLUB]
643 ME_SET_CBB , // [ME_SET_BB ][ME_SET_CGLB]
644 ME_SET_CBB // [ME_SET_BB ][ME_SET_CBB ]
645 },
646 {
647 ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_NONE]
648 ME_SET_VAL , // [ME_SET_CLUB][ME_SET_VAL ]
649 ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_CARD]
650 ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_LUB ]
651 ME_SET_CBB , // [ME_SET_CLUB][ME_SET_GLB ]
652 ME_SET_CBB , // [ME_SET_CLUB][ME_SET_BB ]
653 ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_CLUB]
654 ME_SET_CBB , // [ME_SET_CLUB][ME_SET_CGLB]
655 ME_SET_CBB // [ME_SET_CLUB][ME_SET_CBB ]
656 },
657 {
658 ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_NONE]
659 ME_SET_VAL , // [ME_SET_CGLB][ME_SET_VAL ]
660 ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_CARD]
661 ME_SET_CBB , // [ME_SET_CGLB][ME_SET_LUB ]
662 ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_GLB ]
663 ME_SET_CBB , // [ME_SET_CGLB][ME_SET_BB ]
664 ME_SET_CBB , // [ME_SET_CGLB][ME_SET_CLUB]
665 ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_CGLB]
666 ME_SET_CBB // [ME_SET_CGLB][ME_SET_CBB ]
667 },
668 {
669 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_NONE]
670 ME_SET_VAL , // [ME_SET_CBB ][ME_SET_VAL ]
671 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_CARD]
672 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_LUB ]
673 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_GLB ]
674 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_BB ]
675 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_CLUB]
676 ME_SET_CBB , // [ME_SET_CBB ][ME_SET_CGLB]
677 ME_SET_CBB // [ME_SET_CBB ][ME_SET_CBB ]
678 }
679 };
680 return me_c[me1][me2];
681 }
682 forceinline bool
684 switch (me) {
685 case ME_SET_NONE:
686 return false;
687 case ME_SET_VAL:
688 {
689 Gecode::ModEventDelta med_set = med & med_mask;
690 if (med_set == (ME_SET_VAL << med_fst))
691 return false;
692 med ^= med_set;
693 med ^= ME_SET_VAL << med_fst;
694 break;
695 }
696 case ME_SET_CARD:
697 {
698 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
708 };
709 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
710 Gecode::ModEventDelta med_n = me_c[me_o];
711 if (med_n == 0)
712 return false;
713 med ^= med_n;
714 break;
715 }
716 case ME_SET_LUB:
717 {
718 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
728 };
729 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
730 Gecode::ModEventDelta med_n = me_c[me_o];
731 if (med_n == 0)
732 return false;
733 med ^= med_n;
734 break;
735 }
736 case ME_SET_GLB:
737 {
738 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
748 };
749 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
750 Gecode::ModEventDelta med_n = me_c[me_o];
751 if (med_n == 0)
752 return false;
753 med ^= med_n;
754 break;
755 }
756 case ME_SET_BB:
757 {
758 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
768 };
769 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
770 Gecode::ModEventDelta med_n = me_c[me_o];
771 if (med_n == 0)
772 return false;
773 med ^= med_n;
774 break;
775 }
776 case ME_SET_CLUB:
777 {
778 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
788 };
789 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
790 Gecode::ModEventDelta med_n = me_c[me_o];
791 if (med_n == 0)
792 return false;
793 med ^= med_n;
794 break;
795 }
796 case ME_SET_CGLB:
797 {
798 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
808 };
809 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
810 Gecode::ModEventDelta med_n = me_c[me_o];
811 if (med_n == 0)
812 return false;
813 med ^= med_n;
814 break;
815 }
816 case ME_SET_CBB:
817 {
818 static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
828 };
829 Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
830 Gecode::ModEventDelta med_n = me_c[me_o];
831 if (med_n == 0)
832 return false;
833 med ^= med_n;
834 break;
835 }
836 default: GECODE_NEVER;
837 }
838 return true;
839 }
840
841}}
842#endif
843#ifdef GECODE_HAS_FLOAT_VARS
844namespace Gecode { namespace Float {
845 forceinline Gecode::ModEvent
847 static const Gecode::ModEvent me_c = (
848 (
849 (ME_FLOAT_NONE << 0) | // [ME_FLOAT_NONE][ME_FLOAT_NONE]
850 (ME_FLOAT_VAL << 2) | // [ME_FLOAT_NONE][ME_FLOAT_VAL ]
851 (ME_FLOAT_BND << 4) // [ME_FLOAT_NONE][ME_FLOAT_BND ]
852 ) |
853 (
854 (ME_FLOAT_VAL << 8) | // [ME_FLOAT_VAL ][ME_FLOAT_NONE]
855 (ME_FLOAT_VAL << 10) | // [ME_FLOAT_VAL ][ME_FLOAT_VAL ]
856 (ME_FLOAT_VAL << 12) // [ME_FLOAT_VAL ][ME_FLOAT_BND ]
857 ) |
858 (
859 (ME_FLOAT_BND << 16) | // [ME_FLOAT_BND ][ME_FLOAT_NONE]
860 (ME_FLOAT_VAL << 18) | // [ME_FLOAT_BND ][ME_FLOAT_VAL ]
861 (ME_FLOAT_BND << 20) // [ME_FLOAT_BND ][ME_FLOAT_BND ]
862 )
863 );
864 return ((me_c >> (me2 << 3)) >> (me1 << 1)) & 3;
865 }
866 forceinline bool
868 switch (me) {
869 case ME_FLOAT_NONE:
870 return false;
871 case ME_FLOAT_VAL:
872 {
873 Gecode::ModEventDelta med_float = med & med_mask;
874 if (med_float == (ME_FLOAT_VAL << med_fst))
875 return false;
876 med ^= med_float;
877 med ^= ME_FLOAT_VAL << med_fst;
878 break;
879 }
880 case ME_FLOAT_BND:
881 {
882 Gecode::ModEventDelta med_float = med & med_mask;
883 if (med_float != 0)
884 return false;
885 med |= ME_FLOAT_BND << med_fst;
886 break;
887 }
888 default: GECODE_NEVER;
889 }
890 return true;
891 }
892
893}}
894#endif
895namespace Gecode {
896 forceinline ModEventDelta
912}
913
914// STATISTICS: kernel-var
Configuration for all variable implementations.
Definition var-type.hpp:464
static const int idx_d
Index for dispose.
Definition var-type.hpp:469
static const int idx_c
Index for cloning.
Definition var-type.hpp:467
static ModEventDelta med_combine(ModEventDelta med1, ModEventDelta med2)
Combine modification event delta med1 with med2.
Definition var-type.hpp:897
Configuration for Float-variable implementations.
Definition var-type.hpp:424
static const int med_lst
End of bits for modification event delta.
Definition var-type.hpp:437
static const int idx_d
Index for disposal.
Definition var-type.hpp:429
static bool med_update(Gecode::ModEventDelta &med, Gecode::ModEvent me)
Update modification even delta med by me, return true on change.
Definition var-type.hpp:867
static const int med_mask
Bitmask for modification event delta.
Definition var-type.hpp:439
static const int idx_c
Index for cloning.
Definition var-type.hpp:427
static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2)
Combine modification events me1 and me2.
Definition var-type.hpp:846
static const int med_fst
Start of bits for modification event delta.
Definition var-type.hpp:435
static const int free_bits
Freely available bits.
Definition var-type.hpp:433
static const Gecode::PropCond pc_max
Maximal propagation condition.
Definition var-type.hpp:431
Configuration for Bool-variable implementations.
Definition var-type.hpp:346
static const int med_mask
Bitmask for modification event delta.
Definition var-type.hpp:361
static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2)
Combine modification events me1 and me2.
Definition var-type.hpp:555
static const int idx_d
Index for disposal.
Definition var-type.hpp:351
static const int med_fst
Start of bits for modification event delta.
Definition var-type.hpp:357
static const int idx_c
Index for cloning.
Definition var-type.hpp:349
static bool med_update(Gecode::ModEventDelta &med, Gecode::ModEvent me)
Update modification even delta med by me, return true on change.
Definition var-type.hpp:559
static const Gecode::PropCond pc_max
Maximal propagation condition.
Definition var-type.hpp:353
static const int free_bits
Freely available bits.
Definition var-type.hpp:355
static const int med_lst
End of bits for modification event delta.
Definition var-type.hpp:359
Configuration for Int-variable implementations.
Definition var-type.hpp:307
static const int free_bits
Freely available bits.
Definition var-type.hpp:316
static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2)
Combine modification events me1 and me2.
Definition var-type.hpp:479
static const Gecode::PropCond pc_max
Maximal propagation condition.
Definition var-type.hpp:314
static const int idx_c
Index for cloning.
Definition var-type.hpp:310
static const int med_fst
Start of bits for modification event delta.
Definition var-type.hpp:318
static bool med_update(Gecode::ModEventDelta &med, Gecode::ModEvent me)
Update modification even delta med by me, return true on change.
Definition var-type.hpp:509
static const int idx_d
Index for disposal.
Definition var-type.hpp:312
static const int med_mask
Bitmask for modification event delta.
Definition var-type.hpp:322
static const int med_lst
End of bits for modification event delta.
Definition var-type.hpp:320
Configuration for Set-variable implementations.
Definition var-type.hpp:385
static const int idx_c
Index for cloning.
Definition var-type.hpp:388
static const Gecode::PropCond pc_max
Maximal propagation condition.
Definition var-type.hpp:392
static const int med_lst
End of bits for modification event delta.
Definition var-type.hpp:398
static const int free_bits
Freely available bits.
Definition var-type.hpp:394
static bool med_update(Gecode::ModEventDelta &med, Gecode::ModEvent me)
Update modification even delta med by me, return true on change.
Definition var-type.hpp:683
static const int med_mask
Bitmask for modification event delta.
Definition var-type.hpp:400
static const int med_fst
Start of bits for modification event delta.
Definition var-type.hpp:396
static const int idx_d
Index for disposal.
Definition var-type.hpp:390
static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2)
Combine modification events me1 and me2.
Definition var-type.hpp:578
int ModEventDelta
Modification event deltas.
Definition core.hpp:94
Floating point numbers.
const Gecode::PropCond PC_FLOAT_NONE
Propagation condition to be ignored (convenience).
Definition var-type.hpp:283
const Gecode::ModEvent ME_FLOAT_VAL
Domain operation has resulted in a value (assigned variable).
Definition var-type.hpp:272
const Gecode::PropCond PC_FLOAT_VAL
Propagate when a view becomes assigned (single value).
Definition var-type.hpp:291
const Gecode::ModEvent ME_FLOAT_BND
Domain operation has changed the minimum or maximum of the domain.
Definition var-type.hpp:281
const Gecode::ModEvent ME_FLOAT_NONE
Domain operation has not changed domain.
Definition var-type.hpp:270
const Gecode::ModEvent ME_FLOAT_FAILED
Domain operation has resulted in failure.
Definition var-type.hpp:268
const Gecode::PropCond PC_FLOAT_BND
Propagate when minimum or maximum of a view changes.
Definition var-type.hpp:300
Finite domain integers.
Definition lastval.hh:52
const Gecode::ModEvent ME_INT_BND
Domain operation has changed the minimum or maximum of the domain.
Definition var-type.hpp:73
const Gecode::ModEvent ME_BOOL_NONE
Domain operation has not changed domain.
Definition var-type.hpp:122
const Gecode::PropCond PC_INT_VAL
Propagate when a view becomes assigned (single value).
Definition var-type.hpp:90
const Gecode::PropCond PC_BOOL_NONE
Propagation condition to be ignored (convenience).
Definition var-type.hpp:126
const Gecode::PropCond PC_INT_BND
Propagate when minimum or maximum of a view changes.
Definition var-type.hpp:99
const Gecode::ModEvent ME_BOOL_FAILED
Domain operation has resulted in failure.
Definition var-type.hpp:120
const Gecode::ModEvent ME_INT_FAILED
Domain operation has resulted in failure.
Definition var-type.hpp:60
const Gecode::ModEvent ME_BOOL_VAL
Domain operation has resulted in a value (assigned variable).
Definition var-type.hpp:124
const Gecode::PropCond PC_BOOL_VAL
Propagate when a view becomes assigned (single value).
Definition var-type.hpp:134
const Gecode::PropCond PC_INT_NONE
Propagation condition to be ignored (convenience).
Definition var-type.hpp:82
const Gecode::PropCond PC_INT_DOM
Propagate when domain changes.
Definition var-type.hpp:108
const Gecode::ModEvent ME_INT_VAL
Domain operation has resulted in a value (assigned variable).
Definition var-type.hpp:64
const Gecode::ModEvent ME_INT_DOM
Domain operation has changed the domain.
Definition var-type.hpp:80
const Gecode::ModEvent ME_INT_NONE
Domain operation has not changed domain.
Definition var-type.hpp:62
Finite integer sets.
Definition var-imp.hpp:145
const Gecode::ModEvent ME_SET_CLUB
Domain operation has changed the least upper bound and the cardinality.
Definition var-type.hpp:187
const Gecode::ModEvent ME_SET_NONE
Domain operation has not changed domain.
Definition var-type.hpp:148
const Gecode::ModEvent ME_SET_VAL
Domain operation has resulted in a value (assigned variable).
Definition var-type.hpp:150
const Gecode::ModEvent ME_SET_GLB
Domain operation has changed the greatest lower bound.
Definition var-type.hpp:172
const Gecode::ModEvent ME_SET_CGLB
Domain operation has changed the greatest lower bound and the cardinality.
Definition var-type.hpp:194
const Gecode::PropCond PC_SET_CARD
Propagate when the cardinality of a view changes.
Definition var-type.hpp:224
const Gecode::PropCond PC_SET_CLUB
Propagate when the cardinality or the least upper bound of a view changes.
Definition var-type.hpp:235
const Gecode::ModEvent ME_SET_CARD
Domain operation has changed the variable cardinality.
Definition var-type.hpp:156
const Gecode::PropCond PC_SET_VAL
Propagate when a view becomes assigned (single value).
Definition var-type.hpp:215
const Gecode::PropCond PC_SET_ANY
Propagate when any bound or the cardinality of a view changes.
Definition var-type.hpp:256
const Gecode::ModEvent ME_SET_LUB
Domain operation has changed the least upper bound.
Definition var-type.hpp:164
const Gecode::ModEvent ME_SET_BB
Domain operation has changed both greatest lower and least upper bound.
Definition var-type.hpp:180
const Gecode::ModEvent ME_SET_FAILED
Domain operation has resulted in failure.
Definition var-type.hpp:146
const Gecode::ModEvent ME_SET_CBB
Domain operation has changed both the greatest lower bound and the least upper bound,...
Definition var-type.hpp:205
const Gecode::PropCond PC_SET_CGLB
Propagate when the cardinality or the greatest lower bound of a view changes.
Definition var-type.hpp:246
const Gecode::PropCond PC_SET_NONE
Propagation condition to be ignored (convenience).
Definition var-type.hpp:207
Gecode toplevel namespace
const PropCond PC_GEN_ASSIGNED
Propagation condition for an assigned variable.
Definition core.hpp:81
const ModEvent ME_GEN_NONE
Generic modification event: no modification.
Definition core.hpp:72
const ModEvent ME_GEN_FAILED
Generic modification event: failed variable.
Definition core.hpp:70
int PropCond
Type for propagation conditions.
Definition core.hpp:77
const ModEvent ME_GEN_ASSIGNED
Generic modification event: variable is assigned a value.
Definition core.hpp:74
const PropCond PC_GEN_NONE
Propagation condition to be ignored (convenience).
Definition core.hpp:79
int ModEvent
Type for modification events.
Definition core.hpp:67
#define GECODE_NEVER
Assert that this command is never executed.
Definition macros.hpp:56