Skip to content

Commit bbaf1b3

Browse files
committed
ai perf: Dom hash
1 parent 703a2c6 commit bbaf1b3

File tree

4 files changed

+24
-15
lines changed

4 files changed

+24
-15
lines changed

src/domino/DataDomino.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ class DataDomino : public aDominoType
4646

4747
protected:
4848
void rmEv_(Domino::Event aValidEv) noexcept override;
49+
S_PTR<void> getData_(Domino::Event aEv) const noexcept { return ev_data_S_.get<void>(aEv); }
50+
bool replaceDataOK_(Domino::Event aEv, S_PTR<void> aData) noexcept { return ev_data_S_.replaceOK(aEv, std::move(aData)); }
4951

5052
private:
5153
// -------------------------------------------------------------------------------------------

src/domino/HdlrDomino.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ class HdlrDomino : public aDominoType
6363
virtual bool rmOneHdlrOK_(Domino::Event aValidEv, const SharedMsgCB& aValidHdlr) noexcept; // by aValidHdlr
6464

6565
void rmEv_(Domino::Event aValidEv) noexcept override;
66+
size_t nHdlr_(Domino::Event aEv) const noexcept { return ev_hdlr_S_.count(aEv); }
67+
bool rmOneHdlrOK_(Domino::Event aEv) noexcept { return ev_hdlr_S_.erase(aEv); }
6668

6769
// -------------------------------------------------------------------------------------------
6870
private:

src/domino/MultiHdlrDomino.hpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,17 +123,18 @@ Domino::Event MultiHdlrDomino<aDominoType>::multiHdlrOnSameEv(const Domino::EvNa
123123
template<class aDominoType>
124124
size_t MultiHdlrDomino<aDominoType>::nHdlr(const Domino::EvName& aEN) const noexcept
125125
{
126-
auto&& ev_hdlrs = ev_hdlrs_S_.find(this->getEventBy(aEN));
127-
return (ev_hdlrs == ev_hdlrs_S_.end() ? 0 : ev_hdlrs->second.size()) + aDominoType::nHdlr(aEN);
126+
const auto ev = this->getEventBy(aEN);
127+
auto&& ev_hdlrs = ev_hdlrs_S_.find(ev);
128+
return (ev_hdlrs == ev_hdlrs_S_.end() ? 0 : ev_hdlrs->second.size()) + aDominoType::nHdlr_(ev);
128129
}
129130

130131
// ***********************************************************************************************
131132
template<class aDominoType>
132133
void MultiHdlrDomino<aDominoType>::rmAllHdlr(const Domino::EvName& aEN) noexcept
133134
{
134-
aDominoType::rmOneHdlrOK(aEN);
135-
136-
ev_hdlrs_S_.erase(this->getEventBy(aEN));
135+
const auto ev = this->getEventBy(aEN);
136+
aDominoType::rmOneHdlrOK_(ev);
137+
ev_hdlrs_S_.erase(ev);
137138
}
138139

139140
// ***********************************************************************************************

src/domino/WbasicDatDom.hpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class WbasicDatDom : public aDominoType
4141
// forbid ouside use base directly
4242
using aDominoType::getData;
4343
using aDominoType::replaceDataOK;
44+
bool isWrCtrl_(Domino::Event aEv) const noexcept { return aEv < wrCtrl_.size() ? wrCtrl_[aEv] : false; }
4445
// -------------------------------------------------------------------------------------------
4546
std::vector<bool> wrCtrl_;
4647

@@ -52,8 +53,9 @@ class WbasicDatDom : public aDominoType
5253
template<typename aDominoType>
5354
S_PTR<void> WbasicDatDom<aDominoType>::getData(const Domino::EvName& aEvName) const noexcept
5455
{
55-
if (not isWrCtrl(aEvName))
56-
return aDominoType::getData(aEvName);
56+
const auto ev = this->getEventBy(aEvName);
57+
if (not isWrCtrl_(ev))
58+
return aDominoType::getData_(ev);
5759

5860
WRN("(WbasicDatDom) Failed!!! EvName=" << aEvName << " is not write-protect so unavailable via this func!!!");
5961
return nullptr;
@@ -63,15 +65,15 @@ S_PTR<void> WbasicDatDom<aDominoType>::getData(const Domino::EvName& aEvName) co
6365
template<typename aDominoType>
6466
bool WbasicDatDom<aDominoType>::isWrCtrl(const Domino::EvName& aEvName) const noexcept
6567
{
66-
const auto ev = this->getEventBy(aEvName);
67-
return ev < wrCtrl_.size() ? wrCtrl_[ev] : false;
68+
return isWrCtrl_(this->getEventBy(aEvName));
6869
}
6970

7071
// ***********************************************************************************************
7172
template<typename aDominoType>
7273
bool WbasicDatDom<aDominoType>::replaceDataOK(const Domino::EvName& aEvName, S_PTR<void> aData) noexcept
7374
{
74-
if (isWrCtrl(aEvName)) {
75+
const auto ev = this->getEventBy(aEvName);
76+
if (isWrCtrl_(ev)) {
7577
WRN("(WbasicDatDom) Failed!!! EvName=" << aEvName << " is not write-protect so unavailable via this func!!!")
7678
return false;
7779
}
@@ -92,8 +94,9 @@ void WbasicDatDom<aDominoType>::rmEv_(Domino::Event aValidEv) noexcept
9294
template<typename aDominoType>
9395
S_PTR<void> WbasicDatDom<aDominoType>::wbasic_getData(const Domino::EvName& aEvName) const noexcept
9496
{
95-
if (isWrCtrl(aEvName))
96-
return aDominoType::getData(aEvName);
97+
const auto ev = this->getEventBy(aEvName);
98+
if (isWrCtrl_(ev))
99+
return aDominoType::getData_(ev);
97100

98101
WRN("(WbasicDatDom) Failed!!! EvName=" << aEvName << " is not write-protect so unavailable via this func!!!");
99102
return nullptr;
@@ -103,7 +106,8 @@ S_PTR<void> WbasicDatDom<aDominoType>::wbasic_getData(const Domino::EvName& aEvN
103106
template<typename aDominoType>
104107
bool WbasicDatDom<aDominoType>::wbasic_replaceDataOK(const Domino::EvName& aEvName, S_PTR<void> aData) noexcept
105108
{
106-
if (isWrCtrl(aEvName))
109+
const auto ev = this->getEventBy(aEvName);
110+
if (isWrCtrl_(ev))
107111
return aDominoType::replaceDataOK(aEvName, std::move(aData));
108112
else {
109113
WRN("(WbasicDatDom) Failed!!! EvName=" << aEvName << " is not write-protect so unavailable via this func!!!")
@@ -115,13 +119,13 @@ bool WbasicDatDom<aDominoType>::wbasic_replaceDataOK(const Domino::EvName& aEvNa
115119
template<typename aDominoType>
116120
bool WbasicDatDom<aDominoType>::wrCtrlOk(const Domino::EvName& aEvName, const bool aNewState) noexcept
117121
{
118-
if (aDominoType::getData(aEvName))
122+
const auto ev = this->newEvent(aEvName);
123+
if (aDominoType::getData_(ev))
119124
{
120125
WRN("(WbasicDatDom) !!! Failed to change wrCtrl when aleady own data(out-of-ctrl), EvName=" << aEvName);
121126
return false;
122127
}
123128

124-
const auto ev = this->newEvent(aEvName);
125129
if (ev >= wrCtrl_.size())
126130
wrCtrl_.resize(ev + 1); // resize() can inc size()
127131
wrCtrl_[ev] = aNewState;

0 commit comments

Comments
 (0)