Responsabili
Depunctare întârziere după depășirea deadline-ului soft: -10p/zi
Deadline soft: 25 aprilie, ora 23:55
Deadline hard: 28 aprilie, ora 23:55
În urma realizării acestei teme studentul:
Gigel este absolvent al Facultăii de Automatică si Calculatoare. Înca de la primul laborator de USO Gigel folosește editorul vim, în mare parte pentru că nu știe cum să iasă din el. Acum că a absolvit, Gigel s-a gândit că e momentul să-și implementeze singur propriul editor. Însa cum acesta nu are destulă experiența cu editoarele, s-a lovit de cateva probleme.
Gigel s-a pus pe lucru si in scurt timp a scris interfata cu utilizatorul pentru editorul sau. Si-a dat seama insa ca functionalitatile editorului sunt mai greu de implementat decat credea, asa ca a decis ca are nevoie de ajutorul unor profesionisti. Ca sa fie sigur, Gigel s-a decis sa ceara tuturor studentilor sa implementeze cate o versiune a functionalitatilor.
Astfel, editorul text se alcatuieste din partea scrisa de Gigel - care reprezinta interfata cu utilizatorul (front-end) - si partea scrisa de fiecare student in parte - care reprezinta functionalitatile (back-end). Astfel ca, fiecare dintre voi, are de implementat doar functionalitatea efectiva a editorului de text (operatiile cut, copy, paste, undo, redo, add, getText).
Editorul lui Gigel este special. Din motive de simplitate (sau plictiseala) tanarul absolvent s-a gandit ca ar fi o idee buna daca editorul sau ar avea ca unitate de baza cuvantul si nu litera. Asta inseamna ca cea mai mica unitate pe care o poti adauga sau sterge este un cuvant.
Cuvantul se defineste ca fiind orice insiruire de caractere alfanumerice (fara orice fel de caractere speciale) urmate de un spatiu. Astfel, odata adaugat un cuvant acesta nu mai poate fi modificat, doar sters.
Intrucat comportamentul editorului sau nu este mereu cel mai intuitiv, Gigel s-a gandit ca este bine sa aiba specificatii mai clare legate de implementarea back-end-ului.
Precizari:
Sa se implementeze o biblioteca shared object care sa expuna un obiect ce contine functiile prezentate. Un schelet de cod de la care sa plecati este disponibil in arhiva, in directorul backend_src.
Temele vor trebui trimise pe vmchecker. Atenție! Temele trebuie trimise în secțiunea Structuri de Date (CA).
Arhiva trebuie să conțină:
Coding style-ul trebuie sa fie consistent și ușor de citit. Ca ghid vă recomandăm:
sau
Citiți cu atenție Regulamentul General de Trimitere a Temelor.
De aceea, vă sfătuim să nu vă lăsați rezolvări ale temelor pe calculatoare partajate (la laborator etc), pe mail/liste de discuții/grupuri etc.
Q: Se poate folosi STL?
A: Se poate folosi clasa string din STL. Folosirea oricărei alte clase din STL nu este permisă