[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
There are 34 documented macros.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 5266.
macro description: ASSERT_MSG
macro with a message cstring and an
optional condition. Generates an assertion -if checking
is enabled- and also issues a compile warning if
condition is missing so false.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 5180.
macro description: The COMPILE_WARNING
syntax issues a warning, inspired by GCC
#warning. Syntax is (COMPILE_WARNING <string> [<expression>]).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 5142.
macro description: The EXIT
syntax is for exitting a local FOREVER
loop in the
same function. Syntax is (EXIT <loop-name> <expression>...).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 5102.
macro description: The FOREVER
syntax is for infinite loops exited thru
EXIT
. Syntax is (FOREVER <loop-name> <expr>...). Use EXIT
to go out
of the loop with a result.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 5063.
macro description: The RETURN
syntax is for returning a primary and possibly
secondary results. Syntax is (RETURN <expression>...). If no
expression is given, returns nil.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 5045.
macro description: The PROGN
syntax evaluate a sequence of expressions ignoring
all but the last which is the result. Syntax is (PROGN
<expression>...).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4988.
macro description: The COMMENT
syntax inserts comment in the generated code, or
skips MELT code. Syntax is (COMMENT <string>) to insert a comment in
the generated C code, or (COMMENT ...) to skip some syntax.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4958.
macro description: The QUOTE
syntax (usually noted with a prefix
quote-character) is for quotations. Only symbols or literals can be
quoted. A quoted literal reifies a value, so ’2 is a value of
DISCR_CONSTANT_INTEGER
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4915.
macro description: The MULTICALL
syntax is for accumulating the primary and
secondary results of a function application or a message
sending. Syntax is (MULTICALL ( <formals> ) <application-or-sending>
<body>...). The first formal is bound to the primary result and
should be a :value. Other are for secondary results. The body is
evaluated with these results of the given application or sending
expression bound by the formals. Inspired by Scheme’s
CALL-WITH-VALUES or CommonLisp’s MULTIPLE-VALUE-BIND.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4859.
macro description: The LAMBDA
syntax is for anonymous functions e.g. closures,
with closed values (however closing things like :gimple or :long is
not permitted, you have to box them explicitly as :value-s.). Syntax
is (LAMBDA ( <formals> ) <body>...). The formal argument list should
have its first formal be a :value. Other arguments can bec(-typed
with keywords like :value :gimple :long etc. which applies to all
succeeding arguments up to the next ctype keyword. The body is a
non-empty sequence of expressions. LAMBDA
functions can RETURN
a
value with possible secondary results. See also MULTICALL
. LAMBDA
expressions are construcitive so can appear in LETREC
bindings.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4821.
macro description: The LETREC
syntax is for mutually recursive local
bindings. Syntax is (LETREC ( <binding>... ) <body>...). Each binding is
an optional ctype such as :long or :gimple or :value (which is the
default), followed by a local variable name, followed by a single
constructive expression, like LAMBDA
INSTANCE
TUPLE
LIST
. The
body is a non-empty sequence of sub-expressions evaluated in an
augmented environment. MELT LETREC is similar to Scheme’s LETREC.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4651.
macro description: The LET
syntax is for sequential local bindings of
expressions. Syntax is (LET ( <binding>... ) <body>...). Each binding
is an optional ctype such as :long or :gimple or :value (which is the
default), followed by a local variable name, followed by a single
expression. The body is a non-empty sequence of expressions,
evaluated in an environment enriched with the local bindings. The
MELT LET syntax is sequential, like LET* in Scheme so a variable
bound in a previous binding can appear in the expression of a later
binding.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4511.
macro description: The MATCH
syntax is for pattern-matching expressions. Syntax
is (MATCH <matched-expression> <match-case>...). Each match-case
starts with a pattern followed by expressions. The catch-all pattern
?_ should appear in the last match-case if any. Pattern variables
like ?x are bound by the matching in their match-case.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4104.
macro description: The usual lisp COND
conditional. Syntax is (COND
<conditions>...). Each condition is a list of the form (<test>
<expr>...). The last catch-all condition can be (:else <epxr>...).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 4008.
macro description: The GCCIF
macro expands the rest of the expression if the
version string of the GCC translating this MELT expression matches
the condition. Syntax is (GCCIF
condition expr...), where the
condition is a string such as "4.5." or a list of strings.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3936.
macro description: The CPPIF
macro expands to C-code with an #if condition, so
the condition is handled when compiling the generated C code into a
MELT module. Syntax is (CPPIF <symbol> <then> [<else>]).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3882.
macro description: The IF
syntax is for simple conditional expressions. Syntax
is (IF <test-expression> <then-expression> [<else-expression>]).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3831.
macro description: The SETQ
syntax is for assignment of local variables, usually
bound by a LET in the same function. Syntax is (SETQ <symbol>
<expr>).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3799.
macro description: The GET_FIELD
syntax safely access a field. Syntax
is (GET_FIELD :<field> <expression>) which evaluates to nil if the
expression is not of the class defining the field. See also
UNSAFE_GET_FIELD
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3758.
macro description: The UNSAFE_GET_FIELD
syntax retrieves dangerously a field
from an instance and may crash when the instance is not an object of
the appropriate class. Syntax is (UNSAFE_GET_FIELD :<field>
<expression>). Using GET_FIELD
is preferrable.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3716.
macro description: The PUT_FIELDS
syntax is for safely setting fields in an
object. Syntax is (PUT_FIELDS <instance-expression> {:<field>
<field-expression>}*). If the instance is not an object of the class
containing all the fields, no harm is done. See also
UNSAFE_PUT_FIELDS
which does not produces checks.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3671.
macro description: The UNSAFE_PUT_FIELDS
is for expert use only, since it can
crash the running GCC MELT compilation. Syntax is (UNSAFE_PUT_FIELDS
<instance> {:<field> <expression>}). It sets fields in an instance
without any checks. Using PUT_FIELDS
is prefered.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3628.
macro description: The CODE_CHUNK
macro is for low-level C code chunks. The syntax is (CODE_CHUNK
state-symbol chunk) where chunk is a macro-string. It generates a C block. Since it does not make any type verification, it should be usually avoided. See DEFPRIMITIVE
etc.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3337.
macro description: The LOAD
macro is for reading expressions from another
file. Syntax is (LOAD <file-name>).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3296.
macro description: The INSTANCE
syntax is for making new objects. Syntax
is (INSTANCE <class> {:<field> <expression>}*).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3228.
macro description: The DEFSELECTOR
syntax defines a selector for sending
messages. Syntax is (DEFSELECTOR <symbol> <selector-class> [:doc
<documentation>] [:formals ( <formals>...)]).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 3086.
macro description: The DEFINSTANCE
syntax defines a static instance bound by a
symbol. Syntax is (DEFINSTANCE <symbol> <class> [:doc documentation]
{:<field> <value>}*). The symbol is bound to the newly made
instance.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2880.
macro description: The DEFCLASS
macro defines a class. Syntax
is (DEFCLASS symbol [:doc documentation] :super super-class :fields
fields-list). Conventionally, the class name (i.e. the symbol) should
preferably start with CLASS_. The fields’ names should preferably be
globally unique, and usually share a common prefix. See also
CLASS_ROOT
CLASS_CLASS
CLASS_FIELD
etc.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2613.
macro description: The DEFINE
macro defines a named non-recursive
value. Syntax is (DEFINE
name expr
[:doc documentation]). Use EXPORT_VALUES
to make that name visible
outside its module.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2568.
macro description: The DEFUN
macro defines a function. Syntax
is (DEFUN
funame formals [:doc documentation]
body...). The first formal argument, if any, is required to be
of ctype :value
. The expressions in the body are evaluated
in sequence. The value of the last is returned. See also RETURN
and
LAMBDA
macros. A function defined by DEFUN
has to be exported with EXPORT_VALUES
to be visible outside its module.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2499.
macro description: The DEFUNMATCHER
syntax defines a matcher thru a MELT
function. Syntax is (DEFUNMATCHER <symbol> <in-formals> <out-formals>
[:doc docum] <match-function> [<apply-function> [<data>]])
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2362.
macro description: The DEFCMATCHER
macro defines pattern-matching operator by
their C expansion. Syntax is (DEFCMATCHER symbol match&ins-formals
out-formals state-symbol [:doc documentation] test-expansion
fill-expansion [operator-expansion]).
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2183.
macro description: The DEFCITERATOR
macro defines a c-iterator
which itself implements iterative for
-like loops. Syntax
is (DEFCITERATOR
name start-formals state-symbol
variable-formals [:doc documentation]
before-expansion after-expansion). To be visible outside
the module, the c-iterator should be exported using
EXPORT_VALUES
. See also CLASS_CITERATOR
.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Macro defined at file ‘warmelt-macro.melt’, line 2057.
macro description: The DEFPRIMITIVE
macro defines new primitive
operations by their C expansion. Syntax is (DEFPRIMITIVE
name
formals type [:doc documentation] expansion)
which defines a primitive of given name with formal arguments
formals, result c-type type, optional documentation,
and given expansion. A macro is expanded into a C instruction if
its c-type is :void
, otherwise into a C expression. Primitives
have to be exported with EXPORT_VALUES
to be visible in other
modules. See also the classes CLASS_PRIMITIVE
, and
CLASS_PRIMITIVE_BINDING
and the CODE_CHUNK
macro.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated on June 22, 2011 using texi2html 1.82.