Skip to content

Commit 5f6610a

Browse files
author
Mikael Zayenz Lagerkvist
committed
Add cross-platform blackbox integration coverage
Exercise native process and library backends across CMake and Autoconf, including concurrency, malformed responses, portability, and diagnostics.
1 parent 1813251 commit 5f6610a

15 files changed

Lines changed: 1156 additions & 196 deletions

File tree

CMakeLists.txt

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1371,6 +1371,16 @@ if(BUILD_TESTING)
13711371
set(GECODE_CAN_BUILD_TESTS FALSE)
13721372
endif()
13731373

1374+
if(GECODE_ENABLE_FLATZINC)
1375+
add_executable(gecode-test-blackbox-exec
1376+
${GECODE_TEST_BLACKBOX_EXEC_SOURCE})
1377+
target_compile_features(gecode-test-blackbox-exec PRIVATE cxx_std_17)
1378+
1379+
add_library(gecode-test-blackbox-dll SHARED
1380+
${GECODE_TEST_BLACKBOX_DLL_SOURCE})
1381+
target_compile_features(gecode-test-blackbox-dll PRIVATE cxx_std_17)
1382+
endif()
1383+
13741384
set(GECODE_TEST_SOURCES_SELECTED ${GECODE_TEST_SOURCES})
13751385
if(NOT GECODE_ENABLE_SET_VARS)
13761386
list(FILTER GECODE_TEST_SOURCES_SELECTED EXCLUDE REGEX "^test/set(/|\\.cpp)")
@@ -1394,6 +1404,18 @@ if(BUILD_TESTING)
13941404
${GECODE_FAULT_TEST_SOURCES})
13951405
target_link_libraries(gecode-fault-test PRIVATE ${GECODE_TEST_LINK_LIBS})
13961406
endif()
1407+
if(GECODE_ENABLE_FLATZINC)
1408+
add_dependencies(gecode-test
1409+
gecode-test-blackbox-exec
1410+
gecode-test-blackbox-dll)
1411+
set(GECODE_TEST_BLACKBOX_LOG
1412+
"${CMAKE_CURRENT_BINARY_DIR}/gecode-test-blackbox")
1413+
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_CLEAN_FILES
1414+
"${GECODE_TEST_BLACKBOX_LOG}.exec_parallel"
1415+
"${GECODE_TEST_BLACKBOX_LOG}.exec_descendant"
1416+
"${GECODE_TEST_BLACKBOX_LOG}.dll_model"
1417+
"${GECODE_TEST_BLACKBOX_LOG}.dll_parallel")
1418+
endif()
13971419

