コード例 #1
0
ファイル: converter.c プロジェクト: stcorp/harp
static int
compositeGetExpression(
    const cv_converter* const	conv,
    char* const			buf,
    const size_t		max,
    const char* const		variable)
{
    char	tmpBuf[132];
    int		nchar = cv_get_expression(conv->composite.first, buf, max,
                                      variable);

    if (nchar >= 0) {
        buf[max-1] = 0;

        if (cvNeedsParentheses(buf)) {
            (void)snprintf(tmpBuf, sizeof(tmpBuf), "(%s)", buf);
        }
        else {
            (void)strncpy(tmpBuf, buf, sizeof(tmpBuf));

            tmpBuf[sizeof(tmpBuf)-1] = 0;
        }

        nchar = cv_get_expression(conv->composite.second, buf, max, tmpBuf);
    }

    return nchar;
}
コード例 #2
0
ファイル: converter.c プロジェクト: stcorp/harp
static int
expGetExpression(
    const cv_converter* const	conv,
    char* const			buf,
    const size_t		max,
    const char* const		variable)
{
    return
        cvNeedsParentheses(variable)
        ? snprintf(buf, max, "pow(%g, (%s))", conv->exp.base, variable)
        : snprintf(buf, max, "pow(%g, %s)", conv->exp.base, variable);
}
コード例 #3
0
ファイル: converter.c プロジェクト: stcorp/harp
static int
scaleGetExpression(
    const cv_converter* const	conv,
    char* const			buf,
    const size_t		max,
    const char* const		variable)
{
    return
        cvNeedsParentheses(variable)
        ? snprintf(buf, max, "%g*(%s)", conv->scale.value, variable)
        : snprintf(buf, max, "%g*%s", conv->scale.value, variable);
}
コード例 #4
0
ファイル: converter.c プロジェクト: Unidata/UDUNITS-2
static int
reciprocalGetExpression(
    const cv_converter* const	conv,
    char* const			buf,
    const size_t		max,
    const char* const		variable)
{
    return
	cvNeedsParentheses(variable)
	? snprintf(buf, max, "1/(%s)", variable)
	: snprintf(buf, max, "1/%s", variable);
}
コード例 #5
0
ファイル: converter.c プロジェクト: stcorp/harp
static int
galileanGetExpression(
    const cv_converter* const	conv,
    char* const			buf,
    const size_t		max,
    const char* const		variable)
{
    const int	oper = conv->galilean.intercept < 0 ? '-' : '+';

    return
        cvNeedsParentheses(variable)
        ? snprintf(buf, max, "%g*(%s) %c %g", conv->galilean.slope,
                   variable, oper, fabs(conv->galilean.intercept))
        : snprintf(buf, max, "%g*%s %c %g", conv->galilean.slope, variable,
                   oper, fabs(conv->galilean.intercept));
}
コード例 #6
0
ファイル: converter.c プロジェクト: stcorp/harp
static int
offsetGetExpression(
    const cv_converter* const	conv,
    char* const			buf,
    const size_t		max,
    const char* const		variable)
{
    const int	oper = conv->offset.value < 0 ? '-' : '+';

    return
        cvNeedsParentheses(variable)
        ? snprintf(buf, max, "(%s) %c %g", variable, oper,
                   fabs(conv->offset.value))
        : snprintf(buf, max, "%s %c %g", variable, oper,
                   fabs(conv->offset.value));
}