GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
eval(3m) MBA Library Functions eval(3m)

eval - evaluate simple arithmetic expressions

#include <mba/eval.h>

struct eval *eval_new(symlook_fn symlook, void *context);

void eval_del(void *eval);
int eval_expression(struct eval *eval, const tchar *expr, const tchar *elim, unsigned long *result);

The eval(3m) module will evaluate simple arithmentic expressions consisting of integers, symbols for which the provided symlook_fn returns an integer, and any of the operators |&^+-*/().OperatorPrecedence

Operator precedence is roughly the same as the C language.

 ( )  higher
 * /
 + -
^ & | lower

Prefixing integer tokens with minus '-' to indicate a negative value is currently not supported.

new
The eval_new function creates and returns a new context object for evaluating expressions. The symlook parameter is defined as follows:

typedef int (*symlook_fn)(const tchar *name, unsigned long *val, void *context);

The symlook_fn function will be called to resolve any non-numeric symbols and should place the value identified by name into val and return 0. If the symbol is not found -1 should be returned.

The eval_new function can be used repeatedly to evaluate any number of expressions before being destroyed with the eval_del function. The context parameter is passed uninterpreted to the symlook_fn (e.g. a map perhaps).

del
The eval_del function deletes the context object eval freeing any memory allocated with eval_new or during the evaluation of expressions.
eval_expression
The eval_expression function evaluates an infix expression like '(5 + 3) * N', converts it into a stack of tokens in postfix orientation, and reduces it with a simple translation matrix to produce a single integer value. The eval parameter is a context object created with eval_new. The expression at expr is evaluated up to, but not including, the memory at elim, and writes the resulting value in the memory at result.

eval_expression
The eval_expression function returns 0 if the expression was successfully reduced or -1 if an error occured in which case errno will be set appropriately (e.g. ENOENT if the symlook_fn could not resolve a symbol).
April 29, 2005 libmba-0.9.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.