mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 18:05:21 +00:00
129 lines
4 KiB
C++
129 lines
4 KiB
C++
/*++
|
|
Copyright (c) 2011 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
params.h
|
|
|
|
Abstract:
|
|
|
|
Parameters.
|
|
|
|
Author:
|
|
|
|
Leonardo (leonardo) 2011-04-22
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
#ifndef _PARAMS_H_
|
|
#define _PARAMS_H_
|
|
|
|
#include"cmd_context_types.h"
|
|
#include"vector.h"
|
|
class ast;
|
|
class ast_manager;
|
|
|
|
typedef cmd_arg_kind param_kind;
|
|
|
|
class params;
|
|
class param_descrs;
|
|
|
|
class params_ref {
|
|
params * m_params;
|
|
void init();
|
|
void copy_core(params const * p);
|
|
public:
|
|
params_ref():m_params(0) {}
|
|
params_ref(params_ref const & p);
|
|
~params_ref();
|
|
|
|
params_ref & operator=(params_ref const & p);
|
|
|
|
// copy params from p
|
|
void copy(params_ref const & src);
|
|
void append(params_ref const & src) { copy(src); }
|
|
|
|
bool get_bool(symbol const & k, bool _default) const;
|
|
bool get_bool(char const * k, bool _default) const;
|
|
unsigned get_uint(symbol const & k, unsigned _default) const;
|
|
unsigned get_uint(char const * k, unsigned _default) const;
|
|
double get_double(symbol const & k, double _default) const;
|
|
double get_double(char const * k, double _default) const;
|
|
char const * get_str(symbol const & k, char const * _default) const;
|
|
char const * get_str(char const * k, char const * _default) const;
|
|
rational get_rat(symbol const & k, rational const & _default) const;
|
|
rational get_rat(char const * k, rational const & _default) const;
|
|
symbol get_sym(symbol const & k, symbol const & _default) const;
|
|
symbol get_sym(char const * k, symbol const & _default) const;
|
|
expr * get_expr(symbol const & k, expr * _default) const;
|
|
expr * get_expr(char const * k, expr * _default) const;
|
|
func_decl * get_func_decl(symbol const & k, func_decl * _default) const;
|
|
func_decl * get_func_decl(char const * k, func_decl * _default) const;
|
|
sort * get_sort(symbol const & k, sort * _default) const;
|
|
sort * get_sort(char const * k, sort * _default) const;
|
|
|
|
void set_manager(ast_manager & m);
|
|
|
|
bool empty() const;
|
|
bool contains(symbol const & k) const;
|
|
bool contains(char const * k) const;
|
|
|
|
void reset();
|
|
void reset(symbol const & k);
|
|
void reset(char const * k);
|
|
|
|
void set_bool(symbol const & k, bool v);
|
|
void set_bool(char const * k, bool v);
|
|
void set_uint(symbol const & k, unsigned v);
|
|
void set_uint(char const * k, unsigned v);
|
|
void set_double(symbol const & k, double v);
|
|
void set_double(char const * k, double v);
|
|
void set_str(symbol const & k, char const * v);
|
|
void set_str(char const * k, char const * v);
|
|
void set_rat(symbol const & k, rational const & v);
|
|
void set_rat(char const * k, rational const & v);
|
|
void set_sym(symbol const & k, symbol const & v);
|
|
void set_sym(char const * k, symbol const & v);
|
|
void set_expr(symbol const & k, expr * v);
|
|
void set_expr(char const * k, expr * v);
|
|
void set_func_decl(symbol const & k, func_decl * v);
|
|
void set_func_decl(char const * k, func_decl * v);
|
|
void set_sort(symbol const & k, sort * v);
|
|
void set_sort(char const * k, sort * v);
|
|
|
|
void display(std::ostream & out) const;
|
|
|
|
void validate(param_descrs const & p) const;
|
|
};
|
|
|
|
inline std::ostream & operator<<(std::ostream & out, params_ref const & ref) {
|
|
ref.display(out);
|
|
return out;
|
|
}
|
|
|
|
class param_descrs {
|
|
struct imp;
|
|
imp * m_imp;
|
|
public:
|
|
param_descrs();
|
|
~param_descrs();
|
|
void insert(char const * name, param_kind k, char const * descr);
|
|
void insert(symbol const & name, param_kind k, char const * descr);
|
|
void erase(char const * name);
|
|
void erase(symbol const & name);
|
|
param_kind get_kind(char const * name) const;
|
|
param_kind get_kind(symbol const & name) const;
|
|
void display(std::ostream & out, unsigned indent = 0) const;
|
|
unsigned size() const;
|
|
symbol get_param_name(unsigned idx) const;
|
|
};
|
|
|
|
void insert_max_memory(param_descrs & r);
|
|
void insert_max_steps(param_descrs & r);
|
|
void insert_produce_models(param_descrs & r);
|
|
void insert_produce_proofs(param_descrs & r);
|
|
void insert_timeout(param_descrs & r);
|
|
|
|
#endif
|