Var: replace struct by a pair

This commit is contained in:
Tiago Gomes 2013-03-09 16:18:13 +00:00
parent 532654baba
commit d563fce952
2 changed files with 8 additions and 23 deletions

View File

@ -5,7 +5,7 @@
namespace Horus { namespace Horus {
std::unordered_map<VarId, VarInfo> Var::varsInfo_; std::unordered_map<VarId, Var::VarInfo> Var::varsInfo_;
Var::Var (const Var* v) Var::Var (const Var* v)
@ -51,7 +51,8 @@ std::string
Var::label() const Var::label() const
{ {
if (Var::varsHaveInfo()) { if (Var::varsHaveInfo()) {
return Var::getVarInfo (varId_).label; assert (Util::contains (varsInfo_, varId_));
return varsInfo_.find (varId_)->second.first;
} }
std::stringstream ss; std::stringstream ss;
ss << "x" << varId_; ss << "x" << varId_;
@ -64,7 +65,8 @@ States
Var::states() const Var::states() const
{ {
if (Var::varsHaveInfo()) { if (Var::varsHaveInfo()) {
return Var::getVarInfo (varId_).states; assert (Util::contains (varsInfo_, varId_));
return varsInfo_.find (varId_)->second.second;
} }
States states; States states;
for (unsigned i = 0; i < range_; i++) { for (unsigned i = 0; i < range_; i++) {
@ -87,15 +89,6 @@ Var::addVarInfo (
VarInfo
Var::getVarInfo (VarId vid)
{
assert (Util::contains (varsInfo_, vid));
return varsInfo_.find (vid)->second;
}
bool bool
Var::varsHaveInfo() Var::varsHaveInfo()
{ {

View File

@ -12,19 +12,11 @@
namespace Horus { namespace Horus {
struct VarInfo {
VarInfo (std::string l, const States& sts)
: label(l), states(sts) { }
std::string label;
States states;
};
class Var { class Var {
public: public:
Var (const Var*); Var (const Var*);
Var (VarId, unsigned, int = Constants::unobserved); Var (VarId, unsigned range, int evidence = Constants::unobserved);
virtual ~Var() { }; virtual ~Var() { };
@ -57,13 +49,13 @@ class Var {
static void addVarInfo ( static void addVarInfo (
VarId vid, std::string label, const States& states); VarId vid, std::string label, const States& states);
static VarInfo getVarInfo (VarId vid);
static bool varsHaveInfo(); static bool varsHaveInfo();
static void clearVarsInfo(); static void clearVarsInfo();
private: private:
typedef std::pair<std::string, States> VarInfo;
VarId varId_; VarId varId_;
unsigned range_; unsigned range_;
int evidence_; int evidence_;