a1c5881995-08-09Fredrik Hübinette (Hubbe) <?xml version='1.0' encoding='utf-8'?>
805c6f2018-12-18Henrik Grubbström (Grubba) <manual time-stamp='2018-12-18' version='Pike v7.5.7'>
a1c5881995-08-09Fredrik Hübinette (Hubbe)  <dir name='./ignored'> <file name='./ignored/ignored'> <chapter number='1' title='ignored'> <autodoc>
6736102002-12-20Henrik Grubbström (Grubba) <namespace name=''> <doc><text><p>Symbols implicitly inherited from the virtual base class.</p> <p> These symbols exist mainly to simplify implementation of the corresponding lfuns.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='lfun::'>lfun::</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Builtin function to list the identifiers of an object.
5bfef52003-04-01Martin Nilsson  This is useful when <ref resolved='lfun::_indices'>lfun::_indices</ref> has been overloaded.</p>
6736102002-12-20Henrik Grubbström (Grubba) </text><group><seealso/><text><p><ref resolved='::_values'>::_values, ::`-&gt;</ref></p> </text></group></doc> <method name='_indices'> <arguments/> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Builtin function to list the values of the identifiers of an
5bfef52003-04-01Martin Nilsson  object. This is useful when <ref resolved='lfun::_values'>lfun::_values</ref> has been overloaded.</p>
6736102002-12-20Henrik Grubbström (Grubba) </text><group><seealso/><text><p><ref resolved='::_indices'>::_indices, ::`-&gt;</ref></p> </text></group></doc> <method name='_values'> <arguments/> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-&gt;' homogen-type='method'>&gt;<doc><text><p>Builtin arrow operator.</p> <p> This function indexes the current object with the string <ref resolved='::`-&gt;.index'>&gt;index</ref>. This is useful when the arrow operator has been overloaded.</p> </text><group><seealso/><text><p><ref resolved='::`-&gt;='>&gt;::`-&gt;=()</ref></p> </text></group></doc> <method name='`-&gt;'>&gt; <arguments><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-&gt;=' homogen-type='method'>&gt;<doc><text><p>Builtin arrow set operator.</p> <p> This function indexes the current object with the string <ref resolved='::`-&gt;=.index'>&gt;index</ref>, and sets it to <ref resolved='::`-&gt;=.value'>&gt;value</ref>. This is useful when the arrow set operator has been overloaded.</p> </text><group><seealso/><text><p><ref resolved='::`-&gt;'>&gt;::`-&gt;()</ref></p> </text></group></doc> <method name='`-&gt;='>&gt; <arguments><argument name='index'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> </namespace>
8e38c42002-12-30Henrik Grubbström (Grubba) <namespace name='0.6'>
a407f52003-04-01Martin Nilsson <doc><text><p>Pike 0.6 compatibility.</p> <p> The symbols in this namespace will appear in programs that use <tt>#pike 0.6</tt> or lower.</p> </text><group><seealso/><text><p><ref resolved='7.0::'>7.0::</ref></p> </text></group></doc> <docgroup homogen-name='aggregate' homogen-type='method'><doc><text><p>More lax types than in later versions.</p> </text></doc> <method name='aggregate'> <arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><array><valuetype><mixed/></valuetype></array></returntype> </method> </docgroup>
8e38c42002-12-30Henrik Grubbström (Grubba) <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.0::'>7.0::</classname></import> </docgroup> <docgroup homogen-name='' homogen-type='inherit'> <inherit name=''><classname resolved='7.0::'>7.0::</classname></inherit> </docgroup>
a407f52003-04-01Martin Nilsson <module name='Array'> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.0::'>7.0::</classname></import> </docgroup> <docgroup homogen-name='Array' homogen-type='inherit'> <inherit name='Array'><classname resolved='predef::Array'>Array</classname></inherit> </docgroup> <docgroup homogen-name='map' homogen-type='method'><doc><text><p>Much simplified type compared to later versions of map.</p> </text></doc> <method name='map'> <arguments><argument name='x'><type><array/></type></argument><argument name='fun'><type><or><int/><string/><function/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><array/></returntype> </method> </docgroup> </module>
8e38c42002-12-30Henrik Grubbström (Grubba) </namespace>
6736102002-12-20Henrik Grubbström (Grubba) <namespace name='7.0'>
d32fa92002-12-21Henrik Grubbström (Grubba) <doc><text><p>Pike 7.0 compatibility.</p> <p> The symbols in this namespace will appear in programs that use <tt>#pike 7.0</tt> or lower.</p> </text><group><seealso/><text><p><ref resolved='7.2::'>7.2::</ref></p> </text></group></doc> <docgroup homogen-name='_typeof' homogen-type='method'><doc><text><p>Get the runtime type of a value (Pike 7.0 compatibility).</p> </text><group><returns/><text><p>Returns the type of <ref resolved='7.0::_typeof.x'>x</ref> as a string.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::_typeof'>predef::_typeof()</ref></p>
d32fa92002-12-21Henrik Grubbström (Grubba) </text></group></doc> <method name='_typeof'> <arguments><argument name='x'><type><mixed/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='file_stat' homogen-type='method'><doc><text><p>Stat a file (Pike 7.0 compatibility).</p> </text><group><returns/><text><p>Returns an array with the following content:</p>
4241d52002-12-23Henrik Grubbström (Grubba) <array><group><elem><type><int/></type><index>mode</index></elem><text><p>Access mode.</p> </text></group><group><elem><type><int/></type><index>size</index></elem><text><p>Size in bytes, or filetype indicator.</p> </text></group><group><elem><type><int/></type><index>atime</index></elem><text><p>Last access time.</p> </text></group><group><elem><type><int/></type><index>mtime</index></elem><text><p>Last modification time.</p> </text></group><group><elem><type><int/></type><index>ctime</index></elem><text><p>Last change time.</p> </text></group><group><elem><type><int/></type><index>uid</index></elem><text><p>User id.</p> </text></group><group><elem><type><int/></type><index>gid</index></elem><text><p>Group id.</p>
5bfef52003-04-01Martin Nilsson </text></group></array><p>See <ref resolved='predef::file_stat'>predef::file_stat()</ref> for a full description of the array.</p> </text></group><group><seealso/><text><p><ref resolved='predef::file_stat'>predef::file_stat()</ref></p>
d32fa92002-12-21Henrik Grubbström (Grubba) </text></group></doc> <method name='file_stat'> <arguments><argument name='path'><type><string/></type></argument><argument name='symlink'><type><or><void/><int/></or></type></argument></arguments> <returntype><array><valuetype><int/></valuetype></array></returntype> </method> </docgroup> <docgroup homogen-name='hash' homogen-type='method'><doc><text><p>Calculate a hash of a string (Pike 7.0 compatibility).</p>
5bfef52003-04-01Martin Nilsson <p> This function is now available as <ref resolved='predef::hash_7_0'>predef::hash_7_0()</ref>.</p> </text><group><seealso/><text><p><ref resolved='predef::hash_7_0'>predef::hash_7_0()</ref>, <ref resolved='predef::hash'>predef::hash()</ref></p>
d32fa92002-12-21Henrik Grubbström (Grubba) </text></group></doc> <method name='hash'> <arguments><argument name='s'><type><string/></type></argument><argument name='f'><type><or><int/><void/></or></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.1::</classname></import> </docgroup>
8e38c42002-12-30Henrik Grubbström (Grubba) <docgroup homogen-name='' homogen-type='inherit'> <inherit name=''><classname resolved='7.2::'>7.2::</classname></inherit> </docgroup>
d32fa92002-12-21Henrik Grubbström (Grubba) <docgroup homogen-name='m_delete' homogen-type='method'><doc><text><p>Delete an entry <ref resolved='7.0::m_delete.x'>x</ref> from a mapping <ref resolved='7.0::m_delete.m'>m</ref> (Pike 7.0 compatibility).</p> </text><group><returns/><text><p>Returns <ref resolved='7.0::m_delete.m'>m</ref>.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::m_delete'>predef::m_delete()</ref></p>
d32fa92002-12-21Henrik Grubbström (Grubba) </text></group></doc> <method name='m_delete'> <arguments><argument name='m'><type><mapping/></type></argument><argument name='x'><type><mixed/></type></argument></arguments> <returntype><mapping/></returntype> </method> </docgroup>
6736102002-12-20Henrik Grubbström (Grubba) <module name='Calendar'> <doc><text><p>This module implements calendar calculations, and base classes for time units. </p> <p> This module exists only for backward compatibility with Pike 7.0.</p> </text></doc> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.0::'>7.0::</classname></import> </docgroup> <module name='Gregorian'> <doc><text><p>time units: &lt;ref&gt;Year&lt;/ref&gt;, &lt;ref&gt;Month&lt;/ref&gt;, &lt;ref&gt;Week&lt;/ref&gt;, &lt;ref&gt;Day&lt;/ref&gt;</p> </text></doc>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='datetime' homogen-type='method'><doc><text><p>Replacement for <ref resolved='predef::localtime'>localtime()</ref>.</p>
6736102002-12-20Henrik Grubbström (Grubba) </text></doc> <method name='datetime'> <arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument><argument name='skip_extra'><type><or><int/><void/></or></type></argument></arguments> <returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='datetime_name' homogen-type='method'><doc><text><p>Replacement for <ref resolved='predef::ctime'>ctime()</ref>.</p>
6736102002-12-20Henrik Grubbström (Grubba) </text></doc> <method name='datetime_name'> <arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='datetime_short_name' homogen-type='method'><doc><text><p>Replacement for ctime.</p> </text></doc> <method name='datetime_short_name'> <arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.0::'>7.0::</classname></import> </docgroup> <docgroup homogen-name='parse' homogen-type='method'><doc><text><p>parse a date, create relevant object <ref resolved='7.0::Calendar.Gregorian.parse.fmt'>fmt</ref> is in the format "abc%xdef..." where abc and def is matched, and %x is one of those time units: %Y absolute year %y year (70-99 is 1970-1999, 0-69 is 2000-2069) %M month (number, name or short name) (needs %y) %W week (needs %y) %D date (needs %y, %m) %a day (needs %y) %e weekday (needs %y, %w) %h hour (needs %d, %D or %W) %m minute (needs %h) %s second (needs %s)</p> </text></doc> <method name='parse'> <arguments><argument name='fmt'><type><string/></type></argument><argument name='arg'><type><string/></type></argument></arguments> <returntype><object resolved='7.0::Calendar.Gregorian.parse'/></returntype> </method> </docgroup> <class name='Year'> <doc><text><p>A <ref>Calendar.time_unit</ref>. </p> <p> Lesser units: &lt;ref&gt;Month&lt;/ref&gt;, &lt;ref&gt;Week&lt;/ref&gt;, &lt;ref&gt;Day&lt;/ref&gt; Greater units: none</p> </text></doc> <docgroup homogen-name='_TimeUnit' homogen-type='inherit'> <inherit name='_TimeUnit'><classname resolved='7.0::Calendar._TimeUnit'>_TimeUnit</classname></inherit> </docgroup> </class> </module> <module name='Stardate'> <doc><text><p>time unit: TNGDate</p> </text></doc> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.0::'>7.0::</classname></import> </docgroup> <class name='TNGDate'> <doc><text><p>Implements ST:TNG stardates. Can be used as create argument to Day.</p> </text></doc> <docgroup homogen-name='_TimeUnit' homogen-type='inherit'> <inherit name='_TimeUnit'><classname resolved='7.0::Calendar._TimeUnit'>Calendar._TimeUnit</classname></inherit> </docgroup> </class> </module> <class name='_TimeUnit'> <doc><text><p>class time_unit</p> </text></doc> <docgroup homogen-type='method'><doc><text><p><ref resolved='7.0::Calendar._TimeUnit.next'>next()</ref> and <ref resolved='7.0::Calendar._TimeUnit.prev'>prev()</ref> give the logical next and previous object. The <ref resolved='7.0::Calendar._TimeUnit.`+'>`+()</ref> operator gives that logical relative object, ie <expr>my_day+14</expr> gives 14 days ahead. <ref resolved='7.0::Calendar._TimeUnit.`-'>`-()</ref> works the same way, but can also take an object of the same type and give the difference as an integer.</p> </text></doc> <method name='next'> <arguments/> <returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype> </method> <method name='prev'> <arguments/> <returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype> </method> <method name='`+'> <arguments><argument name='n'><type><int/></type></argument></arguments> <returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype> </method> <method name='`-'> <arguments><argument name='n'><type><int/></type></argument></arguments> <returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype> </method> <method name='`-'> <arguments><argument name='x'><type><object resolved='7.0::Calendar._TimeUnit.next'/></type></argument></arguments> <returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype> </method> </docgroup> <docgroup homogen-name='greater' homogen-type='method'><doc><text><p>Gives a list of methods to get greater (longer) time units
716caf2003-04-01Martin Nilsson  from this object. For a month, this gives back <expr>({"year"})</expr>, thus the method <expr>month-&gt;year()</expr> gives the year object.</p>
6736102002-12-20Henrik Grubbström (Grubba) </text></doc> <method name='greater'> <arguments/> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> </docgroup> <docgroup homogen-name='lesser' homogen-type='method'><doc><text><p>Gives a list of methods to get lesser (shorter) time units.
716caf2003-04-01Martin Nilsson  ie, for a month, this gives back <expr>({"day"})</expr> and the method <expr>day(mixed n)</expr> gives back that day object. The method <expr>days()</expr> gives back a list of possible argument values to the method <expr>day</expr>.
6736102002-12-20Henrik Grubbström (Grubba)  Concurrently, <expr>Array.map(o-&gt;days(),o-&gt;day)</expr> gives
716caf2003-04-01Martin Nilsson  a list of day objects in the object <expr>o</expr>.</p>
6736102002-12-20Henrik Grubbström (Grubba) <p> Ie: <pre> array(string) lesser() - gives back a list of possible xxx's. object xxxs() - gives back a list of possible n's. object xxx(mixed n) - gives back xxx n object xxx(object(Xxx) o) - gives back the corresponing xxx </pre></p> <p> The list of n's (as returned from xxxs) are always in order.</p> <p> There are two n's with special meaning, 0 and -1. 0 always gives the first xxx, equal to my_obj-&gt;xxx(my_obj-&gt;xxxs()[0]), and -1 gives the last, equal to my_obj-&gt;xxx(my_obj-&gt;xxxs()[-1]).</p> <p> To get all xxxs in the object, do something like <expr>Array.map(my_obj-&gt;xxxs(),my_obj-&gt;xxx)</expr>.</p> <p> xxx(object) may return zero, if there was no correspondning xxx.</p> </text></doc> <method name='lesser'> <arguments/> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> </docgroup> </class> </module> </namespace> <namespace name='7.2'>
9e3d762002-12-21Henrik Grubbström (Grubba) <doc><text><p>Pike 7.2 compatibility.</p> <p> The symbols in this namespace will appear in
5bfef52003-04-01Martin Nilsson  programs that use <expr>#pike 7.2</expr> or lower.</p>
6736102002-12-20Henrik Grubbström (Grubba) </text></doc> <docgroup homogen-name='clone' homogen-type='method'><doc><text><p>Alternate name for the function <ref resolved='7.2::new'>new()</ref> (Pike 7.2 compatibility).</p> <p> This function was removed in Pike 7.3, use <expr>((program)<ref resolved='7.2::clone.prog'>prog</ref>)(@<ref resolved='7.2::clone.args'>args</ref>)</expr> instead.</p>
5bfef52003-04-01Martin Nilsson </text><group><deprecated/></group><group><seealso/><text><p><ref resolved='predef::destruct'>destruct()</ref>, <ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref>, <ref resolved='7.2::new'>new()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='clone'> <arguments><argument name='prog'><type><or><string/><program/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><object resolved='7.2::clone'/></returntype> </method> </docgroup> <docgroup homogen-name='default_yp_domain' homogen-type='method'><doc><text><p>Get the default YP domain (Pike 7.2 compatibility). This function was removed in Pike 7.3, use
eedb302002-12-30Martin Nilsson  <ref resolved='predef::Yp.default_domain'>Yp.default_domain()</ref> instead.</p> </text><group><deprecated><name><ref resolved='predef::Yp.default_domain'>Yp.default_domain</ref></name></deprecated></group><group><seealso/><text><p><ref>YP.default_domain()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='default_yp_domain'> <arguments/> <returntype><string/></returntype> </method> </docgroup>
9e3d762002-12-21Henrik Grubbström (Grubba) <docgroup homogen-name='dirname' homogen-type='method'><doc><text><p>Remove the last segment from <ref resolved='7.2::dirname.path'>path</ref>.</p> <p> This implementation differs from <ref resolved='predef::dirname'>predef::dirname()</ref>
5bfef52003-04-01Martin Nilsson  in that it will return <expr>""</expr> for the input <expr>"/"</expr>
9e3d762002-12-21Henrik Grubbström (Grubba)  while <ref resolved='predef::dirname'>predef::dirname()</ref> will return <ref>"/"</ref>.</p> </text><group><seealso/><text><p><ref resolved='predef::dirname'>predef::dirname()</ref></p> </text></group></doc> <method name='dirname'> <arguments><argument name='path'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
6736102002-12-20Henrik Grubbström (Grubba) <docgroup homogen-name='' homogen-type='import'>
eedb302002-12-30Martin Nilsson <import name=''><classname resolved='7.4::'>7.3::</classname></import>
6736102002-12-20Henrik Grubbström (Grubba) </docgroup>
8e38c42002-12-30Henrik Grubbström (Grubba) <docgroup homogen-name='' homogen-type='inherit'>
eedb302002-12-30Martin Nilsson <inherit name=''><classname resolved='7.4::'>7.4::</classname></inherit>
8e38c42002-12-30Henrik Grubbström (Grubba) </docgroup>
6736102002-12-20Henrik Grubbström (Grubba) <docgroup homogen-name='new' homogen-type='method'><doc><text><p>Instantiate a program (Pike 7.2 compatibility).</p> <p> A new instance of the class <ref resolved='7.2::new.prog'>prog</ref> will be created. All global variables in the new object be initialized, and
5bfef52003-04-01Martin Nilsson  then <ref resolved='lfun::create'>lfun::create()</ref> will be called with <ref resolved='7.2::new.args'>args</ref> as arguments.</p>
6736102002-12-20Henrik Grubbström (Grubba) <p> This function was removed in Pike 7.3, use <expr>((program)<ref resolved='7.2::new.prog'>prog</ref>)(@<ref resolved='7.2::new.args'>args</ref>)</expr> instead.</p>
5bfef52003-04-01Martin Nilsson </text><group><deprecated/></group><group><seealso/><text><p><ref resolved='predef::destruct'>destruct()</ref>, <ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref>, <ref resolved='7.2::clone'>clone()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='new'> <arguments><argument name='prog'><type><or><string/><program/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><object resolved='7.2::new'/></returntype> </method> </docgroup> <docgroup homogen-name='sleep' homogen-type='method'><doc><text><p>High-resolution sleep (Pike 7.2 compatibility).</p>
5bfef52003-04-01Martin Nilsson <p> Sleep <ref resolved='7.2::sleep.t'>t</ref> seconds. This function was renamed to <ref resolved='predef::delay'>delay()</ref>
6736102002-12-20Henrik Grubbström (Grubba)  in Pike 7.3.</p> </text><group><note/><text><p>This function will busy-wait if the sleep-interval is short.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><deprecated><name><ref resolved='predef::delay'>delay</ref></name></deprecated></group><group><seealso/><text><p><ref resolved='predef::sleep'>predef::sleep()</ref>, <ref resolved='predef::delay'>delay()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='sleep'> <arguments><argument name='t'><type><or><float/><int/></or></type></argument><argument name='abort'><type><or><void/><int/></or></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <module name='LR'> <module name='Grammar_parser'> <doc><text><p>This module generates an LR parser from a grammar specified according to the following grammar:</p> <p> <pre> directives : directive ; directives : directives directive ; directive : declaration ; directive : rule ; declaration : "%token" terminals ";" ; rule : nonterminal ":" symbols ";" ; rule : nonterminal ":" symbols action ";" ; symbols : symbol ; symbols : symbols symbol ; terminals : terminal ; terminals : terminals terminal ; symbol : nonterminal ; symbol : "string" ; action : "{" "identifier" "}" ; nonterminal : "identifier" ; terminal : "string"; </pre></p> </text></doc> <docgroup homogen-name='error' homogen-type='variable'><doc><text><p>Error code from the parsing.</p> </text></doc> <variable name='error'><type><int/></type></variable> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.2::</classname></import> </docgroup> <docgroup homogen-name='LR' homogen-type='import'> <import name='LR'><classname resolved='7.2::LR'>LR</classname></import> </docgroup> <docgroup homogen-name='make_parser' homogen-type='method'><doc><text><p>Compiles the parser-specification given in the first argument. Named actions are taken from the object if available, otherwise left as is.</p> </text><group><bugs/><text><p>Returns error-code in both Grammar_parser.error and return_value-&gt;error.</p> </text></group></doc> <method name='make_parser'> <arguments><argument name='str'><type><string/></type></argument><argument name='m'><type><or><object resolved='7.2::LR.Grammar_parser.make_parser'/><void/></or></type></argument></arguments> <returntype><object resolved='7.2::LR.parser'>parser</object></returntype> </method> </docgroup> <docgroup homogen-name='make_parser_from_file' homogen-type='method'><doc><text><p>Compiles the file specified in the first argument into an LR parser.</p> </text><group><seealso/><text><p><ref resolved='7.2::LR.Grammar_parser.make_parser'>make_parser</ref></p> </text></group></doc> <method name='make_parser_from_file'> <arguments><argument name='fname'><type><string/></type></argument><argument name='m'><type><or><object resolved='7.2::LR.Grammar_parser.make_parser_from_file'/><void/></or></type></argument></arguments> <returntype><or><int/><object resolved='7.2::LR.parser'>parser</object></or></returntype> </method> </docgroup> </module> <class name='item'> <doc><text><p>An LR(0) item, a partially parsed rule.</p> </text></doc> <docgroup homogen-name='counter' homogen-type='variable'><doc><text><p>Depth counter (used when compiling).</p> </text></doc> <variable name='counter'><type><int/></type></variable> </docgroup> <docgroup homogen-name='direct_lookahead' homogen-type='variable'><doc><text><p>Look-ahead set for this item.</p> </text></doc> <variable name='direct_lookahead'><type><multiset><indextype><string/></indextype></multiset></type></variable> </docgroup> <docgroup homogen-name='error_lookahead' homogen-type='variable'><doc><text><p>Look-ahead set used for detecting conflicts</p> </text></doc> <variable name='error_lookahead'><type><multiset><indextype><string/></indextype></multiset></type></variable> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.2::</classname></import> </docgroup> <docgroup homogen-name='LR' homogen-type='import'> <import name='LR'><classname resolved='7.2::LR'>LR</classname></import> </docgroup> <docgroup homogen-name='item_id' homogen-type='variable'><doc><text><p>Used to identify the item. Equal to r-&gt;number + offset.</p> </text></doc> <variable name='item_id'><type><int/></type></variable> </docgroup> <docgroup homogen-name='master_item' homogen-type='variable'><doc><text><p>Item representing this one (used for shifts).</p> </text></doc> <variable name='master_item'><type><object resolved='7.2::LR.item'/></type></variable> </docgroup> <docgroup homogen-name='next_state' homogen-type='variable'><doc><text><p>The state we will get if we shift according to this rule</p> </text></doc> <variable name='next_state'><type><object resolved='7.2::LR.item'/></type></variable> </docgroup> <docgroup homogen-name='number' homogen-type='variable'><doc><text><p>Item identification number (used when compiling).</p> </text></doc> <variable name='number'><type><int/></type></variable> </docgroup> <docgroup homogen-name='offset' homogen-type='variable'><doc><text><p>How long into the rule the parsing has come.</p> </text></doc> <variable name='offset'><type><int/></type></variable> </docgroup> <docgroup homogen-name='r' homogen-type='variable'><doc><text><p>The rule</p> </text></doc> <variable name='r'><type><object resolved='7.2::LR.rule'>rule</object></type></variable> </docgroup> <docgroup homogen-name='relation' homogen-type='variable'><doc><text><p>Relation to other items (used when compiling).</p> </text></doc> <variable name='relation'><type><multiset><indextype><object resolved='7.2::LR.item'/></indextype></multiset></type></variable> </docgroup> </class> <class name='parser'> <doc><text><p>This object implements an LALR(1) parser and compiler.</p> <p> Normal use of this object would be:</p> <p> <pre> {add_rule, set_priority, set_associativity}* set_symbol_to_string compile {parse}* </pre></p> </text></doc> <docgroup homogen-name='add_rule' homogen-type='method'><doc><text><p>Add a rule to the grammar.</p> </text><group><param name='r'/><text><p>Rule to add.</p> </text></group></doc> <method name='add_rule'> <arguments><argument name='r'><type><object resolved='7.2::LR.rule'>rule</object></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Implements casting.</p> </text><group><param name='type'/><text><p>Type to cast to.</p> </text></group></doc> <method name='cast'> <arguments><argument name='type'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='cast_to_string' homogen-type='method'><doc><text><p>Pretty-prints the current grammar to a string.</p> </text></doc> <method name='cast_to_string'> <arguments/> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='compile' homogen-type='method'><doc><text><p>Compiles the grammar into a parser, so that parse() can be called.</p> </text></doc> <method name='compile'> <arguments/> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='error' homogen-type='variable'><doc><text><p>Error code</p> </text></doc> <variable name='error'><type><int/></type></variable> </docgroup> <docgroup homogen-name='grammar' homogen-type='variable'><doc><text><p>The grammar itself.</p> </text></doc> <variable name='grammar'><type><mapping><indextype><or><int/><string/></or></indextype><valuetype><array><valuetype><object resolved='7.2::LR.rule'>rule</object></valuetype></array></valuetype></mapping></type></variable> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.2::</classname></import> </docgroup> <docgroup homogen-name='Array' homogen-type='import'>
eedb302002-12-30Martin Nilsson <import name='Array'><classname resolved='predef::Array'>Array</classname></import>
6736102002-12-20Henrik Grubbström (Grubba) </docgroup> <docgroup homogen-name='LR' homogen-type='import'> <import name='LR'><classname resolved='7.2::LR'>LR</classname></import> </docgroup> <docgroup homogen-name='item_to_string' homogen-type='method'><doc><text><p>Pretty-prints an item to a string.</p> </text><group><param name='i'/><text><p>Item to pretty-print.</p> </text></group></doc> <method name='item_to_string'> <arguments><argument name='i'><type><object resolved='7.2::LR.item'>item</object></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='known_states' homogen-type='variable'><doc><text><p>LR0 states that are already known to the compiler.</p> </text></doc> <variable name='known_states'><type><mapping><indextype><string/></indextype><valuetype><object resolved='7.2::LR.parser.kernel'>kernel</object></valuetype></mapping></type></variable> </docgroup> <docgroup homogen-name='parse' homogen-type='method'><doc><text><p>Parse the input according to the compiled grammar. The last value reduced is returned.</p> </text><group><note/><text><p>The parser must have been compiled (with compile()) prior to calling this function.</p> </text></group><group><bugs/><text><p>Errors should be throw()n.</p> </text></group><group><param name='scanner'/><text><p>The scanner function. It returns the next symbol from the input. It should either return a string (terminal) or an array with a string (terminal) and a mixed (value). EOF is indicated with the empty string.</p> </text></group><group><param name='action_object'/><text><p>Object used to resolve those actions that have been specified as strings.</p> </text></group></doc> <method name='parse'> <arguments><argument name='scanner'><type><or><object resolved='7.2::LR.parser.parse'/><function><argtype><void/></argtype><returntype><or><string/><array><valuetype><or><string/><mixed/></or></valuetype></array></or></returntype></function></or></type></argument><argument name='action_object'><type><or><void/><object resolved='7.2::LR.parser.parse'/></or></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='rule_to_string' homogen-type='method'><doc><text><p>Pretty-prints a rule to a string.</p> </text><group><param name='r'/><text><p>Rule to print.</p> </text></group></doc> <method name='rule_to_string'> <arguments><argument name='r'><type><object resolved='7.2::LR.rule'>rule</object></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='s_q' homogen-type='variable'><doc><text><p>Contains all states used. In the queue-part are the states that remain to be compiled.</p> </text></doc> <variable name='s_q'><type><object resolved='7.2::LR.parser.state_queue'>state_queue</object></type></variable> </docgroup> <docgroup homogen-name='set_associativity' homogen-type='method'><doc><text><p>Sets the associativity of a terminal.</p> </text><group><param name='terminal'/><text><p>Terminal to set the associativity for.</p> </text></group><group><param name='assoc'/><text><p>Associativity; negative - left, positive - right, zero - no associativity.</p> </text></group></doc> <method name='set_associativity'> <arguments><argument name='terminal'><type><string/></type></argument><argument name='assoc'><type><int/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='set_priority' homogen-type='method'><doc><text><p>Sets the priority of a terminal.</p> </text><group><param name='terminal'/><text><p>Terminal to set the priority for.</p> </text></group><group><param name='pri_val'/><text><p>Priority; higher = prefer this terminal.</p> </text></group></doc> <method name='set_priority'> <arguments><argument name='terminal'><type><string/></type></argument><argument name='pri_val'><type><int/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='set_symbol_to_string' homogen-type='method'><doc><text><p>Sets the symbol to string conversion function. The conversion function is used by the various *_to_string functions to make comprehensible output.</p> </text><group><param name='s_to_s'/><text><p>Symbol to string conversion function. If zero or not specified, use the built-in function.</p> </text></group></doc> <method name='set_symbol_to_string'> <arguments><argument name='s_to_s'><type><or><void/><function><argtype><or><int/><string/></or></argtype><returntype><string/></returntype></function></or></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='start_state' homogen-type='variable'><doc><text><p>The initial LR0 state.</p> </text></doc> <variable name='start_state'><type><object resolved='7.2::LR.parser.kernel'>kernel</object></type></variable> </docgroup> <docgroup homogen-name='state_to_string' homogen-type='method'><doc><text><p>Pretty-prints a state to a string.</p> </text><group><param name='state'/><text><p>State to pretty-print.</p> </text></group></doc> <method name='state_to_string'> <arguments><argument name='state'><type><object resolved='7.2::LR.parser.kernel'>kernel</object></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='verbose' homogen-type='variable'><doc><text><p>Verbosity level</p> <int><group><value>0</value><text><p>None</p> </text></group><group><value>1</value><text><p>Some</p> </text></group></int> </text></doc> <variable name='verbose'><type><int/></type></variable> </docgroup> <class name='kernel'> <doc><text><p>Implements an LR(1) state</p> </text></doc> <docgroup homogen-name='action' homogen-type='variable'><doc><text><p>The action table for this state</p> <p> <pre> object(kernel) SHIFT to this state on this symbol. object(rule) REDUCE according to this rule on this symbol. </pre></p> </text></doc> <variable name='action'><type><mapping><indextype><or><int/><string/></or></indextype><valuetype><or><object resolved='7.2::LR.parser.kernel'>kernel</object><object resolved='7.2::LR.rule'>rule</object></or></valuetype></mapping></type></variable> </docgroup> <docgroup homogen-name='add_item' homogen-type='method'><doc><text><p>Add an item to the state.</p> </text></doc> <method name='add_item'> <arguments><argument name='i'><type><object resolved='7.2::LR.item'>item</object></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='closure' homogen-type='method'><doc><text><p>Make the closure of this state.</p> </text><group><param name='nonterminal'/><text><p>Nonterminal to make the closure on.</p> </text></group></doc> <method name='closure'> <arguments><argument name='nonterminal'><type><int/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='closure_set' homogen-type='variable'><doc><text><p>The symbols that closure has been called on.</p> </text></doc> <variable name='closure_set'><type><multiset/></type></variable> </docgroup> <docgroup homogen-name='do_goto' homogen-type='method'><doc><text><p>Generates the state reached when doing goto on the specified symbol. i.e. it compiles the LR(0) state.</p> </text><group><param name='symbol'/><text><p>Symbol to make goto on.</p> </text></group></doc> <method name='do_goto'> <arguments><argument name='symbol'><type><or><int/><string/></or></type></argument></arguments> <returntype><object resolved='7.2::LR.parser.kernel'>kernel</object></returntype> </method> </docgroup> <docgroup homogen-name='goto_set' homogen-type='method'><doc><text><p>Make the goto-set of this state.</p> </text></doc> <method name='goto_set'> <arguments/> <returntype><multiset><indextype><or><int/><string/></or></indextype></multiset></returntype> </method> </docgroup> <docgroup homogen-name='item_id_to_item' homogen-type='variable'><doc><text><p>Used to lookup items given rule and offset</p> </text></doc> <variable name='item_id_to_item'><type><mapping><indextype><int/></indextype><valuetype><object resolved='7.2::LR.item'>item</object></valuetype></mapping></type></variable> </docgroup> <docgroup homogen-name='items' homogen-type='variable'><doc><text><p>Contains the items in this state.</p> </text></doc> <variable name='items'><type><array><valuetype><object resolved='7.2::LR.item'>item</object></valuetype></array></type></variable> </docgroup> <docgroup homogen-name='rules' homogen-type='variable'><doc><text><p>Used to check if a rule already has been added when doing closures.</p> </text></doc> <variable name='rules'><type><multiset><indextype><object resolved='7.2::LR.rule'>rule</object></indextype></multiset></type></variable> </docgroup> <docgroup homogen-name='symbol_items' homogen-type='variable'><doc><text><p>Contains the items whose next symbol is this non-terminal.</p> </text></doc> <variable name='symbol_items'><type><mapping><indextype><int/></indextype><valuetype><multiset><indextype><object resolved='7.2::LR.item'>item</object></indextype></multiset></valuetype></mapping></type></variable> </docgroup> </class> <class name='state_queue'> <doc><text><p>This is a queue, which keeps the elements even after they are retrieved.</p> </text></doc> <docgroup homogen-name='arr' homogen-type='variable'><doc><text><p>The queue itself.</p> </text></doc> <variable name='arr'><type><array><valuetype><object resolved='7.2::LR.parser.kernel'>kernel</object></valuetype></array></type></variable> </docgroup> <docgroup homogen-name='head' homogen-type='variable'><doc><text><p>Index of the head of the queue.</p> </text></doc> <variable name='head'><type><int/></type></variable> </docgroup> <docgroup homogen-name='next' homogen-type='method'><doc><text><p>Return the next state from the queue.</p> </text></doc> <method name='next'> <arguments/> <returntype><or><int/><object resolved='7.2::LR.parser.kernel'>kernel</object></or></returntype> </method> </docgroup> <docgroup homogen-name='push' homogen-type='method'><doc><text><p>Pushes the state on the queue.</p> </text><group><param name='state'/><text><p>State to push.</p> </text></group></doc> <method name='push'> <arguments><argument name='state'><type><object resolved='7.2::LR.parser.kernel'>kernel</object></type></argument></arguments> <returntype><object resolved='7.2::LR.parser.kernel'>kernel</object></returntype> </method> </docgroup> <docgroup homogen-name='tail' homogen-type='variable'><doc><text><p>Index of the tail of the queue.</p> </text></doc> <variable name='tail'><type><int/></type></variable> </docgroup> </class> </class> <class name='priority'> <doc><text><p>Specifies the priority and associativity of a rule.</p> </text></doc> <docgroup homogen-name='assoc' homogen-type='variable'><doc><text><p>Associativity</p> <int><group><value>-1</value><text><p>Left</p> </text></group><group><value>0</value><text><p>None</p> </text></group><group><value>1</value><text><p>Right</p> </text></group></int> </text></doc> <variable name='assoc'><type><int/></type></variable> </docgroup> <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new priority object.</p> </text><group><param name='p'/><text><p>Priority.</p> </text></group><group><param name='a'/><text><p>Associativity.</p> </text></group></doc> <method name='create'> <arguments><argument name='p'><type><int/></type></argument><argument name='a'><type><int/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.2::</classname></import> </docgroup> <docgroup homogen-name='value' homogen-type='variable'><doc><text><p>Priority value</p> </text></doc> <variable name='value'><type><int/></type></variable> </docgroup> </class> <class name='rule'> <doc><text><p>This object is used to represent a BNF-rule in the LR parser.</p> </text></doc> <docgroup homogen-name='action' homogen-type='variable'><doc><text><p>Action to do when reducing this rule. function - call this function. string - call this function by name in the object given to the parser. The function is called with arguments corresponding to the values of the elements of the rule. The return value of the function will be the value of this non-terminal. The default rule is to return the first argument.</p> </text></doc> <variable name='action'><type><or><function/><string/></or></type></variable> </docgroup> <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a BNF rule.</p> </text><group><example/><text><p>The rule</p> <p> rule : nonterminal ":" symbols ";" { add_rule };</p> <p> might be created as</p> <p> rule(4, ({ 9, ";", 5, ";" }), "add_rule");</p> <p> where 4 corresponds to the nonterminal "rule", 9 to "nonterminal" and 5 to "symbols", and the function "add_rule" is too be called when this rule is reduced.</p> </text></group><group><param name='nt'/><text><p>Non-terminal to reduce to.</p> </text></group><group><param name='r'/><text><p>Symbol sequence that reduces to nt.</p> </text></group><group><param name='a'/><text><p>Action to do when reducing according to this rule. function - Call this function. string - Call this function by name in the object given to the parser. The function is called with arguments corresponding to the values of the elements of the rule. The return value of the function will become the value of this non-terminal. The default rule is to return the first argument.</p> </text></group></doc> <method name='create'> <arguments><argument name='nt'><type><int/></type></argument><argument name='r'><type><array><valuetype><or><string/><int/></or></valuetype></array></type></argument><argument name='a'><type><or><function/><string/><void/></or></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='has_tokens' homogen-type='variable'><doc><text><p>This rule contains tokens</p> </text></doc> <variable name='has_tokens'><type><int/></type></variable> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.2::</classname></import> </docgroup> <docgroup homogen-name='nonterminal' homogen-type='variable'><doc><text><p>Non-terminal this rule reduces to.</p> </text></doc> <variable name='nonterminal'><type><int/></type></variable> </docgroup> <docgroup homogen-name='num_nonnullables' homogen-type='variable'><doc><text><p>This rule has this many non-nullable symbols at the moment.</p> </text></doc> <variable name='num_nonnullables'><type><int/></type></variable> </docgroup> <docgroup homogen-name='number' homogen-type='variable'><doc><text><p>Sequence number of this rule (used for conflict resolving) Also used to identify the rule.</p> </text></doc> <variable name='number'><type><int/></type></variable> </docgroup> <docgroup homogen-name='pri' homogen-type='variable'><doc><text><p>Priority and associativity of this rule.</p> </text></doc> <variable name='pri'><type><object resolved='7.2::LR.rule'/></type></variable> </docgroup> <docgroup homogen-name='symbols' homogen-type='variable'><doc><text><p>The actual rule</p> </text></doc> <variable name='symbols'><type><array><valuetype><or><string/><int/></or></valuetype></array></type></variable> </docgroup> </class> </module> <module name='String'> <docgroup homogen-name='capitalize' homogen-type='method'><doc><text><p>Convert the first character in <ref resolved='7.2::String.capitalize.str'>str</ref> to upper case, and return the new string.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::lower_case'>lower_case()</ref>, <ref resolved='predef::upper_case'>upper_case()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='capitalize'> <arguments><argument name='str'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='common_prefix' homogen-type='method'><doc><text><p>Find the longest common prefix from an array of strings.</p> </text></doc> <method name='common_prefix'> <arguments><argument name='strs'><type><array><valuetype><string/></valuetype></array></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='count' homogen-type='method'><doc><text><p>This function counts the number of times the <ref resolved='7.2::String.count.needle'>needle</ref> can be found in <ref resolved='7.2::String.count.haystack'>haystack</ref>.</p> </text><group><note/><text><p>Intersections between needles are not counted, ie <tt>count("....","..")</tt> is <tt>2</tt>.</p> </text></group></doc> <method name='count'> <arguments><argument name='haystack'><type><string/></type></argument><argument name='needle'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='fuzzymatch' homogen-type='method'><doc><text><p>This function compares two strings using a fuzzy matching routine. The higher the resulting value, the better the strings match.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::Array.diff'>Array.diff()</ref>, <ref resolved='predef::Array.diff_compare_table'>Array.diff_compare_table()</ref> <ref resolved='predef::Array.diff_longest_sequence'>Array.diff_longest_sequence()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='fuzzymatch'> <arguments><argument name='a'><type><string/></type></argument><argument name='b'><type><string/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='implode_nicely' homogen-type='method'><doc><text><p>This function implodes a list of words to a readable string. If the separator is omitted, the default is &lt;tt&gt;"and"&lt;/tt&gt;. If the words are numbers they are converted to strings first.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::`*'>`*()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='implode_nicely'> <arguments><argument name='foo'><type><array><valuetype><or><string/><int/><float/></or></valuetype></array></type></argument><argument name='separator'><type><or><string/><void/></or></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='7.2::'>7.2::</classname></import> </docgroup> <docgroup homogen-name='sillycaps' homogen-type='method'><doc><text><p>Convert the first character in each word (separated by spaces) in <ref resolved='7.2::String.sillycaps.str'>str</ref> to upper case, and return the new string.</p> </text></doc> <method name='sillycaps'> <arguments><argument name='str'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='strmult' homogen-type='method'><doc><text><p>This function multiplies <ref resolved='7.2::String.strmult.str'>str</ref> by <ref resolved='7.2::String.strmult.num'>num</ref>. The return value is the same as appending <ref resolved='7.2::String.strmult.str'>str</ref> to an empty string <ref resolved='7.2::String.strmult.num'>num</ref> times.</p> </text><group><note/><text><p>This function is obsolete, since this functionality has been incorporated
5bfef52003-04-01Martin Nilsson  into <ref resolved='predef::`*'>`*()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`*'>`*()</ref></p>
6736102002-12-20Henrik Grubbström (Grubba) </text></group></doc> <method name='strmult'> <arguments><argument name='str'><type><string/></type></argument><argument name='num'><type><int/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='trim_all_whites' homogen-type='method'><doc><text><p>Trim leading and trailing white spaces characters (<tt>" \t\r\n"</tt>) from the string <ref resolved='7.2::String.trim_all_whites.s'>s</ref>.</p> </text></doc> <method name='trim_all_whites'> <arguments><argument name='s'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='trim_whites' homogen-type='method'><doc><text><p>Trim leading and trailing spaces and tabs from the string <ref resolved='7.2::String.trim_whites.s'>s</ref>.</p> </text></doc> <method name='trim_whites'> <arguments><argument name='s'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='width' homogen-type='method'><doc><text><p>Returns the width in bits (8, 16 or 32) of the widest character in <ref resolved='7.2::String.width.s'>s</ref>.</p> </text></doc> <method name='width'> <arguments><argument name='s'><type><string/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <class name='String_buffer'> <doc><text><p>A helper class to optimize iterative string build-up for speed. Can help up performance noticably when dealing with buildup of huge strings by reducing the time needed for rehashing the string every time it grows.</p>
5bfef52003-04-01Martin Nilsson </text><group><deprecated><name><ref resolved='predef::String.Buffer'>String.Buffer</ref></name></deprecated></group></doc>
6736102002-12-20Henrik Grubbström (Grubba) <docgroup homogen-name='append' homogen-type='method'><doc><text><p>Append the string <ref resolved='7.2::String.String_buffer.append.s'>s</ref> to the buffer.</p> </text></doc> <method name='append'> <arguments><argument name='s'><type><string/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='cast' homogen-type='method'> <method name='cast'> <arguments><argument name='to'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='flush' homogen-type='method'><doc><text><p>Clear the buffer.</p> </text></doc> <method name='flush'> <arguments/> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='get_buffer' homogen-type='method'><doc><text><p>Get the contents of the buffer.</p> </text></doc> <method name='get_buffer'> <arguments/> <returntype><string/></returntype> </method> </docgroup> </class> </module> </namespace>
eedb302002-12-30Martin Nilsson <namespace name='7.4'> <doc><text><p>Pike 7.4 compatibility.</p> <p> The symbols in this namespace will appear in programs that use <tt>#pike 7.4</tt> or lower.</p> </text></doc> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname>7.5::</classname></import> </docgroup> <docgroup homogen-name='' homogen-type='inherit'> <inherit name=''><classname resolved='predef::'>predef::</classname></inherit> </docgroup>
7ea0812003-01-13Martin Nilsson <docgroup homogen-name='rusage' homogen-type='method'><doc><text><p>Return resource usage. An error is thrown if it isn't supported or if the system fails to return any information.</p> </text><group><returns/><text><p>Returns an array of ints describing how much resources the interpreter process has used so far. This array will have at least 29 elements, of which those values not available on this system will be zero.</p> <p> The elements are as follows:</p> <array><group><elem><type><int/></type><index>user_time</index></elem><text><p>Time in milliseconds spent in user code.</p> </text></group><group><elem><type><int/></type><index>system_time</index></elem><text><p>Time in milliseconds spent in system calls.</p> </text></group><group><elem><type><int/></type><index>maxrss</index></elem><text><p>Maximum used resident size in kilobytes.</p> </text></group><group><elem><type><int/></type><index>ixrss</index></elem><text><p>Quote from GNU libc: An integral value expressed in kilobytes times ticks of execution, which indicates the amount of memory used by text that was shared with other processes.</p> </text></group><group><elem><type><int/></type><index>idrss</index></elem><text><p>Quote from GNU libc: An integral value expressed the same way, which is the amount of unshared memory used for data.</p> </text></group><group><elem><type><int/></type><index>isrss</index></elem><text><p>Quote from GNU libc: An integral value expressed the same way, which is the amount of unshared memory used for stack space.</p> </text></group><group><elem><type><int/></type><index>minor_page_faults</index></elem><text><p>Minor page faults, i.e. TLB misses which required no disk I/O.</p> </text></group><group><elem><type><int/></type><index>major_page_faults</index></elem><text><p>Major page faults, i.e. paging with disk I/O required.</p> </text></group><group><elem><type><int/></type><index>swaps</index></elem><text><p>Number of times the process has been swapped out entirely.</p> </text></group><group><elem><type><int/></type><index>block_input_op</index></elem><text><p>Number of block input operations.</p> </text></group><group><elem><type><int/></type><index>block_output_op</index></elem><text><p>Number of block output operations.</p> </text></group><group><elem><type><int/></type><index>messages_sent</index></elem><text><p>Number of IPC messsages sent.</p> </text></group><group><elem><type><int/></type><index>messages_received</index></elem><text><p>Number of IPC messsages received.</p> </text></group><group><elem><type><int/></type><index>signals_received</index></elem><text><p>Number of signals received.</p> </text></group><group><elem><type><int/></type><index>voluntary_context_switches</index></elem><text><p>Number of voluntary context switches (usually to wait for some service).</p> </text></group><group><elem><type><int/></type><index>involuntary_context_switches</index></elem><text><p>Number of preemptions, i.e. context switches due to expired time slices, or when processes with higher priority were scheduled.</p> </text></group><group><elem><type><int/></type><index>sysc</index></elem><text><p>Number of system calls.</p> </text></group><group><elem><type><int/></type><index>ioch</index></elem><text><p>Number of characters read and written.</p> </text></group><group><elem><type><int/></type><index>rtime</index></elem><text><p>Elapsed real time (ms).</p> </text></group><group><elem><type><int/></type><index>ttime</index></elem><text><p>Elapsed system trap (system call) time (ms).</p> </text></group><group><elem><type><int/></type><index>tftime</index></elem><text><p>Text page fault sleep time (ms).</p> </text></group><group><elem><type><int/></type><index>dftime</index></elem><text><p>Data page fault sleep time (ms).</p> </text></group><group><elem><type><int/></type><index>kftime</index></elem><text><p>Kernel page fault sleep time (ms).</p> </text></group><group><elem><type><int/></type><index>ltime</index></elem><text><p>User lock wait sleep time (ms).</p> </text></group><group><elem><type><int/></type><index>slptime</index></elem><text><p>Other sleep time (ms).</p> </text></group><group><elem><type><int/></type><index>wtime</index></elem><text><p>Wait CPU (latency) time (ms).</p> </text></group><group><elem><type><int/></type><index>stoptime</index></elem><text><p>Time spent in stopped (suspended) state.</p> </text></group><group><elem><type><int/></type><index>brksize</index></elem><text><p>Heap size.</p> </text></group><group><elem><type><int/></type><index>stksize</index></elem><text><p>Stack size.</p> </text></group></array><p>The values will not be further explained here; read your system manual for more information.</p> </text></group><group><note/><text><p>All values may not be present on all systems.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><deprecated><name><ref resolved='predef::System.getrusage'>System.getrusage</ref></name></deprecated></group><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::System.getrusage'>System.getrusage()</ref></p>
7ea0812003-01-13Martin Nilsson </text></group></doc> <method name='rusage'> <arguments/> <returntype><array><valuetype><int/></valuetype></array></returntype> </method> </docgroup>
6158252003-02-07Martin Nilsson <module name='SSL'> <class name='cipher'>
b144602003-02-08Martin Nilsson <doc><text><p>Encryption and MAC algorithms used in SSL.</p> </text><group><deprecated><name><ref resolved='predef::SSL.Cipher'>SSL.Cipher</ref></name></deprecated></group></doc>
6158252003-02-07Martin Nilsson <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='predef::'>predef::</classname></import> </docgroup>
805c6f2018-12-18Henrik Grubbström (Grubba) <docgroup homogen-name='"constants"' homogen-type='inherit'> <inherit name='"constants"'><classname resolved='7.4::SSL.constants'>"constants"</classname></inherit>
6158252003-02-07Martin Nilsson </docgroup> </class> <class name='constants'> <doc><text><p>Protocol constants</p> </text><group><deprecated><name><ref resolved='predef::SSL.Constants'>SSL.Constants</ref></name></deprecated></group></doc> <docgroup homogen-name='' homogen-type='import'> <import name=''><classname resolved='predef::'>predef::</classname></import> </docgroup> </class> </module>
eedb302002-12-30Martin Nilsson </namespace>
bfefa22001-07-17Martin Nilsson <appendix name='Image.Color colors'> <doc> <text>
69d6de2001-07-30Martin Nilsson <p> This table lists all the different named colors available in Image.Color. The first column shows the actual color while the five following columns demonstrates the modifiers neon, light, dark, bright and dull. The color begind the name of the color is produced by calling neon()-&gt;dark()-&gt;dark()-&gt;dark() from the color object itself, i.e. Image.Color.mintcream-&gt;neon()-&gt;dark()-&gt;dark()-&gt;dark().</p>
0897f72001-09-17Martin Nilsson <p><image file='predef.APPENDIX566709207.1.png' height='120' width='348'>colors.c.18.png</image><br/> <image file='predef.APPENDIX566709207.2.png' height='120' width='348'>colors.c.19.png</image><br/> <image file='predef.APPENDIX566709207.3.png' height='120' width='348'>colors.c.20.png</image><br/> <image file='predef.APPENDIX566709207.4.png' height='120' width='348'>colors.c.21.png</image><br/> <image file='predef.APPENDIX566709207.5.png' height='120' width='348'>colors.c.22.png</image><br/> <image file='predef.APPENDIX566709207.6.png' height='120' width='348'>colors.c.23.png</image><br/> <image file='predef.APPENDIX566709207.7.png' height='120' width='348'>colors.c.24.png</image><br/> <image file='predef.APPENDIX566709207.8.png' height='120' width='348'>colors.c.25.png</image><br/> <image file='predef.APPENDIX566709207.9.png' height='120' width='348'>colors.c.26.png</image><br/> <image file='predef.APPENDIX566709207.10.png' height='120' width='348'>colors.c.27.png</image><br/> <image file='predef.APPENDIX566709207.11.png' height='120' width='348'>colors.c.28.png</image><br/> <image file='predef.APPENDIX566709207.12.png' height='120' width='348'>colors.c.29.png</image><br/> <image file='predef.APPENDIX566709207.13.png' height='120' width='348'>colors.c.30.png</image><br/> <image file='predef.APPENDIX566709207.14.png' height='120' width='348'>colors.c.31.png</image><br/> <image file='predef.APPENDIX566709207.15.png' height='120' width='348'>colors.c.32.png</image><br/> <image file='predef.APPENDIX566709207.16.png' height='120' width='348'>colors.c.33.png</image><br/> <image file='predef.APPENDIX566709207.17.png' height='120' width='348'>colors.c.34.png</image><br/> <image file='predef.APPENDIX566709207.18.png' height='120' width='348'>colors.c.35.png</image><br/> <image file='predef.APPENDIX566709207.19.png' height='120' width='348'>colors.c.36.png</image><br/> <image file='predef.APPENDIX566709207.20.png' height='120' width='348'>colors.c.37.png</image><br/> <image file='predef.APPENDIX566709207.21.png' height='120' width='348'>colors.c.38.png</image><br/> <image file='predef.APPENDIX566709207.22.png' height='120' width='348'>colors.c.39.png</image><br/> <image file='predef.APPENDIX566709207.23.png' height='120' width='348'>colors.c.40.png</image><br/> <image file='predef.APPENDIX566709207.24.png' height='120' width='348'>colors.c.41.png</image><br/> <image file='predef.APPENDIX566709207.25.png' height='120' width='348'>colors.c.42.png</image><br/> <image file='predef.APPENDIX566709207.26.png' height='120' width='348'>colors.c.43.png</image><br/> <image file='predef.APPENDIX566709207.27.png' height='120' width='348'>colors.c.44.png</image><br/> <image file='predef.APPENDIX566709207.28.png' height='120' width='348'>colors.c.45.png</image><br/> <image file='predef.APPENDIX566709207.29.png' height='120' width='348'>colors.c.46.png</image><br/> <image file='predef.APPENDIX566709207.30.png' height='120' width='348'>colors.c.47.png</image><br/> <image file='predef.APPENDIX566709207.31.png' height='120' width='348'>colors.c.48.png</image><br/> <image file='predef.APPENDIX566709207.32.png' height='120' width='348'>colors.c.49.png</image><br/> <image file='predef.APPENDIX566709207.33.png' height='120' width='348'>colors.c.50.png</image><br/> <image file='predef.APPENDIX566709207.34.png' height='120' width='348'>colors.c.51.png</image><br/> <image file='predef.APPENDIX566709207.35.png' height='120' width='348'>colors.c.52.png</image><br/> <image file='predef.APPENDIX566709207.36.png' height='120' width='348'>colors.c.53.png</image><br/> <image file='predef.APPENDIX566709207.37.png' height='120' width='348'>colors.c.54.png</image><br/> <image file='predef.APPENDIX566709207.38.png' height='120' width='348'>colors.c.55.png</image><br/> <image file='predef.APPENDIX566709207.39.png' height='120' width='348'>colors.c.56.png</image><br/> <image file='predef.APPENDIX566709207.40.png' height='120' width='348'>colors.c.57.png</image><br/> <image file='predef.APPENDIX566709207.41.png' height='120' width='348'>colors.c.58.png</image><br/> <image file='predef.APPENDIX566709207.42.png' height='120' width='348'>colors.c.59.png</image><br/> <image file='predef.APPENDIX566709207.43.png' height='120' width='348'>colors.c.60.png</image><br/> <image file='predef.APPENDIX566709207.44.png' height='120' width='348'>colors.c.61.png</image><br/> <image file='predef.APPENDIX566709207.45.png' height='120' width='348'>colors.c.62.png</image><br/> <image file='predef.APPENDIX566709207.46.png' height='120' width='348'>colors.c.63.png</image><br/> <image file='predef.APPENDIX566709207.47.png' height='120' width='348'>colors.c.64.png</image><br/> <image file='predef.APPENDIX566709207.48.png' height='120' width='348'>colors.c.65.png</image><br/> <image file='predef.APPENDIX566709207.49.png' height='120' width='348'>colors.c.66.png</image><br/> <image file='predef.APPENDIX566709207.50.png' height='120' width='348'>colors.c.67.png</image><br/> <image file='predef.APPENDIX566709207.51.png' height='120' width='348'>colors.c.68.png</image><br/> <image file='predef.APPENDIX566709207.52.png' height='120' width='348'>colors.c.69.png</image><br/> <image file='predef.APPENDIX566709207.53.png' height='120' width='348'>colors.c.70.png</image><br/> <image file='predef.APPENDIX566709207.54.png' height='120' width='348'>colors.c.71.png</image><br/> <image file='predef.APPENDIX566709207.55.png' height='120' width='348'>colors.c.72.png</image><br/> <image file='predef.APPENDIX566709207.56.png' height='120' width='348'>colors.c.73.png</image><br/> <image file='predef.APPENDIX566709207.57.png' height='120' width='348'>colors.c.74.png</image><br/></p> <p/>
bfefa22001-07-17Martin Nilsson </text> </doc> </appendix> <appendix name='Image.Layer modes'> <doc> <text> <p> <dl compact='compact'> <dt><i>The variables in the expression:</i></dt> <dt>L</dt><dd><i>The active layer</i></dd> <dt>S</dt><dd><i>The source layer (the sum of the layers below)</i></dd> <dt>D</dt><dd><i>The destintion layer (the result)</i></dd> <dt>Xrgb</dt><dd><i>Layer red (<b>Xr</b>), green (<b>Xg</b>) or blue channel (<b>Xb</b>) </i></dd> <dt>Xhsv</dt><dd><i>Layer hue (<b>Xh</b>), saturation (<b>Xs</b>) or value channel (<b>Xv</b>) (virtual channels)</i></dd> <dt>Xhls</dt><dd><i>Layer hue (<b>Xh</b>), lightness channel (<b>Xl</b>) or saturation (<b>Xs</b>) (virtual channels)</i></dd> <dt>aX</dt><dd><i>Layer alpha, channel in layer alpha</i></dd> </dl> <i>All channels are calculated separately, if nothing else is specified.</i>
805c6f2018-12-18Henrik Grubbström (Grubba) <table cellpadding='1' cellspacing='0'><tr><td align='left' colspan='2'><b>top layer</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.1.jpeg' height='80' width='480'>layers.c.0.jpeg</image></td><td align='left' valign='center'/></tr> <tr><td align='left' colspan='2'><b>bottom layer</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.2.jpeg' height='80' width='480'>layers.c.1.jpeg</image></td><td align='left' valign='center'/></tr> <tr><td align='left' colspan='2'><b>normal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.3.jpeg' height='80' width='480'>layers.c.2.jpeg</image></td><td align='left' valign='center'>D=L applied with alpha: D=(L*aL+S*(1-aL)*aS) / (aL+(1-aL)*aS), aD=(aL+(1-aL)*aS)</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>add</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.4.jpeg' height='80' width='480'>layers.c.3.jpeg</image></td><td align='left' valign='center'>D=L+S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>subtract</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.5.jpeg' height='80' width='480'>layers.c.4.jpeg</image></td><td align='left' valign='center'>D=S-L applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>multiply</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.6.jpeg' height='80' width='480'>layers.c.5.jpeg</image></td><td align='left' valign='center'>D=S*L applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>divide</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.7.jpeg' height='80' width='480'>layers.c.6.jpeg</image></td><td align='left' valign='center'>D=S/L applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>negdivide</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.8.jpeg' height='80' width='480'>layers.c.7.jpeg</image></td><td align='left' valign='center'>D=1.0-S/L applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>modulo</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.9.jpeg' height='80' width='480'>layers.c.8.jpeg</image></td><td align='left' valign='center'>D=S%L applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>invsubtract</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.10.jpeg' height='80' width='480'>layers.c.9.jpeg</image></td><td align='left' valign='center'>D=L-S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>invdivide</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.11.jpeg' height='80' width='480'>layers.c.10.jpeg</image></td><td align='left' valign='center'>D=L/S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>invmodulo</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.12.jpeg' height='80' width='480'>layers.c.11.jpeg</image></td><td align='left' valign='center'>D=L%S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>imultiply</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.13.jpeg' height='80' width='480'>layers.c.12.jpeg</image></td><td align='left' valign='center'>D=(1-L)*S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>idivide</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.14.jpeg' height='80' width='480'>layers.c.13.jpeg</image></td><td align='left' valign='center'>D=S/(1-L) applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>invidivide</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.15.jpeg' height='80' width='480'>layers.c.14.jpeg</image></td><td align='left' valign='center'>D=L/(1-S) applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>difference</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.16.jpeg' height='80' width='480'>layers.c.15.jpeg</image></td><td align='left' valign='center'>D=abs(L-S) applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>max</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.17.jpeg' height='80' width='480'>layers.c.16.jpeg</image></td><td align='left' valign='center'>D=max(L,S) applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>min</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.18.jpeg' height='80' width='480'>layers.c.17.jpeg</image></td><td align='left' valign='center'>D=min(L,S) applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>bitwise_and</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.19.jpeg' height='80' width='480'>layers.c.18.jpeg</image></td><td align='left' valign='center'>D=L&amp;amp;amp;S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>bitwise_or</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.20.jpeg' height='80' width='480'>layers.c.19.jpeg</image></td><td align='left' valign='center'>D=L|S applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>bitwise_xor</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.21.jpeg' height='80' width='480'>layers.c.20.jpeg</image></td><td align='left' valign='center'>D=L^S applied with alpha, aD=aS</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>replace</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.22.jpeg' height='80' width='480'>layers.c.21.jpeg</image></td><td align='left' valign='center'>D=(L*aL+S*(1-aL)*aS) / (aL+(1-aL)*aS), aD=aS</td></tr> <tr><td align='left' colspan='2'><b>red</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.23.jpeg' height='80' width='480'>layers.c.22.jpeg</image></td><td align='left' valign='center'>Dr=(Lr*aLr+Sr*(1-aLr)*aSr) / (aLr+(1-aLr)*aSr), Dgb=Sgb, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>green</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.24.jpeg' height='80' width='480'>layers.c.23.jpeg</image></td><td align='left' valign='center'>Dg=(Lg*aLg+Sg*(1-aLg)*aSg) / (aLg+(1-aLg)*aSg), Drb=Srb, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>blue</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.25.jpeg' height='80' width='480'>layers.c.24.jpeg</image></td><td align='left' valign='center'>Db=(Lb*aLb+Sb*(1-aLb)*aSb) / (aLb+(1-aLb)*aSb), Drg=Srg, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hardlight</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.26.jpeg' height='80' width='480'>layers.c.25.jpeg</image></td><td align='left' valign='center'>Like photoshop hardlight layer mode, aD=aS</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>replace_hsv</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.27.jpeg' height='80' width='480'>layers.c.26.jpeg</image></td><td align='left' valign='center'>Dhsv=Lhsv apply with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hue</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.28.jpeg' height='80' width='480'>layers.c.27.jpeg</image></td><td align='left' valign='center'>Dh=Lh apply with alpha, Dsv=Lsv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>saturation</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.29.jpeg' height='80' width='480'>layers.c.28.jpeg</image></td><td align='left' valign='center'>Ds=Ls apply with alpha, Dhv=Lhv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>value</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.30.jpeg' height='80' width='480'>layers.c.29.jpeg</image></td><td align='left' valign='center'>Dv=Lv apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>color</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.31.jpeg' height='80' width='480'>layers.c.30.jpeg</image></td><td align='left' valign='center'>Dhs=Lhs apply with alpha, Dv=Lv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>value_mul</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.32.jpeg' height='80' width='480'>layers.c.31.jpeg</image></td><td align='left' valign='center'>Dv=Lv*Sv apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>darken</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.33.jpeg' height='80' width='480'>layers.c.32.jpeg</image></td><td align='left' valign='center'>Dv=min(Lv,Sv) apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>lighten</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.34.jpeg' height='80' width='480'>layers.c.33.jpeg</image></td><td align='left' valign='center'>Dv=max(Lv,Sv) apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>saturate</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.35.jpeg' height='80' width='480'>layers.c.34.jpeg</image></td><td align='left' valign='center'>Ds=max(Ls,Ss) apply with alpha, Dhv=Lhv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>desaturate</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.36.jpeg' height='80' width='480'>layers.c.35.jpeg</image></td><td align='left' valign='center'>Ds=min(Ls,Ss) apply with alpha, Dhv=Lhv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_replace</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.37.jpeg' height='80' width='480'>layers.c.36.jpeg</image></td><td align='left' valign='center'>Dhls=Lhls apply with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_hue</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.38.jpeg' height='80' width='480'>layers.c.37.jpeg</image></td><td align='left' valign='center'>Dh=Lh apply with alpha, Dsv=Lsv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_saturation</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.39.jpeg' height='80' width='480'>layers.c.38.jpeg</image></td><td align='left' valign='center'>Ds=Ls apply with alpha, Dhv=Lhv, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_lightness</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.40.jpeg' height='80' width='480'>layers.c.39.jpeg</image></td><td align='left' valign='center'>Dl=Ll apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_color</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.41.jpeg' height='80' width='480'>layers.c.40.jpeg</image></td><td align='left' valign='center'>Dhs=Lhs apply with alpha, Dl=Ll, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_lightness_mul</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.42.jpeg' height='80' width='480'>layers.c.41.jpeg</image></td><td align='left' valign='center'>Dl=Ll*Sl apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_darken</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.43.jpeg' height='80' width='480'>layers.c.42.jpeg</image></td><td align='left' valign='center'>Dl=min(Ll,Sl) apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_lighten</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.44.jpeg' height='80' width='480'>layers.c.43.jpeg</image></td><td align='left' valign='center'>Dl=max(Ll,Sl) apply with alpha, Dhs=Lhs, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_saturate</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.45.jpeg' height='80' width='480'>layers.c.44.jpeg</image></td><td align='left' valign='center'>Ds=max(Ls,Ss) apply with alpha, Dhl=Lhl, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>hls_desaturate</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.46.jpeg' height='80' width='480'>layers.c.45.jpeg</image></td><td align='left' valign='center'>Ds=min(Ls,Ss) apply with alpha, Dhl=Lhl, aD=aS</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>dissolve</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.47.jpeg' height='80' width='480'>layers.c.46.jpeg</image></td><td align='left' valign='center'>i=random 0 or 1, D=i?L:S, aD=i+aS</td></tr> <tr><td align='left' colspan='2'><b>behind</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.48.jpeg' height='80' width='480'>layers.c.47.jpeg</image></td><td align='left' valign='center'>D=(S*aS+L*(1-aS)*aL) / (aS+(1-aS)*aL), aD=(aS+(1-aS)*aL); simply swap S and L</td></tr> <tr><td align='left' colspan='2'><b>erase</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.49.jpeg' height='80' width='480'>layers.c.48.jpeg</image></td><td align='left' valign='center'>D=S, aD=aS*(1-aL)</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>screen</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.50.jpeg' height='80' width='480'>layers.c.49.jpeg</image></td><td align='left' valign='center'>1-(1-S)*(1-L) applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>overlay</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.51.jpeg' height='80' width='480'>layers.c.50.jpeg</image></td><td align='left' valign='center'>(1-(1-a)*(1-b)-a*b)*a+a*b applied with alpha, aD=aS</td></tr> <tr><td align='left' colspan='2'><b>burn_alpha</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.52.jpeg' height='80' width='480'>layers.c.51.jpeg</image></td><td align='left' valign='center'>aD=aL+aS applied with alpha, D=L+S; experimental, may change or be removed</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.53.jpeg' height='80' width='480'>layers.c.52.jpeg</image></td><td align='left' valign='center'>each channel D=max if L==S, 0 otherwise, apply with alpha</td></tr> <tr><td align='left' colspan='2'><b>not_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.54.jpeg' height='80' width='480'>layers.c.53.jpeg</image></td><td align='left' valign='center'>each channel D=max if L!=S, 0 otherwise, apply with alpha</td></tr> <tr><td align='left' colspan='2'><b>less</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.55.jpeg' height='80' width='480'>layers.c.54.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&amp;amp;lt;S, 0 otherwise, apply with alpha</td></tr> <tr><td align='left' colspan='2'><b>more</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.56.jpeg' height='80' width='480'>layers.c.55.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&amp;amp;gt;S, 0 otherwise, apply with alpha</td></tr> <tr><td align='left' colspan='2'><b>less_or_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.57.jpeg' height='80' width='480'>layers.c.56.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&amp;amp;lt;=S, 0 otherwise, apply with alpha</td></tr> <tr><td align='left' colspan='2'><b>more_or_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.58.jpeg' height='80' width='480'>layers.c.57.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&amp;amp;gt;=S, 0 otherwise, apply with alpha</td></tr> <tr><td> </td></tr><tr><td align='left' colspan='2'><b>logic_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.59.jpeg' height='80' width='480'>layers.c.58.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if L==S, black and transparent otherwise</td></tr> <tr><td align='left' colspan='2'><b>logic_not_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.60.jpeg' height='80' width='480'>layers.c.59.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if any L!=S, black and transparent otherwise</td></tr> <tr><td align='left' colspan='2'><b>logic_strict_less</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.61.jpeg' height='80' width='480'>layers.c.60.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&amp;amp;lt;S, black and transparent otherwise</td></tr> <tr><td align='left' colspan='2'><b>logic_strict_more</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.62.jpeg' height='80' width='480'>layers.c.61.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&amp;amp;gt;S, black and transparent otherwise</td></tr> <tr><td align='left' colspan='2'><b>logic_strict_less_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.63.jpeg' height='80' width='480'>layers.c.62.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&amp;amp;lt;=L, black and transparent otherwise</td></tr> <tr><td align='left' colspan='2'><b>logic_strict_more_equal</b></td></tr><tr><td align='right'><image file='predef.APPENDIX324279123.64.jpeg' height='80' width='480'>layers.c.63.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&amp;amp;gt;=L, black and transparent otherwise</td></tr>
be393a2001-07-27Martin Nilsson </table></p>
bfefa22001-07-17Martin Nilsson </text> </doc> </appendix>
3b21982003-04-01Martin Nilsson <namespace name='cpp'>
f537242001-07-28Martin Nilsson <docgroup homogen-name='__AUTO_BIGNUM__' homogen-type='constant'><doc><text><p>This define is defined when automatic bignum conversion is enabled. When enabled all integers will automatically be converted to bignums when they get bigger than what can be represented by an integer, hampering performance slightly instead of crashing the program.</p> </text></doc> <constant name='__AUTO_BIGNUM__'/> </docgroup> <docgroup homogen-name='__BUILD__' homogen-type='constant'><doc><text><p>This constant contains the build number of the current Pike version, represented as an integer. If another Pike version is emulated, this constant remains unaltered.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__REAL_MINOR__'>__REAL_MINOR__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__BUILD__'/> </docgroup> <docgroup homogen-name='__DATE__' homogen-type='constant'><doc><text><p>This define contains the current date at the time of compilation, e.g. "Jul 28 2001".</p> </text></doc> <constant name='__DATE__'/> </docgroup> <docgroup homogen-name='__FILE__' homogen-type='constant'><doc><text><p>This define contains the file path and name of the source file.</p> </text></doc> <constant name='__FILE__'/> </docgroup> <docgroup homogen-name='__LINE__' homogen-type='constant'><doc><text><p>This define contains the current line number, represented as an integer, in the source file.</p> </text></doc> <constant name='__LINE__'/> </docgroup> <docgroup homogen-name='__MAJOR__' homogen-type='constant'><doc><text><p>This define contains the major part of the current Pike version, represented as an integer. If another Pike version is emulated, this define is updated accordingly.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__REAL_MAJOR__'>__REAL_MAJOR__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__MAJOR__'/> </docgroup> <docgroup homogen-name='__MINOR__' homogen-type='constant'><doc><text><p>This define contains the minor part of the current Pike version, represented as an integer. If another Pike version is emulated, this define is updated accordingly.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__REAL_MINOR__'>__REAL_MINOR__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__MINOR__'/> </docgroup> <docgroup homogen-name='__NT__' homogen-type='constant'><doc><text><p>This define is defined when the Pike is running on a Microsoft Windows OS, not just Microsoft Windows NT, as the name implies.</p> </text></doc> <constant name='__NT__'/> </docgroup> <docgroup homogen-name='__PIKE__' homogen-type='constant'><doc><text><p>This define is always true.</p> </text></doc> <constant name='__PIKE__'/> </docgroup> <docgroup homogen-name='__REAL_BUILD__' homogen-type='constant'><doc><text><p>This define always contains the minor part of the version of the current Pike, represented as an integer.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__BUILD__'>__BUILD__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__REAL_BUILD__'/> </docgroup> <docgroup homogen-name='__REAL_MAJOR__' homogen-type='constant'><doc><text><p>This define always contains the major part of the version of the current Pike, represented as an integer.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__MAJOR__'>__MAJOR__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__REAL_MAJOR__'/> </docgroup> <docgroup homogen-name='__REAL_MINOR__' homogen-type='constant'><doc><text><p>This define always contains the minor part of the version of the current Pike, represented as an integer.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__MINOR__'>__MINOR__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__REAL_MINOR__'/> </docgroup> <docgroup homogen-name='__REAL_VERSION__' homogen-type='constant'><doc><text><p>This define always contains the version of the current Pike, represented as a float.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__VERSION__'>__VERSION__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__REAL_VERSION__'/> </docgroup> <docgroup homogen-name='__TIME__' homogen-type='constant'><doc><text><p>This define contains the current time at the time of compilation, e.g. "12:20:51".</p> </text></doc> <constant name='__TIME__'/> </docgroup> <docgroup homogen-name='__VERSION__' homogen-type='constant'><doc><text><p>This define contains the current Pike version as a float. If another Pike version is emulated, this define is updated accordingly.</p>
3b21982003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='cpp::.__REAL_VERSION__'>__REAL_VERSION__</ref></p>
f537242001-07-28Martin Nilsson </text></group></doc> <constant name='__VERSION__'/> </docgroup> <docgroup homogen-name='__amigaos__' homogen-type='constant'><doc><text><p>This define is defined when the Pike is running on Amiga OS.</p> </text></doc> <constant name='__amigaos__'/> </docgroup>
3b21982003-04-01Martin Nilsson </namespace>
5bfef52003-04-01Martin Nilsson <namespace name='lfun'> <doc><text><p>Callback functions used to overload various builtin functions.</p> <p> The functions can be grouped into a few sets:</p> <ul><group><item/><text><p>Object initialization and destruction.</p> <p> <ref resolved='lfun::__INIT'>__INIT()</ref>, <ref resolved='lfun::create'>create()</ref>, <ref resolved='lfun::destroy'>destroy()</ref></p> </text></group><group><item/><text><p>Unary operator overloading.</p> <p> <ref resolved='lfun::`~'>`~()</ref>, <ref resolved='lfun::`!'>`!()</ref>, <ref resolved='lfun::_values'>_values()</ref>, <ref resolved='lfun::cast'>cast()</ref>, <ref resolved='lfun::_sizeof'>_sizeof()</ref>, <ref resolved='lfun::_indices'>_indices()</ref>, <ref resolved='lfun::__hash'>__hash()</ref></p> </text></group><group><item/><text><p>Binary assymetric operator overloading.</p> <p> <ref resolved='lfun::`+'>`+()</ref>, <ref resolved='lfun::``+'>``+()</ref>, <ref resolved='lfun::`-'>`-()</ref>, <ref resolved='lfun::``-'>``-()</ref>, <ref resolved='lfun::`&amp;'>&amp;`&amp;()</ref>, <ref resolved='lfun::``&amp;'>&amp;``&amp;()</ref>, <ref resolved='lfun::`|'>`|()</ref>, <ref resolved='lfun::``|'>``|()</ref>, <ref resolved='lfun::`^'>`^()</ref>, <ref resolved='lfun::``^'>``^()</ref>, <ref resolved='lfun::`&lt;&lt;'>&lt;&lt;`&lt;&lt;()</ref>, <ref resolved='lfun::``&lt;&lt;'>&lt;&lt;``&lt;&lt;()</ref>, <ref resolved='lfun::`&gt;&gt;'>&gt;&gt;`&gt;&gt;()</ref>, <ref resolved='lfun::``&gt;&gt;'>&gt;&gt;``&gt;&gt;()</ref>, <ref resolved='lfun::`*'>`*()</ref>, <ref resolved='lfun::``*'>``*()</ref>, <ref resolved='lfun::`/'>`/()</ref>, <ref resolved='lfun::``/'>``/()</ref>, <ref resolved='lfun::`%'>`%()</ref>, <ref resolved='lfun::``%'>``%()</ref></p> </text></group><group><item/><text><p>Binary symetric operator overloading.</p> <p> The optimizer will make assumptions about the relations between these functions.</p> <p> <ref resolved='lfun::`=='>`==()</ref>, <ref resolved='lfun::_equal'>_equal()</ref>, <ref resolved='lfun::`&lt;'>&lt;`&lt;()</ref>, <ref resolved='lfun::`&gt;'>&gt;`&gt;()</ref></p> </text></group><group><item/><text><p>Other binary operator overloading.</p> <p> <ref resolved='lfun::`[]'>`[]()</ref>, <ref resolved='lfun::`[]='>`[]=()</ref>, <ref resolved='lfun::`-&gt;'>&gt;`-&gt;()</ref>, <ref resolved='lfun::`-&gt;='>&gt;`-&gt;=()</ref>, <ref resolved='lfun::`+='>`+=()</ref>, <ref resolved='lfun::`()'>`()()</ref></p> </text></group><group><item/><text><p>Overloading of other builtin functions.</p> <p> <ref resolved='lfun::_is_type'>_is_type()</ref>, <ref resolved='lfun::_sprintf'>_sprintf()</ref>, <ref resolved='lfun::_m_delete'>_m_delete()</ref>, <ref resolved='lfun::_get_iterator'>_get_iterator()</ref></p> </text></group></ul> </text><group><note/><text><p>Although these functions are called from outside the object they exist in, they will still be used even if they are
84ea4e2003-04-07Martin Nilsson  declared <expr>static</expr>. It is infact recommended to declare them <expr>static</expr>, since that will hinder them being used
5bfef52003-04-01Martin Nilsson  for other purposes.</p> </text></group><group><seealso/><text><p><ref resolved='::'>::</ref></p> </text></group></doc> <docgroup homogen-name='__INIT' homogen-type='method'><doc><text><p>Global variable initialization.</p> <p> This function is called just before <ref resolved='lfun::create'>lfun::create()</ref> when an object is instanciated.</p> </text><group><note/><text><p>This function is generated automatically by the compiler, and can not be overloaded.</p> </text></group><group><seealso/><text><p><ref resolved='lfun::create'>lfun::create()</ref></p> </text></group></doc> <method name='__INIT'> <arguments/> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='__hash' homogen-type='method'><doc><text><p>Hashing callback.</p> <p> This function gets called by various mapping operations when the
4a990c2003-04-28Martin Stjernholm  object is used as index in a mapping. It should return an integer that corresponds to the object in such a way that all values which <ref resolved='lfun::`=='>lfun::`==</ref> considers equal to the object gets the same hash value.</p> </text><group><note/><text><p>The function <ref resolved='predef::hash'>predef::hash</ref> does not return hash values that are compatible with this one.</p> </text></group><group><seealso/><text><p><ref resolved='lfun::`=='>lfun::`==</ref></p> </text></group></doc>
5bfef52003-04-01Martin Nilsson <method name='__hash'> <arguments/> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='_equal' homogen-type='method'><doc><text><p>Equal callback.</p> </text><group><seealso/><text><p><ref resolved='predef::equal'>predef::equal()</ref>, <ref resolved='lfun::`=='>lfun::`==()</ref></p> </text></group></doc> <method name='_equal'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup>
a8b4002003-04-18Martin Stjernholm <docgroup homogen-name='_get_iterator' homogen-type='method'><doc><text><p>Iterator creation callback. The returned <ref>Iterator</ref> instance works as a cursor that references a specific item contained (in some arbitrary sense) in this one.</p> </text><group><seealso/><text><p><ref>Iterator</ref>, <ref>get_iterator</ref>, <ref>predef::foreach()</ref></p>
5bfef52003-04-01Martin Nilsson </text></group></doc> <method name='_get_iterator'> <arguments/>
a8b4002003-04-18Martin Stjernholm <returntype><object>Iterator</object></returntype>
5bfef52003-04-01Martin Nilsson </method> </docgroup> <docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Indices operator callback.</p> </text><group><returns/><text><p>Expected to return an array with the valid indices in the object.</p> </text></group><group><seealso/><text><p><ref resolved='predef::indices'>predef::indices()</ref>, <ref resolved='lfun::_values'>lfun::_values()</ref></p> </text></group></doc> <method name='_indices'> <arguments/> <returntype><array/></returntype> </method> </docgroup> <docgroup homogen-name='_is_type' homogen-type='method'><doc><text><p>Type comparison callback.</p> <p> Called by the cast operator to determine if an object simulates a basic type.</p> </text><group><param name='basic_type'/><text><p>One of:</p> <string><group><value>"array"</value><value>"float"</value><value>"function"</value><value>"int"</value><value>"mapping"</value><value>"multiset"</value><value>"object"</value><value>"program"</value><value>"string"</value><value>"type"</value><value>"void"</value><value>"zero"</value></group></string><p>The following five shouldn't occurr, but are here for completeness:</p> <string><group><value>"lvalue"</value><value>"mapping_data"</value><value>"object storage"</value><value>"pike_frame"</value><value>"unknown"</value></group></string>
84ea4e2003-04-07Martin Nilsson </text></group><group><returns/><text><p>Expected to return <expr>1</expr> if the object is to be regarded as a
5bfef52003-04-01Martin Nilsson  simulation of the type specified by <ref resolved='lfun::_is_type.basic_type'>basic_type</ref>.</p> </text></group><group><note/><text><p>The argument is currently a string with the name of the type, but might in the future be a value of the type type.</p> </text></group></doc> <method name='_is_type'> <arguments><argument name='basic_type'><type><string/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='_m_delete' homogen-type='method'><doc><text><p>Mapping delete callback.</p> </text><group><seealso/><text><p><ref resolved='predef::m_delete'>predef::m_delete()</ref></p> </text></group></doc> <method name='_m_delete'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup>
9810c52003-04-10Martin Nilsson <docgroup homogen-name='_random' homogen-type='method'><doc><text><p>Called by <ref>random</ref>. Typical uses is when the object implements a ADT, then a call to this lfun should return a random member of the ADT or range implied by the ADT.</p> </text><group><seealso/><text><p><ref resolved='predef::random'>predef::random()</ref></p> </text></group></doc> <method name='_random'> <arguments/> <returntype><mixed/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Sizeof operator callback.</p> <p> Called by <ref>sizeof()</ref> to determine the number of elements in an object. If this function is not present, the number of public symbols in the object will be returned.</p> </text><group><returns/><text><p>Expected to return the number of valid indices in the object.</p> </text></group><group><seealso/><text><p><ref resolved='predef::sizeof'>predef::sizeof()</ref></p> </text></group></doc> <method name='_sizeof'> <arguments/> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='_sprintf' homogen-type='method'><doc><text><p>Sprintf callback.</p> <p> This method is called by <ref resolved='predef::sprintf'>predef::sprintf()</ref> to print objects. If it is not present, printing of the object will not be supported for any conversion-type except for the <tt>%O</tt>-conversion-type, which
84ea4e2003-04-07Martin Nilsson  will output <expr>"object"</expr>.</p>
5bfef52003-04-01Martin Nilsson </text><group><param name='conversion_type'/><text><p>One of:</p> <int><group><value>'b'</value><text><p>Signed binary integer.</p> </text></group><group><value>'d'</value><text><p>Signed decimal integer.</p> </text></group><group><value>'u'</value><text><p>Unsigned decimal integer.</p> </text></group><group><value>'o'</value><text><p>Signed octal integer.</p> </text></group><group><value>'x'</value><text><p>Lowercase signed hexadecimal integer.</p> </text></group><group><value>'X'</value><text><p>Uppercase signed hexadecimal integer.</p> </text></group><group><value>'c'</value><text><p>Character. If a fieldsize has been specified this will output the low-order bytes of the integer in network byte order.</p> </text></group><group><value>'f'</value><text><p>Float.</p> </text></group><group><value>'g'</value><text><p>Heuristically chosen representation of float.</p> </text></group><group><value>'G'</value><text><p>Like <tt>%g</tt>, but uses uppercase <tt>E</tt> for exponent.</p> </text></group><group><value>'e'</value><text><p>Exponential notation float.</p> </text></group><group><value>'E'</value><text><p>Like <tt>%e</tt>, but uses uppercase <tt>E</tt> for exponent.</p> </text></group><group><value>'s'</value><text><p>String.</p> </text></group><group><value>'O'</value><text><p>Any value (debug style).</p> </text></group><group><value>'t'</value><text><p>Type of the argument.</p> </text></group></int> </text></group><group><param name='params'/><text><p>Conversion parameters. The following parameters may be supplied:</p> <mapping><group><member><type><int/></type><index>"precision"</index></member><text><p>Precision.</p> </text></group><group><member><type><int/></type><index>"width"</index></member><text><p>Field width.</p> </text></group><group><member><type><int><min>1</min><max>1</max></int></type><index>"flag_left"</index></member><text><p>Indicates that the output should be left-aligned.</p> </text></group><group><member><type><int/></type><index>"indent"</index></member><text><p>Indentation level in <tt>%O</tt>-mode.</p> </text></group></mapping> </text></group><group><returns/><text><p>Is expected to return a string describing the object formatted according to <ref resolved='lfun::_sprintf.conversion_type'>conversion_type</ref>.</p> </text></group><group><note/><text><p><ref resolved='lfun::_sprintf'>_sprintf()</ref> is currently not called for the following conversion-types:</p> <int><group><value>'F'</value><text><p>Binary IEEE representation of float (<tt>%4F</tt> gives single precision, <tt>%8F</tt> gives double precision.)</p> </text></group></int> </text></group><group><seealso/><text><p><ref resolved='predef::sprintf'>predef::sprintf()</ref></p> </text></group></doc> <method name='_sprintf'> <arguments><argument name='conversion_type'><type><int/></type></argument><argument name='params'><type><or><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping><void/></or></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Values operator callback.</p> </text><group><returns/><text><p>Expected to return an array with the values corresponding to the indices returned by <ref resolved='lfun::_indices'>lfun::_indices()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::values'>predef::values()</ref>, <ref resolved='lfun::_indices'>lfun::_indices()</ref></p> </text></group></doc> <method name='_values'> <arguments/> <returntype><array/></returntype> </method> </docgroup> <docgroup homogen-name='`!' homogen-type='method'><doc><text><p>Not operator callback.</p> </text><group><returns/><text><p>Returns non-zero if the object should be evaluated as false,
84ea4e2003-04-07Martin Nilsson  and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::`!'>predef::`!()</ref></p> </text></group></doc> <method name='`!'> <arguments/> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='`%' homogen-type='method'><doc><text><p>Left associative modulo operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``%'>lfun::``%()</ref>, <ref resolved='predef::`%'>predef::`%()</ref></p> </text></group></doc> <method name='`%'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`&amp;' homogen-type='method'>&amp;<doc><text><p>Left associative and operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``&amp;'>&amp;lfun::``&amp;()</ref>, <ref resolved='predef::`&amp;'>&amp;predef::`&amp;()</ref></p> </text></group></doc> <method name='`&amp;'>&amp; <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Function call operator callback.</p> </text><group><seealso/><text><p><ref>predef::`()</ref></p> </text></group></doc> <method name='`()'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`*' homogen-type='method'><doc><text><p>Left associative multiplication operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``*'>lfun::``*()</ref>, <ref resolved='predef::`*'>predef::`*()</ref></p> </text></group></doc> <method name='`*'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Left associative addition operator callback.</p>
5f589b2003-04-18Martin Stjernholm </text><group><seealso/><text><p><ref resolved='lfun::``+'>lfun::``+()</ref>, <ref resolved='lfun::`+='>lfun::`+=()</ref>, <ref resolved='predef::`+'>predef::`+()</ref></p>
5bfef52003-04-01Martin Nilsson </text></group></doc> <method name='`+'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`+=' homogen-type='method'><doc><text><p>Self increment operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`+'>predef::`+()</ref>, <ref resolved='lfun::`+'>lfun::`+()</ref></p> </text></group></doc> <method name='`+='> <arguments><argument name='arg'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup>
5f589b2003-04-18Martin Stjernholm <docgroup homogen-name='`+=' homogen-type='method'><doc><text><p>Left associative addition operator callback that destructively assigns the result of the addition to this object. It should always return this object.</p> </text><group><note/><text><p>This function should only be implemented if <ref resolved='lfun::`+'>lfun::`+()</ref> 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.</p> </text></group><group><note/><text><p>This function is not an lfun for the <expr>+=</expr> operator. It's only the safety to do a destructive change that decides whether this function or <ref resolved='lfun::`+'>lfun::`+()</ref> will be called; both the <expr>+</expr> operator and the <expr>+=</expr> operator can call either one.</p> </text></group><group><seealso/><text><p><ref resolved='lfun::`+'>lfun::`+()</ref>, <ref resolved='predef::`+'>predef::`+()</ref></p> </text></group></doc> <method name='`+='> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><object>this_program</object></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Left associative subtraction operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``-'>lfun::``-()</ref>, <ref resolved='predef::`-'>predef::`-()</ref></p> </text></group></doc> <method name='`-'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-&gt;' homogen-type='method'>&gt;<doc><text><p>Arrow index operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`-&gt;'>&gt;predef::`-&gt;()</ref></p> </text></group></doc> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-&gt;=' homogen-type='method'>&gt;<doc><text><p>Arrow index assign operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`-&gt;='>&gt;predef::`-&gt;=()</ref>, <ref resolved='lfun::`[]='>lfun::`[]=()</ref></p> </text></group></doc> <method name='`-&gt;='>&gt; <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`/' homogen-type='method'><doc><text><p>Left associative division operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``/'>lfun::``/()</ref>, <ref resolved='predef::`/'>predef::`/()</ref></p> </text></group></doc> <method name='`/'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`&lt;' homogen-type='method'>&lt;<doc><text><p>Less than operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`&lt;'>&lt;predef::`&lt;()</ref></p> </text></group></doc> <method name='`&lt;'>&lt; <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&lt;&lt;' homogen-type='method'>&lt;&lt;<doc><text><p>Left associative left shift operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``&lt;&lt;'>&lt;&lt;lfun::``&lt;&lt;()</ref>, <ref resolved='predef::`&lt;&lt;'>&lt;&lt;predef::`&lt;&lt;()</ref></p> </text></group></doc> <method name='`&lt;&lt;'>&lt;&lt; <arguments><argument name='arg'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`==' homogen-type='method'><doc><text><p>Equality operator callback.</p>
4a990c2003-04-28Martin Stjernholm </text><group><note/><text><p>If this is implemented it might be necessary to implement <ref resolved='lfun::__hash'>lfun::__hash</ref> too. Otherwise mappings might hold several objects as indices which are duplicates according to this function. Various other functions that use hashing also might not work correctly, e.g. <ref>Array.uniq</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`=='>predef::`==()</ref>, <ref resolved='lfun::__hash'>lfun::__hash</ref></p>
5bfef52003-04-01Martin Nilsson </text></group></doc> <method name='`=='> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&gt;' homogen-type='method'>&gt;<doc><text><p>Greater than operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`&gt;'>&gt;predef::`&gt;()</ref></p> </text></group></doc> <method name='`&gt;'>&gt; <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&gt;&gt;' homogen-type='method'>&gt;&gt;<doc><text><p>Left associative right shift operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``&gt;&gt;'>&gt;&gt;lfun::``&gt;&gt;()</ref>, <ref resolved='predef::`&gt;&gt;'>&gt;&gt;predef::`&gt;&gt;()</ref></p> </text></group></doc> <method name='`&gt;&gt;'>&gt;&gt; <arguments><argument name='arg'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Index/range operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`[]'>predef::`[]()</ref></p> </text></group></doc> <method name='`[]'> <arguments><argument name='arg1'><type><zero/></type></argument><argument name='arg2'><type><or><zero/><void/></or></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Index assignment operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`[]='>predef::`[]=()</ref>, <ref resolved='lfun::`-&gt;='>&gt;lfun::`-&gt;=()</ref></p> </text></group></doc> <method name='`[]='> <arguments><argument name='arg1'><type><zero/></type></argument><argument name='arg2'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`^' homogen-type='method'><doc><text><p>Left associative exclusive or operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``^'>lfun::``^()</ref>, <ref resolved='predef::`^'>predef::`^()</ref></p> </text></group></doc> <method name='`^'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``%' homogen-type='method'><doc><text><p>Right associative modulo operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`%'>lfun::`%()</ref>, <ref resolved='predef::`%'>predef::`%()</ref></p> </text></group></doc> <method name='``%'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``&amp;' homogen-type='method'>&amp;<doc><text><p>Right associative and operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`&amp;'>&amp;lfun::`&amp;()</ref>, <ref resolved='predef::`&amp;'>&amp;predef::`&amp;()</ref></p> </text></group></doc> <method name='``&amp;'>&amp; <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``*' homogen-type='method'><doc><text><p>Right associative multiplication operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`*'>lfun::`*()</ref>, <ref resolved='predef::`*'>predef::`*()</ref></p> </text></group></doc> <method name='``*'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``+' homogen-type='method'><doc><text><p>Right associative addition operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`+'>lfun::`+()</ref>, <ref resolved='predef::`+'>predef::`+()</ref></p> </text></group></doc> <method name='``+'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``-' homogen-type='method'><doc><text><p>Right associative subtraction operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`-'>lfun::`-()</ref>, <ref resolved='predef::`-'>predef::`-()</ref></p> </text></group></doc> <method name='``-'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``/' homogen-type='method'><doc><text><p>Right associative division operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`/'>lfun::`/()</ref>, <ref resolved='predef::`/'>predef::`/()</ref></p> </text></group></doc> <method name='``/'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``&lt;&lt;' homogen-type='method'>&lt;&lt;<doc><text><p>Right associative left shift operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`&lt;&lt;'>&lt;&lt;lfun::`&lt;&lt;()</ref>, <ref resolved='predef::`&lt;&lt;'>&lt;&lt;predef::`&lt;&lt;()</ref></p> </text></group></doc> <method name='``&lt;&lt;'>&lt;&lt; <arguments><argument name='arg'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``&gt;&gt;' homogen-type='method'>&gt;&gt;<doc><text><p>Right associative right shift operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`&gt;&gt;'>&gt;&gt;lfun::`&gt;&gt;()</ref>, <ref resolved='predef::`&gt;&gt;'>&gt;&gt;predef::`&gt;&gt;()</ref></p> </text></group></doc> <method name='``&gt;&gt;'>&gt;&gt; <arguments><argument name='arg'><type><zero/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``^' homogen-type='method'><doc><text><p>Right associative exclusive or operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`^'>lfun::`^()</ref>, <ref resolved='predef::`^'>predef::`^()</ref></p> </text></group></doc> <method name='``^'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='``|' homogen-type='method'><doc><text><p>Right associative or operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::`|'>lfun::`|()</ref>, <ref resolved='predef::`|'>predef::`|()</ref></p> </text></group></doc> <method name='``|'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`|' homogen-type='method'><doc><text><p>Left associative or operator callback.</p> </text><group><seealso/><text><p><ref resolved='lfun::``|'>lfun::``|()</ref>, <ref resolved='predef::`|'>predef::`|()</ref></p> </text></group></doc> <method name='`|'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`~' homogen-type='method'><doc><text><p>Inversion operator callback.</p> </text><group><seealso/><text><p><ref resolved='predef::`~'>predef::`~()</ref></p> </text></group></doc> <method name='`~'> <arguments/> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Cast operator callback.</p> </text><group><param name='requested_type'/><text><p>Type to cast to.</p> </text></group><group><returns/><text><p>Expected to return the object value-casted (converted) to the type described by <ref resolved='lfun::cast.requested_type'>requested_type</ref>.</p> </text></group><group><note/><text><p>The argument is currently a string with the name of the type, but might in the future be a value of the type type.</p> </text></group><group><note/><text><p>Currently casting between object types is a noop.</p> </text></group><group><note/><text><p>If the returned value is not deemed to be of the requested type a runtime error may be thrown.</p> </text></group></doc> <method name='cast'> <arguments><argument name='requested_type'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Object creation callback.</p> <p> This function is called right after <ref resolved='lfun::__INIT'>lfun::__INIT()</ref>.</p> <p> <ref resolved='lfun::create.args'>args</ref> will be the arguments passed when the program was called.</p> </text><group><note/><text><p>In Pike 7.2 and later this function can be created implicitly by the compiler using the new syntax:</p> <code><text><p>class Foo(int foo) { int bar; }</p> </text></code><p>In the above case an implicit <ref resolved='lfun::create'>lfun::create()</ref> will be created, and it will be equvivalent to:</p> <code><text><p>class Foo { int foo; int bar; static void create(int foo) { local::foo = foo; } }</p> </text></code> </text></group><group><seealso/><text><p><ref resolved='lfun::__INIT'>lfun::__INIT()</ref>, <ref resolved='lfun::destroy'>lfun::destroy()</ref></p> </text></group></doc> <method name='create'> <arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Object destruction callback.</p> <p> This function is called by <ref resolved='predef::destruct'>predef::destruct()</ref> right before it will zero all the object variables, and destroy the object.</p> </text><group><note/><text><p>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.</p> </text></group><group><seealso/><text><p><ref resolved='lfun::create'>lfun::create()</ref>, <ref resolved='predef::destruct'>predef::destruct()</ref></p> </text></group></doc> <method name='destroy'> <arguments/> <returntype><void/></returntype> </method> </docgroup> </namespace>
3b21982003-04-01Martin Nilsson <namespace name='predef'>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='UNDEFINED' homogen-type='constant'><doc><text><p>The undefined value; ie a zero for which <ref resolved='predef::zero_type'>zero_type()</ref> returns 1.</p> </text></doc> <constant name='UNDEFINED'/> </docgroup>
9810c52003-04-10Martin Nilsson <docgroup homogen-name='__empty_program' homogen-type='method'> <method name='__empty_program'> <arguments><argument name='line'><type><or><int/><void/></or></type></argument><argument name='file'><type><or><string/><void/></or></type></argument></arguments> <returntype><program/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='__parse_pike_type' homogen-type='method'> <method name='__parse_pike_type'> <arguments><argument name='t'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
68af022001-11-02Martin Stjernholm <docgroup homogen-name='_disable_threads' homogen-type='method'><doc><text><p>This function first posts a notice to all threads that it is time to stop. It then waits until all threads actually *have* stopped, and then then returns a lock object. All other threads will be blocked from running until that object has been freed/destroyed.</p> <p> It's mainly useful to do things that require a temporary uid/gid change, since on many OS the effective user and group applies to all threads.</p> </text><group><note/><text><p>You should make sure that the returned object is freed even if some kind of error is thrown. That means in practice that it should only have references (direct or indirect) from function local variables. Also, it shouldn't be referenced from cyclic memory structures, since those are only destructed by the periodic gc. (This advice applies to mutex locks in general, for that matter.)</p>
05bb312001-02-06Henrik Grubbström (Grubba) </text></group></doc> <method name='_disable_threads'> <arguments/> <returntype><object resolved='predef::_disable_threads'>_disable_threads</object></returntype> </method> </docgroup>
87e0472001-03-12Fredrik Hübinette (Hubbe) <docgroup homogen-name='_do_call_outs' homogen-type='method'><doc><text><p>Do all pending call_outs.</p> <p> This function runs all pending call_outs that should have been run if Pike returned to the backend. It should not be used in normal operation.</p> <p> As a side-effect, this function sets the value returned by
5bfef52003-04-01Martin Nilsson  <ref resolved='predef::time'>time(1)</ref> to the current time.</p>
87e0472001-03-12Fredrik Hübinette (Hubbe) </text><group><seealso/><text><p><ref resolved='predef::call_out'>call_out()</ref>, <ref resolved='predef::find_call_out'>find_call_out()</ref>, <ref resolved='predef::remove_call_out'>remove_call_out()</ref></p> </text></group></doc> <method name='_do_call_outs'> <arguments/> <returntype><void/></returntype> </method>
c3eeb11996-12-15Fredrik Hübinette (Hubbe) </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='_exit' homogen-type='method'><doc><text><p>This function does the same as <ref resolved='predef::exit'>exit</ref>, but doesn't bother to clean up the Pike interpreter before exiting. This means that no destructors will be called, caches will not be flushed, file locks might not be released, and databases might not be closed properly.</p> <p> Use with extreme caution.</p> </text><group><seealso/><text><p><ref resolved='predef::exit'>exit()</ref></p> </text></group></doc> <method name='_exit'> <arguments><argument name='returncode'><type><int/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='_next' homogen-type='method'><doc><text><p>Find the next object/array/mapping/multiset/program or string.</p> <p> All objects, arrays, mappings, multisets, programs and strings are stored in linked lists inside Pike. This function returns the next item on the corresponding list. It is mainly meant for debugging the Pike runtime, but can also be used to control memory usage.</p> </text><group><seealso/><text><p><ref resolved='predef::next_object'>next_object()</ref>, <ref resolved='predef::_prev'>_prev()</ref></p> </text></group></doc> <method name='_next'> <arguments><argument name='x'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='_prev' homogen-type='method'><doc><text><p>Find the previous object/array/mapping/multiset or program.</p> <p> All objects, arrays, mappings, multisets and programs are stored in linked lists inside Pike. This function returns the previous item on the corresponding list. It is mainly meant for debugging the Pike runtime, but can also be used to control memory usage.</p> </text><group><note/><text><p>Unlike <ref resolved='predef::_next'>_next()</ref> this function does not work on strings.</p> </text></group><group><seealso/><text><p><ref resolved='predef::next_object'>next_object()</ref>, <ref resolved='predef::_next'>_next()</ref></p> </text></group></doc> <method name='_prev'> <arguments><argument name='x'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='_refs' homogen-type='method'><doc><text><p>Return the number of references <ref resolved='predef::_refs.o'>o</ref> has.</p> <p> It is mainly meant for debugging the Pike runtime, but can also be used to control memory usage.</p> </text><group><note/><text><p>Note that the number of references will always be at least one since the value is located on the stack when this function is executed.</p> </text></group><group><seealso/><text><p><ref resolved='predef::_next'>_next()</ref>, <ref resolved='predef::_prev'>_prev()</ref></p> </text></group></doc> <method name='_refs'> <arguments><argument name='o'><type><or><string/><array/><mapping/><multiset/><function/><object resolved='predef::_refs'/><program/></or></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='_typeof' homogen-type='method'><doc><text><p>Return the runtime type of <ref resolved='predef::_typeof.x'>x</ref>.</p> </text><group><seealso/><text><p><ref>typeof()</ref></p> </text></group></doc> <method name='_typeof'> <arguments><argument name='x'><type><mixed/></type></argument></arguments> <returntype><type><mixed/></type></returntype> </method> </docgroup> <docgroup homogen-name='`!' homogen-type='method'><doc><text><p>Negation operator.</p> </text><group><returns/><text><p>If <ref resolved='predef::`!.arg'>arg</ref> is an object that implements <ref resolved='lfun::`!'>lfun::`!()</ref>, that function will be called.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::`!.arg'>arg</ref> is <expr>0</expr> (zero), a destructed object, or a function in a destructed object, <expr>1</expr> will be returned.</p> <p> Otherwise <expr>0</expr> (zero) will be returned.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::`=='>`==()</ref>, <ref resolved='predef::`!='>`!=()</ref>, <ref resolved='lfun::`!'>lfun::`!()</ref></p> </text></group></doc> <method name='`!'> <arguments><argument name='arg'><type><or><object resolved='predef::`!'/><function/></or></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> <method name='`!'> <arguments><argument name='arg'><type><int><min>0</min><max>0</max></int></type></argument></arguments> <returntype><int><min>1</min><max>1</max></int></returntype> </method> <method name='`!'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int><min>0</min><max>0</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`!=' homogen-type='method'><doc><text><p>Inequality operator.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>0</expr> (zero) if all the arguments are equal, and <expr>1</expr> otherwise.</p>
5bfef52003-04-01Martin Nilsson <p> This is the inverse of <ref resolved='predef::`=='>`==()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`=='>`==()</ref></p> </text></group></doc> <method name='`!='> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`%' homogen-type='method'><doc><text><p>Modulo operator.</p> </text><group><returns/><text><p>If <ref resolved='predef::`%.arg1'>arg1</ref> is an object that implements <ref resolved='lfun::`%'>lfun::`%()</ref> then that function will be called with <ref resolved='predef::`%.arg2'>arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`%.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``%'>lfun::``%()</ref> then that function will be called with <ref resolved='predef::`%.arg2'>arg2</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><or><string/><array/></or></type><text><p>If <ref resolved='predef::`%.arg2'>arg2</ref> is positive, the result will be the last <expr>`%(<ref resolved='predef::sizeof'>sizeof</ref>(<ref resolved='predef::`%.arg1'>arg1</ref>), <ref resolved='predef::`%.arg2'>arg2</ref>)</expr> elements of <ref resolved='predef::`%.arg1'>arg1</ref>. If <ref resolved='predef::`%.arg2'>arg2</ref> is negative, the result will be the first <expr>`%(<ref resolved='predef::sizeof'>sizeof</ref>(<ref resolved='predef::`%.arg1'>arg1</ref>), -<ref resolved='predef::`%.arg2'>arg2</ref>)</expr> elements of <ref resolved='predef::`%.arg1'>arg1</ref>.</p> </text></group><group><type><or><int/><float/></or></type><text><p>The result will be <expr><ref resolved='predef::`%.arg1'>arg1</ref> - <ref resolved='predef::`%.arg2'>arg2</ref>*<ref resolved='predef::floor'>floor</ref>(<ref resolved='predef::`%.arg1'>arg1</ref>/<ref resolved='predef::`%.arg2'>arg2</ref>)</expr>. The result will be a float if either <ref resolved='predef::`%.arg1'>arg1</ref> or <ref resolved='predef::`%.arg2'>arg2</ref> is a float, and an int otherwise.</p> </text></group></mixed><p>For numbers, this means that</p> <ol><group><item/><text><p>a % b always has the same sign as b (typically b is positive; array size, rsa modulo, etc, and a varies a lot more than b).</p> </text></group><group><item/><text><p>The function f(x) = x % n behaves in a sane way; as x increases, f(x) cycles through the values 0,1, ..., n-1, 0, .... Nothing strange happens when you cross zero.</p> </text></group><group><item/><text><p>The % operator implements the binary "mod" operation, as defined by Donald Knuth (see the Art of Computer Programming, 1.2.4). It should be noted that Pike treats %-by-0 as an error rather than returning 0, though.</p> </text></group><group><item/><text><p>/ and % are compatible, so that a = b*(a/b) + a%b for all a and b.</p> </text></group></ol></text></group><group><seealso/><text><p><ref resolved='predef::`/'>`/</ref></p> </text></group></doc> <method name='`%'> <arguments><argument name='arg1'><type><object resolved='predef::`%'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`%'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`%'/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`%'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`%'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`%'> <arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><float/><int/></or></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`%'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`%'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='`&amp;' homogen-type='method'>&amp;<doc><text><p>Bitwise and/intersection operator.</p> </text><group><returns/><text><p>If there's a single argument, that argument will be returned.</p> <p> If there are more than two arguments, the result will be: <expr>`&amp;(`&amp;(<ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref>, <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref>), @<ref resolved='predef::`&amp;.extras'>&amp;extras</ref>)</expr>.</p> <p> If <ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref> is an object that has an <ref resolved='lfun::`&amp;'>&amp;lfun::`&amp;()</ref>, that function will be called with <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref> is an object that has an <ref resolved='lfun::``&amp;'>&amp;lfun::``&amp;()</ref>, that function will be called with <ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><int/></type><text><p>The result will be the bitwise and of <ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref> and <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref>.</p> </text></group><group><type><or><array/><multiset/><mapping/></or></type><text><p>The result will be the elements of <ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref> and <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref> that occurr in both.</p> </text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>The result will be the type intersection of <ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref> and <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref>.</p> </text></group><group><type><string/></type><text><p>The result will be the string where the elements of <ref resolved='predef::`&amp;.arg1'>&amp;arg1</ref> and <ref resolved='predef::`&amp;.arg2'>&amp;arg2</ref> have been pairwise bitwise anded.</p> </text></group></mixed> </text></group><group><seealso/><text><p><ref resolved='predef::`|'>`|()</ref>, <ref resolved='lfun::`&amp;'>&amp;lfun::`&amp;()</ref>, <ref resolved='lfun::``&amp;'>&amp;lfun::``&amp;()</ref></p> </text></group></doc> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><object resolved='predef::`&amp;'/>&amp;</type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`&amp;'/>&amp;</type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><multiset/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><or><type><mixed/></type><program/></or></type></argument><argument name='arg2'><type><or><type><mixed/></type><program/></or></type></argument></arguments> <returntype><type><mixed/></type></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`&amp;'>&amp; <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`*' homogen-type='method'><doc><text><p>Multiplication operator.</p> </text><group><returns/><text><p>If there's only a single argument, that argument will be returned.</p> <p> If the first argument is an object that implements <ref resolved='lfun::`*'>lfun::`*()</ref>, that function will be called with the rest of the arguments.</p> <p> If there are more than two arguments, the result will be <expr>`*(`*(<ref resolved='predef::`*.arg1'>arg1</ref>, <ref resolved='predef::`*.arg2'>arg2</ref>), @<ref resolved='predef::`*.extras'>extras</ref>)</expr>.</p> <p> If <ref resolved='predef::`*.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``*'>lfun::``*()</ref>, that function will be called with <ref resolved='predef::`*.arg1'>arg1</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><array/></type><text><mixed name='arg2'><group><type><or><int/><float/></or></type><text><p>The result will be <ref resolved='predef::`*.arg1'>arg1</ref> concatenated <ref resolved='predef::`*.arg2'>arg2</ref> times.</p> </text></group><group><type><or><string/><array/></or></type><text><p>The result will be the elements of <ref resolved='predef::`*.arg1'>arg1</ref> concatenated with <ref resolved='predef::`*.arg2'>arg2</ref> interspersed.</p> </text></group></mixed></text></group><group><type><string/></type><text><p>The result will be <ref resolved='predef::`*.arg1'>arg1</ref> concatenated <ref resolved='predef::`*.arg2'>arg2</ref> times.</p> </text></group><group><type><or><int/><float/></or></type><text><p>The result will be <expr><ref resolved='predef::`*.arg1'>arg1</ref> * <ref resolved='predef::`*.arg2'>arg2</ref></expr>, and will be a float if either <ref resolved='predef::`*.arg1'>arg1</ref> or <ref resolved='predef::`*.arg2'>arg2</ref> is a float.</p> </text></group></mixed> </text></group><group><note/><text><p>In Pike 7.0 and earlier the multiplication order was unspecified.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`+'>`+()</ref>, <ref resolved='predef::`-'>`-()</ref>, <ref resolved='predef::`/'>`/()</ref>, <ref resolved='lfun::`*'>lfun::`*()</ref>, <ref resolved='lfun::``*'>lfun::``*()</ref></p> </text></group></doc> <method name='`*'> <arguments><argument name='arg1'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><object resolved='predef::`*'/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`*'/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><array><valuetype><array/></valuetype></array></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`*'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Addition operator.</p> </text><group><returns/><text><p>If there's only a single argument, that argument will be returned.</p>
5f589b2003-04-18Martin Stjernholm <p> If <ref resolved='predef::`+.arg1'>arg1</ref> is an object with only one reference and an <ref resolved='lfun::`+='>lfun::`+=()</ref>, that function will be called with the rest of the arguments, and its result is returned.</p> <p> Otherwise, if <ref resolved='predef::`+.arg1'>arg1</ref> is an object with an <ref resolved='lfun::`+'>lfun::`+()</ref>, that function will be called with the rest of the arguments, and its result is returned.</p>
5bfef52003-04-01Martin Nilsson <p> Otherwise if any of the other arguments is an object that has an <ref resolved='lfun::``+'>lfun::``+()</ref> the first such function will be called
5f589b2003-04-18Martin Stjernholm  with the arguments leading up to it, and <ref resolved='predef::`+'>`+()</ref> is then called recursively with the result and the rest of the arguments.</p>
5bfef52003-04-01Martin Nilsson <p> If there are two arguments the result will be:</p> <mixed name='arg1'><group><type><string/></type><text><p><ref resolved='predef::`+.arg2'>arg2</ref> will be converted to a string, and the result the strings concatenated.</p> </text></group><group><type><or><int/><float/></or></type><text><mixed name='arg2'><group><type><string/></type><text><p><ref resolved='predef::`+.arg1'>arg1</ref> will be converted to string, and the result the strings concatenated.</p> </text></group><group><type><or><int/><float/></or></type><text><p>The result will be <expr><ref resolved='predef::`+.arg1'>arg1</ref> + <ref resolved='predef::`+.arg2'>arg2</ref></expr>, and will be a float if either <ref resolved='predef::`+.arg1'>arg1</ref> or <ref resolved='predef::`+.arg2'>arg2</ref> is a float.</p> </text></group></mixed></text></group><group><type><array/></type><text><p>The arrays will be concatenated.</p> </text></group><group><type><mapping/></type><text><p>The mappings will be joined.</p> </text></group><group><type><multiset/></type><text><p>The multisets will be added.</p> </text></group></mixed><p>Otherwise if there are more than 2 arguments the result will be: <expr>`+(`+(<ref resolved='predef::`+.arg1'>arg1</ref>, <ref resolved='predef::`+.arg2'>arg2</ref>), @<ref resolved='predef::`+.extras'>extras</ref>)</expr></p> </text></group><group><note/><text><p>In Pike 7.0 and earlier the addition order was unspecified.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::`+.arg1'>arg1</ref> is <expr>UNDEFINED</expr> it will behave as the empty
5bfef52003-04-01Martin Nilsson  array/mapping/multiset if needed. This behaviour was new in Pike 7.0.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`-'>`-()</ref>, <ref resolved='lfun::`+'>lfun::`+()</ref>, <ref resolved='lfun::``+'>lfun::``+()</ref></p> </text></group></doc> <method name='`+'> <arguments><argument name='arg1'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><object resolved='predef::`+'/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><or><string/><int/><float/></or></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><or><int/><float/></or></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><or><int/><float/></or></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><multiset/></returntype> </method> <method name='`+'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Negation/subtraction operator.</p> </text><group><returns/><text><p>If there's only a single argument, that argument will be returned negated. If <ref resolved='predef::`-.arg1'>arg1</ref> was an object, <expr><ref resolved='predef::`-.arg1'>arg1</ref>::`-()</expr> will be called without arguments.</p> <p> If there are more than two arguments the result will be: <expr>`-(`-(<ref resolved='predef::`-.arg1'>arg1</ref>, <ref resolved='predef::`-.arg2'>arg2</ref>), @<ref resolved='predef::`-.extras'>extras</ref>)</expr>.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::`-.arg1'>arg1</ref> is an object that overloads <expr>`-()</expr>, that function will
5bfef52003-04-01Martin Nilsson  be called with <ref resolved='predef::`-.arg2'>arg2</ref> as the single argument.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::`-.arg2'>arg2</ref> is an object that overloads <expr>``-()</expr>, that function will
5bfef52003-04-01Martin Nilsson  be called with <ref resolved='predef::`-.arg1'>arg1</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><mapping/></type><text><mixed name='arg2'><group><type><array/></type><text><p>The result will be <ref resolved='predef::`-.arg1'>arg1</ref> with all occurrances of <ref resolved='predef::`-.arg2'>arg2</ref> removed.</p> </text></group><group><type><or><multiset/><mapping/></or></type><text><p>The result will be <ref resolved='predef::`-.arg1'>arg1</ref> with all occurrences of <expr><ref resolved='predef::indices'>indices</ref>(<ref resolved='predef::`-.arg2'>arg2</ref>)</expr> removed.</p> </text></group></mixed></text></group><group><type><or><array/><multiset/></or></type><text><p>The result will be the elements of <ref resolved='predef::`-.arg1'>arg1</ref> that are not in <ref resolved='predef::`-.arg2'>arg2</ref>.</p> </text></group><group><type><or><float/><int/></or></type><text><p>The result will be <expr><ref resolved='predef::`-.arg1'>arg1</ref> - <ref resolved='predef::`-.arg2'>arg2</ref></expr>, and will be a float if either <ref resolved='predef::`-.arg1'>arg1</ref> or <ref resolved='predef::`-.arg2'>arg2</ref> is a float.</p> </text></group><group><type><string/></type><text><p>Result will be the string <ref resolved='predef::`-.arg1'>arg1</ref> with all occurrances of the substring <ref resolved='predef::`-.arg2'>arg2</ref> removed.</p> </text></group></mixed> </text></group><group><note/><text><p>In Pike 7.0 and earlier the subtraction order was unspecified.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`+'>`+()</ref></p> </text></group></doc> <method name='`-'> <arguments><argument name='arg1'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><object resolved='predef::`-'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><multiset/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`-'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-&gt;' homogen-type='method'>&gt;<doc><text><p>Arrow index operator.</p> <p> This function behaves much like <ref resolved='predef::`[]'>`[]()</ref>, just that the index is always a string.</p> </text><group><returns/><text><p>If <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref> is an object that implements <ref resolved='lfun::`-&gt;'>&gt;lfun::`-&gt;()</ref>, that function will be called with <ref resolved='predef::`-&gt;.index'>&gt;index</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg'><group><type><object resolved='predef::`-&gt;'/>&gt;</type><text><p>The non-static (ie public) symbol named <ref resolved='predef::`-&gt;.index'>&gt;index</ref> will be looked up in <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref>.</p> </text></group><group><type><int/></type><text><p>The bignum function named <ref resolved='predef::`-&gt;.index'>&gt;index</ref> will be looked up in <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref>.</p> </text></group><group><type><array/></type><text><p>An array of all elements in <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref> arrow indexed with <ref resolved='predef::`-&gt;.index'>&gt;index</ref> will be returned.</p> </text></group><group><type><mapping/></type><text><p>If <ref resolved='predef::`-&gt;.index'>&gt;index</ref> exists in <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref> the corresponding value will be
84ea4e2003-04-07Martin Nilsson  returned. Otherwise <expr>UNDEFINED</expr> will be returned.</p> </text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`-&gt;.index'>&gt;index</ref> exists in <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref>, <expr>1</expr> will be returned. Otherwise <expr>UNDEFINED</expr> will be returned.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><type><program/></type><text><p>The non-static (ie public) constant symbol <ref resolved='predef::`-&gt;.index'>&gt;index</ref> will be looked up in <ref resolved='predef::`-&gt;.arg'>&gt;arg</ref>.</p> </text></group></mixed> </text></group><group><seealso/><text><p><ref resolved='predef::`[]'>`[]()</ref>, <ref resolved='lfun::`-&gt;'>&gt;lfun::`-&gt;()</ref>, <ref resolved='::`-&gt;'>&gt;::`-&gt;()</ref></p> </text></group></doc> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><object resolved='predef::`-&gt;'/>&gt;</type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><int/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> <method name='`-&gt;'>&gt; <arguments><argument name='arg'><type><program/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`-&gt;=' homogen-type='method'>&gt;<doc><text><p>Arrow assign operator.</p> <p> This function behaves much like <ref resolved='predef::`[]='>`[]=()</ref>, just that the index is always a string.</p> <p> If <ref resolved='predef::`-&gt;=.arg'>&gt;arg</ref> is an object that implements <ref resolved='lfun::`-&gt;='>&gt;lfun::`-&gt;=()</ref>, that function will be called with <ref resolved='predef::`-&gt;=.index'>&gt;index</ref> and <ref resolved='predef::`-&gt;=.val'>&gt;val</ref> as the arguments.</p> <mixed name='arg'><group><type><object resolved='predef::`-&gt;='/>&gt;</type><text><p>The non-static (ie public) variable named <ref resolved='predef::`-&gt;=.index'>&gt;index</ref> will be looked up in <ref resolved='predef::`-&gt;=.arg'>&gt;arg</ref>, and assigned <ref resolved='predef::`-&gt;=.val'>&gt;val</ref>.</p> </text></group><group><type><or><array/><mapping/></or></type><text><p>Index <ref resolved='predef::`-&gt;=.index'>&gt;index</ref> in <ref resolved='predef::`-&gt;=.arg'>&gt;arg</ref> will be assigned <ref resolved='predef::`-&gt;=.val'>&gt;val</ref>.</p>
84ea4e2003-04-07Martin Nilsson </text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`-&gt;=.val'>&gt;val</ref> is <expr>0</expr> (zero), one occurrance of <ref resolved='predef::`-&gt;=.index'>&gt;index</ref> in
5bfef52003-04-01Martin Nilsson  <ref resolved='predef::`-&gt;=.arg'>&gt;arg</ref> will be removed. Otherwise <ref resolved='predef::`-&gt;=.index'>&gt;index</ref> will be added to <ref resolved='predef::`-&gt;=.arg'>&gt;arg</ref> if it is not already there.</p> </text></group></mixed> </text><group><returns/><text><p><ref resolved='predef::`-&gt;=.val'>&gt;val</ref> will be returned.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`[]='>`[]=()</ref>, <ref resolved='lfun::`-&gt;='>&gt;lfun::`-&gt;=()</ref></p> </text></group></doc> <method name='`-&gt;='>&gt; <arguments><argument name='arg'><type><object resolved='predef::`-&gt;='/>&gt;</type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-&gt;='>&gt; <arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`-&gt;='>&gt; <arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><int><min>0</min><max>1</max></int></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`/' homogen-type='method'><doc><text><p>Division operator.</p> </text><group><returns/><text><p>If there are more than two arguments, the result will be <expr>`/(`/(<ref resolved='predef::`/.arg1'>arg1</ref>, <ref resolved='predef::`/.arg2'>arg2</ref>), @<ref resolved='predef::`/.extras'>extras</ref>)</expr>.</p> <p> If <ref resolved='predef::`/.arg1'>arg1</ref> is an object that implements <ref resolved='lfun::`/'>lfun::`/()</ref>, that function will be called with <ref resolved='predef::`/.arg2'>arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`/.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``/'>lfun::``/()</ref>, that function will be called with <ref resolved='predef::`/.arg1'>arg1</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><string/></type><text><mixed name='arg2'><group><type><or><int/><float/></or></type><text><p>The result will be and array of <ref resolved='predef::`/.arg1'>arg1</ref> split in segments of length <ref resolved='predef::`/.arg2'>arg2</ref>. If <ref resolved='predef::`/.arg2'>arg2</ref> is negative the splitting will start from the end of <ref resolved='predef::`/.arg1'>arg1</ref>.</p> </text></group><group><type><string/></type><text><p>The result will be an array of <ref resolved='predef::`/.arg1'>arg1</ref> split at each occurrence of <ref resolved='predef::`/.arg2'>arg2</ref>. Note that the segments that matched against <ref resolved='predef::`/.arg2'>arg2</ref> will not be in the result.</p> </text></group></mixed></text></group><group><type><array/></type><text><mixed name='arg2'><group><type><or><int/><float/></or></type><text><p>The result will be and array of <ref resolved='predef::`/.arg1'>arg1</ref> split in segments of length <ref resolved='predef::`/.arg2'>arg2</ref>. If <ref resolved='predef::`/.arg2'>arg2</ref> is negative the splitting will start from the end of <ref resolved='predef::`/.arg1'>arg1</ref>.</p> </text></group><group><type><array/></type><text><p>The result will be an array of <ref resolved='predef::`/.arg1'>arg1</ref> split at each occurrence of <ref resolved='predef::`/.arg2'>arg2</ref>. Note that the elements that matched against <ref resolved='predef::`/.arg2'>arg2</ref> will not be in the result.</p> </text></group></mixed></text></group><group><type><or><float/><int/></or></type><text><p>The result will be <expr><ref resolved='predef::`/.arg1'>arg1</ref> / <ref resolved='predef::`/.arg2'>arg2</ref></expr>. If both arguments are int, the result will be truncated to an int. Otherwise the result will be a float.</p> </text></group></mixed></text></group><group><note/><text><p>Unlike in some languages, the function f(x) = x/n (x and n integers) behaves in a well-defined way and is always rounded down. When you increase x, f(x) will increase with one for each n:th increment. For all x, (x + n) / n = x/n + 1; crossing zero is not special. This also means that / and % are compatible, so that a = b*(a/b) + a%b for all a and b.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`%'>`%</ref></p> </text></group></doc> <method name='`/'> <arguments><argument name='arg1'><type><object resolved='predef::`/'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`/'/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><array><valuetype><array/></valuetype></array></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><array><valuetype><array/></valuetype></array></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array><valuetype><array/></valuetype></array></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`/'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`&lt;' homogen-type='method'>&lt;<doc><text><p>Less than operator.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are strictly increasing, and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::`&lt;='>&lt;`&lt;=()</ref>, <ref resolved='predef::`&gt;'>&gt;`&gt;()</ref>, <ref resolved='predef::`&gt;='>&gt;`&gt;=()</ref></p> </text></group></doc> <method name='`&lt;'>&lt; <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&lt;&lt;' homogen-type='method'>&lt;&lt;<doc><text><p>Left shift operator.</p> <p> If <ref resolved='predef::`&lt;&lt;.arg1'>&lt;&lt;arg1</ref> is an object that implements <ref resolved='lfun::`&lt;&lt;'>&lt;&lt;lfun::`&lt;&lt;()</ref>, that function will be called with <ref resolved='predef::`&lt;&lt;.arg2'>&lt;&lt;arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`&lt;&lt;.arg2'>&lt;&lt;arg2</ref> is an object that implements <ref resolved='lfun::``&lt;&lt;'>&lt;&lt;lfun::``&lt;&lt;()</ref>, that function will be called with <ref resolved='predef::`&lt;&lt;.arg1'>&lt;&lt;arg1</ref> as the single argument.</p> <p> Otherwise <ref resolved='predef::`&lt;&lt;.arg1'>&lt;&lt;arg1</ref> will be shifted <ref resolved='predef::`&lt;&lt;.arg2'>&lt;&lt;arg2</ref> bits left.</p> </text><group><seealso/><text><p><ref resolved='predef::`&gt;&gt;'>&gt;&gt;`&gt;&gt;()</ref></p> </text></group></doc> <method name='`&lt;&lt;'>&lt;&lt; <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`&lt;&lt;'>&lt;&lt; <arguments><argument name='arg1'><type><object resolved='predef::`&lt;&lt;'/>&lt;&lt;</type></argument><argument name='arg2'><type><or><int/><object resolved='predef::`&lt;&lt;'/>&lt;&lt;</or></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`&lt;&lt;'>&lt;&lt; <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><object resolved='predef::`&lt;&lt;'/>&lt;&lt;</type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`&lt;=' homogen-type='method'>&lt;<doc><text><p>Less or equal operator.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are not strictly decreasing, and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson <p> This is the inverse of <ref resolved='predef::`&gt;'>&gt;`&gt;()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`&lt;'>&lt;`&lt;()</ref>, <ref resolved='predef::`&gt;'>&gt;`&gt;()</ref>, <ref resolved='predef::`&gt;='>&gt;`&gt;=()</ref></p> </text></group></doc> <method name='`&lt;='>&lt; <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`==' homogen-type='method'><doc><text><p>Equality operator.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>1</expr> if all the arguments are equal, and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::`!='>`!=()</ref></p> </text></group></doc> <method name='`=='> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&gt;' homogen-type='method'>&gt;<doc><text><p>Greater than operator.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are strictly decreasing, and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::`&lt;'>&lt;`&lt;()</ref>, <ref resolved='predef::`&lt;='>&lt;`&lt;=()</ref>, <ref resolved='predef::`&gt;='>&gt;`&gt;=()</ref></p> </text></group></doc> <method name='`&gt;'>&gt; <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&gt;=' homogen-type='method'>&gt;<doc><text><p>Greater or equal operator.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are not strictly increasing, and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson <p> This is the inverse of <ref resolved='predef::`&lt;'>&lt;`&lt;()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`&lt;='>&lt;`&lt;=()</ref>, <ref resolved='predef::`&gt;'>&gt;`&gt;()</ref>, <ref resolved='predef::`&lt;'>&lt;`&lt;()</ref></p> </text></group></doc> <method name='`&gt;='>&gt; <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`&gt;&gt;' homogen-type='method'>&gt;&gt;<doc><text><p>Right shift operator.</p> <p> If <ref resolved='predef::`&gt;&gt;.arg1'>&gt;&gt;arg1</ref> is an object that implements <ref resolved='lfun::`&gt;&gt;'>&gt;&gt;lfun::`&gt;&gt;()</ref>, that function will be called with <ref resolved='predef::`&gt;&gt;.arg2'>&gt;&gt;arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`&gt;&gt;.arg2'>&gt;&gt;arg2</ref> is an object that implements <ref resolved='lfun::``&gt;&gt;'>&gt;&gt;lfun::``&gt;&gt;()</ref>, that function will be called with <ref resolved='predef::`&gt;&gt;.arg1'>&gt;&gt;arg1</ref> as the single argument.</p> <p> Otherwise <ref resolved='predef::`&gt;&gt;.arg1'>&gt;&gt;arg1</ref> will be shifted <ref resolved='predef::`&gt;&gt;.arg2'>&gt;&gt;arg2</ref> bits right.</p> </text><group><seealso/><text><p><ref resolved='predef::`&lt;&lt;'>&lt;&lt;`&lt;&lt;()</ref></p> </text></group></doc> <method name='`&gt;&gt;'>&gt;&gt; <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`&gt;&gt;'>&gt;&gt; <arguments><argument name='arg1'><type><object resolved='predef::`&gt;&gt;'/>&gt;&gt;</type></argument><argument name='arg2'><type><or><int/><object resolved='predef::`&gt;&gt;'/>&gt;&gt;</or></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`&gt;&gt;'>&gt;&gt; <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><object resolved='predef::`&gt;&gt;'/>&gt;&gt;</type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Index and range operator.</p> </text><group><returns/><text><p>If <ref resolved='predef::`[].arg'>arg</ref> is an object that implements <ref resolved='lfun::`[]'>lfun::`[]()</ref>, that function will be called with the rest of the arguments.</p> <p> If there are 2 arguments the result will be as follows:</p> <mixed name='arg'><group><type><object resolved='predef::`[]'/></type><text><p>The non-static (ie public) symbol named <ref resolved='predef::`[].index'>index</ref> will be looked up in <ref resolved='predef::`[].arg'>arg</ref>.</p> </text></group><group><type><int/></type><text><p>The bignum function named <ref resolved='predef::`[].index'>index</ref> will be looked up in <ref resolved='predef::`[].arg'>arg</ref>.</p> </text></group><group><type><array/></type><text><p>If <ref resolved='predef::`[].index'>index</ref> is an int, index number <ref resolved='predef::`[].index'>index</ref> of <ref resolved='predef::`[].arg'>arg</ref> will be returned. Otherwise an array of all elements in <ref resolved='predef::`[].arg'>arg</ref> indexed with <ref resolved='predef::`[].index'>index</ref> will be returned.</p> </text></group><group><type><mapping/></type><text><p>If <ref resolved='predef::`[].index'>index</ref> exists in <ref resolved='predef::`[].arg'>arg</ref> the corresponding value will be
84ea4e2003-04-07Martin Nilsson  returned. Otherwise <expr>UNDEFINED</expr> will be returned.</p> </text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`[].index'>index</ref> exists in <ref resolved='predef::`[].arg'>arg</ref>, <expr>1</expr> will be returned. Otherwise <expr>UNDEFINED</expr> will be returned.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><type><string/></type><text><p>The character (int) at index <ref resolved='predef::`[].index'>index</ref> in <ref resolved='predef::`[].arg'>arg</ref> will be returned.</p> </text></group><group><type><program/></type><text><p>The non-static (ie public) constant symbol <ref resolved='predef::`[].index'>index</ref> will be looked up in <ref resolved='predef::`[].arg'>arg</ref>.</p> </text></group></mixed><p>Otherwise if there are 3 arguments the result will be as follows:</p> <mixed name='arg'><group><type><string/></type><text><p>A string with the characters between <ref resolved='predef::`[].start'>start</ref> and <ref resolved='predef::`[].end'>end</ref> (inclusive) in <ref resolved='predef::`[].arg'>arg</ref> will be returned.</p> </text></group><group><type><array/></type><text><p>An array with the elements between <ref resolved='predef::`[].start'>start</ref> and <ref resolved='predef::`[].end'>end</ref> (inclusive) in <ref resolved='predef::`[].arg'>arg</ref> will be returned.</p> </text></group></mixed> </text></group><group><seealso/><text><p><ref resolved='predef::`-&gt;'>&gt;`-&gt;()</ref>, <ref resolved='lfun::`[]'>lfun::`[]()</ref></p> </text></group></doc> <method name='`[]'> <arguments><argument name='arg'><type><object resolved='predef::`[]'/></type></argument><argument name='index'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><object resolved='predef::`[]'/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><int/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><int/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><mixed/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><string/></type></argument><argument name='index'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><program/></type></argument><argument name='index'><type><string/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><object resolved='predef::`[]'/></type></argument><argument name='start'><type><mixed/></type></argument><argument name='end'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><string/></type></argument><argument name='start'><type><int/></type></argument><argument name='end'><type><int/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`[]'> <arguments><argument name='arg'><type><array/></type></argument><argument name='start'><type><int/></type></argument><argument name='end'><type><int/></type></argument></arguments> <returntype><array/></returntype> </method> </docgroup> <docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Index assign operator.</p> <p> If <ref resolved='predef::`[]=.arg'>arg</ref> is an object that implements <ref resolved='lfun::`[]='>lfun::`[]=()</ref>, that function will be called with <ref resolved='predef::`[]=.index'>index</ref> and <ref resolved='predef::`[]=.val'>val</ref> as the arguments.</p> <mixed name='arg'><group><type><object resolved='predef::`[]='/></type><text><p>The non-static (ie public) variable named <ref resolved='predef::`[]=.index'>index</ref> will be looked up in <ref resolved='predef::`[]=.arg'>arg</ref>, and assigned <ref resolved='predef::`[]=.val'>val</ref>.</p> </text></group><group><type><or><array/><mapping/></or></type><text><p>Index <ref resolved='predef::`[]=.index'>index</ref> in <ref resolved='predef::`[]=.arg'>arg</ref> will be assigned <ref resolved='predef::`[]=.val'>val</ref>.</p>
84ea4e2003-04-07Martin Nilsson </text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`[]=.val'>val</ref> is <expr>0</expr> (zero), one occurrance of <ref resolved='predef::`[]=.index'>index</ref> in
5bfef52003-04-01Martin Nilsson  <ref resolved='predef::`[]=.arg'>arg</ref> will be removed. Otherwise <ref resolved='predef::`[]=.index'>index</ref> will be added to <ref resolved='predef::`[]=.arg'>arg</ref> if it is not already there.</p> </text></group></mixed> </text><group><returns/><text><p><ref resolved='predef::`[]=.val'>val</ref> will be returned.</p> </text></group><group><seealso/><text><p><ref resolved='predef::`-&gt;='>&gt;`-&gt;=()</ref>, <ref resolved='lfun::`[]='>lfun::`[]=()</ref></p> </text></group></doc> <method name='`[]='> <arguments><argument name='arg'><type><object resolved='predef::`[]='/></type></argument><argument name='index'><type><mixed/></type></argument><argument name='val'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]='> <arguments><argument name='arg'><type><object resolved='predef::`[]='/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]='> <arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><int/></type></argument><argument name='val'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]='> <arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><mixed/></type></argument><argument name='val'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`[]='> <arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><mixed/></type></argument><argument name='val'><type><int><min>0</min><max>1</max></int></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='`^' homogen-type='method'><doc><text><p>Exclusive or operator.</p> </text><group><returns/><text><p>If there's a single argument, that argument will be returned.</p> <p> If there are more than two arguments, the result will be: <expr>`^(`^(<ref resolved='predef::`^.arg1'>arg1</ref>, <ref resolved='predef::`^.arg2'>arg2</ref>), @<ref resolved='predef::`^.extras'>extras</ref>)</expr>.</p> <p> If <ref resolved='predef::`^.arg1'>arg1</ref> is an object that has an <ref resolved='lfun::`^'>lfun::`^()</ref>, that function will be called with <ref resolved='predef::`^.arg2'>arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`^.arg2'>arg2</ref> is an object that has an <ref resolved='lfun::``^'>lfun::``^()</ref>, that function will be called with <ref resolved='predef::`^.arg1'>arg1</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><int/></type><text><p>The result will be the bitwise xor of <ref resolved='predef::`^.arg1'>arg1</ref> and <ref resolved='predef::`^.arg2'>arg2</ref>.</p> </text></group><group><type><or><mapping/><multiset/><array/></or></type><text><p>The result will be the elements of <ref resolved='predef::`^.arg1'>arg1</ref> and <ref resolved='predef::`^.arg2'>arg2</ref> that only occurr in one of them.</p> </text></group><group><type><string/></type><text><p>The result will be the pairwise bitwise xor of <ref resolved='predef::`^.arg1'>arg1</ref> and <ref resolved='predef::`^.arg2'>arg2</ref>.</p> </text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>The result will be the result of <expr>(<ref resolved='predef::`^.arg1'>arg1</ref>&amp;~<ref resolved='predef::`^.arg2'>arg2</ref>)|(~<ref resolved='predef::`^.arg1'>arg1</ref>&amp;<ref resolved='predef::`^.arg2'>arg2</ref>)</expr>.</p> </text></group></mixed> </text></group><group><seealso/><text><p><ref resolved='predef::`&amp;'>&amp;`&amp;()</ref>, <ref resolved='predef::`|'>`|()</ref>, <ref resolved='lfun::`^'>lfun::`^()</ref>, <ref resolved='lfun::``^'>lfun::``^()</ref></p> </text></group></doc> <method name='`^'> <arguments><argument name='arg1'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><object resolved='predef::`^'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`^'/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><multiset/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><or><program/><type><mixed/></type></or></type></argument><argument name='arg2'><type><or><program/><type><mixed/></type></or></type></argument></arguments> <returntype><type><mixed/></type></returntype> </method> <method name='`^'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`|' homogen-type='method'><doc><text><p>Bitwise or/join operator.</p> </text><group><returns/><text><p>If there's a single argument, that argument will be returned.</p> <p> If there are more than two arguments, the result will be: <expr>`|(`|(<ref resolved='predef::`|.arg1'>arg1</ref>, <ref resolved='predef::`|.arg2'>arg2</ref>), @<ref resolved='predef::`|.extras'>extras</ref>)</expr>.</p> <p> If <ref resolved='predef::`|.arg1'>arg1</ref> is an object that has an <ref resolved='lfun::`|'>lfun::`|()</ref>, that function will be called with <ref resolved='predef::`|.arg2'>arg2</ref> as the single argument.</p> <p> If <ref resolved='predef::`|.arg2'>arg2</ref> is an object that has an <ref resolved='lfun::``|'>lfun::``|()</ref>, that function will be called with <ref resolved='predef::`|.arg1'>arg1</ref> as the single argument.</p> <p> Otherwise the result will be as follows:</p> <mixed name='arg1'><group><type><int/></type><text><p>The result will be the binary or of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p> </text></group><group><type><or><mapping/><multiset/></or></type><text><p>The result will be the join of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p> </text></group><group><type><array/></type><text><p>The result will be the concatenation of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p> </text></group><group><type><string/></type><text><p>The result will be the pairwise bitwose or of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p> </text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>The result will be the type join of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p> </text></group></mixed> </text></group><group><seealso/><text><p><ref resolved='predef::`&amp;'>&amp;`&amp;()</ref>, <ref resolved='lfun::`|'>lfun::`|()</ref>, <ref resolved='lfun::``|'>lfun::``|()</ref></p> </text></group></doc> <method name='`|'> <arguments><argument name='arg1'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><object resolved='predef::`|'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`|'/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments> <returntype><mapping/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments> <returntype><multiset/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><or><program/><type><mixed/></type></or></type></argument><argument name='arg2'><type><or><program/><type><mixed/></type></or></type></argument></arguments> <returntype><type><mixed/></type></returntype> </method> <method name='`|'> <arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup> <docgroup homogen-name='`~' homogen-type='method'><doc><text><p>Complement operator.</p> </text><group><returns/><text><p>The result will be as follows:</p> <mixed name='arg'><group><type><object resolved='predef::`~'/></type><text><p>If <ref resolved='predef::`~.arg'>arg</ref> implements <ref resolved='lfun::`~'>lfun::`~()</ref>, that function will be called.</p> </text></group><group><type><int/></type><text><p>The bitwise inverse of <ref resolved='predef::`~.arg'>arg</ref> will be returned.</p> </text></group><group><type><float/></type><text><p>The result will be <expr>-1.0 - <ref resolved='predef::`~.arg'>arg</ref></expr>.</p> </text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>The type inverse of <ref resolved='predef::`~.arg'>arg</ref> will be returned.</p> </text></group><group><type><string/></type><text><p>If <ref resolved='predef::`~.arg'>arg</ref> only contains characters in the range 0 - 255 (8-bit), a string containing the corresponding 8-bit inverses will be returned.</p> </text></group></mixed> </text></group><group><seealso/><text><p><ref resolved='predef::`!'>`!()</ref>, <ref resolved='lfun::`~'>lfun::`~()</ref></p> </text></group></doc> <method name='`~'> <arguments><argument name='arg'><type><object resolved='predef::`~'/></type></argument></arguments> <returntype><mixed/></returntype> </method> <method name='`~'> <arguments><argument name='arg'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='`~'> <arguments><argument name='arg'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='`~'> <arguments><argument name='arg'><type><or><type><mixed/></type><program/></or></type></argument></arguments> <returntype><type><mixed/></type></returntype> </method> <method name='`~'> <arguments><argument name='arg'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='abs' homogen-type='method'><doc><text><p>Return the absolute value for <ref resolved='predef::abs.f'>f</ref>. If <ref resolved='predef::abs.f'>f</ref> is an object it must implement <ref resolved='lfun::`&lt;'>&lt;lfun::`&lt;</ref> and unary <ref resolved='lfun::`-'>lfun::`-</ref>.</p>
d5d63b2001-01-30Henrik Grubbström (Grubba) </text></doc> <method name='abs'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> <method name='abs'> <arguments><argument name='f'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method>
5bfef52003-04-01Martin Nilsson <method name='abs'> <arguments><argument name='f'><type><object resolved='predef::abs'/></type></argument></arguments> <returntype><object resolved='predef::abs'/></returntype> </method> </docgroup> <docgroup homogen-name='acos' homogen-type='method'><doc><text><p>Return the arcus cosine value for <ref resolved='predef::acos.f'>f</ref>. The result will be in radians.</p> </text><group><seealso/><text><p><ref resolved='predef::cos'>cos()</ref>, <ref resolved='predef::asin'>asin()</ref></p> </text></group></doc> <method name='acos'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup> <docgroup homogen-name='add_constant' homogen-type='method'><doc><text><p>Add a new predefined constant.</p> <p> This function is often used to add builtin functions. All programs compiled after the <ref resolved='predef::add_constant'>add_constant()</ref> function has been called can access <ref resolved='predef::add_constant.value'>value</ref> by the name <ref resolved='predef::add_constant.name'>name</ref>.</p> <p> If there is a constant called <ref resolved='predef::add_constant.name'>name</ref> already, it will be replaced by by the new definition. This will not affect already compiled programs.</p> <p> Calling <ref resolved='predef::add_constant'>add_constant()</ref> without a value will remove that name from the list of constants. As with replacing, this will not affect already compiled programs.</p> </text><group><seealso/><text><p><ref resolved='predef::all_constants'>all_constants()</ref></p> </text></group></doc> <method name='add_constant'> <arguments><argument name='name'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments> <returntype><void/></returntype> </method> <method name='add_constant'> <arguments><argument name='name'><type><string/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='aggregate' homogen-type='method'><doc><text><p>Construct an array with the arguments as indices.</p> <p> This function could be written in Pike as:</p> <code><text><p>array aggregate(mixed ... elems) { return elems; }</p> </text></code> </text><group><note/><text><p>Arrays are dynamically allocated there is no need to declare them like <expr>int a[10]=allocate(10);</expr> (and it isn't possible either) like in C, just <expr>array(int) a=allocate(10);</expr> will do.</p> </text></group><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::allocate'>allocate()</ref></p> </text></group></doc> <method name='aggregate'> <arguments><argument name='elements'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><array/></returntype> </method> </docgroup> <docgroup homogen-name='aggregate_mapping' homogen-type='method'><doc><text><p>Construct a mapping.</p> <p> Groups the arguments together two and two in key-index pairs and creates a mapping of those pairs. Generally, the mapping literal syntax is handier: <expr>([ key1:val1, key2:val2, ... ])</expr></p> </text><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::mkmapping'>mkmapping()</ref></p> </text></group></doc> <method name='aggregate_mapping'> <arguments><argument name='elems'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mapping/></returntype>
d5d63b2001-01-30Henrik Grubbström (Grubba) </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='aggregate_multiset' homogen-type='method'><doc><text><p>Construct a multiset.</p> <p> Construct a multiset with the arguments as indices. This method is most useful when constructing multisets with <ref resolved='predef::map'>map</ref> or similar; generally, the multiset literal syntax is handier: <expr>(&lt; elem1, elem2, ... &gt;)</expr></p> </text><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::mkmultiset'>mkmultiset()</ref></p>
d5d63b2001-01-30Henrik Grubbström (Grubba) </text></group></doc>
5bfef52003-04-01Martin Nilsson <method name='aggregate_multiset'> <arguments><argument name='elems'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><multiset/></returntype>
d5d63b2001-01-30Henrik Grubbström (Grubba) </method> </docgroup>
fd26b92003-03-13Martin Nilsson <docgroup homogen-name='alarm' homogen-type='method'><doc><text><p>Set an alarm clock for delivery of a signal.</p> <p> <ref resolved='predef::alarm'>alarm()</ref> arranges for a SIGALRM signal to be delivered to the process in <ref resolved='predef::alarm.seconds'>seconds</ref> seconds.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::alarm.seconds'>seconds</ref> is <expr>0</expr> (zero), no new alarm will be scheduled.</p>
fd26b92003-03-13Martin Nilsson <p> Any previous alarms will in any case be canceled.</p> </text><group><returns/><text><p>Returns the number of seconds remaining until any previously scheduled alarm was due to be delivered, or zero if there was no previously scheduled alarm.</p> </text></group><group><note/><text><p>This function is only available on platforms that support signals.</p> </text></group><group><seealso/><text><p><ref resolved='predef::ualarm'>ualarm()</ref>, <ref resolved='predef::signal'>signal()</ref>, <ref resolved='predef::call_out'>call_out()</ref></p> </text></group></doc> <method name='alarm'> <arguments><argument name='seconds'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='all_constants' homogen-type='method'><doc><text><p>Returns a mapping containing all global constants, indexed on the name of the constant, and with the value of the constant as value.</p> </text><group><seealso/><text><p><ref resolved='predef::add_constant'>add_constant()</ref></p> </text></group></doc> <method name='all_constants'> <arguments/> <returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype> </method> </docgroup>
86217f2003-04-28Martin Stjernholm <docgroup homogen-name='allocate' homogen-type='method'><doc><text><p>Allocate an array of <ref resolved='predef::allocate.size'>size</ref> elements. If <ref resolved='predef::allocate.init'>init</ref> is specified then each element is initialized by copying that value recursively.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::aggregate'>aggregate()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref></p> </text></group></doc> <method name='allocate'> <arguments><argument name='size'><type><int/></type></argument></arguments> <returntype><array/></returntype> </method> <method name='allocate'>
86217f2003-04-28Martin Stjernholm <arguments><argument name='size'><type><int/></type></argument><argument name='init'><type><mixed/></type></argument></arguments>
5bfef52003-04-01Martin Nilsson <returntype><array/></returntype> </method> </docgroup>
216eff2003-01-14Johan Sundström <docgroup homogen-name='array_sscanf' homogen-type='method'><doc><text><p>This function works just like <ref resolved='predef::sscanf'>sscanf()</ref>, but returns the matched
960f232001-01-31Henrik Grubbström (Grubba)  results in an array instead of assigning them to lvalues. This is often useful for user-defined sscanf strings.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::sscanf'>sscanf()</ref>, <ref resolved='predef::`/'>`/()</ref></p>
960f232001-01-31Henrik Grubbström (Grubba) </text></group></doc> <method name='array_sscanf'> <arguments><argument name='data'><type><string/></type></argument><argument name='format'><type><string/></type></argument></arguments> <returntype><array/></returntype> </method> </docgroup>
84ea4e2003-04-07Martin Nilsson <docgroup homogen-name='arrayp' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::arrayp.arg'>arg</ref> is an array, <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p> </text></group></doc> <method name='arrayp'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup>
d5d63b2001-01-30Henrik Grubbström (Grubba) <docgroup homogen-name='asin' homogen-type='method'><doc><text><p>Return the arcus sine value for <ref resolved='predef::asin.f'>f</ref>. The result will be in radians.</p> </text><group><seealso/><text><p><ref resolved='predef::sin'>sin()</ref>, <ref resolved='predef::acos'>acos()</ref></p> </text></group></doc> <method name='asin'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson 
d5d63b2001-01-30Henrik Grubbström (Grubba) <docgroup homogen-name='atan' homogen-type='method'><doc><text><p>Returns the arcus tangent value for <ref resolved='predef::atan.f'>f</ref>. The result will be in radians.</p> </text><group><seealso/><text><p><ref resolved='predef::tan'>tan()</ref>, <ref resolved='predef::asin'>asin()</ref>, <ref resolved='predef::acos'>acos()</ref>, <ref resolved='predef::atan2'>atan2()</ref></p> </text></group></doc> <method name='atan'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup> <docgroup homogen-name='atan2' homogen-type='method'><doc><text><p>Returns the arcus tangent value for <ref resolved='predef::atan2.f1'>f1</ref>/<ref resolved='predef::atan2.f2'>f2</ref>, and uses the signs of <ref resolved='predef::atan2.f1'>f1</ref> and <ref resolved='predef::atan2.f2'>f2</ref> to determine the quadrant. The result will be in radians.</p> </text><group><seealso/><text><p><ref resolved='predef::tan'>tan()</ref>, <ref resolved='predef::asin'>asin()</ref>, <ref resolved='predef::acos'>acos()</ref>, <ref resolved='predef::atan'>atan()</ref></p> </text></group></doc> <method name='atan2'> <arguments><argument name='f1'><type><float/></type></argument><argument name='f2'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup>
fd26b92003-03-13Martin Nilsson <docgroup homogen-name='atexit' homogen-type='method'><doc><text><p>This function puts the <ref resolved='predef::atexit.callback'>callback</ref> in a queue of callbacks to call when pike exits.</p> </text><group><note/><text><p>Please note that <ref resolved='predef::atexit'>atexit</ref> callbacks are not called if Pike exits abnormally.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::exit'>exit()</ref>, <ref resolved='predef::_exit'>_exit()</ref></p>
fd26b92003-03-13Martin Nilsson </text></group></doc> <method name='atexit'> <arguments><argument name='callback'><type><function/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='backtrace' homogen-type='method'><doc><text><p>FIXME: This documentation is not up to date!</p> <p> Get a description of the current call stack.</p> <p> The description is returned as an array with one entry for each call frame on the stack.</p> <p> Each entry has this format:</p> <array><group><elem><type><string/></type><index>file</index></elem><text><p>A string with the filename if known, else zero.</p> </text></group><group><elem><type><int/></type><index>line</index></elem><text><p>An integer containing the linenumber if known, else zero.</p> </text></group><group><elem><type><function/></type><index>fun</index></elem><text><p>The function that was called at this level.</p> </text></group><group><elem><type><varargs><or><mixed/><void/></or></varargs></type><index>args</index></elem><text><p>The arguments that the function was called with.</p> </text></group></array><p>The current call frame will be last in the array.</p> </text><group><note/><text><p>Please note that the frame order may be reversed in a later version (than 7.1) of Pike to accommodate for deferred backtraces.</p> <p> Note that the arguments reported in the backtrace are the current values of the variables, and not the ones that were at call-time. This can be used to hide sensitive information from backtraces (eg passwords).</p> </text></group><group><seealso/><text><p><ref>catch()</ref>, <ref resolved='predef::throw'>throw()</ref></p> </text></group></doc> <method name='backtrace'> <arguments/>
9810c52003-04-10Martin Nilsson <returntype><array><valuetype><object resolved='predef::Pike.BacktraceFrame'>Pike.BacktraceFrame</object></valuetype></array></returntype>
5bfef52003-04-01Martin Nilsson </method> </docgroup>
515f022001-07-27Martin Nilsson <docgroup homogen-name='basename' homogen-type='method'><doc><text><p>Returns the last segment of a path.</p> </text><group><seealso/><text><p><ref resolved='predef::dirname'>dirname()</ref>, <ref resolved='predef::explode_path'>explode_path()</ref></p> </text></group></doc> <method name='basename'> <arguments><argument name='x'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='basetype' homogen-type='method'><doc><text><p>Same as sprintf("%t",x);</p> </text><group><seealso/><text><p><ref resolved='predef::sprintf'>sprintf()</ref></p> </text></group></doc> <method name='basetype'> <arguments><argument name='x'><type><mixed/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
47dc822002-12-07Henrik Grubbström (Grubba) <docgroup homogen-name='call_function' homogen-type='method'><doc><text><p>Call a function.</p> </text></doc> <method name='call_function'> <arguments><argument name='fun'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup>
87e0472001-03-12Fredrik Hübinette (Hubbe) <docgroup homogen-name='call_out' homogen-type='method'><doc><text><p>Make a delayed call to a function.</p> <p> <ref resolved='predef::call_out'>call_out()</ref> places a call to the function <ref resolved='predef::call_out.f'>f</ref> with the argument <ref resolved='predef::call_out.args'>args</ref> in a queue to be called in about <ref resolved='predef::call_out.delay'>delay</ref> seconds.</p> </text><group><returns/><text><p>Returns a call_out identifier that identifies this call_out. This value can be sent to eg <ref resolved='predef::find_call_out'>find_call_out()</ref> or <ref resolved='predef::remove_call_out'>remove_call_out()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::remove_call_out'>remove_call_out()</ref>, <ref resolved='predef::find_call_out'>find_call_out()</ref>, <ref resolved='predef::call_out_info'>call_out_info()</ref></p> </text></group></doc> <method name='call_out'> <arguments><argument name='f'><type><function/></type></argument><argument name='delay'><type><or><float/><int/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method>
6130721996-11-01Fredrik Hübinette (Hubbe) </docgroup>
87e0472001-03-12Fredrik Hübinette (Hubbe) <docgroup homogen-name='call_out_info' homogen-type='method'><doc><text><p>Get info about all call_outs.</p> <p> This function returns an array with one entry for each entry in the call out queue. The first in the queue will be at index 0. Each index contains an array that looks like this:</p> <array><group><elem><type><int/></type><index>time_left</index></elem><text><p>Time remaining in seconds until the call_out is to be performed.</p> </text></group><group><elem><type><object resolved='predef::call_out_info'/></type><index>caller</index></elem><text><p>The object that scheduled the call_out.</p> </text></group><group><elem><type><function/></type><index>fun</index></elem><text><p>Function to be called.</p> </text></group><group><elem><type><varargs><mixed/></varargs></type><index>args</index></elem><text><p>Arguments to the function.</p> </text></group></array> </text><group><seealso/><text><p><ref resolved='predef::call_out'>call_out()</ref>, <ref resolved='predef::find_call_out'>find_call_out()</ref>, <ref resolved='predef::remove_call_out'>remove_call_out()</ref></p> </text></group></doc> <method name='call_out_info'> <arguments/> <returntype><array><valuetype><array/></valuetype></array></returntype> </method>
6559661996-11-06Fredrik Hübinette (Hubbe) </docgroup>
84ea4e2003-04-07Martin Nilsson <docgroup homogen-name='callablep' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::callablep.arg'>arg</ref> is a callable, <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::intp'>intp()</ref></p> </text></group></doc> <method name='callablep'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='cd' homogen-type='method'><doc><text><p>Change the current directory for the whole Pike process.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>Returns <expr>1</expr> for success, <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text></group><group><seealso/><text><p><ref resolved='predef::getcwd'>getcwd()</ref></p> </text></group></doc> <method name='cd'> <arguments><argument name='s'><type><string/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup>
d5d63b2001-01-30Henrik Grubbström (Grubba) <docgroup homogen-name='ceil' homogen-type='method'><doc><text><p>Return the closest integer value greater or equal to <ref resolved='predef::ceil.f'>f</ref>.</p>
84ea4e2003-04-07Martin Nilsson </text><group><note/><text><p><ref resolved='predef::ceil'>ceil()</ref> does <b>not</b> return an <expr>int</expr>, merely an integer value stored in a <expr>float</expr>.</p>
d5d63b2001-01-30Henrik Grubbström (Grubba) </text></group><group><seealso/><text><p><ref resolved='predef::floor'>floor()</ref>, <ref resolved='predef::round'>round()</ref></p> </text></group></doc> <method name='ceil'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='column' homogen-type='method'><doc><text><p>Extract a column from a two-dimensional array.</p> <p> This function is exactly equivalent to:</p> <code><text><p>map(<ref resolved='predef::column.data'>data</ref>, lambda(mixed x,mixed y) { return x[y]; }, <ref resolved='predef::column.index'>index</ref>)</p> </text></code><p>Except of course it is a lot shorter and faster. That is, it indices every index in the array data on the value of the argument index and returns an array with the results.</p> </text><group><seealso/><text><p><ref resolved='predef::rows'>rows()</ref></p> </text></group></doc> <method name='column'> <arguments><argument name='data'><type><array/></type></argument><argument name='index'><type><mixed/></type></argument></arguments> <returntype><array/></returntype> </method> </docgroup> <docgroup homogen-type='method'><doc><text><p>Concatenate a relative path to an absolute path and remove any
84ea4e2003-04-07Martin Nilsson  <expr>"//"</expr>, <expr>"/.."</expr> or <expr>"/."</expr> to produce a straightforward absolute path as result.</p>
5bfef52003-04-01Martin Nilsson <p> <ref resolved='predef::combine_path_nt'>combine_path_nt()</ref> concatenates according to NT-filesystem conventions, while <ref resolved='predef::combine_path_unix'>combine_path_unix()</ref> concatenates according to UNIX-style.</p> <p> <ref resolved='predef::combine_path'>combine_path()</ref> is equvivalent to <ref resolved='predef::combine_path_unix'>combine_path_unix()</ref> on UNIX-like operating systems, and equvivalent to <ref resolved='predef::combine_path_nt'>combine_path_nt()</ref> on NT-like operating systems.</p> </text><group><seealso/><text><p><ref resolved='predef::getcwd'>getcwd()</ref>, <ref resolved='predef::Stdio.append_path'>Stdio.append_path()</ref></p> </text></group></doc> <method name='combine_path'> <arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments> <returntype><string/></returntype> </method> <method name='combine_path_unix'> <arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments> <returntype><string/></returntype> </method> <method name='combine_path_nt'> <arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='compile' homogen-type='method'><doc><text><p>Compile a string to a program.</p> <p> This function takes a piece of Pike code as a string and compiles it into a clonable program.</p> <p> The optional argument <ref resolved='predef::compile.handler'>handler</ref> is used to specify an alternative error handler. If it is not specified the current master object will be used.</p> <p> The optional arguments <ref resolved='predef::compile.major'>major</ref> and <ref resolved='predef::compile.minor'>minor</ref> are used to tell the compiler to attempt to be compatible with Pike <ref resolved='predef::compile.major'>major</ref>.<ref resolved='predef::compile.minor'>minor</ref>.</p> </text><group><note/><text><p>Note that <ref resolved='predef::compile.source'>source</ref> must contain the complete source for a program. It is not possible to compile a single expression or statement.</p> <p> Also note that <ref resolved='predef::compile'>compile()</ref> does not preprocess the program. To preprocess the program you can use <ref resolved='predef::compile_string'>compile_string()</ref> or call the preprocessor manually by calling <ref resolved='predef::cpp'>cpp()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref>, <ref resolved='predef::cpp'>cpp()</ref>, <ref resolved='predef::master'>master()</ref></p> </text></group></doc> <method name='compile'> <arguments><argument name='source'><type><string/></type></argument><argument name='handler'><type><or><object resolved='predef::compile'/><void/></or></type></argument><argument name='major'><type><or><int/><void/></or></type></argument><argument name='minor'><type><or><int/><void/></or></type></argument><argument name='target'><type><or><program/><void/></or></type></argument><argument name='placeholder'><type><or><object resolved='predef::compile'/><void/></or></type></argument></arguments> <returntype><program/></returntype> </method> </docgroup>
515f022001-07-27Martin Nilsson <docgroup homogen-name='compile_file' homogen-type='method'><doc><text><p>Compile the Pike code contained in the file <ref resolved='predef::compile_file.filename'>filename</ref> into a program.</p> <p> This function will compile the file <ref resolved='predef::compile_file.filename'>filename</ref> to a Pike program that can later be instantiated. It is the same as doing <expr><ref resolved='predef::compile_string'>compile_string</ref>(<ref resolved='predef::Stdio.read_file'>Stdio.read_file</ref>(<ref resolved='predef::compile_file.filename'>filename</ref>), <ref resolved='predef::compile_file.filename'>filename</ref>)</expr>.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::compile'>compile()</ref>, <ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::cpp'>cpp()</ref></p>
515f022001-07-27Martin Nilsson </text></group></doc> <method name='compile_file'> <arguments><argument name='filename'><type><string/></type></argument><argument name='handler'><type><or><object resolved='predef::compile_file'/><void/></or></type></argument><argument name='p'><type><or><void/><program/></or></type></argument><argument name='o'><type><or><void/><object resolved='predef::compile_file'/></or></type></argument></arguments> <returntype><program/></returntype> </method> </docgroup>
0f05862001-10-28Martin Nilsson <docgroup homogen-name='compile_string' homogen-type='method'><doc><text><p>Compile the Pike code in the string <ref resolved='predef::compile_string.source'>source</ref> into a program.
716caf2003-04-01Martin Nilsson  If <ref resolved='predef::compile_string.filename'>filename</ref> is not specified, it will default to <expr>"-"</expr>.</p>
5bfef52003-04-01Martin Nilsson <p> Functionally equal to <expr><ref resolved='predef::compile'>compile</ref>(<ref resolved='predef::cpp'>cpp</ref>(<ref resolved='predef::compile_string.source'>source</ref>, <ref resolved='predef::compile_string.filename'>filename</ref>))</expr>.</p> </text><group><seealso/><text><p><ref resolved='predef::compile'>compile()</ref>, <ref resolved='predef::cpp'>cpp()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref></p>
515f022001-07-27Martin Nilsson </text></group></doc> <method name='compile_string'> <arguments><argument name='source'><type><string/></type></argument><argument name='filename'><type><or><void/><string/></or></type></argument><argument name='handler'><type><or><object resolved='predef::compile_string'/><void/></or></type></argument></arguments> <returntype><program/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson  <docgroup homogen-name='copy_value' homogen-type='method'><doc><text><p>Copy a value recursively.</p> <p> If the result value is changed destructively (only possible for multisets, arrays and mappings) the copied value will not be changed.</p> <p> The resulting value will always be equal to the copied (as tested with the function <ref resolved='predef::equal'>equal()</ref>), but they may not the the same value (as tested with <ref resolved='predef::`=='>`==()</ref>).</p> </text><group><seealso/><text><p><ref resolved='predef::equal'>equal()</ref></p> </text></group></doc> <method name='copy_value'> <arguments><argument name='value'><type><mixed/></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup>
d5d63b2001-01-30Henrik Grubbström (Grubba) <docgroup homogen-name='cos' homogen-type='method'><doc><text><p>Return the cosine value for <ref resolved='predef::cos.f'>f</ref>. <ref resolved='predef::cos.f'>f</ref> should be specified in radians.</p> </text><group><seealso/><text><p><ref resolved='predef::acos'>acos()</ref>, <ref resolved='predef::sin'>sin()</ref>, <ref resolved='predef::tan'>tan()</ref></p> </text></group></doc> <method name='cos'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson 
d3961b2001-02-06Henrik Grubbström (Grubba) <docgroup homogen-name='cpp' homogen-type='method'><doc><text><p>Run a string through the preprocessor.</p> <p> Preprocesses the string <ref resolved='predef::cpp.data'>data</ref> with Pike's builtin ANSI-C look-alike preprocessor. If the <ref resolved='predef::cpp.current_file'>current_file</ref> argument has not been specified,
84ea4e2003-04-07Martin Nilsson  it will default to <expr>"-"</expr>. <ref resolved='predef::cpp.charset'>charset</ref> defaults to <expr>"ISO-10646"</expr>.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::compile'>compile()</ref></p>
d3961b2001-02-06Henrik Grubbström (Grubba) </text></group></doc> <method name='cpp'> <arguments><argument name='data'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument><argument name='charset'><type><or><int/><string/><void/></or></type></argument><argument name='handler'><type><or><object resolved='predef::cpp'/><void/></or></type></argument><argument name='compat_major'><type><or><void/><int/></or></type></argument><argument name='compat_minor'><type><or><void/><int/></or></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='crypt' homogen-type='method'><doc><text><p>This function crypts and verifies a short string (only the first 8 characters are significant).</p> <p> The first syntax crypts the string <ref resolved='predef::crypt.password'>password</ref> into something that is hopefully hard to decrypt.</p> <p> The second syntax is used to verify <ref resolved='predef::crypt.typed_password'>typed_password</ref> against
84ea4e2003-04-07Martin Nilsson  <ref resolved='predef::crypt.crypted_password'>crypted_password</ref>, and returns <expr>1</expr> if they match, and <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text></doc> <method name='crypt'> <arguments><argument name='password'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> <method name='crypt'> <arguments><argument name='typed_password'><type><string/></type></argument><argument name='crypted_password'><type><string/></type></argument></arguments> <returntype><int><min>0</min><max>1</max></int></returntype> </method> </docgroup> <docgroup homogen-name='ctime' homogen-type='method'><doc><text><p>Convert the output from a previous call to <ref resolved='predef::time'>time()</ref> into a readable string containing the current year, month, day and time.</p> <p> Like <ref resolved='predef::localtime'>localtime</ref>, this function might throw an error if the ctime(2) call failed on the system. It's platform dependent what time ranges that function can handle, e.g. Windows doesn't handle a negative <ref resolved='predef::ctime.timestamp'>timestamp</ref>.</p> </text><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::localtime'>localtime()</ref>, <ref resolved='predef::mktime'>mktime()</ref>, <ref resolved='predef::gmtime'>gmtime()</ref></p> </text></group></doc> <method name='ctime'> <arguments><argument name='timestamp'><type><int/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
ed43072001-02-01Henrik Grubbström (Grubba) <docgroup homogen-name='decode_value' homogen-type='method'><doc><text><p>Decode a value from a string.</p> <p> This function takes a string created with <ref resolved='predef::encode_value'>encode_value()</ref> or <ref resolved='predef::encode_value_canonic'>encode_value_canonic()</ref> and converts it back to the value that was coded.</p> <p> If no codec is specified, the current master object will be used as codec.</p> </text><group><seealso/><text><p><ref resolved='predef::encode_value'>encode_value()</ref>, <ref resolved='predef::encode_value_canonic'>encode_value_canonic()</ref></p> </text></group></doc> <method name='decode_value'>
4af0582002-05-02Martin Stjernholm <arguments><argument name='coded_value'><type><string/></type></argument><argument name='codec'><type><or><object resolved='predef::decode_value'/><void/></or></type></argument></arguments>
ed43072001-02-01Henrik Grubbström (Grubba) <returntype><mixed/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson  <docgroup homogen-name='delay' homogen-type='method'><doc><text><p>This function makes the program stop for <ref resolved='predef::delay.s'>s</ref> seconds.</p> <p> Only signal handlers can interrupt the sleep. Other callbacks are not called during delay. Beware that this function uses busy-waiting to achieve the highest possible accuracy.</p> </text><group><seealso/><text><p><ref resolved='predef::signal'>signal()</ref>, <ref resolved='predef::sleep'>sleep()</ref></p> </text></group></doc> <method name='delay'> <arguments><argument name='s'><type><or><int/><float/></or></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup>
515f022001-07-27Martin Nilsson <docgroup homogen-name='describe_backtrace' homogen-type='method'><doc><text><p>Returns a string containing a readable message that describes where the backtrace was made.</p> <p> The argument <ref resolved='predef::describe_backtrace.trace'>trace</ref> should normally be the return value from a call
5bfef52003-04-01Martin Nilsson  to <ref resolved='predef::backtrace'>backtrace()</ref>, or a caught error.</p> </text><group><seealso/><text><p><ref resolved='predef::backtrace'>backtrace()</ref>, <ref resolved='predef::describe_error'>describe_error()</ref>, <ref>catch()</ref>, <ref resolved='predef::throw'>throw()</ref></p>
515f022001-07-27Martin Nilsson </text></group></doc> <method name='describe_backtrace'> <arguments><argument name='trace'><type><mixed/></type></argument><argument name='linewidth'><type><or><void/><int/></or></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='describe_error' homogen-type='method'><doc><text><p>Returns only the error message from a backtrace.</p> <p> If there is no error message in the backtrace, a fallback message will be returned.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::backtrace'>backtrace()</ref>, <ref resolved='predef::describe_backtrace'>describe_backtrace()</ref></p>
515f022001-07-27Martin Nilsson </text></group></doc> <method name='describe_error'> <arguments><argument name='trace'><type><mixed/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson  <docgroup homogen-name='destruct' homogen-type='method'><doc><text><p>Mark an object as destructed.</p>
84ea4e2003-04-07Martin Nilsson <p> Calls <expr>o-&gt;destroy()</expr>, and then clears all variables in the object.</p>
5bfef52003-04-01Martin Nilsson <p> All pointers and function pointers to this object will become zero. The destructed object will be freed from memory as soon as possible.</p> </text></doc> <method name='destruct'> <arguments><argument name='o'><type><object resolved='predef::destruct'/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup>
ea75f72002-07-09Martin Nilsson <docgroup homogen-name='dirname' homogen-type='method'><doc><text><p>Returns all but the last segment of a path. Some example inputs and outputs:</p> <p> <matrix> <r><c><b>Expression</b></c><c><b>Value</b></c></r> <r><c>dirname("/a/b")</c><c>"/a/"</c></r> <r><c>dirname("/a/")</c><c>"/a/"</c></r> <r><c>dirname("/a")</c><c>"/"</c></r> <r><c>dirname("/")</c><c>"/"</c></r> <r><c>dirname("")</c><c>""</c></r> </matrix></p>
515f022001-07-27Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::basename'>basename()</ref>, <ref resolved='predef::explode_path'>explode_path()</ref></p> </text></group></doc> <method name='dirname'> <arguments><argument name='x'><type><string/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson 
ed43072001-02-01Henrik Grubbström (Grubba) <docgroup homogen-name='encode_value' homogen-type='method'><doc><text><p>Code a value into a string.</p> <p> This function takes a value, and converts it to a string. This string can then be saved, sent to another Pike process, packed or used in any way you like. When you want your value back you simply send this string to <ref resolved='predef::decode_value'>decode_value()</ref> and it will return the value you encoded.</p> <p> Almost any value can be coded, mappings, floats, arrays, circular structures etc.</p>
3182782001-07-02Martin Stjernholm <p> To encode objects, programs and functions, a codec object must be provided.</p> </text><group><note/><text><p>When only simple types like int, floats, strings, mappings, multisets and arrays are encoded, the produced string is very portable between pike versions. It can at least be read by any later version.</p> <p> The portability when objects, programs and functions are involved depends mostly on the codec. If the byte code is encoded, i.e. when Pike programs are actually dumped in full, then the string can probably only be read by the same pike version.</p> </text></group><group><seealso/><text><p><ref resolved='predef::decode_value'>decode_value()</ref>, <ref resolved='predef::sprintf'>sprintf()</ref>, <ref resolved='predef::encode_value_canonic'>encode_value_canonic()</ref></p>
ed43072001-02-01Henrik Grubbström (Grubba) </text></group></doc> <method name='encode_value'>
4af0582002-05-02Martin Stjernholm <arguments><argument name='value'><type><mixed/></type></argument><argument name='codec'><type><or><object resolved='predef::encode_value'/><void/></or></type></argument></arguments>
ed43072001-02-01Henrik Grubbström (Grubba) <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='encode_value_canonic' homogen-type='method'><doc><text><p>Code a value into a string on canonical form.</p> <p> Takes a value and converts it to a string on canonical form, much like <ref resolved='predef::encode_value'>encode_value()</ref>. The canonical form means that if an identical value is encoded, it will produce exactly the same string again, even if it's done at a later time and/or in another Pike process. The produced string is compatible with <ref resolved='predef::decode_value'>decode_value()</ref>.</p> </text><group><note/><text><p>Note that this function is more restrictive than <ref resolved='predef::encode_value'>encode_value()</ref> with respect to the types of values it can encode. It will throw an error if it can't encode to a canonical form.</p> </text></group><group><seealso/><text><p><ref resolved='predef::encode_value'>encode_value()</ref>, <ref resolved='predef::decode_value'>decode_value()</ref></p> </text></group></doc> <method name='encode_value_canonic'>
4af0582002-05-02Martin Stjernholm <arguments><argument name='value'><type><mixed/></type></argument><argument name='codec'><type><or><object resolved='predef::encode_value_canonic'/><void/></or></type></argument></arguments>
ed43072001-02-01Henrik Grubbström (Grubba) <returntype><string/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='enumerate' homogen-type='method'><doc><text><p>Create an array with an enumeration, useful for initializing arrays or as first argument to <ref resolved='predef::map'>map()</ref> or <ref>foreach()</ref>.</p> <p> The defaults are: <ref resolved='predef::enumerate.step'>step</ref> = 1, <ref resolved='predef::enumerate.start'>start</ref> = 0, <ref resolved='predef::enumerate.operator'>operator</ref> = <ref resolved='predef::`+'>`+</ref></p> <section title='Advanced use'><text><p>The resulting array is calculated like this:</p> <code><text><p>array enumerate(int n, mixed step, mixed start, function operator) { array res = allocate(n); for (int i=0; i &lt; n; i++) { res[i] = start; start = operator(start, step); } return res; }</p> </text></code></text></section> </text><group><seealso/><text><p><ref resolved='predef::map'>map()</ref>, <ref>foreach()</ref></p> </text></group></doc> <method name='enumerate'> <arguments><argument name='n'><type><int/></type></argument></arguments> <returntype><array><valuetype><int/></valuetype></array></returntype> </method> <method name='enumerate'> <arguments><argument name='n'><type><int/></type></argument><argument name='step'><type><or><void/><mixed/></or></type></argument><argument name='start'><type><or><void/><mixed/></or></type></argument><argument name='operator'><type><or><void/><function/></or></type></argument></arguments> <returntype><array/></returntype> </method> </docgroup> <docgroup homogen-name='equal' homogen-type='method'><doc><text><p>This function checks if the values <ref resolved='predef::equal.a'>a</ref> and <ref resolved='predef::equal.b'>b</ref> are equal.</p> <p> For all types but arrays, multisets and mappings, this operation is the same as doing <expr><ref resolved='predef::equal.a'>a</ref> == <ref resolved='predef::equal.b'>b</ref></expr>. For arrays, mappings and multisets however, their contents are checked recursively, and if all their contents are the same and in the same place, they are considered equal.</p> </text><group><seealso/><text><p><ref resolved='predef::copy_value'>copy_value()</ref></p> </text></group></doc> <method name='equal'> <arguments><argument name='a'><type><mixed/></type></argument><argument name='b'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='errno' homogen-type='method'><doc><text><p>This function returns the system error from the last file operation.</p> </text><group><note/><text><p>Note that you should normally use <ref resolved='predef::Stdio.File.errno'>Stdio.File-&gt;errno()</ref> instead.</p> </text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.errno'>Stdio.File-&gt;errno()</ref>, <ref resolved='predef::strerror'>strerror()</ref></p> </text></group></doc> <method name='errno'> <arguments/> <returntype><int/></returntype> </method> </docgroup>
f088eb2002-05-22Johan Sundström <docgroup homogen-name='error' homogen-type='method'><doc><text><p>Throws an error. A more readable version of the code
716caf2003-04-01Martin Nilsson  <expr>throw( ({ sprintf(f, @args), backtrace() }) )</expr>.</p>
7e34952001-12-20Martin Nilsson </text></doc> <method name='error'>
397bc52002-05-22Martin Nilsson <arguments><argument name='f'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
7e34952001-12-20Martin Nilsson <returntype><void/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='exece' homogen-type='method'><doc><text><p>This function transforms the Pike process into a process running the program specified in the argument <ref resolved='predef::exece.file'>file</ref> with the arguments <ref resolved='predef::exece.args'>args</ref>.</p> <p> If the mapping <ref resolved='predef::exece.env'>env</ref> is present, it will completely replace all environment variables before the new program is executed.</p> </text><group><returns/><text><p>This function only returns if something went wrong during <tt>exece(2)</tt>,
84ea4e2003-04-07Martin Nilsson  and in that case it returns <expr>0</expr> (zero).</p>
5bfef52003-04-01Martin Nilsson </text></group><group><note/><text><p>The Pike driver _dies_ when this function is called. You must either use <ref resolved='predef::fork'>fork()</ref> or <ref resolved='predef::Process.create_process'>Process.create_process()</ref> if you wish to execute a program and still run the Pike runtime.</p> </text></group><group><seealso/><text><p><ref resolved='predef::Process.create_process'>Process.create_process()</ref>, <ref resolved='predef::fork'>fork()</ref>, <ref resolved='predef::Stdio.File.pipe'>Stdio.File-&gt;pipe()</ref></p> </text></group></doc> <method name='exece'> <arguments><argument name='file'><type><string/></type></argument><argument name='args'><type><array><valuetype><string/></valuetype></array></type></argument></arguments> <returntype><int/></returntype> </method> <method name='exece'> <arguments><argument name='file'><type><string/></type></argument><argument name='args'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='env'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='exit' homogen-type='method'><doc><text><p>Exit the whole Pike program with the given <ref resolved='predef::exit.returncode'>returncode</ref>.</p>
84ea4e2003-04-07Martin Nilsson <p> Using <ref resolved='predef::exit'>exit()</ref> with any other value than <expr>0</expr> (zero) indicates that something went wrong during execution. See your system manuals for more information about return codes.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::_exit'>_exit()</ref></p> </text></group></doc> <method name='exit'> <arguments><argument name='returncode'><type><int/></type></argument></arguments> <returntype><void/></returntype> </method> </docgroup> <docgroup homogen-name='exp' homogen-type='method'><doc><text><p>Return the natural exponential of <ref resolved='predef::exp.f'>f</ref>. <expr>log( exp( x ) ) == x</expr> as long as exp(x) doesn't overflow an int.</p>
d5d63b2001-01-30Henrik Grubbström (Grubba) </text><group><seealso/><text><p><ref resolved='predef::pow'>pow()</ref>, <ref resolved='predef::log'>log()</ref></p> </text></group></doc> <method name='exp'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup>
515f022001-07-27Martin Nilsson <docgroup homogen-name='explode_path' homogen-type='method'><doc><text><p>Split a path <ref resolved='predef::explode_path.p'>p</ref> into its components.</p> <p> This function divides a path into its components. This might seem like it could be done by dividing the string on &lt;tt&gt;"/"&lt;/tt&gt;, but that will not work on some operating systems.</p> </text></doc> <method name='explode_path'> <arguments><argument name='p'><type><string/></type></argument></arguments> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='file_stat' homogen-type='method'><doc><text><p>Stat a file.</p>
84ea4e2003-04-07Martin Nilsson <p> If the argument <ref resolved='predef::file_stat.symlink'>symlink</ref> is <expr>1</expr> symlinks will not be followed.</p> </text><group><returns/><text><p>If the path specified by <ref resolved='predef::file_stat.path'>path</ref> doesn't exist <expr>0</expr> (zero) will
5bfef52003-04-01Martin Nilsson  be returned.</p> <p> Otherwise an object describing the properties of <ref resolved='predef::file_stat.path'>path</ref> will be returned.</p> </text></group><group><note/><text><p>In Pike 7.0 and earlier this function returned an array with 7 elements. The old behaviour can be simulated with the following function:</p> <code><text><p>array(int) file_stat(string path, void|int(0..1) symlink) { File.Stat st = predef::file_stat(path, symlink); if (!st) return 0; return (array(int))st; }</p> </text></code> </text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Stat'>Stdio.Stat</ref>, <ref resolved='predef::Stdio.File.stat'>Stdio.File-&gt;stat()</ref></p> </text></group></doc> <method name='file_stat'> <arguments><argument name='path'><type><string/></type></argument><argument name='symlink'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments> <returntype><object resolved='predef::Stdio.Stat'>Stdio.Stat</object></returntype> </method> </docgroup> <docgroup homogen-name='file_truncate' homogen-type='method'><doc><text><p>Truncates the file <ref resolved='predef::file_truncate.file'>file</ref> to the length specified in <ref resolved='predef::file_truncate.length'>length</ref>.</p> </text><group><returns/><text><p>Returns 1 if ok, 0 if failed.</p> </text></group></doc> <method name='file_truncate'> <arguments><argument name='file'><type><string/></type></argument><argument name='length'><type><int/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='filesystem_stat' homogen-type='method'><doc><text><p>Returns a mapping describing the properties of the filesystem containing the path specified by <ref resolved='predef::filesystem_stat.path'>path</ref>.</p>
84ea4e2003-04-07Martin Nilsson </text><group><returns/><text><p>If a filesystem cannot be determined <expr>0</expr> (zero) will be returned.</p>
5bfef52003-04-01Martin Nilsson <p> Otherwise a mapping(string:int) with the following fields will be returned:</p> <mapping><group><member><type><int/></type><index>"blocksize"</index></member><text><p>Size in bytes of the filesystem blocks.</p> </text></group><group><member><type><int/></type><index>"blocks"</index></member><text><p>Size of the entire filesystem in blocks.</p> </text></group><group><member><type><int/></type><index>"bfree"</index></member><text><p>Number of free blocks in the filesystem.</p> </text></group><group><member><type><int/></type><index>"bavail"</index></member><text><p>Number of available blocks in the filesystem.
84ea4e2003-04-07Martin Nilsson  This is usually somewhat less than the <expr>"bfree"</expr> value, and
5bfef52003-04-01Martin Nilsson  can usually be adjusted with eg tunefs(1M).</p> </text></group><group><member><type><int/></type><index>"files"</index></member><text><p>Total number of files (aka inodes) allowed by this filesystem.</p> </text></group><group><member><type><int/></type><index>"ffree"</index></member><text><p>Number of free files in the filesystem.</p> </text></group><group><member><type><int/></type><index>"favail"</index></member><text><p>Number of available files in the filesystem.
84ea4e2003-04-07Martin Nilsson  This is usually the same as the <expr>"ffree"</expr> value, and can
5bfef52003-04-01Martin Nilsson  usually be adjusted with eg tunefs(1M).</p> </text></group><group><member><type><int/></type><index>"fsname"</index></member><text><p>Name assigned to the filesystem.</p>
84ea4e2003-04-07Martin Nilsson </text></group><group><member><type><int/></type><index>"fstype"</index></member><text><p>Type of filesystem (eg <expr>"nfs"</expr>).</p>
5bfef52003-04-01Martin Nilsson </text></group></mapping> </text></group><group><note/><text><p>Please note that not all members are present on all OSs.</p> </text></group><group><seealso/><text><p><ref resolved='predef::file_stat'>file_stat()</ref></p> </text></group></doc> <method name='filesystem_stat'> <arguments><argument name='path'><type><string/></type></argument></arguments> <returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype> </method> </docgroup> <docgroup homogen-name='filter' homogen-type='method'><doc><text><p>Filters the elements in <ref resolved='predef::filter.arr'>arr</ref> through <ref resolved='predef::filter.fun'>fun</ref>.</p> <p> <ref resolved='predef::filter.arr'>arr</ref> is treated as a set of elements to be filtered, as follows:</p> <dl><group><item name='array'/><item name='multiset'/><item name='string'/><text><p>Each element is filtered with <ref resolved='predef::filter.fun'>fun</ref>. The return value is of the same type as <ref resolved='predef::filter.arr'>arr</ref> and it contains the elements that <ref resolved='predef::filter.fun'>fun</ref> accepted. <ref resolved='predef::filter.fun'>fun</ref> is applied in order to each element, and that order is retained between the kept elements.</p> <p> If <ref resolved='predef::filter.fun'>fun</ref> is an array, it should have the same length as <ref resolved='predef::filter.arr'>arr</ref>. In this case, the elements in <ref resolved='predef::filter.arr'>arr</ref> are kept where the corresponding positions in <ref resolved='predef::filter.fun'>fun</ref> are nonzero. Otherwise <ref resolved='predef::filter.fun'>fun</ref> is used as described below.</p> </text></group><group><item name='mapping'/><text><p>The values are filtered with <ref resolved='predef::filter.fun'>fun</ref>, and the index/value pairs it accepts are kept in the returned mapping.</p> </text></group><group><item name='program'/><text><p>The program is treated as a mapping containing the identifiers that are indexable from it and their values.</p> </text></group><group><item name='object'/><text><p>If there is a <ref resolved='lfun::cast'>lfun::cast</ref> method in the object, it's called to try to cast the object to an array, a mapping, or a multiset, in that order, which is then filtered as described above.</p> </text></group></dl><p>Unless something else is mentioned above, <ref resolved='predef::filter.fun'>fun</ref> is used as filter like this:</p> <dl><group><item name='function'/><text><p><ref resolved='predef::filter.fun'>fun</ref> is called for each element. It gets the current element as the first argument and <ref resolved='predef::filter.extra'>extra</ref> as the rest. The element is kept if it returns true, otherwise it's filtered out.</p> </text></group><group><item name='object'/><text><p>The object is used as a function like above, i.e. the <ref resolved='lfun::`()'>lfun::`()</ref> method in it is called.</p> </text></group><group><item name='multiset'/><item name='mapping'/><text><p><ref resolved='predef::filter.fun'>fun</ref> is indexed with each element. The element is kept if the result is nonzero, otherwise it's filtered out.</p>
805c6f2018-12-18Henrik Grubbström (Grubba) </text></group><group><item name='"zero or left out"'/><text><p>Each element that is callable is called with <ref resolved='predef::filter.extra'>extra</ref> as
5bfef52003-04-01Martin Nilsson  arguments. The element is kept if the result of the call is nonzero, otherwise it's filtered out. Elements that aren't callable are also filtered out.</p> </text></group><group><item name='string'/><text><p>Each element is indexed with the given string. If the result of that is zero then the element is filtered out, otherwise the result is called with <ref resolved='predef::filter.extra'>extra</ref> as arguments. The element is kept if the return value is nonzero, otherwise it's filtered out.</p> <p> This is typically used when <ref resolved='predef::filter.arr'>arr</ref> is a collection of objects, and <ref resolved='predef::filter.fun'>fun</ref> is the name of some predicate function in them.</p> </text></group></dl> </text><group><note/><text><p>The function is never destructive on <ref resolved='predef::filter.arr'>arr</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::map'>map()</ref>, <ref>foreach()</ref></p> </text></group></doc> <method name='filter'> <arguments><argument name='arr'><type><mixed/></type></argument><argument name='fun'><type><or><void/><mixed/></or></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments> <returntype><mixed/></returntype> </method> </docgroup>
87e0472001-03-12Fredrik Hübinette (Hubbe) <docgroup homogen-name='find_call_out' homogen-type='method'><doc><text><p>Find a call out in the queue.</p> <p> This function searches the call out queue. If given a function as argument, it looks for the first call out scheduled to that function.</p> <p> The argument can also be a call out id as returned by <ref resolved='predef::call_out'>call_out()</ref>, in which case that call_out will be found (Unless it has already been called).</p> </text><group><returns/><text><p><ref resolved='predef::find_call_out'>find_call_out()</ref> returns the remaining time in seconds before that call_out will be executed. If no call_out is found,
5bfef52003-04-01Martin Nilsson  <ref resolved='predef::zero_type'>zero_type</ref>(<ref resolved='predef::find_call_out'>find_call_out</ref>(f)) will return 1.</p>
87e0472001-03-12Fredrik Hübinette (Hubbe) </text></group><group><seealso/><text><p><ref resolved='predef::call_out'>call_out()</ref>, <ref resolved='predef::remove_call_out'>remove_call_out()</ref>, <ref resolved='predef::call_out_info'>call_out_info()</ref></p> </text></group></doc> <method name='find_call_out'> <arguments><argument name='f'><type><function/></type></argument></arguments> <returntype><int/></returntype> </method> <method name='find_call_out'> <arguments><argument name='id'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method>
6559661996-11-06Fredrik Hübinette (Hubbe) </docgroup>
84ea4e2003-04-07Martin Nilsson <docgroup homogen-name='floatp' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::floatp.arg'>arg</ref> is a float, <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>, <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p> </text></group></doc> <method name='floatp'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup>
d5d63b2001-01-30Henrik Grubbström (Grubba) <docgroup homogen-name='floor' homogen-type='method'><doc><text><p>Return the closest integer value less or equal to <ref resolved='predef::floor.f'>f</ref>.</p>
84ea4e2003-04-07Martin Nilsson </text><group><note/><text><p><ref resolved='predef::floor'>floor()</ref> does <b>not</b> return an <expr>int</expr>, merely an integer value stored in a <expr>float</expr>.</p>
d5d63b2001-01-30Henrik Grubbström (Grubba) </text></group><group><seealso/><text><p><ref resolved='predef::ceil'>ceil()</ref>, <ref resolved='predef::round'>round()</ref></p> </text></group></doc> <method name='floor'> <arguments><argument name='f'><type><float/></type></argument></arguments> <returntype><float/></returntype> </method> </docgroup>
fd26b92003-03-13Martin Nilsson <docgroup homogen-name='fork' homogen-type='method'><doc><text><p>Fork the process in two.</p> <p> Fork splits the process in two, and for the parent it returns the pid of the child. Refer to your Unix manual for further details.</p> </text><group><note/><text><p>This function can cause endless bugs if used without proper care.</p> <p> This function is disabled when using threads.</p> <p> This function is not available on all platforms.</p> <p> The most common use for fork is to start sub programs, which is better done with <ref resolved='predef::Process.create_process'>Process.create_process()</ref>.</p> </text></group><group><seealso/><text><p><ref resolved='predef::Process.create_process'>Process.create_process()</ref></p> </text></group></doc> <method name='fork'> <arguments/> <returntype><int/></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='function_name' homogen-type='method'><doc><text><p>Return the name of the function <ref resolved='predef::function_name.f'>f</ref>.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::function_name.f'>f</ref> is a global function defined in the runtime <expr>0</expr> (zero) will be returned.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::function_object'>function_object()</ref></p> </text></group></doc> <method name='function_name'> <arguments><argument name='f'><type><function/></type></argument></arguments> <returntype><string/></returntype> </method> </docgroup> <docgroup homogen-name='function_object' homogen-type='method'><doc><text><p>Return the object the function <ref resolved='predef::function_object.f'>f</ref> is in.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::function_object.f'>f</ref> is a global function defined in the runtime <expr>0</expr> (zero) will be returned.</p>
5bfef52003-04-01Martin Nilsson <p> Zero will also be returned if <ref resolved='predef::function_object.f'>f</ref> is a constant in the parent class. In that case <ref resolved='predef::function_program'>function_program()</ref> can be used to get the parent program.</p> </text><group><seealso/><text><p><ref resolved='predef::function_name'>function_name()</ref>, <ref resolved='predef::function_program'>function_program()</ref></p> </text></group></doc> <method name='function_object'> <arguments><argument name='f'><type><function/></type></argument></arguments> <returntype><object resolved='predef::function_object'/></returntype> </method> </docgroup> <docgroup homogen-name='function_program' homogen-type='method'><doc><text><p>Return the program the function <ref resolved='predef::function_program.f'>f</ref> is in.</p>
84ea4e2003-04-07Martin Nilsson <p> If <ref resolved='predef::function_program.f'>f</ref> is a global function defined in the runtime <expr>0</expr> (zero) will be returned.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::function_name'>function_name()</ref>, <ref resolved='predef::function_object'>function_object()</ref></p> </text></group></doc> <method name='function_program'> <arguments><argument name='f'><type><or><function/><program/></or></type></argument></arguments> <returntype><program/></returntype> </method> </docgroup>
84ea4e2003-04-07Martin Nilsson <docgroup homogen-name='functionp' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::functionp.arg'>arg</ref> is a function, <expr>0</expr> (zero) otherwise.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::intp'>intp()</ref></p> </text></group></doc> <method name='functionp'> <arguments><argument name='arg'><type><mixed/></type></argument></arguments> <returntype><int/></returntype> </method> </docgroup> <docgroup homogen-name='gc' homogen-type='method'><doc><text><p>Force garbage collection.</p> <p> This function checks all the memory for cyclic structures such as arrays containing themselves and frees them if appropriate. It also frees up destructed objects and things with only weak references.</p> <p> Normally there is no need to call this function since Pike will call it by itself every now and then. (Pike will try to predict when 20% of all arrays/object/programs in memory is 'garbage' and call this routine then.)</p> </text><group><returns/><text><p>The amount of garbage is returned. This is the number of arrays, mappings, multisets, objects and programs that had no nonweak external references during the garbage collection. It's normally the same as the number of freed things, but there might be some difference since destroy() functions are called during freeing, which can cause more things to be freed or allocated.</p> </text></group><group><seealso/><text><p><ref resolved='predef::Pike.gc_parameters'>Pike.gc_parameters</ref>, <ref resolved='predef::Debug.gc_status'>Debug.gc_status</ref></p> </text></group></doc> <method name='gc'> <arguments/> <returntype><int/></returntype> </method> </docgroup>
94ef772002-11-25Martin Nilsson 
a8a6d42002-03-02Marcus Agehall <docgroup homogen-name='get_all_groups' homogen-type='method'><doc><text><p>Returns an array of arrays with all groups in the system groups source.
a9a3712002-03-01Marcus Agehall  Each element in the returned array has the same structure as in
227e8c2003-04-02Martin Nilsson  <ref>getgrent</ref> function.</p>
a8a6d42002-03-02Marcus Agehall </text><group><note/><text><p>The groups source is system dependant. Refer to your system manuals for information about how to set the source.</p> </text></group><group><returns/><text><array><group><elem><type><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></type><minindex>0</minindex></elem><text><p>Array with info about the group</p>
a9a3712002-03-01Marcus Agehall </text></group></array>
227e8c2003-04-02Martin Nilsson </text></group><group><seealso/><text><p><ref>getgrent()</ref></p>
a38f1e2001-11-13Martin Nilsson </text></group></doc> <method name='get_all_groups'> <arguments/> <returntype><array><valuetype><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></valuetype></array></returntype> </method> </docgroup>
a9a3712002-03-01Marcus Agehall <docgroup homogen-name='get_all_users' homogen-type='method'><doc><text><p>Returns an array with all users in the system.</p>
227e8c2003-04-02Martin Nilsson </text><group><returns/><text><p>An array with arrays of userinfo as in <ref>getpwent</ref>.</p> </text></group><group><seealso/><text><p><ref>getpwent()</ref>
a9a3712002-03-01Marcus Agehall  <ref resolved='predef::getpwnam'>getpwnam()</ref> <ref resolved='predef::getpwuid'>getpwuid()</ref></p>
a38f1e2001-11-13Martin Nilsson </text></group></doc> <method name='get_all_users'> <arguments/> <returntype><array><valuetype><array><valuetype><or><int/><string/></or></valuetype></array></valuetype></array></returntype> </method> </docgroup>
5bfef52003-04-01Martin Nilsson <docgroup homogen-name='get_dir' homogen-type='method'><doc><text><p>Returns an array of all filenames in the directory <ref resolved='predef::get_dir.dirname'>dirname</ref>, or
84ea4e2003-04-07Martin Nilsson  <expr>0</expr> (zero) if the directory does not exist.</p>
5bfef52003-04-01Martin Nilsson </text><group><seealso/><text><p><ref resolved='predef::mkdir'>mkdir()</ref>, <ref resolved='predef::cd'>cd()</ref></p> </text></group></doc> <method name='get_dir'> <arguments><argument name='dirname'><type><string/></type></argument></arguments> <returntype><array><valuetype><string/></valuetype></array></returntype> </method> </docgroup>
a9a3712002-03-01Marcus Agehall <docgroup homogen-name='get_groups_for_user' homogen-type='method'><doc><text><p>Gets all groups which a given user is a member of.</p> </text><group><param name='user'/><text><p>UID or loginname of the user</p> </text></group><group><returns/><text><array><group><elem><type><array/></type><minindex>0</minindex></elem><text><p>Information about all the users groups</p> </text></group></array> </text></group><group><seealso/><text><p><ref resolved='predef::get_all_groups'>get_all_groups()</ref> <ref resolved='predef::getgrgid'>getgrgid()</ref> <ref resolved='predef::getgrnam'>getgrnam()</ref> <ref resolved='predef::getpwuid'>getpwuid()</ref> <ref resolved='predef::getpwnam'>getpwnam()</ref></p>
a38f1e2001-11-13Martin Nilsson </text></group></doc> <method name='get_groups_for_user'> <arguments><argument name='user'><type><or><int/><string/></or></type></argument></arguments> <returntype><array><valuetype><int/></valuetype></array></returntype> </method> </docgroup>
25d84a2003-04-18Martin Stjernholm <docgroup homogen-name='get_iterator' homogen-type='method'><doc><text><p>Creates and returns a canonical iterator for <ref resolved='predef::get_iterator.data'>data</ref>.</p>
2df45e2003-04-21Henrik Grubbström (Grubba) </text><group><returns/><text><mixed name='data'><group><type><object resolved='predef::get_iterator'/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is an object with <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref> defined then it's called in it to create the iterator.</p> <p> If <ref resolved='predef::get_iterator.data'>data</ref> is an object that lacks <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref> then it's assumed to already be an iterator object, and is simply returned.</p> </text></group><group><type><array/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is an array, an <ref>Array.Iterator</ref> object will be returned.</p> </text></group><group><type><mapping/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is a mapping, a <ref>Mapping.Iterator</ref> object will be returned</p> </text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is a multiset, a <ref>Multiset.Iterator</ref> object will be returned</p> </text></group><group><type><string/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is a string, a <ref>String.Iterator</ref> object will be returned</p> </text></group></mixed> </text></group><group><note/><text><p>This function is used by <ref>foreach</ref> to get an iterator for an
25d84a2003-04-18Martin Stjernholm  object.</p> </text></group><group><seealso/><text><p><ref resolved='predef::Iterator'>Iterator</ref>, <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref></p> </text></group></doc> <method name='get_iterator'> <arguments><argument name='data'><type><or><object resolved='predef::get_iterator'/><array/><mapping/><multiset/><string/></or></type></argument></arguments> <returntype><object resolved='predef::Iterator'>Iterator</object></returntype> </method> </docgroup