Here are the items on my ToDo list for time handling after this weekend's release of PLplot. Most of these items have been mentioned before, but I thought I should collect everything in one place, and the first two items are entirely new.
* Change the libqsastime API. This has not been mentioned before, but I plan to store the continuous time variable that represents the scaled and transformed time as two doubles rather than one double. The first double will store the integer part of the scaled and transformed time result (exactly if the signed integer will fit in 54 bits), and the second double will store the fractional part of the scaled and transformed time result. The current one double used to represent scaled and transformed continuous time just introduces too much numerical error for those who might want to use libqsastime independently of PLplot. Of course, PLplot must use the one double approach (since our independent variables for plotting are all stored that way), but I am of the opinion that the conversion from the high numerical precision of libqsastime to the reduced PLplot time precision should be done at the PLplot level and not forced on libqsastime itself. * Improve the information hiding for libqsastime. This is currently in a bit of a mess where some internal functions that normally should be hidden are made visible so they can be tested by our various test routines. * Implement leap second intervals in the transformation from broken-down to continous time in libqsastime. * Implement additional testing procedure that does comprehensive test of libqsastime against a file generated on a (Linux 64-bit) system where we know the result is reliable because of the additional possibility there of testing against 64-bit glibc time routines for Linux. Because the comparison will be against a file, this additional testing procedure will be completely independent of system time routines on all platforms. * For PLplot stream initialization already provides a default transformation between continuous and broken-down time for each different stream. The way this works is that if plinit is called for a given stream and if the user has not already called plconfigtime for that stream, then plconfigtime is called to establish a PLplot default transformation (currently this is seconds since the Unix epoch, but that default may change) in the transformations between continuous and broken-down time for that stream. However, this needs to be followed up by calling plconfigtime (which reconfigures the time transformation in libqsastime, but with all transformation data stored in a QSASConfig struct pointed to by plsc->qsasconfig) for every change in stream and whenever a stream is copied so that if a user calls plconfigtime (before or after plinit for the stream), then that call will only affect the current stream. * Implement language wrappers (where needed) for the core library functions plbtime, plctime, and plconfigtime. * Python example 29 needs to be reinstated to revision 9662 (which already expands on what is implemented for the C version of example 29), and then expanded some more to thoroughly test the PLplot time handling including some of the more interesting time representations such as UTC, TAI, TT, TCG, and GPS time. * The expanded Python example 29 needs to be propagated to C and all our supported languages to test the above language wrappers for plbtime, plctime, and plconfigtime. * Document libqsastime visible API. * Document PLplot plbtime, plctime, and plconfigtime routines that wrap calls to libqsastime. That's already a pretty long list, but let me know if you can think of anything else that should be added to it. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ ------------------------------------------------------------------------------ Register Now & Save for Velocity, the Web Performance & Operations Conference from O'Reilly Media. Velocity features a full day of expert-led, hands-on workshops and two days of sessions from industry leaders in dedicated Performance & Operations tracks. Use code vel09scf and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel