enumerate_ext_api.h
Go to the documentation of this file.
1/*
2 (C) 2016 Marc Stevens.
3
4 This file is part of fplll. fplll is free software: you
5 can redistribute it and/or modify it under the terms of the GNU Lesser
6 General Public License as published by the Free Software Foundation,
7 either version 2.1 of the License, or (at your option) any later version.
8
9 fplll is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with fplll. If not, see <http://www.gnu.org/licenses/>. */
16
17#ifndef FPLLL_ENUMERATE_EXT_API_H
18#define FPLLL_ENUMERATE_EXT_API_H
19
20#include <array>
21#include <cstdint>
22#include <functional>
23#include <memory>
24
25typedef double fplll_extenum_enumf;
26#define FPLLL_EXTENUM_MAX_EXTENUM_DIM 1024
27
28/* function callback API for external enumeration library (extenum) */
29
52typedef void(extenum_cb_set_config)(fplll_extenum_enumf *mu, std::size_t mudim, bool mutranspose,
54
64
71 int offset);
72
88typedef std::array<std::uint64_t, FPLLL_EXTENUM_MAX_EXTENUM_DIM>(extenum_fc_enumerate)(
89 const int dim, fplll_extenum_enumf maxdist, std::function<extenum_cb_set_config> cbfunc,
90 std::function<extenum_cb_process_sol> cbsol, std::function<extenum_cb_process_subsol> cbsubsol,
91 bool dual /*=false*/, bool findsubsols /*=false*/
92);
93
94#endif
void() extenum_cb_process_subsol(fplll_extenum_enumf dist, fplll_extenum_enumf *subsol, int offset)
Definition: enumerate_ext_api.h:70
fplll_extenum_enumf() extenum_cb_process_sol(fplll_extenum_enumf dist, fplll_extenum_enumf *sol)
Definition: enumerate_ext_api.h:62
fplll_extenum_enumf std::function< extenum_cb_set_config > std::function< extenum_cb_process_sol > cbsol
Definition: enumerate_ext_api.h:90
double fplll_extenum_enumf
Definition: enumerate_ext_api.h:25
fplll_extenum_enumf std::function< extenum_cb_set_config > std::function< extenum_cb_process_sol > std::function< extenum_cb_process_subsol > cbsubsol
Definition: enumerate_ext_api.h:90
fplll_extenum_enumf std::function< extenum_cb_set_config > std::function< extenum_cb_process_sol > std::function< extenum_cb_process_subsol > bool dual
Definition: enumerate_ext_api.h:91
void() extenum_cb_set_config(fplll_extenum_enumf *mu, std::size_t mudim, bool mutranspose, fplll_extenum_enumf *rdiag, fplll_extenum_enumf *pruning)
Definition: enumerate_ext_api.h:52
fplll_extenum_enumf std::function< extenum_cb_set_config > cbfunc
Definition: enumerate_ext_api.h:89
fplll_extenum_enumf maxdist
Definition: enumerate_ext_api.h:89
fplll_extenum_enumf std::function< extenum_cb_set_config > std::function< extenum_cb_process_sol > std::function< extenum_cb_process_subsol > bool bool findsubsols
Definition: enumerate_ext_api.h:92