13981420
set(GECODE_CHECK_TESTS
13991421
Branch::Int::Dense::3
@@ -1409,7 +1431,9 @@ if(BUILD_TESTING)
14091431
NoGoods::Queens
14101432
Search::DFS::Sol::Binary::Nary::Binary::1::1::1)
14111433
if(GECODE_ENABLE_FLATZINC)
1412-
list(INSERT GECODE_CHECK_TESTS 1 FlatZinc::magic_square)
1434+
list(INSERT GECODE_CHECK_TESTS 1
1435+
FlatZinc::magic_square
1436+
FlatZinc::blackbox)
14131437
endif()
14141438
if(GECODE_ENABLE_SET_VARS)
14151439
list(APPEND GECODE_CHECK_TESTS
@@ -1466,6 +1490,14 @@ if(BUILD_TESTING)
14661490
add_test(NAME test COMMAND gecode-test ${GECODE_CHECK_ARGS})
14671491
set_tests_properties(test PROPERTIES
14681492
FIXTURES_REQUIRED gecode-test-built)
1493+
if(GECODE_ENABLE_FLATZINC)
1494+
set(GECODE_TEST_BLACKBOX_ENV
1495+
"GECODE_TEST_BLACKBOX_EXEC=$<TARGET_FILE:gecode-test-blackbox-exec>"
1496+
"GECODE_TEST_BLACKBOX_DLL=$<TARGET_FILE:gecode-test-blackbox-dll>"
1497+
"GECODE_TEST_BLACKBOX_LOG=${GECODE_TEST_BLACKBOX_LOG}")
1498+
set_tests_properties(test PROPERTIES
1499+
ENVIRONMENT "${GECODE_TEST_BLACKBOX_ENV}")
1500+
endif()
14691501
set(GECODE_CHECK_DEPENDS gecode-test)
14701502
if(GECODE_ENABLE_FLOAT_VARS)
14711503
add_custom_target(verify-gecode-check-tests
@@ -1477,10 +1509,24 @@ if(BUILD_TESTING)
14771509
VERBATIM)
14781510
list(APPEND GECODE_CHECK_DEPENDS verify-gecode-check-tests)
14791511
endif()
1480-
add_custom_target(check
1481-
COMMAND $<TARGET_FILE:gecode-test> ${GECODE_CHECK_ARGS}
1482-
DEPENDS ${GECODE_CHECK_DEPENDS}
1483-
USES_TERMINAL)
1512+
if(GECODE_ENABLE_FLATZINC)
1513+
list(APPEND GECODE_CHECK_DEPENDS
1514+
gecode-test-blackbox-exec
1515+
gecode-test-blackbox-dll)
1516+
add_custom_target(check
1517+
COMMAND ${CMAKE_COMMAND} -E env
1518+
GECODE_TEST_BLACKBOX_EXEC=$<TARGET_FILE:gecode-test-blackbox-exec>
1519+
GECODE_TEST_BLACKBOX_DLL=$<TARGET_FILE:gecode-test-blackbox-dll>
1520+
GECODE_TEST_BLACKBOX_LOG=${GECODE_TEST_BLACKBOX_LOG}
1521+
$<TARGET_FILE:gecode-test> ${GECODE_CHECK_ARGS}
1522+
DEPENDS ${GECODE_CHECK_DEPENDS}
1523+
USES_TERMINAL)
1524+
else()
1525+
add_custom_target(check
1526+
COMMAND $<TARGET_FILE:gecode-test> ${GECODE_CHECK_ARGS}
1527+
DEPENDS ${GECODE_CHECK_DEPENDS}
1528+
USES_TERMINAL)
1529+
endif()
14841530
if(GECODE_ENABLE_FAULT_INJECTION)
14851531
set(GECODE_FAULT_CHECK_ARGS -iter 1 -threads 1 -test "^Fault::")
14861532
add_test(NAME fault COMMAND gecode-fault-test ${GECODE_FAULT_CHECK_ARGS})
@@ -1583,6 +1629,7 @@ if(GECODE_INSTALL)
15831629
PATTERN "**.hpp"
15841630
PATTERN "LICENSE_1_0.txt"
15851631
PATTERN "mznlib" EXCLUDE
1632+
PATTERN "flatzinc/blackbox.hh" EXCLUDE
15861633
PATTERN "exampleplugin" EXCLUDE
15871634
PATTERN "standalone-example" EXCLUDE
15881635
PATTERN "abi*" EXCLUDE)

Makefile.in

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -825,11 +825,14 @@ FLATZINCSRC0 = flatzinc.cpp registry.cpp branch.cpp blackbox.cpp
825825
FLATZINC_GENSRC0 = parser.tab.cpp lexer.yy.cpp
826826
FLATZINCHDR0 = ast.hh conexpr.hh option.hh parser.hh \
827827
plugin.hh registry.hh symboltable.hh varspec.hh \
828-
branch.hh branch.hpp lastval.hh complete.hh blackbox.hh
828+
branch.hh branch.hpp lastval.hh complete.hh
829+
FLATZINCPRIVATEHDR0 = blackbox.hh
829830

830831
FLATZINCSRC = $(FLATZINCSRC0:%=gecode/flatzinc/%)
831832
FLATZINC_GENSRC = $(FLATZINC_GENSRC0:%=gecode/flatzinc/%)
832833
FLATZINCHDR = $(FLATZINCHDR0:%=gecode/flatzinc/%) gecode/flatzinc.hh
834+
FLATZINCPRIVATEHDR = $(FLATZINCPRIVATEHDR0:%=gecode/flatzinc/%)
835+
FLATZINCALLHDR = $(FLATZINCHDR) $(FLATZINCPRIVATEHDR)
833836

834837
FLATZINCOBJ = \
835838
$(FLATZINCSRC:%.cpp=%$(OBJSUFFIX)) \
@@ -1251,14 +1254,18 @@ SEARCHTESTSRC0 = \
12511254
ARRAYTESTSRC0 = \
12521255
test/array.cpp
12531256

