diff --git a/TODO b/TODO index e5202b289..02b179ffb 100644 --- a/TODO +++ b/TODO @@ -16,6 +16,8 @@ Note: different symantics! Write a asprintf() replacement for systems that don't have it available. +Prefix all functions in the spice library with spice_*. + Usability issues ------------------ @@ -31,21 +33,56 @@ most appealing. Refactorings ------------ -Make devices dynamically loadable. Perhaps use framework from glib -(http://developer.gnome.org/doc/API/glib/index.html). - Separate out circuit builder from the analysis code and put it in the devices directory (rename devices directory to simbuilder at some point). [PARTIAL] -Separate ngspice and nutmeg; i.e., no more SIMULATOR define. Dispose -of nutmeg all together once the devices are plugins. +Netlist parsing. The circuit directory currrently has definitions for +parsing one model line per device. Get this generalized into a +structure that codifies the changes between the devices. At a later +stage, distribute the structure into the devices directories. The +generic parser remains in the spice library. + +Separate ngspice and nutmeg; i.e., no more SIMULATOR define. ngspice +should probably only contain the batch processor. nutmeg would have +the complete frontend. Integrate bsim3, bsim3v1, bsim3v2 to use a single codebase instead of -three only slighty differing implementations. +three only slighty differing implementations. This also cuts down +compilation time. + +All frontend commands can now be found in the frontend directory. +Move frontend helper functions into frontend directory as well. +Not all files that define commands, start with com_*; fix that. -Separate frontend commands from supporting code. Command files -start with com_*. [PARTIAL] +Make devices dynamically loadable. Perhaps use framework from glib +(http://developer.gnome.org/doc/API/glib/index.html). As a first +step, replace everywhere in the code the following snippet +==================================================================== + int i; + + for (i = 0; i < DEVmaxnum; i++) { + ... + DEVices[i].xxx ...; + ... + } +==================================================================== +by +==================================================================== + SPICEdev **dev; + + for (dev = first_device(); dev != NULL; dev = next_device(dev)) { + ... + *dev->xxx ...; + ... + } +==================================================================== +Note: the double indirection is currently necessary. Once we get a +linked list implementation, we can do a global search and replace on + + *dev => dev + +And let the compiler find the rest of the type mismatches. Testability @@ -71,7 +108,7 @@ Documentation Update ARCHITECTURE to contain a high level overview of spice. -Convert ngspice.texi further to texinfo format. +Convert ngspice.texi further to texinfo format. [PARTIAL] Distribute devices documentation into the devices tree. This makes it easier for developers to update documentation in concert with code.