int Strip::resizeStrip(char dir, char* _head){ int position = 0; int size = strlen(strip); for (int i = 0; i < size + 1; i++) if (&strip[i] == _head) position = i; if (dir == 'L'){ char* newStrip = new char[MIN + size + 1]; for (int i = 0; i < MIN + size - 1; i++){ if (i < MIN) newStrip[i] = ' '; else newStrip[i] = strip[i - MIN]; } newStrip[MIN + size] = '\0'; setStrip(newStrip); } if (dir == 'R'){ char* newStrip = new char[size + 1 + MIN]; for (int i = 0; i < size + MIN; i++){ if (i >= size) newStrip[i] = ' '; else newStrip[i] = strip[i]; } newStrip[MIN + size] = '\0'; setStrip(newStrip); } return position; }
TuringMachine::TuringMachine(): Strip(), deltaFunction(){ char* newStrip = new char[MIN + 1]; for (int i = 0; i < MIN; i++) newStrip[i] = ' '; newStrip[MIN] = '\0'; setStrip(newStrip); }
// Slot functions bool Quad::setSlotStrip(const Basic::Number* const x) { bool ok = false; if (x != nullptr) { ok = setStrip(x->getBoolean()); } return ok; }
TuringMachine& TuringMachine::operator()(TuringMachine& T){ T.startMachine(); bool done = false; setStrip(T.getStrip()); for (int i = 0; i < strlen(getStrip()) + 1 && !done; i++) if (getStrip()[i] != ' '){ head = &getStrip()[i]; done = true; } startMachine(); return *this; }
void setAll(uint8_t r, uint8_t g, uint8_t b) { for(int i = 0; i < NUM_STRIPS; i++){ setStrip(*strips[i], r, g, b); } }