1257+
BLACKBOXEXECSRC = test/flatzinc/blackbox-exec.cpp
1258+
BLACKBOXDLLSRC = test/flatzinc/blackbox-dll.cpp
1259+
BLACKBOXSRC = $(BLACKBOXEXECSRC) $(BLACKBOXDLLSRC)
1260+
12541261
TESTSRC0 = test/test.cpp test/afc.cpp test/ldsb.cpp test/region.cpp \
12551262
test/groups.cpp
12561263
# FailPoint is CMake-only; keep the Autoconf test executable fault-free.
12571264

12581265
TESTSRC = \
12591266
$(TESTSRC0) $(INTTESTSRC0) $(SETTESTSRC0) $(FLOATTESTSRC0) \
12601267
$(BRANCHTESTSRC0) $(SEARCHTESTSRC0) \
1261-
$(ARRAYTESTSRC0) $(FLATZINCTESTSRC0)
1268+
$(ARRAYTESTSRC0) $(FLATZINCTESTSRC0) $(BLACKBOXSRC)
12621269

12631270
TESTHDR0 = \
12641271
test.hh test.hpp int.hh int.hpp set.hh set.hpp float.hh float.hpp \
@@ -1272,6 +1279,18 @@ TESTOBJ = $(INTTESTOBJ) $(SETTESTOBJ) $(FLOATTESTOBJ) \
12721279
$(TESTSRC0:%.cpp=%$(OBJSUFFIX))
12731280
TESTSBJ = $(TESTOBJ:%$(OBJSUFFIX)=%$(SBJSUFFIX))
12741281
TESTEXE = test/test$(EXESUFFIX)
1282+
BLACKBOXEXECOBJ = $(BLACKBOXEXECSRC:%.cpp=%$(OBJSUFFIX))
1283+
BLACKBOXDLLOBJ = $(BLACKBOXDLLSRC:%.cpp=%$(OBJSUFFIX))
1284+
BLACKBOXEXEC = test/flatzinc/blackbox-exec$(EXESUFFIX)
1285+
BLACKBOXDLL = test/flatzinc/blackbox-dll$(DLLSUFFIX)
1286+
BLACKBOXDLLLIB = $(BLACKBOXDLL:%$(DLLSUFFIX)=%$(LIBSUFFIX))
1287+
BLACKBOXLOG = $(abspath test/flatzinc/blackbox)
1288+
ifeq "@enable_flatzinc@" "yes"
1289+
BLACKBOXFIXTURES = $(BLACKBOXEXEC) $(BLACKBOXDLL)
1290+
else
1291+
BLACKBOXFIXTURES =
1292+
endif
1293+
12751294
TESTBUILDDIRS = \
12761295
test test/int test/set test/float \
12771296
test/branch test/assign \
@@ -1304,7 +1323,7 @@ compilelib: mkcompiledirs
13041323

13051324
compileexamples: $(EXAMPLEEXE)
13061325

1307-
test: mkcompiledirs
1326+
test: mkcompiledirs $(BLACKBOXFIXTURES)
13081327
@$(MAKE) $(VARIMP) $(TESTEXE)
13091328

13101329
CHECKTESTS = Branch::Int::Dense::3 \
@@ -1325,6 +1344,14 @@ CHECKTESTS = Branch::Int::Dense::3 \
13251344
Set::Sequence::SeqU1 \
13261345
Set::Wait
13271346

1347+
ifeq "@enable_flatzinc@" "yes"
1348+
CHECKTESTS += FlatZinc::blackbox
1349+
BLACKBOXCHECKENV = \
1350+
GECODE_TEST_BLACKBOX_EXEC=$(abspath $(BLACKBOXEXEC)) \
1351+
GECODE_TEST_BLACKBOX_DLL=$(abspath $(BLACKBOXDLL)) \
1352+
GECODE_TEST_BLACKBOX_LOG=$(BLACKBOXLOG)
1353+
endif
1354+
13281355
ifeq "@enable_float_vars@" "yes"
13291356
FLOATCHECKTESTS = Float::Arithmetic::PositiveNRootBounds \
13301357
Float::Arithmetic::PowConsistency \
@@ -1352,7 +1379,8 @@ check: test
13521379
exit 1; \
13531380
fi; \
13541381
done
1355-
$(RUNENVIRONMENT) $(TESTEXE) -iter 2 -threads 0 -fixprob 1 \
1382+
$(BLACKBOXCHECKENV) $(RUNENVIRONMENT) \
1383+
$(TESTEXE) -iter 2 -threads 0 -fixprob 1 \
13561384
$(CHECKTESTS:%=-test %)
13571385

