A set of benchmarks to compare a new prototype MiniZinc implementation
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
3/*
4 * Main authors:
5 * Guido Tack <guido.tack@monash.edu>
6 */
7
8/* This Source Code Form is subject to the terms of the Mozilla Public
9 * License, v. 2.0. If a copy of the MPL was not distributed with this
10 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
11
12#ifndef __MINIZINC_OUTPUT_HH__
13#define __MINIZINC_OUTPUT_HH__
14
15#include <minizinc/flatten_internal.hh>
16
17namespace MiniZinc {
18
19/// Remove all output annotations from \a vd
20void removeIsOutput(VarDecl* vd);
21
22/// Copy output item to FlatZinc model
23void copyOutput(EnvI& e);
24
25/// Copy all dependent variable declarations
26void outputVarDecls(EnvI& env, Item* ci, Expression* e);
27
28/// Create initial output model
29void createOutput(EnvI& e, std::vector<VarDecl*>& deletedFlatVarDecls,
30 FlatteningOptions::OutputMode outputMode, bool outputObjective,
31 bool includeOutputItem);
32/// Finalise output model after flattening is complete
33void finaliseOutput(EnvI& e, std::vector<VarDecl*>& deletedFlatVarDecls);
34
35/// Remove all links to variables in flat model from output model in \a env
36void cleanupOutput(EnvI& env);
37
38ArrayLit* createJSONOutput(EnvI& env, bool outputObjective, bool includeOutputItem);
39
40} // namespace MiniZinc
41
42#endif