- Ho provato a inserire uSTringGetToken in math tool e funziona solo
che ci sono problemi per la gestione delle parentesi (non ho idea se
tu testi ogni tanto) a tale proposito vedi i prossimi punti.
- Tutto quello che c'è in ulib deve cominciare per u (minuscolo).
Decidiamo poi una volta per tutte lo stile dei define globali, vanno
sicuramente in maiuscolo (tranne la prima u) ma poi è meglio
uMALLOCERROR o uMALLOC_ERROR?
- Ho commentato un pochino ustring.h perchè mi rompeva ogni volta
andare sul .h per vedere le definizioni al posto di usare la
documentazione (quando finisco o finisci tu la rigenero e la carico
sull'svn).
- Mi metterò a lavorare più su math tool ora perchè è un po' tutto
buttato là a caso. Mio consiglio (ma non è un imposizione) è che tu
dai massima priorità (non nella vita ma a in math tool) a finire la
getToken (con quello che ti dico dopo, gestione dei '+', '-' e del
punto) e se vuoi divertirti con le operazioni + e - in apalib (* e /
necessitano di queste).
-Ora cosa aggiungerei a getToken. Per renderlà una funzione veramente
potente aggiungerei un terzo parametro char *sep. Sep sta per
separatore (non mi viene in inglese). Devi pensare a sep come un array
di char più che ad una stringa (l'ultimo è sempre il solito '\0').
Questo array specifica tutti i cararetteri che devono essere intesi
come separatori di numeri o parole. E sono un tipo a se (uSEPTYPE) Ad
esempio:
Passo la stringa ciao233(ciao)22 e con sep = ") (" (lo spazio in mezzo
e solo per capirsi)
allora deve spezzare in questi token:
i = 0 => "ciao" uSTRTYPE
i = 4 => "233" uNUMTYPE
i = 7 => "(" uSEPTYPE
i = 8 => "ciao" uSTRTYPE
i = 12 => ")" uSEPTYPE
i = 13 => "22" uNUMTYPE
se non si vogliono separatori basta passare NULL come sep.
i separatori hanno priorità assoluta se ad esempio uno passa il + o il
. come separatore allora +100.85 viene spezzato in '+', "100", '.',
"85"
sarebbe bello poi (ma questo si può far dopo) che da type si possa si
possa sapere sia se il token ritornato è un numero o una stringa e se
è un separatore o no. Questo si fa come linux gestisce i permessi,
cioè valutando un singolo bit.
cazzo quanto ho scritto :)
|