This looks most interesting, and there most definitely remains a great need for a units handling package.
I presume you have looked at W W Brown's SI units proposal http://home.fnal.gov/~wb/SItempl8.pdf and wonder why you rejected it and how your proposal is different. Paul PS It seems that time gets into global namespace. I agree it should not be there but don't know how to fix it. I hit the same problem in my previous (rudimentary) attempt with units. Paul A Bristow, Prizet Farmhouse, Kendal, Cumbria, LA8 8AB UK +44 1539 561830 Mobile +44 7714 33 02 04 Mobile mailto:[EMAIL PROTECTED] mailto:[EMAIL PROTECTED] > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Behalf Of Eric Ford > Sent: Friday, February 28, 2003 8:46 AM > To: [EMAIL PROTECTED] > Subject: [boost] (no subject) > > > I decided that I needed a workable units library, so I wrote one. It > allows for weakly typed dimensioned quantities (so a length divided by > a time is automatically converted to a velocity). It also allows > users to use strong typeing for quantities of the same dimension which > shouldn't be confused (so you don't set a mass of apples equal to a > mass of oranges). > > I attempted to make it pretty general, allowing for all the standard > SI dimensions, a dimension for money (since that is something lots of > people care about), and I've left one dimension avaliable for users. > Fractional powers of dimnensions are allowed. (It also includes a > compile-time fractions header file that might be useful for other > purposes.) Power users could setup units using their own classes > for the internal numeric type or even provide their own systems of units. > > I uploaded the first draft version of it to the vault a ebf_units.zip. > I've included several demonstration programs to show how it can be used. > > example1.cpp demonstrates the use of simple SI units, including arithmetic > on such variable and automatic conversion when multiplying or dividing > dimensioned quantities. > > example2.cpp demonstrates how you could use multiple representations > (e.g., float and double) in the same program. I've included extremely crude > numeric type promtion mainly for demonstration purposes. > > example3.cpp demonstrates the use of multiple systems of units in a > single program (e.g., including both standard/si/mks units and > "relativistic units where the speed of light is set to unity). > SIUnits only allows one in a program. Any conversions > between systems must be made explicitly. > > example4.cpp demonstrates basic use of "qualifiers". These allow > users to make strongly typed units, so that quantities of the same > dimension, but different meaning can't be confused. (e.g., a mass > of apples and a mass of oranges) > > example5.cpp demonstrates how a user can extend this to allow for > some automatic conversions (e.g., automatically convert apples to > fruits, but not vice versa, or add apples and oranges and assign > the result to fruits). > > Known bugs/limitations: > > - In the mks_double and mks_single namespaces, time is non-standard in > that it is capitalized unlike all the other dimenions. This is due to > my compiler (g++ 3.0.4 on rh) having conflicts with time (which I > beleive should be in the std namespace). Help on solving this would > be appreciated. > > - Many more dimensions could be predefined in the standard system > (basically SI). However, I'd prefer not to define every possible unit > (like SIunits), particularlly those that are not frequently used > (e.g., furlong) and/or those which can be easily constructed by the > user (e.g., meters per second). > > - Headers for other internal numeric representations (e.g., mks_int > ???) could be included. > > - Other systems (quantum, natural, planetary, ...) could be included. > > - The system tag classes (e.g., mks_tag, which provides for > identifying which system of units is being used and labeling the > dimension of quantities) could be made more intelligent. For example, > SIUnits allows users to set the default unit that they'd like a > quantity with a certain dimension to be displayed as. Since one can > simply divide by whatever unit they want their result in, I don't see > much point. However, if someone wanted this, they should be able to > add such features by replacing the sytem tag class class without touching > the rest. > > Bugfixes, improvements, encouragment, and other feedback would be welcome. > > > > > > > -------------------------------------- > Protect yourself from spam, > use http://sneakemail.com > _______________________________________________ > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost > _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost