80 alias_array(
const std::initializer_list<T *> &v) {
82 for (
auto &e : data) {
83 BUG_CHECK(it != v.end(),
"Not enough initializers for alias array");
86 BUG_CHECK(it == v.end(),
"Too many initializers for alias array");
88 T &operator[](
size_t idx) {
89 BUG_CHECK(idx < S,
"alias array index %zd out of bounds %zd", idx, S);
92 const T &operator[](
size_t idx)
const {
93 BUG_CHECK(idx < S,
"alias array index %zd out of bounds %zd", idx, S);
96 size_t size()
const {
return S; }
99 bool modified()
const {
100 for (
size_t i = 0; i < S; i++)
101 if (data[i]->modified())
return true;
104 void set_modified(
bool v =
true) {
105 for (
size_t i = 0; i < S; i++) data[i]->set_modified(v);
107 bool disabled()
const {
109 for (
size_t i = 0; i < S; i++)
110 if (!data[i]->disabled()) rv =
false;
115 for (
size_t i = 0; i < S; i++)
116 if (!data[i]->disable()) rv =
false;
120 for (
size_t i = 0; i < S; i++) data[i]->enable();
122 bool disable_if_unmodified() {
124 for (
size_t i = 0; i < S; i++)
125 if (!data[i]->disable_if_unmodified()) rv =
false;
128 bool disable_if_zero() {
130 for (
size_t i = 0; i < S; i++)
131 if (!data[i]->disable_if_zero()) rv =
false;
134 bool disable_if_reset_value() {
136 for (
size_t i = 0; i < S; i++)
137 if (!data[i]->disable_if_reset_value()) rv =
false;