From: Davide Z. <dav...@gm...> - 2009-08-21 16:48:24
|
- 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 :) |