[CSProjects] Sugestie de implementare
Vlad Dogaru
ddvlad at anaconda.cs.pub.ro
Sat Jun 16 13:10:43 EEST 2007
Lucian Cojocar wrote:
> În data de 16.06.2007, Vlad Dogaru <ddvlad at anaconda.cs.pub.ro> a scris:
>> Salut,
>>
> [...]
>
> Salutare,
>
> sa vad daca am inteles.
Nu m-am gandit sa scriu functii pentru a seta stiluri. Ma gandeam ca
atunci cand se genereaza datele de intrare sa se tina cont ce stiluri
s-au definit deja:
data.unique_col_styles = malloc(3 * sizeof *data.unique_styles);
data.unique_col_styles[0] = /* general, latime implicita */
data.unique_col_styles[1] = /* latime mai mare, pentru numele materiei */
data.unique_col_styles[2] = /* latime mica, god knows why */
data.col_styles = malloc(data.ncols * sizeof *data.col_styles);
data.col_styles[0] = &data.unique_col_styles[0];
/* ... */
data.col_styles[x] = &data.uniques_col_styles[1];
Eventual am putea numi astea mai sugestiv ca sa fie mai usor de citit
secventa de constructie:
col_style *default_col_style = &data.unique_col_styles[0];
data.col_styles[1] = default_col_style;
Asta se apropie mai mult de a doua varianta a ta, iar functiile ar fi
niste wrapper-e simple, dar care ar clarifica mult lucrurile; deci
probabil o sa scriu functii, cu mica precizare ca ar trebui alocati
vectorii si ca ar trebui transisa si structura ca parametru al functiei.
Alocarea vectorilor s-ar potrivi intr-un
spreadsheet_data * new_spreadsheet_data(int ncols, int nrows);
> Daca am inteles bine, prefer a doua varianta, pentru ca se pot defini
> stiluri implicite,
> adica apelul functiei add_unique_col_style poate lipsi.
Cred ca asta ar fi o conventie buna:
if (col_styles[i] == NULL)
/* scrie coloana cu stilul unique_col_styles[0] */
> Am si eu o intrebare, structurile spreadconv_row_style si spreadconv_col_style,
> nu pot fi una si aceeasi?
Sunt foarte similare; una are _width_, cealalta _height_, ceea ce ar
putea fi inlocuit cu _size_. Dar in fisierul XML trebuiesc semnalate
diferit, deci ar trebui stocat, in structura, un camp care sa specifice
daca este un stil de coloana sau de linie. Deci am adauga 1 octet la
structura si am unifica cele doua stiluri.
Problema e ca nu te mai impiedica nimic sa asociezi unei coloane un stil
de linie (si inainte puteai sa faci typecast pe pointeri, dar era totusi
o mica protectie), si asta ar putea cauza probleme. Dar daca scriem o
functie pentru a seta stilul (ceea ce probabil o sa fac -- ascunde
implementarea), poate verifica functia daca ceea ce facem e bine.
Deci o sa unific stilurile (nu ca as fi scris pana acum cod in sensul
asta :-P), adaugand o variabila char care sa spuna daca e un stil de
coloana sau de linie.
Thanks for the input,
Vlad
--
/* no comment */
More information about the cspay-dev
mailing list