MCPcopy Create free account
hub / github.com/Gecode/gecode / postnegcompact

Function postnegcompact

gecode/int/extensional/compact.hpp:954–995  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

952 */
953 template<class View>
954 ExecStatus
955 postnegcompact(Home home, ViewArray<View>& x, const TupleSet& ts) {
956 if (ts.tuples() == 0)
957 return ES_OK;
958
959 // Check whether a variable does not overlap with supported values
960 for (int i=0; i<x.size(); i++) {
961 TupleSet::Ranges rs(ts,i);
962 ViewRanges<View> rx(x[i]);
963 if (Iter::Ranges::disjoint(rs,rx))
964 return ES_OK;
965 }
966
967 // Choose the right bit set implementation
968 switch (ts.words()) {
969 case 0U:
970 GECODE_NEVER; return ES_OK;
971 case 1U:
972 return NegCompact<View,TinyBitSet<1U>>::post(home,x,ts);
973 case 2U:
974 return NegCompact<View,TinyBitSet<2U>>::post(home,x,ts);
975 case 3U:
976 return NegCompact<View,TinyBitSet<3U>>::post(home,x,ts);
977 case 4U:
978 return NegCompact<View,TinyBitSet<4U>>::post(home,x,ts);
979 default:
980 switch (Gecode::Support::u_type(ts.words())) {
981 case Gecode::Support::IT_CHAR:
982 return NegCompact<View,BitSet<unsigned char>>
983 ::post(home,x,ts);
984 case Gecode::Support::IT_SHRT:
985 return NegCompact<View,BitSet<unsigned short int>>
986 ::post(home,x,ts);
987 case Gecode::Support::IT_INT:
988 return NegCompact<View,BitSet<unsigned int>>
989 ::post(home,x,ts);
990 default: GECODE_NEVER;
991 }
992 }
993 GECODE_NEVER;
994 return ES_OK;
995 }
996
997
998 /*

Callers 2

postMethod · 0.85
propagateMethod · 0.85

Calls 6

disjointFunction · 0.85
u_typeFunction · 0.85
tuplesMethod · 0.80
postFunction · 0.50
sizeMethod · 0.45
wordsMethod · 0.45

Tested by

no test coverage detected