END_TEST START_TEST (test_StringBuffer_appendInt) { char *s, *t; StringBuffer_appendInt(SB, 1); fail_unless( StringBuffer_length(SB) == 1 ); fail_unless( StringBuffer_capacity(SB) == 80 ); s = StringBuffer_toString(SB); fail_unless( !strcmp(s, "1") ); StringBuffer_appendChar(SB, ' '); StringBuffer_appendInt(SB, 23); fail_unless( StringBuffer_length(SB) == 4 ); fail_unless( StringBuffer_capacity(SB) == 80 ); t = StringBuffer_toString(SB); fail_unless( !strcmp(t, "1 23") ); safe_free(s); safe_free(t); }
/** * Formats the given ASTNode as a rational number and appends the result to * the given StringBuffer. For SBML L1 this amounts to: * * "(numerator/denominator)" */ void FormulaFormatter_formatRational (StringBuffer_t *sb, const ASTNode_t *node) { StringBuffer_appendChar( sb, '('); StringBuffer_appendInt ( sb, ASTNode_getNumerator(node) ); StringBuffer_appendChar( sb, '/'); StringBuffer_appendInt ( sb, ASTNode_getDenominator(node) ); StringBuffer_appendChar( sb, ')'); }
/** * Formats the given ASTNode as an SBML L1 token and appends the result to * the given StringBuffer. */ void FormulaFormatter_format (StringBuffer_t *sb, const ASTNode_t *node) { if (sb == NULL) return; if (ASTNode_isOperator(node)) { FormulaFormatter_formatOperator(sb, node); } else if (ASTNode_isFunction(node)) { FormulaFormatter_formatFunction(sb, node); } else if (ASTNode_isInteger(node)) { StringBuffer_appendInt(sb, ASTNode_getInteger(node)); } else if (ASTNode_isRational(node)) { FormulaFormatter_formatRational(sb, node); } else if (ASTNode_isReal(node)) { FormulaFormatter_formatReal(sb, node); } else if ( !ASTNode_isUnknown(node) ) { StringBuffer_append(sb, ASTNode_getName(node)); } }
END_TEST START_TEST (test_StringBuffer_accessWithNULL) { StringBuffer_append(NULL, NULL); StringBuffer_appendChar(NULL, ' '); StringBuffer_appendExp(NULL, 0.0); StringBuffer_appendInt(NULL, 0); StringBuffer_appendNumber(NULL, NULL); StringBuffer_appendReal(NULL, 0.0); fail_unless (StringBuffer_capacity(NULL) == 0); StringBuffer_ensureCapacity(NULL, 0); StringBuffer_free(NULL); fail_unless (StringBuffer_getBuffer(NULL) == NULL); StringBuffer_grow(NULL, 0); fail_unless (StringBuffer_length(NULL) == 0); StringBuffer_reset(NULL); fail_unless (StringBuffer_toString(NULL) == NULL); }
/** * Formats the given ASTNode as a rational number and appends the result to * the given StringBuffer. For SBML L1 this amounts to: * * "(numerator/denominator)" */ void L3FormulaFormatter_formatRational (StringBuffer_t *sb, const ASTNode_t *node, const L3ParserSettings_t *settings) { StringBuffer_appendChar( sb, '('); StringBuffer_appendInt ( sb, ASTNode_getNumerator(node) ); StringBuffer_appendChar( sb, '/'); StringBuffer_appendInt ( sb, ASTNode_getDenominator(node) ); StringBuffer_appendChar( sb, ')'); if (L3ParserSettings_getParseUnits(settings)) { if (ASTNode_hasUnits(node)) { StringBuffer_appendChar( sb, ' '); StringBuffer_append( sb, ASTNode_getUnits(node)); } } }
/** * Formats the given ASTNode as a rational number and returns the result as * a string. This amounts to: * * "(numerator/denominator)" */ char * FormulaGraphvizFormatter_formatRational (const ASTNode_t *node) { char *s; StringBuffer_t *p = StringBuffer_create(128); StringBuffer_appendChar( p, '('); StringBuffer_appendInt ( p, ASTNode_getNumerator(node) ); StringBuffer_appendChar( p, '/'); StringBuffer_appendInt ( p, ASTNode_getDenominator(node) ); StringBuffer_appendChar( p, ')'); s = StringBuffer_toString(p); free(p); return s; }
LIBSBML_EXTERN void StringBuffer_appendFullExp(StringBuffer_t *sb, double mantissa, long exponent, double value) { if (mantissa >= 1e14 || mantissa <= -1e14 || (mantissa < 1e-4 && mantissa > -1e-4)) { StringBuffer_appendReal(sb, value); return; } StringBuffer_appendNumber(sb, LIBSBML_FLOAT_FORMAT, mantissa); StringBuffer_appendChar(sb, 'e'); StringBuffer_appendInt(sb, exponent); }
/** * Visits the given ASTNode node. This function is really just a * dispatcher to either SBML_formulaToString_visitFunction() or * SBML_formulaToString_visitOther(). */ void FormulaFormatter_visit ( const ASTNode_t *parent, const ASTNode_t *node, StringBuffer_t *sb ) { if (ASTNode_isLog10(node)) { FormulaFormatter_visitLog10(parent, node, sb); } else if (ASTNode_isSqrt(node)) { FormulaFormatter_visitSqrt(parent, node, sb); } else if (FormulaFormatter_isFunction(node)) { FormulaFormatter_visitFunction(parent, node, sb); } else if (ASTNode_hasTypeAndNumChildren(node, AST_MINUS, 1)) { FormulaFormatter_visitUMinus(parent, node, sb); } else if (ASTNode_hasTypeAndNumChildren(node, AST_PLUS, 1) || ASTNode_hasTypeAndNumChildren(node, AST_TIMES, 1)) { FormulaFormatter_visit(node, ASTNode_getChild(node, 0), sb); } else if (ASTNode_hasTypeAndNumChildren(node, AST_PLUS, 0)) { StringBuffer_appendInt(sb, 0); } else if (ASTNode_hasTypeAndNumChildren(node, AST_TIMES, 0)) { StringBuffer_appendInt(sb, 1); } else { FormulaFormatter_visitOther(parent, node, sb); } }
/** * Formats the given ASTNode as a directed graph token and returns the result as * a string. */ char * FormulaGraphvizFormatter_format (const ASTNode_t *node) { StringBuffer_t *p = StringBuffer_create(128); char *s = NULL; if (ASTNode_isOperator(node)) { s = FormulaGraphvizFormatter_formatOperator(node); } else if (ASTNode_isFunction(node)) { s = FormulaGraphvizFormatter_formatFunction(node); } else if (ASTNode_isInteger(node)) { StringBuffer_appendInt(p, ASTNode_getInteger(node)); s = StringBuffer_toString(p); } else if (ASTNode_isRational(node)) { s = FormulaGraphvizFormatter_formatRational(node); } else if (ASTNode_isReal(node)) { s = FormulaGraphvizFormatter_formatReal(node); } else if ( !ASTNode_isUnknown(node) ) { if (ASTNode_getName(node) == NULL) { StringBuffer_append(p, "unknown"); } else { StringBuffer_append(p, ASTNode_getName(node)); } s = StringBuffer_toString(p); } free(p); return s; }