13581386
.PHONY: regenerate
@@ -1733,7 +1761,7 @@ $(GISTDLL) $(GISTLIB): $(GISTOBJ) $(GISTRES) \
17331761
-outputresource:$(GISTDLL)\;2
17341762
ifeq "@enable_resource@" "yes"
17351763
$(FLATZINCRC):
1736-
$(RCGEN) $(FLATZINCDLL) $(FLATZINCHDR) $(FLATZINCSRC) > $@
1764+
$(RCGEN) $(FLATZINCDLL) $(FLATZINCALLHDR) $(FLATZINCSRC) > $@
17371765
endif
17381766
$(FLATZINCDLL) $(FLATZINCLIB): $(FLATZINCOBJ) $(FLATZINCRES) \
17391767
$(SUPPORTDLL) $(KERNELDLL) $(SEARCHDLL) $(INTDLL) \
@@ -1846,6 +1874,22 @@ $(TESTEXE): $(TESTOBJ) $(TESTRES) $(ALLLIB)
18461874
$(FIXMANIFEST) $@.manifest $(DLLSUFFIX)
18471875
$(MANIFEST) -manifest $@.manifest -outputresource:$@\;1
18481876

1877+
$(BLACKBOXEXECOBJ) $(BLACKBOXDLLOBJ): | mkcompiledirs
1878+
1879+
$(BLACKBOXEXEC): $(BLACKBOXEXECOBJ)
1880+
$(CXX) @EXEOUTPUT@$@ $(BLACKBOXEXECOBJ) $(CXXFLAGS)
1881+
1882+
ifeq "$(DLLSUFFIX)" "$(LIBSUFFIX)"
1883+
$(BLACKBOXDLL): $(BLACKBOXDLLOBJ)
1884+
$(CXX) $(DLLFLAGS) $(BLACKBOXDLLOBJ) @LINKOUTPUT@$@
1885+
else
1886+
$(BLACKBOXDLL) $(BLACKBOXDLLLIB): $(BLACKBOXDLLOBJ)
1887+
$(CXX) $(DLLFLAGS) $(BLACKBOXDLLOBJ) @LINKOUTPUT@$(BLACKBOXDLL) $(GLDFLAGS)
1888+
$(FIXMANIFEST) $(BLACKBOXDLL).manifest
1889+
$(MANIFEST) -manifest $(BLACKBOXDLL).manifest \
1890+
-outputresource:$(BLACKBOXDLL)\;2
1891+
endif
1892+
18491893
.PHONY: flatzinc
18501894
ifeq "@enable_flatzinc@" "yes"
18511895
flatzinc: $(FLATZINCEXE)
@@ -2095,6 +2139,13 @@ clean:
20952139
changelog.hh doxygen.hh license.hh header.html
20962140
$(RMF) $(ALLOBJ) $(ALLSBJ) $(ALLOBJ:%$(OBJSUFFIX)=%.pdb)
20972141
$(RMF) $(TESTOBJ) $(TESTSBJ) $(TESTOBJ:%$(OBJSUFFIX)=%.pdb)
2142+
$(RMF) $(BLACKBOXEXECOBJ) $(BLACKBOXDLLOBJ) \
2143+
$(BLACKBOXEXECOBJ:%$(OBJSUFFIX)=%.pdb) \
2144+
$(BLACKBOXDLLOBJ:%$(OBJSUFFIX)=%.pdb)
2145+
$(RMF) $(BLACKBOXEXECOBJ:%$(OBJSUFFIX)=%.gcno) \
2146+
$(BLACKBOXDLLOBJ:%$(OBJSUFFIX)=%.gcno)
2147+
$(RMF) $(BLACKBOXEXECOBJ:%$(OBJSUFFIX)=%.gcda) \
2148+
$(BLACKBOXDLLOBJ:%$(OBJSUFFIX)=%.gcda)
20982149
$(RMF) $(GISTMOCSRC)
20992150
$(RMF) $(LIBTARGETS:%$(DLLSUFFIX)=%$(MANIFESTSUFFIX)) \
21002151
$(LIBTARGETS:%$(DLLSUFFIX)=%$(RCSUFFIX)) \
@@ -2104,6 +2155,13 @@ clean:
21042155
$(EXAMPLEEXE:%=%.rc) $(EXAMPLEEXE:%=%.res)
21052156
$(RMF) $(TESTEXE:%.exe=%.pdb) $(TESTEXE:%=%.manifest) \
21062157
$(TESTEXE:%=%.rc) $(TESTEXE:%=%.res)
2158+
$(RMF) $(BLACKBOXEXEC:%.exe=%.pdb) $(BLACKBOXEXEC:%=%.manifest) \
2159+
$(BLACKBOXDLL:%$(DLLSUFFIX)=%$(LIBSUFFIX)) \
2160+
$(BLACKBOXDLL:%$(DLLSUFFIX)=%$(PDBSUFFIX)) \
2161+
$(BLACKBOXDLL:%$(DLLSUFFIX)=%$(EXPSUFFIX)) \
2162+
$(BLACKBOXDLL:%$(DLLSUFFIX)=%$(MANIFESTSUFFIX))
2163+
$(RMF) $(BLACKBOXLOG).exec_parallel $(BLACKBOXLOG).exec_descendant \
2164+
$(BLACKBOXLOG).dll_model $(BLACKBOXLOG).dll_parallel
21072165
$(RMF) $(FLATZINCEXE:%.exe=%.pdb) $(FLATZINCEXE:%=%.manifest) \
21082166
$(FLATZINCEXE:%=%.rc) $(FLATZINCEXE:%=%.res)
21092167

