[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