Go forward to Hooks.
Go backward to Symbolic Lisp Functions.
Go up to Internals.
I/O and Formatting Functions
............................
The functions described here are responsible for parsing and
formatting Calc numbers and formulas.
-- Function: calc-eval STR SEP ARG1 ARG2 ...
This is the simplest interface to the Calculator from another Lisp program.
See Calling Calc from Your Programs.
-- Function: read-number STR
If string STR contains a valid Calc number, either integer,
fraction, float, or HMS form, this function parses and returns
that number. Otherwise, it returns `nil'.
-- Function: read-expr STR
Read an algebraic expression from string STR. If STR does not
have the form of a valid expression, return a list of the form
`(error POS MSG)' where POS is an integer index into STR of the
general location of the error, and MSG is a string describing the
problem.
-- Function: read-exprs STR
Read a list of expressions separated by commas, and return it as
a Lisp list. If an error occurs in any expressions, an error
list as shown above is returned instead.
-- Function: calc-do-alg-entry INITIAL PROMPT NO-NORM
Read an algebraic formula or formulas using the minibuffer. All
conventions of regular algebraic entry are observed. The return
value is a list of Calc formulas; there will be more than one if
the user entered a list of values separated by commas. The
result is `nil' if the user presses Return with a blank line. If
INITIAL is given, it is a string which the minibuffer will
initially contain. If PROMPT is given, it is the prompt string
to use; the default is "Algebraic:". If NO-NORM is `t', the
formulas will be returned exactly as parsed; otherwise, they will
be passed through `calc-normalize' first.
To support the use of `$' characters in the algebraic entry, use
`let' to bind `calc-dollar-values' to a list of the values to be
substituted for `$', `$$', and so on, and bind `calc-dollar-used'
to 0. Upon return, `calc-dollar-used' will have been changed to
the highest number of consecutive `$'s that actually appeared in
the input.
-- Function: format-number A
Convert the real or complex number or HMS form A to string form.
-- Function: format-flat-expr A PREC
Convert the arbitrary Calc number or formula A to string form, in
the style used by the trail buffer and the `calc-edit' command.
This is a simple format designed mostly to guarantee the string
is of a form that can be re-parsed by `read-expr'. Most
formatting modes, such as digit grouping, complex number format,
and point character, are ignored to ensure the result will be
re-readable. The PREC parameter is normally 0; if you pass a
large integer like 1000 instead, the expression will be
surrounded by parentheses unless it is a plain number or variable
name.
-- Function: format-nice-expr A WIDTH
This is like `format-flat-expr' (with PREC equal to 0), except
that newlines will be inserted to keep lines down to the
specified WIDTH, and vectors that look like matrices or rewrite
rules are written in a pseudo-matrix format. The `calc-edit'
command uses this when only one stack entry is being edited.
-- Function: format-value A WIDTH
Convert the Calc number or formula A to string form, using the
format seen in the stack buffer. Beware the the string returned
may not be re-readable by `read-expr', for example, because of
digit grouping. Multi-line objects like matrices produce strings
that contain newline characters to separate the lines. The W
parameter, if given, is the target window size for which to
format the expressions. If W is omitted, the width of the
Calculator window is used.
-- Function: compose-expr A PREC
Format the Calc number or formula A according to the current
language mode, returning a "composition." To learn about the
structure of compositions, see the comments in the Calc source
code. You can specify the format of a given type of function
call by putting a `math-compose-LANG' property on the function's
symbol, whose value is a Lisp function that takes A and PREC as
arguments and returns a composition. Here LANG is a language
mode name, one of `normal', `big', `c', `pascal', `fortran',
`tex', `eqn', `math', or `maple'. In Big mode, Calc actually
tries `math-compose-big' first, then tries `math-compose-normal'.
If this property does not exist, or if the function returns
`nil', the function is written in the normal function-call
notation for that language.
-- Function: composition-to-string C W
Convert a composition structure returned by `compose-expr' into a
string. Multi-line compositions convert to strings containing
newline characters. The target window size is given by W. The
`format-value' function basically calls `compose-expr' followed
by `composition-to-string'.
-- Function: comp-width C
Compute the width in characters of composition C.
-- Function: comp-height C
Compute the height in lines of composition C.
-- Function: comp-ascent C
Compute the portion of the height of composition C which is on or
above the baseline. For a one-line composition, this will be
one.
-- Function: comp-descent C
Compute the portion of the height of composition C which is below
the baseline. For a one-line composition, this will be zero.
-- Function: comp-first-char C
If composition C is a "flat" composition, return the first
(leftmost) character of the composition as an integer.
Otherwise, return `nil'.
-- Function: comp-last-char C
If composition C is a "flat" composition, return the last
(rightmost) character, otherwise return `nil'.