29a30,31
> #include <utility>
>
36,39c38,40
< sc_attr_base::sc_attr_base(const std::string &)
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< }
---
> sc_attr_base::sc_attr_base(const std::string &_name) : _name(_name) {}
> sc_attr_base::sc_attr_base(const sc_attr_base &other) : _name(other._name) {}
> sc_attr_base::~sc_attr_base() {}
41,44c42
< sc_attr_base::sc_attr_base(const sc_attr_base &)
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< }
---
> const std::string &sc_attr_base::name() const { return _name; }
46,63d43
< sc_attr_base::~sc_attr_base()
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< }
<
< const std::string &
< sc_attr_base::name() const
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< return *(const std::string *)nullptr;
< }
<
< void
< sc_attr_base::warn_unimpl(const char *func)
< {
< warn("%s not implemented.\n", func);
< }
<
67,68c47
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< return (iterator)nullptr;
---
> return cltn.begin();
74,75c53
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< return (const_iterator)nullptr;
---
> return cltn.begin();
81,82c59
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< return (iterator)nullptr;
---
> return cltn.end();
88,89c65
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< return (const_iterator)nullptr;
---
> return cltn.end();
92,95c68,70
< sc_attr_cltn::sc_attr_cltn()
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< }
---
> sc_attr_cltn::sc_attr_cltn() {}
> sc_attr_cltn::sc_attr_cltn(const sc_attr_cltn &other) : cltn(other.cltn) {}
> sc_attr_cltn::~sc_attr_cltn() {}
97c72,73
< sc_attr_cltn::sc_attr_cltn(const sc_attr_cltn &)
---
> bool
> sc_attr_cltn::push_back(sc_attr_base *attr)
99,100c75,76
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< }
---
> if (!attr || (*this)[attr->name()])
> return false;
102,104c78,79
< sc_attr_cltn::~sc_attr_cltn()
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
---
> cltn.push_back(attr);
> return true;
107,113d81
< bool
< sc_attr_cltn::push_back(sc_attr_base *)
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< return false;
< }
<
117c85,87
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
---
> for (auto &attr: cltn)
> if (attr->name() == name)
> return attr;
124c94,96
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
---
> for (auto &attr: cltn)
> if (attr->name() == name)
> return attr;
131c103,110
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
---
> for (auto &attr: cltn) {
> if (attr->name() == name) {
> sc_attr_base *ret = attr;
> std::swap(attr, cltn.back());
> cltn.pop_back();
> return ret;
> }
> }
135,139c114
< void
< sc_attr_cltn::remove_all()
< {
< warn("%s not implemented.\n", __PRETTY_FUNCTION__);
< }
---
> void sc_attr_cltn::remove_all() { cltn.clear(); }
140a116,117
> int sc_attr_cltn::size() const { return cltn.size(); }
>