@@ -2115,6 +2173,7 @@ veryclean: clean
21152173
$(LIBTARGETS:%$(DLLSUFFIX)=%$(SOSUFFIX))
21162174
$(RMF) $(EXAMPLEEXE)
21172175
$(RMF) $(TESTEXE)
2176+
$(RMF) $(BLACKBOXFIXTURES)
21182177
$(RMF) $(FLATZINCEXE)
21192178
$(RMF) doc ChangeLog
21202179
$(RMF) $(ALLOBJ:%$(OBJSUFFIX)=%.gcno) $(TESTOBJ:%$(OBJSUFFIX)=%.gcno)

cmake/GecodeSources.cmake

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,4 +424,7 @@ set(GECODE_TEST_SOURCES
424424
test/test.cpp
425425
)
426426

427+
set(GECODE_TEST_BLACKBOX_EXEC_SOURCE test/flatzinc/blackbox-exec.cpp)
428+
set(GECODE_TEST_BLACKBOX_DLL_SOURCE test/flatzinc/blackbox-dll.cpp)
429+
427430
set(GECODE_FLATZINC_EXE_SOURCE tools/flatzinc/fzn-gecode.cpp)

configure

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ esac
3737
fi
3838

3939

40+
4041
# Reset variables that may have inherited troublesome values from
4142
# the environment.
4243

