pike.git
/
src
/
program.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/program.c:1:
/* || This file is part of Pike. For copyright information see COPYRIGHT. || Pike is distributed under GPL, LGPL and MPL. See the file COPYING || for more information.
-
|| $Id: program.c,v 1.
530
2003/11/
09
01:
10
:
14
mast Exp $
+
|| $Id: program.c,v 1.
531
2003/11/
10
01:
35
:
45
mast Exp $
*/ #include "global.h"
-
RCSID("$Id: program.c,v 1.
530
2003/11/
09
01:
10
:
14
mast Exp $");
+
RCSID("$Id: program.c,v 1.
531
2003/11/
10
01:
35
:
45
mast Exp $");
#include "program.h" #include "object.h" #include "dynamic_buffer.h" #include "pike_types.h" #include "stralloc.h" #include "las.h" #include "language.h" #include "lex.h" #include "pike_macros.h" #include "fsort.h"
pike.git/src/program.c:158:
static struct mapping *lfun_ids; /* mapping(string:type) */ static struct mapping *lfun_types; static char *raw_lfun_types[] = { tFuncV(tNone,tVoid,tVoid), /* "__INIT", */ tFuncV(tNone,tZero,tVoid), /* "create", */ tFuncV(tNone,tVoid,tVoid), /* "destroy", */
-
tFuncV(
tNone
,tZero,tMix), /* "`+", */
-
tFuncV
(
tNone
,tZero,tMix),
/* "`-", */
+
tFuncV(
tZero
,tZero,tMix), /* "`+", */
+
tFunc
(
tOr(tVoid
,tZero
)
,tMix), /* "`-", */
tFuncV(tNone,tZero,tMix), /* "`&", */ tFuncV(tNone,tZero,tMix), /* "`|", */ tFuncV(tNone,tZero,tMix), /* "`^", */ tFuncV(tZero,tVoid,tMix), /* "`<<", */ tFuncV(tZero,tVoid,tMix), /* "`>>", */ tFuncV(tNone,tZero,tMix), /* "`*", */ tFuncV(tNone,tZero,tMix), /* "`/", */ tFuncV(tNone,tZero,tMix), /* "`%", */ tFuncV(tNone,tVoid,tMix), /* "`~", */ tFuncV(tMix,tVoid,tInt), /* "`==", */
pike.git/src/program.c:183:
tFuncV(tString,tVoid,tMix), /* "cast", */ tFuncV(tNone,tVoid,tInt), /* "`!", */ tFuncV(tZero,tVoid,tMix), /* "`[]", */ tFuncV(tZero tSetvar(0,tZero),tVoid,tVar(0)), /* "`[]=", */ tFuncV(tStr,tVoid,tMix), /* "`->", */ tFuncV(tStr tSetvar(0,tZero),tVoid,tVar(0)), /* "`->=", */ tFuncV(tNone,tVoid,tInt), /* "_sizeof", */ tFuncV(tNone,tVoid,tArray), /* "_indices", */ tFuncV(tNone,tVoid,tArray), /* "_values", */ tFuncV(tNone,tZero,tMix), /* "`()", */
-
tFuncV(
tNone
,tZero,tMix), /* "``+", */
-
tFuncV(
tNone,
tZero,tMix), /* "``-", */
+
tFuncV(
tZero
,tZero,tMix), /* "``+", */
+
tFuncV(tZero,
tVoid,
tMix), /* "``-", */
tFuncV(tNone,tZero,tMix), /* "``&", */ tFuncV(tNone,tZero,tMix), /* "``|", */ tFuncV(tNone,tZero,tMix), /* "``^", */ tFuncV(tZero,tVoid,tMix), /* "``<<", */ tFuncV(tZero,tVoid,tMix), /* "``>>", */ tFuncV(tNone,tZero,tMix), /* "``*", */ tFuncV(tNone,tZero,tMix), /* "``/", */ tFuncV(tNone,tZero,tMix), /* "``%", */
-
tFuncV(tZero,
tVoid
,tMix), /* "`+=", */
+
tFuncV(tZero,
tZero
,tMix), /* "`+=", */
tFuncV(tStr,tVoid,tInt), /* "_is_type", */ tFuncV(tInt tOr(tMap(tStr,tInt),tVoid),tVoid,tStr), /* "_sprintf", */ tFuncV(tMix,tVoid,tInt), /* "_equal", */ tFuncV(tZero,tVoid,tMix), /* "_m_delete", */ tFuncV(tNone,tVoid,tObj), /* "_get_iterator", */ /* NOTE: After this point there are only fake lfuns. */ tFuncV(tZero tOr(tZero, tVoid), tVoid, tMix), /* "_search", */ }; /*! @namespace lfun::
pike.git/src/program.c:333:
*! *! @note *! Note that it will also be called on implicit destruct, eg *! when there are no more references to the object, or when *! the garbage-collector decides to destruct the object. *! *! @seealso *! @[lfun::create()], @[predef::destruct()] */
-
/*! @decl mixed lfun::`+(zero ...
args
)
+
/*! @decl mixed lfun::`+(zero
arg, zero
...
rest
)
*! *! Left associative addition operator callback. *! *! @seealso *! @[lfun::``+()], @[lfun::`+=()], @[predef::`+()] */
-
/*! @decl this_program lfun::`+=(zero ...
args
)
+
/*! @decl this_program lfun::`+=(zero
arg, zero
...
rest
)
*! *! Left associative addition operator callback that destructively *! assigns the result of the addition to this object. It should *! always return this object. *! *! @note *! This function should only be implemented if @[lfun::`+()] also *! is. It should only work as a more optimized alternative to that *! one, for the case when it's safe to change the object *! destructively.
pike.git/src/program.c:364:
*! This function is not an lfun for the @expr{+=@} operator. It's *! only the safety to do a destructive change that decides whether *! this function or @[lfun::`+()] will be called; both the *! @expr{+@} operator and the @expr{+=@} operator can call either *! one. *! *! @seealso *! @[lfun::`+()], @[predef::`+()] */
-
/*! @decl mixed lfun::
`-
(zero ...
args
)
+
/*! @decl mixed lfun::
``+
(zero
arg, zero
...
rest
)
*! *! Left associative subtraction operator callback. *! *! @seealso *! @[lfun::``-()], @[predef::`-()] */ /*! @decl mixed lfun::`&(zero ... args) *! *! Left associative and operator callback.