pike.git / src / program.c

version» Context lines:

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.