спецификация единиц синтаксического анализа (parse units specification)
Дубль
(статьи:
pmparseunitsstr - спецификация единиц синтаксического анализа )
Имя (Name)
pmParseUnitsStr
- parse units specification
Синопсис C (C Synopsis)
#include <pcp/pmapi.h>
int pmParseUnitsStr(const char *
string, struct pmUnits *
out,
double *
outMult, char **
errMsg);
cc ... -lpcp
Описание (Description)
pmParseUnitsStr
is designed to encapsulate the interpretation of
a units (dimension and scale) specification in command line
switches for use by the PCP client tools.
This function expects to be called with the unit/scale
specification as string. This specification takes the general
form produced by pmUnitsStr(3). Briefly, the format allows
/
-separated divisor and dividend, each listing space-separated
dimensions/scales along the space, time, and count axes. There
are also a few extra possibilities:
First, multiple equivalent sets of keywords are accepted for the
time and space dimensions, insensitive to case. For example,
"microseconds", "microsecond", "microsec", "us" are considered
synonymous, as are "kilobytes", "KB", "KiB", "kiloByte", and so
on.
Second, units may be offered in any order, e.g., ms kb count x
10^3
or count x 10^3 kb ms
. They may not be repeated within the
denominator or within the numerator. Each scale/unit keyword may
be immediately followed by positive or negative exponents, e.g.,
^-4
.
Third, numerical scaling factors may be supplied. These are
factored together with implicit scale conversions into the final
outMult result.
The out and outMult values must both be allocated before calling
pmParseUnitsStr(3). If the conversion is successful,
pmParseUnitsStr
returns 0, and fills in out
and outMult
with the
unit/scales defined by the input parameter. If the argument
strings could not be parsed, it returns a negative status code.
Примеры (Examples)
┌──────────────────────────────────┬────────────────┬─────────┐
│ string │ out │ outMult │
├──────────────────────────────────┼────────────────┼─────────┤
│2 count │ {0,1,0,0,0,0} │ 0.5 │
│count / 7.5 nanosecond │ {0,1,-1,0,0,0} │ 7.5 │
│10 kilobytes / 2.5e2 count x 10^3 │ {1,-1,0,1,3,0} │ 25 │
│millisecond / second^2 │ {0,0,-1,0,0,3} │ 1000 │
│mib/s │ {1,0,-1,2,0,3} │ 1 │
└──────────────────────────────────┴────────────────┴─────────┘
Ошибки (баги) (Bugs)
For backward compatibility, this interface interprets several
traditional computer science interpretations of space units
incorrectly by the International System of Units (SI) standard.
The accepted unit string - in either singular or plural form -
and the pmParseUnitsStr
interpretation for each are:
megabyte
(mebibyte
), gigabyte
(gibibyte
), terabyte
(tebibyte
),
petabyte
(pebibyte
), exabyte
(exbibyte
), zettabyte
(zebibyte
) and
yottabyte
(yobibyte
).
Возвращаемое значение (Return value)
A zero status indicates success. A negative status indicates an
error, in which case the errMsg pointer will contain a textual
error message, which the caller should later free(3).
Смотри также (See also)
PMAPI(3), pmUnitsStr(3), pmConvScale(3), and pmLookupDesc(3).