delpi
0.0.1
DElta-complete LP solver
Toggle main menu visibility
Loading...
Searching...
No Matches
Variable.h
1
7
#pragma once
8
9
#include <cstddef>
10
#include <functional>
11
#include <iosfwd>
12
#include <string>
13
#include <vector>
14
15
namespace
delpi
{
16
20
class
Variable
{
21
public
:
22
using
Id = std::size_t;
23
24
static
const
Id
dummy_id
;
25
34
Variable
() :
id_
{
dummy_id
} {}
41
explicit
Variable
(std::string name);
48
explicit
Variable
(Id
id
);
49
51
[[nodiscard]]
bool
is_dummy()
const
{
return
id_
==
dummy_id
; }
53
[[nodiscard]] Id id()
const
{
return
id_
; }
55
[[nodiscard]]
const
std::string &name()
const
{
return
names_
[
id_
+ 1]; }
56
58
[[nodiscard]]
bool
equal_to(
const
Variable
&o)
const
noexcept
{
return
id_
== o.id_; }
60
[[nodiscard]]
bool
less(
const
Variable
&o)
const
noexcept
{
return
id_
< o.id_; }
62
[[nodiscard]]
size_t
hash() const noexcept {
return
std::hash<Id>{}(
id_
); }
63
64
Variable
operator+()
const
{
return
*
this
; }
65
66
private
:
67
static
std::vector<std::string>
names_
;
72
static
Id
GetNextId
();
73
74
Id
id_
{};
75
};
76
77
std::ostream &operator<<(std::ostream &os,
const
Variable &var);
78
}
// namespace delpi
79
80
template
<>
81
struct
std::hash<
delpi
::Variable> {
82
size_t
operator()(
const
delpi::Variable
&v)
const
noexcept
{
return
v.hash(); }
83
};
84
85
template
<>
86
struct
std::less<
delpi
::Variable> {
87
bool
operator()(
const
delpi::Variable
&lhs,
const
delpi::Variable
&rhs)
const
noexcept
{
return
lhs.less(rhs); }
88
};
89
90
template
<>
91
struct
std::equal_to<
delpi
::Variable> {
92
bool
operator()(
const
delpi::Variable
&lhs,
const
delpi::Variable
&rhs)
const
noexcept
{
return
lhs.equal_to(rhs); }
93
};
94
95
#ifdef DELPI_INCLUDE_FMT
96
97
#include "delpi/util/logging.h"
98
99
OSTREAM_FORMATTER(
delpi::Variable
);
100
101
#endif
delpi::Variable
Real symbolic variable.
Definition
Variable.h:20
delpi::Variable::names_
static std::vector< std::string > names_
Names of all existing variables.
Definition
Variable.h:67
delpi::Variable::id_
Id id_
Unique identifier.
Definition
Variable.h:74
delpi::Variable::dummy_id
static const Id dummy_id
ID of the dummy variable.
Definition
Variable.h:24
delpi::Variable::Variable
Variable()
Construct a new dummy variable object.
Definition
Variable.h:34
delpi::Variable::GetNextId
static Id GetNextId()
Get the next unique identifier for a variable.
Definition
Variable.cpp:21
delpi
Global namespace for the delpi library.
delpi
symbolic
Variable.h
Generated by
1.17.0