gecode/flatzinc.hh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ namespace Gecode { namespace FlatZinc {
415415
extern Rnd defrnd;
416416

417417
class FlatZincSpaceInitData;
418+
class BlackBoxAccess;
418419

419420
/**
420421
* \brief A space that can be initialized with a %FlatZinc model
@@ -462,6 +463,7 @@ namespace Gecode { namespace FlatZinc {
462463
/// Copy constructor
463464
FlatZincSpace(FlatZincSpace&);
464465
private:
466+
friend class BlackBoxAccess;
465467
/// Run the search engine
466468
template<template<class> class Engine>
467469
void
@@ -604,9 +606,6 @@ namespace Gecode { namespace FlatZinc {
604606
/// Post a constraint specified by \a ce
605607
void postConstraints(std::vector<ConExpr*>& ces);
606608

607-
/// Return opaque state used while posting blackbox constraints
608-
SharedHandle& blackBoxState(void);
609-
610609
/// Post the solve item
611610
void solve(AST::Array* annotation);
612611
/// Post that integer variable \a var should be minimized

gecode/flatzinc/blackbox.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -886,6 +886,10 @@ class BlackBoxExec::Session {
886886
DWORD count = 0;
887887
BOOL success = ReadFile(pipe_receive, c, sizeof(c) - 1, &count, NULL);
888888
if (!success) {
889+
if (GetLastError() == ERROR_BROKEN_PIPE) {
890+
throw Error("BlackBoxExec",
891+
"Blackbox process provided an incomplete response");
892+
}
889893
throw Error(
890894
"BlackBoxExec",
891895
"Failed to read blackbox process output from pipe");
@@ -1071,8 +1075,9 @@ BlackBoxExec::Session::open_windows(const std::string &program,
10711075
&piProcInfo); // receives PROCESS_INFORMATION
10721076

10731077
if (!processStarted) {
1074-
throw Error("BlackBoxExec", windows_error("Unable to start program `" +
1075-
program + "'", GetLastError()));
1078+
throw Error("BlackBoxExec",
1079+
windows_error("starting blackbox process failed for program `" +
1080+
program + "'", GetLastError()));
10761081
}
10771082
WindowsHandle process_handle(piProcInfo.hProcess);
10781083
WindowsHandle thread_handle(piProcInfo.hThread);
@@ -1576,7 +1581,7 @@ ExecStatus BlackBox::propagate(Space &home, const ModEventDelta &) {
15761581
) {
15771582
std::vector<int64_t> int_in(int_input.size());
15781583
std::vector<int64_t> int_out(int_output.size());
1579-
for (int i = 0; i < int_in.size(); i++) {
1584+
for (size_t i = 0; i < int_in.size(); i++) {
15801585
int_in[i] = static_cast<int64_t>(int_input[i].val());
15811586
}
15821587
std::vector<double> float_in;
@@ -1596,7 +1601,7 @@ ExecStatus BlackBox::propagate(Space &home, const ModEventDelta &) {
15961601
return ES_FAILED;
15971602
}
15981603

1599-
for (int i = 0; i < int_out.size(); i++) {
1604+
for (size_t i = 0; i < int_out.size(); i++) {
16001605
GECODE_ME_CHECK(int_output[i].eq(home, static_cast<int>(int_out[i])));
16011606
}
16021607
#ifdef GECODE_HAS_FLOAT_VARS

gecode/flatzinc/blackbox.hh

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
*
3232
*/
3333

34-
#ifndef __FLATZINC_BLACKBOX_HH__
35-
#define __FLATZINC_BLACKBOX_HH__
34+
#ifndef GECODE_FLATZINC_BLACKBOX_HH
35+
#define GECODE_FLATZINC_BLACKBOX_HH
3636

3737
#include <cstddef>
3838
#include <cstdint>
@@ -74,6 +74,12 @@ public:
7474
std::vector<double> &float_out) = 0;
7575
};
7676

77+
/// Access to FlatZincSpace state used only while posting blackbox constraints
78+
class BlackBoxAccess {
79+
public:
80+
static SharedHandle& state(FlatZincSpace& s);
81+
};
82+
7783
/// Implementation of a black box function that dynamically loads a library and
7884
/// run a contained function.
7985
///
@@ -238,7 +244,7 @@ public:
238244
home.notice(*this, AP_DISPOSE);
239245
}
240246
/// Cost function (defined as exponential)
241-
PropCost cost(const Space &home, const ModEventDelta &med) const override {
247+
PropCost cost(const Space &, const ModEventDelta &) const override {
242248
return PropCost::crazy(PropCost::HI, int_input.size()
243249
#ifdef GECODE_HAS_FLOAT_VARS
244250
+ float_input.size()
@@ -403,7 +409,7 @@ public:
403409
home.notice(*this, AP_WEAKLY);
404410
}
405411
/// Cost function (defined as exponential)
406-
PropCost cost(const Space &home, const ModEventDelta &med) const override {
412+
PropCost cost(const Space &, const ModEventDelta &) const override {
407413
return PropCost::crazy(PropCost::HI, ivar.size()
408414
#ifdef GECODE_HAS_FLOAT_VARS
409415
+ fvar.size()
@@ -528,4 +534,4 @@ void blackbox_bounds(Home home, SharedHandle &black_box_state,
528534
} // namespace FlatZinc
529535
} // namespace Gecode
530536

531-
#endif //__FLATZINC_BLACKBOX_HH__
537+
#endif // GECODE_FLATZINC_BLACKBOX_HH

0 commit comments

Comments
 (0)