Newsgroup: it.comp.lang.c
Titolo: Feedback per libreria

Salve a tutti. Sto mettendo insieme una libreria di funzioni utili. 
Quelle funzioni che uno si trova a scrivere e riscrivere ogni volta, per 
capirci.
Per ora ho coperto questi argomenti:
   - Debugging
   - Logging
   - Unit Testing (semplice ma TAP-compatibile)
   - Error handling
   - Finite State Machines
   - Variable length strings
   - Variable length arrays
   - Hash table
   - Pattern matching (diverso dalle espressioni regolari)
   - Embeddable lexers (basato sui pattern di cui sopra)
La libreria ï¿œ modulare, si puo' usare il pattern matching senza doversi 
preoccupare delle hash table etc.
Ho anche aggiunto qualche esempio per chiarire meglio come funziona il 
tutto.
Il codice ï¿œ qui: 
http://code.google.com/p/c-libutl/source/browse/#svn/trunk
Se qualcuno ha voglia e tempo di dargli un'occhiata mi farebbe piacere 
ricevere commenti, suggerimenti e critiche (costruttive, possibilmente :) )
Remo.D

 Remo.D
Ho dato uno sguardo veloce al tutto, ma ho sùbito una domanda... come
si usa tutta quella roba? :)
C'è della documentazione da qualche parte? Anche gli esempi non
spiegano molto, finché hanno nomi come "fmt"/"fsm"/"cxrt". Volevo dare
una provata al tutto, ma senza avere un'interfaccia precisa alla
libreria diventa complicato.. Fammi sapere! ;)
Ciao!

 libreria diventa complicato.. Fammi sapere! ;)
Da newbie quale sono mi permetto di condividere questo problema. :-)
Una buona documentazione può rendere la libreria molto più fruibile... 
come pure dei nomi più "terrestri". :-P
Ciao,
Giulio
--

 come pure dei nomi pi� "terrestri". :-P
Per i nomi ci si puo' sempre mettere daccordo :)
Il README contiene le indicazioni su come usare la libreria e come 
compilare su Linux o Windows con Mingw. La directory build contiene un 
batch per compilare con PellesC, prima o poi mi decido a reinstallare 
visualstudio express e metto anche il batch per MSVC++.
Per ciascun "modulo" la documentazione � nell'header corrispondente:
   utl.h per le utility generiche
   chs.h per le stringhe
   tbl.h per le hash table
   pmx.h per il pattern matching.
tbl.h � l'unico ancora da documentare seriamente, gli altri contengono 
la descrizione di tutte le funzioni disponibili.
Dovrei finire l'esempio nella directory fmt che � una utility per 
trasformare i sorgenti in HTML cosi' tutto sarebbe piu' leggibile.
Sicuramente devo scrivere piu' documentazione ma cercher� di aggiungerla 
nell'header cosi' da aggiornarla insieme al codice.
Se date un'occhiata al README ed agli header mi dite cosa vorreste 
aggiungere?
Hagari per i commenti e le domande � meglio usare il gruppo che ho creato:
 
http://groups.google.com/group/c-libutl
 
c-li...@googlegroups.com
cos� da non rompere troppo quelli a cui non interessa.
Remo.D.

 visualstudio express e metto anche il batch per MSVC++.
Hai pensato ad una versione per Cygwin (sistema che uso quotidianamente 
:-))?
Ciao,
Giulio
--

 Remo.D.
Ok, ho dato un'altra occhiata veloce e ti dico sinceramente cosa ne
penso.
Innanzi tutto complimenti perché il lavoro è ben fatto. Questo senza
dubbio.
Detto questo, ti dico perché io personalmente non userei la libreria:
- utility: niente da dire. Sono funzioni molto semplici e normalmente
ne servono molte meno, tanto da giustificarne la riscrittura o il
riuso da vecchi progetti. Io per esempio ho il mio file di macro che
mi porto a destra e a manca, anche se normalmente in fase di sviluppo
arrivi che già c'è ;) Avrebbe senso se si potesse staccare dal resto
della libreria.
- stringhe: una nuova struttura per le stringhe? perché? non ne vedo
il bisogno!
- hash table: la struttura non supporta la concorrenza.
- pattern matching: non usa patterns standard, il che sta a
significare che dovrei re-imparare un sistema nuovo e comunque non
molto portabile.
Il progetto mi sembra comunque molto ben fatto, ma oggigiorno cercare
di far usare una libreria di utility generale al di fuori di quelle
normalmente utilizzate è un impresa titanica! ;)
Ciao!

 normalmente utilizzate è un impresa titanica! ;)
Anche questo è assolutamente vero :)  Nella mia idea questa libreria
dovrebbe essere maggiormente utile durante lo sviluppo. Sto cercando
di eliminare colli di bottiglia e sprechi di memoria ma il punto
cruciale è che deve autare a velocizzare la realizzazione delle
applicazioni.
Ad esempio usando le hashtable ed i vettori dinamici (tbl e vec) si
possono realizzare strutture di dati anche complesse (grafi, alberi,
liste di code, etc.). Se poi è giustificato da motivi di performance o
di spazio, le strutture dati potrebbero essere sostituite con
un'implementazione ad hoc una volta completato.
Grazie dei commenti, E' proprio quello che mi serve per andare avanti.
REmo.D

 Hai pensato ad una versione per Cygwin (sistema che uso quotidianamente
Dovrebbe già funzionare. Se il test automatico non va (non so se la
shell di Cygwin rende disponibile le variabili d'ambiente ) puoi
modficare 
config.mk
. Le istruzioni sono direttamente nel file.
Fammi sapere se ci riesci.
Remo.D