source: trunk/src/fortran/RpUnitsFInterface.h @ 829

Last change on this file since 829 was 568, checked in by dkearney, 14 years ago

reworking of the Rappture Units code.
Rappture Units no longer creates an object for each metric extension of every
metric unit. Now the metric prefixes are kept in the dictionary as unit objects,
and when a unit is parsed out of the string received from the user, the unit
is checked to see if it acccepts metric prefixes, if so, a search is done for
the prefix. This allows Rappture Units code to more easily tackle case insensitive
unit name searches. Eventually the prefixes will be removed as direct Rappture Units objects and be turned into (possibly a derived object) rappture units prefix objects.

The find function of the core Rappture Units code now accepts
a "hints" function pointer. The function pointer is executed by the dictionary when
the dictionary thinks it found a matching object. This allows the user of the
dictionary to insert different objects with the same key. For Rappture Units,
multiple units objects with the same key can be inserted into the dictionary.
This is important for units like "A" which could stand for angstroms or amperes.

Additionally, the "make metric" functions were removed because the idea of being a
metric unit has been reduced to a flag inside the Rappture Units object and some
newly added logic. The role of setting the metric flag has been added to the define()
function as an additional function input. The fortran and c code has been updated to
reflect the removal of the function. No updates were made to the define function in
the fortran and c code.

The units.test file was also updated with new tests. Old tests were updated, removing
derived units from the list of compatible units. When searching for micro-meters (um),
compatible units of (A,in,m) will be provided instead of (A,in,m,um).

File size: 1.6 KB
2 * ----------------------------------------------------------------------
3 *  INTERFACE: Fortran Rappture Units Source
4 *
5 * ======================================================================
6 *  AUTHOR:  Derrick Kearney, Purdue University
7 *  Copyright (c) 2004-2005  Purdue Research Foundation
8 *
9 *  See the file "license.terms" for information on usage and
10 *  redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
11 * ======================================================================
12 */
14#ifndef _RpUNITS_F_H
15#define _RpUNITS_F_H
17#ifdef __cplusplus
18    #include "RpFortranCommon.h"
19    #include "RpUnitsFStubs.h"
21    extern "C" {
24int rp_define_unit(char* unitName, int* basisName, int unitName_len);
26int rp_find(char* searchName, int searchName_len);
28int rp_get_units(int* unitRefVal, char* retText, int retText_len);
30int rp_get_units_name(int* unitRefVal, char* retText, int retText_len);
32int rp_get_exponent(int* unitRefVal, double* retExponent);
34int rp_get_basis(int* unitRefVal);
36int rp_units_convert_dbl (  char* fromVal,
37                            char* toUnitsName,
38                            double* convResult,
39                            int fromVal_len,
40                            int toUnitsName_len );
42int rp_units_convert_str (  char* fromVal,
43                            char* toUnitsName,
44                            char* retText,
45                            int fromVal_len,
46                            int toUnitsName_len,
47                            int retText_len     );
49#ifdef __cplusplus
50    }
51#endif // ifdef __cplusplus
53#endif // ifndef _RpUNITS_F_H
Note: See TracBrowser for help on using the repository browser.