sat: rename dtgbasat as dtwasat
* src/twaalgos/dtgbasat.cc, src/twaalgos/dtgbasat.hh: Rename as... * src/twaalgos/dtwasat.cc, src/twaalgos/dtwasat.hh: ... these. * src/bin/autfilt.cc, src/tests/ikwiad.cc, src/twaalgos/Makefile.am, src/twaalgos/postproc.cc, wrap/python/spot_impl.i: Adjust. * NEWS: Mention the renamings.
This commit is contained in:
parent
6237bf4cd6
commit
a5ca9dbc43
8 changed files with 82 additions and 82 deletions
2
NEWS
2
NEWS
|
|
@ -63,6 +63,8 @@ New in spot 1.99.5a (not yet released)
|
||||||
* Renamings:
|
* Renamings:
|
||||||
is_guarantee_automaton() -> is_terminal_automaton()
|
is_guarantee_automaton() -> is_terminal_automaton()
|
||||||
tgba_run -> twa_run
|
tgba_run -> twa_run
|
||||||
|
dtgba_sat_synthetize() -> dtwa_sat_synthetize()
|
||||||
|
dtgba_sat_synthetize_dichotomy() -> dtwa_sat_synthetize_dichotomy()
|
||||||
|
|
||||||
Python:
|
Python:
|
||||||
* Add bindings for is_unambiguous().
|
* Add bindings for is_unambiguous().
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
#include "twaalgos/stripacc.hh"
|
#include "twaalgos/stripacc.hh"
|
||||||
#include "twaalgos/remfin.hh"
|
#include "twaalgos/remfin.hh"
|
||||||
#include "twaalgos/cleanacc.hh"
|
#include "twaalgos/cleanacc.hh"
|
||||||
#include "twaalgos/dtgbasat.hh"
|
#include "twaalgos/dtwasat.hh"
|
||||||
#include "twaalgos/complement.hh"
|
#include "twaalgos/complement.hh"
|
||||||
#include "twaalgos/strength.hh"
|
#include "twaalgos/strength.hh"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@
|
||||||
#include "twaalgos/remfin.hh"
|
#include "twaalgos/remfin.hh"
|
||||||
#include "twaalgos/complete.hh"
|
#include "twaalgos/complete.hh"
|
||||||
#include "twaalgos/dtbasat.hh"
|
#include "twaalgos/dtbasat.hh"
|
||||||
#include "twaalgos/dtgbasat.hh"
|
#include "twaalgos/dtwasat.hh"
|
||||||
#include "twaalgos/stutter.hh"
|
#include "twaalgos/stutter.hh"
|
||||||
#include "twaalgos/totgba.hh"
|
#include "twaalgos/totgba.hh"
|
||||||
|
|
||||||
|
|
@ -367,7 +367,7 @@ checked_main(int argc, char** argv)
|
||||||
bool cs_oblig = false;
|
bool cs_oblig = false;
|
||||||
bool opt_complete = false;
|
bool opt_complete = false;
|
||||||
int opt_dtbasat = -1;
|
int opt_dtbasat = -1;
|
||||||
int opt_dtgbasat = -1;
|
int opt_dtwasat = -1;
|
||||||
|
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
|
@ -679,9 +679,9 @@ checked_main(int argc, char** argv)
|
||||||
else if (!strncmp(argv[formula_index], "-RG", 3))
|
else if (!strncmp(argv[formula_index], "-RG", 3))
|
||||||
{
|
{
|
||||||
if (argv[formula_index][3] != 0)
|
if (argv[formula_index][3] != 0)
|
||||||
opt_dtgbasat = to_int(argv[formula_index] + 3);
|
opt_dtwasat = to_int(argv[formula_index] + 3);
|
||||||
else
|
else
|
||||||
opt_dtgbasat = 0;
|
opt_dtwasat = 0;
|
||||||
//output = -1;
|
//output = -1;
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[formula_index], "-Rm"))
|
else if (!strcmp(argv[formula_index], "-Rm"))
|
||||||
|
|
@ -1191,13 +1191,13 @@ checked_main(int argc, char** argv)
|
||||||
if (satminimized)
|
if (satminimized)
|
||||||
a = satminimized;
|
a = satminimized;
|
||||||
}
|
}
|
||||||
else if (opt_dtgbasat >= 0)
|
else if (opt_dtwasat >= 0)
|
||||||
{
|
{
|
||||||
tm.start("dtgbasat");
|
tm.start("dtwasat");
|
||||||
auto satminimized = dtgba_sat_minimize
|
auto satminimized = dtwa_sat_minimize
|
||||||
(ensure_digraph(a), opt_dtgbasat,
|
(ensure_digraph(a), opt_dtwasat,
|
||||||
spot::acc_cond::generalized_buchi(opt_dtgbasat));
|
spot::acc_cond::generalized_buchi(opt_dtwasat));
|
||||||
tm.stop("dtgbasat");
|
tm.stop("dtwasat");
|
||||||
if (satminimized)
|
if (satminimized)
|
||||||
a = satminimized;
|
a = satminimized;
|
||||||
}
|
}
|
||||||
|
|
@ -1210,7 +1210,7 @@ checked_main(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opt_determinize || opt_dtwacomp || opt_dtbasat >= 0
|
if (opt_determinize || opt_dtwacomp || opt_dtbasat >= 0
|
||||||
|| opt_dtgbasat >= 0)
|
|| opt_dtwasat >= 0)
|
||||||
{
|
{
|
||||||
if (scc_filter && (reduction_dir_sim || reduction_rev_sim))
|
if (scc_filter && (reduction_dir_sim || reduction_rev_sim))
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ twaalgos_HEADERS = \
|
||||||
degen.hh \
|
degen.hh \
|
||||||
dot.hh \
|
dot.hh \
|
||||||
dtbasat.hh \
|
dtbasat.hh \
|
||||||
dtgbasat.hh \
|
dtwasat.hh \
|
||||||
emptiness.hh \
|
emptiness.hh \
|
||||||
emptiness_stats.hh \
|
emptiness_stats.hh \
|
||||||
gv04.hh \
|
gv04.hh \
|
||||||
|
|
@ -95,7 +95,7 @@ libtwaalgos_la_SOURCES = \
|
||||||
degen.cc \
|
degen.cc \
|
||||||
dot.cc \
|
dot.cc \
|
||||||
dtbasat.cc \
|
dtbasat.cc \
|
||||||
dtgbasat.cc \
|
dtwasat.cc \
|
||||||
emptiness.cc \
|
emptiness.cc \
|
||||||
gv04.cc \
|
gv04.cc \
|
||||||
hoa.cc \
|
hoa.cc \
|
||||||
|
|
|
||||||
|
|
@ -20,8 +20,8 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include "dtgbasat.hh"
|
#include "dtwasat.hh"
|
||||||
#include "reachiter.hh"
|
#include "dtbasat.hh"
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include "sccinfo.hh"
|
#include "sccinfo.hh"
|
||||||
|
|
@ -35,7 +35,6 @@
|
||||||
#include "dot.hh"
|
#include "dot.hh"
|
||||||
#include "complete.hh"
|
#include "complete.hh"
|
||||||
#include "misc/optionmap.hh"
|
#include "misc/optionmap.hh"
|
||||||
#include "dtbasat.hh"
|
|
||||||
#include "sccfilter.hh"
|
#include "sccfilter.hh"
|
||||||
#include "sbacc.hh"
|
#include "sbacc.hh"
|
||||||
#include "postproc.hh"
|
#include "postproc.hh"
|
||||||
|
|
@ -46,7 +45,7 @@
|
||||||
//
|
//
|
||||||
// Additionally, if the following DEBUG macro is set to 1, the CNF
|
// Additionally, if the following DEBUG macro is set to 1, the CNF
|
||||||
// file will be output with a comment before each clause, and an
|
// file will be output with a comment before each clause, and an
|
||||||
// additional output file (dtgba-sat.dbg) will be created with a list
|
// additional output file (dtwa-sat.dbg) will be created with a list
|
||||||
// of all positive variables in the result and their meaning.
|
// of all positive variables in the result and their meaning.
|
||||||
|
|
||||||
#define DEBUG 0
|
#define DEBUG 0
|
||||||
|
|
@ -602,7 +601,7 @@ namespace spot
|
||||||
typedef std::pair<int, int> sat_stats;
|
typedef std::pair<int, int> sat_stats;
|
||||||
|
|
||||||
static
|
static
|
||||||
sat_stats dtgba_to_sat(std::ostream& out, const_twa_graph_ptr ref,
|
sat_stats dtwa_to_sat(std::ostream& out, const_twa_graph_ptr ref,
|
||||||
dict& d, bool state_based, bool colored)
|
dict& d, bool state_based, bool colored)
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
|
@ -1037,7 +1036,7 @@ namespace spot
|
||||||
const transition* last_sat_trans = nullptr;
|
const transition* last_sat_trans = nullptr;
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
std::fstream out("dtgba-sat.dbg",
|
std::fstream out("dtwa-sat.dbg",
|
||||||
std::ios_base::trunc | std::ios_base::out);
|
std::ios_base::trunc | std::ios_base::out);
|
||||||
out.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
out.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||||
std::set<int> positive;
|
std::set<int> positive;
|
||||||
|
|
@ -1119,7 +1118,7 @@ namespace spot
|
||||||
}
|
}
|
||||||
|
|
||||||
twa_graph_ptr
|
twa_graph_ptr
|
||||||
dtgba_sat_synthetize(const const_twa_graph_ptr& a,
|
dtwa_sat_synthetize(const const_twa_graph_ptr& a,
|
||||||
unsigned target_acc_number,
|
unsigned target_acc_number,
|
||||||
const acc_cond::acc_code& target_acc,
|
const acc_cond::acc_code& target_acc,
|
||||||
int target_state_number,
|
int target_state_number,
|
||||||
|
|
@ -1127,7 +1126,7 @@ namespace spot
|
||||||
{
|
{
|
||||||
if (target_state_number == 0)
|
if (target_state_number == 0)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
trace << "dtgba_sat_synthetize(..., nacc = " << target_acc_number
|
trace << "dtwa_sat_synthetize(..., nacc = " << target_acc_number
|
||||||
<< ", acc = \"" << target_acc
|
<< ", acc = \"" << target_acc
|
||||||
<< "\", states = " << target_state_number
|
<< "\", states = " << target_state_number
|
||||||
<< ", state_based = " << state_based << ")\n";
|
<< ", state_based = " << state_based << ")\n";
|
||||||
|
|
@ -1142,7 +1141,7 @@ namespace spot
|
||||||
|
|
||||||
timer_map t;
|
timer_map t;
|
||||||
t.start("encode");
|
t.start("encode");
|
||||||
sat_stats s = dtgba_to_sat(solver(), a, d, state_based, colored);
|
sat_stats s = dtwa_to_sat(solver(), a, d, state_based, colored);
|
||||||
t.stop("encode");
|
t.stop("encode");
|
||||||
t.start("solve");
|
t.start("solve");
|
||||||
solution = solver.get_solution();
|
solution = solver.get_solution();
|
||||||
|
|
@ -1186,12 +1185,12 @@ namespace spot
|
||||||
if (show && res)
|
if (show && res)
|
||||||
print_dot(std::cout, res);
|
print_dot(std::cout, res);
|
||||||
|
|
||||||
trace << "dtgba_sat_synthetize(...) = " << res << '\n';
|
trace << "dtwa_sat_synthetize(...) = " << res << '\n';
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
twa_graph_ptr
|
twa_graph_ptr
|
||||||
dtgba_sat_minimize(const const_twa_graph_ptr& a,
|
dtwa_sat_minimize(const const_twa_graph_ptr& a,
|
||||||
unsigned target_acc_number,
|
unsigned target_acc_number,
|
||||||
const acc_cond::acc_code& target_acc,
|
const acc_cond::acc_code& target_acc,
|
||||||
bool state_based, int max_states,
|
bool state_based, int max_states,
|
||||||
|
|
@ -1204,7 +1203,7 @@ namespace spot
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
auto next =
|
auto next =
|
||||||
dtgba_sat_synthetize(prev ? prev : a, target_acc_number,
|
dtwa_sat_synthetize(prev ? prev : a, target_acc_number,
|
||||||
target_acc, --n_states,
|
target_acc, --n_states,
|
||||||
state_based, colored);
|
state_based, colored);
|
||||||
if (!next)
|
if (!next)
|
||||||
|
|
@ -1217,7 +1216,7 @@ namespace spot
|
||||||
}
|
}
|
||||||
|
|
||||||
twa_graph_ptr
|
twa_graph_ptr
|
||||||
dtgba_sat_minimize_dichotomy(const const_twa_graph_ptr& a,
|
dtwa_sat_minimize_dichotomy(const const_twa_graph_ptr& a,
|
||||||
unsigned target_acc_number,
|
unsigned target_acc_number,
|
||||||
const acc_cond::acc_code& target_acc,
|
const acc_cond::acc_code& target_acc,
|
||||||
bool state_based, int max_states,
|
bool state_based, int max_states,
|
||||||
|
|
@ -1232,7 +1231,7 @@ namespace spot
|
||||||
{
|
{
|
||||||
int target = (max_states + min_states) / 2;
|
int target = (max_states + min_states) / 2;
|
||||||
auto next =
|
auto next =
|
||||||
dtgba_sat_synthetize(prev ? prev : a, target_acc_number,
|
dtwa_sat_synthetize(prev ? prev : a, target_acc_number,
|
||||||
target_acc, target, state_based,
|
target_acc, target, state_based,
|
||||||
colored);
|
colored);
|
||||||
if (!next)
|
if (!next)
|
||||||
|
|
@ -1358,7 +1357,7 @@ namespace spot
|
||||||
{
|
{
|
||||||
auto orig = a;
|
auto orig = a;
|
||||||
if (!target_is_buchi || !a->acc().is_buchi() || colored)
|
if (!target_is_buchi || !a->acc().is_buchi() || colored)
|
||||||
a = (dicho ? dtgba_sat_minimize_dichotomy : dtgba_sat_minimize)
|
a = (dicho ? dtwa_sat_minimize_dichotomy : dtwa_sat_minimize)
|
||||||
(a, nacc, target_acc, state_based, max_states, colored);
|
(a, nacc, target_acc, state_based, max_states, colored);
|
||||||
else
|
else
|
||||||
a = (dicho ? dtba_sat_minimize_dichotomy : dtba_sat_minimize)
|
a = (dicho ? dtba_sat_minimize_dichotomy : dtba_sat_minimize)
|
||||||
|
|
@ -1370,7 +1369,7 @@ namespace spot
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!target_is_buchi || !a->acc().is_buchi() || colored)
|
if (!target_is_buchi || !a->acc().is_buchi() || colored)
|
||||||
a = dtgba_sat_synthetize(a, nacc, target_acc, states,
|
a = dtwa_sat_synthetize(a, nacc, target_acc, states,
|
||||||
state_based, colored);
|
state_based, colored);
|
||||||
else
|
else
|
||||||
a = dtba_sat_synthetize(a, states, state_based);
|
a = dtba_sat_synthetize(a, states, state_based);
|
||||||
|
|
@ -23,10 +23,10 @@
|
||||||
|
|
||||||
namespace spot
|
namespace spot
|
||||||
{
|
{
|
||||||
/// \brief Attempt to synthetize am equivalent deterministic TGBA
|
/// \brief Attempt to synthetize an equivalent deterministic TωA
|
||||||
/// with a SAT solver.
|
/// with a SAT solver.
|
||||||
///
|
///
|
||||||
/// \param a the input TGBA. It should be a deterministic TGBA.
|
/// \param a the input TωA. It should be a deterministic TωA.
|
||||||
///
|
///
|
||||||
/// \param target_acc_number is the number of acceptance sets wanted
|
/// \param target_acc_number is the number of acceptance sets wanted
|
||||||
/// in the result.
|
/// in the result.
|
||||||
|
|
@ -38,46 +38,45 @@ namespace spot
|
||||||
/// target_state_number reachable states.
|
/// target_state_number reachable states.
|
||||||
///
|
///
|
||||||
/// \param state_based set to true to force all outgoing transitions
|
/// \param state_based set to true to force all outgoing transitions
|
||||||
/// of a state to share the same acceptance conditions, effectively
|
/// of a state to share the same acceptance conditions.
|
||||||
/// turning the TGBA into a TBA.
|
|
||||||
///
|
///
|
||||||
/// \param colored if true, force all transitions to belong to
|
/// \param colored if true, force all transitions to belong to
|
||||||
/// exactly one acceptance set.
|
/// exactly one acceptance set.
|
||||||
///
|
///
|
||||||
/// This functions attempts to find a TGBA with \a target_acc_number
|
/// This functions attempts to find a TωA with \a target_acc_number
|
||||||
/// acceptance sets and target_state_number states that is
|
/// acceptance sets and target_state_number states that is
|
||||||
/// equivalent to \a a. If no such TGBA is found, a null pointer is
|
/// equivalent to \a a. If no such TωA is found, a null pointer is
|
||||||
/// returned.
|
/// returned.
|
||||||
SPOT_API twa_graph_ptr
|
SPOT_API twa_graph_ptr
|
||||||
dtgba_sat_synthetize(const const_twa_graph_ptr& a,
|
dtwa_sat_synthetize(const const_twa_graph_ptr& a,
|
||||||
unsigned target_acc_number,
|
unsigned target_acc_number,
|
||||||
const acc_cond::acc_code& target_acc,
|
const acc_cond::acc_code& target_acc,
|
||||||
int target_state_number,
|
int target_state_number,
|
||||||
bool state_based = false,
|
bool state_based = false,
|
||||||
bool colored = false);
|
bool colored = false);
|
||||||
|
|
||||||
/// \brief Attempt to minimize a deterministic TGBA with a SAT solver.
|
/// \brief Attempt to minimize a deterministic TωA with a SAT solver.
|
||||||
///
|
///
|
||||||
/// This calls dtgba_sat_synthetize() in a loop, with a decreasing
|
/// This calls dtwa_sat_synthetize() in a loop, with a decreasing
|
||||||
/// number of states, and returns the last successfully built TGBA.
|
/// number of states, and returns the last successfully built TGBA.
|
||||||
///
|
///
|
||||||
/// If no smaller TGBA exist, this returns a null pointer.
|
/// If no smaller TGBA exists, this returns a null pointer.
|
||||||
SPOT_API twa_graph_ptr
|
SPOT_API twa_graph_ptr
|
||||||
dtgba_sat_minimize(const const_twa_graph_ptr& a,
|
dtwa_sat_minimize(const const_twa_graph_ptr& a,
|
||||||
unsigned target_acc_number,
|
unsigned target_acc_number,
|
||||||
const acc_cond::acc_code& target_acc,
|
const acc_cond::acc_code& target_acc,
|
||||||
bool state_based = false,
|
bool state_based = false,
|
||||||
int max_states = -1,
|
int max_states = -1,
|
||||||
bool colored = false);
|
bool colored = false);
|
||||||
|
|
||||||
/// \brief Attempt to minimize a deterministic TGBA with a SAT solver.
|
/// \brief Attempt to minimize a deterministic TωA with a SAT solver.
|
||||||
///
|
///
|
||||||
/// This calls dtgba_sat_synthetize() in a loop, but attempting to
|
/// This calls dtwa_sat_synthetize() in a loop, but attempting to
|
||||||
/// find the minimum number of states using a binary search.
|
/// find the minimum number of states using a binary search.
|
||||||
//
|
//
|
||||||
/// If no smaller TBA exist, this returns a null pointer.
|
/// If no smaller TBA exist, this returns a null pointer.
|
||||||
SPOT_API twa_graph_ptr
|
SPOT_API twa_graph_ptr
|
||||||
dtgba_sat_minimize_dichotomy(const const_twa_graph_ptr& a,
|
dtwa_sat_minimize_dichotomy(const const_twa_graph_ptr& a,
|
||||||
unsigned target_acc_number,
|
unsigned target_acc_number,
|
||||||
const acc_cond::acc_code& target_acc,
|
const acc_cond::acc_code& target_acc,
|
||||||
bool state_based = false,
|
bool state_based = false,
|
||||||
|
|
@ -28,7 +28,7 @@
|
||||||
#include "powerset.hh"
|
#include "powerset.hh"
|
||||||
#include "isdet.hh"
|
#include "isdet.hh"
|
||||||
#include "dtbasat.hh"
|
#include "dtbasat.hh"
|
||||||
#include "dtgbasat.hh"
|
#include "dtwasat.hh"
|
||||||
#include "complete.hh"
|
#include "complete.hh"
|
||||||
#include "totgba.hh"
|
#include "totgba.hh"
|
||||||
#include "sbacc.hh"
|
#include "sbacc.hh"
|
||||||
|
|
@ -413,15 +413,15 @@ namespace spot
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sat_states_ != -1)
|
if (sat_states_ != -1)
|
||||||
res = dtgba_sat_synthetize
|
res = dtwa_sat_synthetize
|
||||||
(res, target_acc, acc_cond::generalized_buchi(target_acc),
|
(res, target_acc, acc_cond::generalized_buchi(target_acc),
|
||||||
sat_states_, state_based_);
|
sat_states_, state_based_);
|
||||||
else if (sat_minimize_ == 1 || sat_minimize_ == -1)
|
else if (sat_minimize_ == 1 || sat_minimize_ == -1)
|
||||||
res = dtgba_sat_minimize
|
res = dtwa_sat_minimize
|
||||||
(res, target_acc, acc_cond::generalized_buchi(target_acc),
|
(res, target_acc, acc_cond::generalized_buchi(target_acc),
|
||||||
state_based_);
|
state_based_);
|
||||||
else // sat_minimize_ == 2
|
else // sat_minimize_ == 2
|
||||||
res = dtgba_sat_minimize_dichotomy
|
res = dtwa_sat_minimize_dichotomy
|
||||||
(res, target_acc, acc_cond::generalized_buchi(target_acc),
|
(res, target_acc, acc_cond::generalized_buchi(target_acc),
|
||||||
state_based_);
|
state_based_);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@
|
||||||
#include "twaalgos/stutter.hh"
|
#include "twaalgos/stutter.hh"
|
||||||
#include "twaalgos/translate.hh"
|
#include "twaalgos/translate.hh"
|
||||||
#include "twaalgos/hoa.hh"
|
#include "twaalgos/hoa.hh"
|
||||||
#include "twaalgos/dtgbasat.hh"
|
#include "twaalgos/dtwasat.hh"
|
||||||
#include "twaalgos/relabel.hh"
|
#include "twaalgos/relabel.hh"
|
||||||
|
|
||||||
#include "parseaut/public.hh"
|
#include "parseaut/public.hh"
|
||||||
|
|
@ -315,7 +315,7 @@ namespace std {
|
||||||
%include "twaalgos/stutter.hh"
|
%include "twaalgos/stutter.hh"
|
||||||
%include "twaalgos/translate.hh"
|
%include "twaalgos/translate.hh"
|
||||||
%include "twaalgos/hoa.hh"
|
%include "twaalgos/hoa.hh"
|
||||||
%include "twaalgos/dtgbasat.hh"
|
%include "twaalgos/dtwasat.hh"
|
||||||
%include "twaalgos/relabel.hh"
|
%include "twaalgos/relabel.hh"
|
||||||
|
|
||||||
%include "parseaut/public.hh"
|
%include "parseaut/public.hh"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue