void pop_front() { ACCESS_CHECK(BIGSTRUCT()); ASSERT(begin < end); sub[begin++] = nil; }
void push_front(mixed value) { ACCESS_CHECK(BIGSTRUCT()); ASSERT(begin > 0); sub[--begin] = value; }
void push_back(mixed value) { ACCESS_CHECK(BIGSTRUCT()); ASSERT(end < sizeof(sub)); sub[end++] = value; }
void set_back(mixed value) { ACCESS_CHECK(BIGSTRUCT()); ASSERT(begin < end); sub[end - 1] = value; }
void set_front(mixed value) { ACCESS_CHECK(BIGSTRUCT()); ASSERT(begin < end); sub[begin] = value; }
void pop_back() { ACCESS_CHECK(BIGSTRUCT()); ASSERT(begin < end); sub[--end] = nil; }
mixed query_back() { ACCESS_CHECK(BIGSTRUCT()); if (begin >= end) { error("Subscript out of range"); } return sub[end - 1]; }
mixed query_element(int index) { ACCESS_CHECK(BIGSTRUCT()); if (index < begin || index >= end) { error("Subscript out of range"); } return sub[index]; }
void set_element(int index, mixed data) { ACCESS_CHECK(BIGSTRUCT()); if (index < begin || index >= end) { error("Subscript out of range"); } sub[index] = data; }
int query_end() { ACCESS_CHECK(BIGSTRUCT()); return end; }
int full_front() { ACCESS_CHECK(BIGSTRUCT()); return begin == 0; }
int empty() { ACCESS_CHECK(BIGSTRUCT()); return begin == end; }
int query_begin() { ACCESS_CHECK(BIGSTRUCT()); return begin; }
int query_mass() { ACCESS_CHECK(BIGSTRUCT()); return end - begin; }
object query_next() { ACCESS_CHECK(BIGSTRUCT()); return next; }
object query_prev() { ACCESS_CHECK(BIGSTRUCT()); return prev; }
void set_next(object new_next) { ACCESS_CHECK(BIGSTRUCT()); next = new_next; }
int full_back() { ACCESS_CHECK(BIGSTRUCT()); return end == sizeof(sub); }
void set_prev(object new_prev) { ACCESS_CHECK(BIGSTRUCT()); prev = new_prev; }
void self_destruct() { ACCESS_CHECK(BIGSTRUCT()); destruct_object(this_object()); }