Branch: Tag:

2021-04-06

2021-04-06 20:57:59 by Tobias S. Josefowitz <tobij@tobij.de>

Image.X: Remove $Id$

227:   </module>   </namespace>   <namespace name='predef'> + <docgroup homogen-name='TOKENIZE_KEEP_ESCAPES' homogen-type='constant'><doc><text><p>Don't unquote backslash-sequences in quoted strings during tokenizing. +  This is used for bug-compatibility with Microsoft...</p> + </text><group><seealso/><text><p><ref>tokenize()</ref>, <ref>tokenize_labled()</ref></p> + </text></group></doc> + <constant name='TOKENIZE_KEEP_ESCAPES'/> + </docgroup>   <docgroup homogen-name='_do_call_outs' homogen-type='method'>   <method name='_do_call_outs'/><doc placeholder='true'>   <text>
13682:   </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> - <table><tr><td align='right' valign='center'><b>top layer</b></td><td align='right'><image file='predef.Image.Layer.1.png' height='80' width='560'>layers.c.0.png</image></td><td align='left' valign='center'/></tr><tr><td align='right' valign='center'><b>bottom layer</b></td><td align='right'><image file='predef.Image.Layer.2.png' height='80' width='560'>layers.c.1.png</image></td><td align='left' valign='center'/></tr></table><table><tr><td> </td></tr><tr><td align='right' valign='center'><b>normal</b></td><td align='right'><image file='predef.Image.Layer.3.png' height='80' width='560'>layers.c.2.png</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='right' valign='center'><b>add</b></td><td align='right'><image file='predef.Image.Layer.4.png' height='80' width='560'>layers.c.3.png</image></td><td align='left' valign='center'>D=L+S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>subtract</b></td><td align='right'><image file='predef.Image.Layer.5.png' height='80' width='560'>layers.c.4.png</image></td><td align='left' valign='center'>D=S-L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>multiply</b></td><td align='right'><image file='predef.Image.Layer.6.png' height='80' width='560'>layers.c.5.png</image></td><td align='left' valign='center'>D=S*L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>divide</b></td><td align='right'><image file='predef.Image.Layer.7.png' height='80' width='560'>layers.c.6.png</image></td><td align='left' valign='center'>D=S/L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>negdivide</b></td><td align='right'><image file='predef.Image.Layer.8.png' height='80' width='560'>layers.c.7.png</image></td><td align='left' valign='center'>D=1.0-S/L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>modulo</b></td><td align='right'><image file='predef.Image.Layer.9.png' height='80' width='560'>layers.c.8.png</image></td><td align='left' valign='center'>D=S%L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invsubtract</b></td><td align='right'><image file='predef.Image.Layer.10.png' height='80' width='560'>layers.c.9.png</image></td><td align='left' valign='center'>D=L-S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invdivide</b></td><td align='right'><image file='predef.Image.Layer.11.png' height='80' width='560'>layers.c.10.png</image></td><td align='left' valign='center'>D=L/S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invmodulo</b></td><td align='right'><image file='predef.Image.Layer.12.png' height='80' width='560'>layers.c.11.png</image></td><td align='left' valign='center'>D=L%S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>imultiply</b></td><td align='right'><image file='predef.Image.Layer.13.png' height='80' width='560'>layers.c.12.png</image></td><td align='left' valign='center'>D=(1-L)*S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>idivide</b></td><td align='right'><image file='predef.Image.Layer.14.png' height='80' width='560'>layers.c.13.png</image></td><td align='left' valign='center'>D=S/(1-L) applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invidivide</b></td><td align='right'><image file='predef.Image.Layer.15.png' height='80' width='560'>layers.c.14.png</image></td><td align='left' valign='center'>D=L/(1-S) applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>difference</b></td><td align='right'><image file='predef.Image.Layer.16.png' height='80' width='560'>layers.c.15.png</image></td><td align='left' valign='center'>D=abs(L-S) applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>max</b></td><td align='right'><image file='predef.Image.Layer.17.png' height='80' width='560'>layers.c.16.png</image></td><td align='left' valign='center'>D=max(L,S) applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>min</b></td><td align='right'><image file='predef.Image.Layer.18.png' height='80' width='560'>layers.c.17.png</image></td><td align='left' valign='center'>D=min(L,S) applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>bitwise_and</b></td><td align='right'><image file='predef.Image.Layer.19.png' height='80' width='560'>layers.c.18.png</image></td><td align='left' valign='center'>D=L&amp;amp;S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>bitwise_or</b></td><td align='right'><image file='predef.Image.Layer.20.png' height='80' width='560'>layers.c.19.png</image></td><td align='left' valign='center'>D=L|S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>bitwise_xor</b></td><td align='right'><image file='predef.Image.Layer.21.png' height='80' width='560'>layers.c.20.png</image></td><td align='left' valign='center'>D=L^S applied with alpha, aD=aS</td></tr><tr><td> </td></tr><tr><td align='right' valign='center'><b>replace</b></td><td align='right'><image file='predef.Image.Layer.22.png' height='80' width='560'>layers.c.21.png</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='right' valign='center'><b>red</b></td><td align='right'><image file='predef.Image.Layer.23.png' height='80' width='560'>layers.c.22.png</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='right' valign='center'><b>green</b></td><td align='right'><image file='predef.Image.Layer.24.png' height='80' width='560'>layers.c.23.png</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='right' valign='center'><b>blue</b></td><td align='right'><image file='predef.Image.Layer.25.png' height='80' width='560'>layers.c.24.png</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='right' valign='center'><b>hardlight</b></td><td align='right'><image file='predef.Image.Layer.26.png' height='80' width='560'>layers.c.25.png</image></td><td align='left' valign='center'>Like photoshop hardlight layer mode, aD=aS</td></tr><tr><td> </td></tr><tr><td align='right' valign='center'><b>replace_hsv</b></td><td align='right'><image file='predef.Image.Layer.27.png' height='80' width='560'>layers.c.26.png</image></td><td align='left' valign='center'>Dhsv=Lhsv apply with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>hue</b></td><td align='right'><image file='predef.Image.Layer.28.png' height='80' width='560'>layers.c.27.png</image></td><td align='left' valign='center'>Dh=Lh apply with alpha, Dsv=Lsv, aD=aS</td></tr><tr><td align='right' valign='center'><b>saturation</b></td><td align='right'><image file='predef.Image.Layer.29.png' height='80' width='560'>layers.c.28.png</image></td><td align='left' valign='center'>Ds=Ls apply with alpha, Dhv=Lhv, aD=aS</td></tr><tr><td align='right' valign='center'><b>value</b></td><td align='right'><image file='predef.Image.Layer.30.png' height='80' width='560'>layers.c.29.png</image></td><td align='left' valign='center'>Dv=Lv apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>color</b></td><td align='right'><image file='predef.Image.Layer.31.png' height='80' width='560'>layers.c.30.png</image></td><td align='left' valign='center'>Dhs=Lhs apply with alpha, Dv=Lv, aD=aS</td></tr><tr><td align='right' valign='center'><b>value_mul</b></td><td align='right'><image file='predef.Image.Layer.32.png' height='80' width='560'>layers.c.31.png</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='right' valign='center'><b>darken</b></td><td align='right'><image file='predef.Image.Layer.33.png' height='80' width='560'>layers.c.32.png</image></td><td align='left' valign='center'>Dv=min(Lv,Sv) apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>lighten</b></td><td align='right'><image file='predef.Image.Layer.34.png' height='80' width='560'>layers.c.33.png</image></td><td align='left' valign='center'>Dv=max(Lv,Sv) apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>saturate</b></td><td align='right'><image file='predef.Image.Layer.35.png' height='80' width='560'>layers.c.34.png</image></td><td align='left' valign='center'>Ds=max(Ls,Ss) apply with alpha, Dhv=Lhv, aD=aS</td></tr><tr><td align='right' valign='center'><b>desaturate</b></td><td align='right'><image file='predef.Image.Layer.36.png' height='80' width='560'>layers.c.35.png</image></td><td align='left' valign='center'>Ds=min(Ls,Ss) apply with alpha, Dhv=Lhv, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_replace</b></td><td align='right'><image file='predef.Image.Layer.37.png' height='80' width='560'>layers.c.36.png</image></td><td align='left' valign='center'>Dhls=Lhls apply with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_hue</b></td><td align='right'><image file='predef.Image.Layer.38.png' height='80' width='560'>layers.c.37.png</image></td><td align='left' valign='center'>Dh=Lh apply with alpha, Dsv=Lsv, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_saturation</b></td><td align='right'><image file='predef.Image.Layer.39.png' height='80' width='560'>layers.c.38.png</image></td><td align='left' valign='center'>Ds=Ls apply with alpha, Dhv=Lhv, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_lightness</b></td><td align='right'><image file='predef.Image.Layer.40.png' height='80' width='560'>layers.c.39.png</image></td><td align='left' valign='center'>Dl=Ll apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_color</b></td><td align='right'><image file='predef.Image.Layer.41.png' height='80' width='560'>layers.c.40.png</image></td><td align='left' valign='center'>Dhs=Lhs apply with alpha, Dl=Ll, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_lightness_mul</b></td><td align='right'><image file='predef.Image.Layer.42.png' height='80' width='560'>layers.c.41.png</image></td><td align='left' valign='center'>Dl=Ll*Sl apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_darken</b></td><td align='right'><image file='predef.Image.Layer.43.png' height='80' width='560'>layers.c.42.png</image></td><td align='left' valign='center'>Dl=min(Ll,Sl) apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_lighten</b></td><td align='right'><image file='predef.Image.Layer.44.png' height='80' width='560'>layers.c.43.png</image></td><td align='left' valign='center'>Dl=max(Ll,Sl) apply with alpha, Dhs=Lhs, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_saturate</b></td><td align='right'><image file='predef.Image.Layer.45.png' height='80' width='560'>layers.c.44.png</image></td><td align='left' valign='center'>Ds=max(Ls,Ss) apply with alpha, Dhl=Lhl, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_desaturate</b></td><td align='right'><image file='predef.Image.Layer.46.png' height='80' width='560'>layers.c.45.png</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='right' valign='center'><b>dissolve</b></td><td align='right'><image file='predef.Image.Layer.47.png' height='80' width='560'>layers.c.46.png</image></td><td align='left' valign='center'>i=random 0 or 1, D=i?L:S, aD=i+aS</td></tr><tr><td align='right' valign='center'><b>behind</b></td><td align='right'><image file='predef.Image.Layer.48.png' height='80' width='560'>layers.c.47.png</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='right' valign='center'><b>erase</b></td><td align='right'><image file='predef.Image.Layer.49.png' height='80' width='560'>layers.c.48.png</image></td><td align='left' valign='center'>D=S, aD=aS*(1-aL)</td></tr><tr><td> </td></tr><tr><td align='right' valign='center'><b>screen</b></td><td align='right'><image file='predef.Image.Layer.50.png' height='80' width='560'>layers.c.49.png</image></td><td align='left' valign='center'>1-(1-S)*(1-L) applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>overlay</b></td><td align='right'><image file='predef.Image.Layer.51.png' height='80' width='560'>layers.c.50.png</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='right' valign='center'><b>burn_alpha</b></td><td align='right'><image file='predef.Image.Layer.52.png' height='80' width='560'>layers.c.51.png</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='right' valign='center'><b>equal</b></td><td align='right'><image file='predef.Image.Layer.53.png' height='80' width='560'>layers.c.52.png</image></td><td align='left' valign='center'>each channel D=max if L==S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>not_equal</b></td><td align='right'><image file='predef.Image.Layer.54.png' height='80' width='560'>layers.c.53.png</image></td><td align='left' valign='center'>each channel D=max if L!=S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>less</b></td><td align='right'><image file='predef.Image.Layer.55.png' height='80' width='560'>layers.c.54.png</image></td><td align='left' valign='center'>each channel D=max if L&lt;S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>more</b></td><td align='right'><image file='predef.Image.Layer.56.png' height='80' width='560'>layers.c.55.png</image></td><td align='left' valign='center'>each channel D=max if L&gt;S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>less_or_equal</b></td><td align='right'><image file='predef.Image.Layer.57.png' height='80' width='560'>layers.c.56.png</image></td><td align='left' valign='center'>each channel D=max if L&lt;=S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>more_or_equal</b></td><td align='right'><image file='predef.Image.Layer.58.png' height='80' width='560'>layers.c.57.png</image></td><td align='left' valign='center'>each channel D=max if L&gt;=S, 0 otherwise, apply with alpha</td></tr><tr><td> </td></tr><tr><td align='right' valign='center'><b>logic_equal</b></td><td align='right'><image file='predef.Image.Layer.59.png' height='80' width='560'>layers.c.58.png</image></td><td align='left' valign='center'>logic: D=white and opaque if L==S, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_not_equal</b></td><td align='right'><image file='predef.Image.Layer.60.png' height='80' width='560'>layers.c.59.png</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='right' valign='center'><b>logic_strict_less</b></td><td align='right'><image file='predef.Image.Layer.61.png' height='80' width='560'>layers.c.60.png</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&lt;S, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_strict_more</b></td><td align='right'><image file='predef.Image.Layer.62.png' height='80' width='560'>layers.c.61.png</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&gt;S, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_strict_less_equal</b></td><td align='right'><image file='predef.Image.Layer.63.png' height='80' width='560'>layers.c.62.png</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&lt;=L, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_strict_more_equal</b></td><td align='right'><image file='predef.Image.Layer.64.png' height='80' width='560'>layers.c.63.png</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&gt;=L, black and transparent otherwise</td></tr></table> + <table><tr><td align='right' valign='center'><b>top layer</b></td><td align='right'><image file='predef.Image.Layer.1.jpeg' height='80' width='560'>layers.c.0.jpeg</image></td><td align='left' valign='center'/></tr><tr><td align='right' valign='center'><b>bottom layer</b></td><td align='right'><image file='predef.Image.Layer.2.jpeg' height='80' width='560'>layers.c.1.jpeg</image></td><td align='left' valign='center'/></tr></table><table><tr><td> </td></tr><tr><td align='right' valign='center'><b>normal</b></td><td align='right'><image file='predef.Image.Layer.3.jpeg' height='80' width='560'>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='right' valign='center'><b>add</b></td><td align='right'><image file='predef.Image.Layer.4.jpeg' height='80' width='560'>layers.c.3.jpeg</image></td><td align='left' valign='center'>D=L+S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>subtract</b></td><td align='right'><image file='predef.Image.Layer.5.jpeg' height='80' width='560'>layers.c.4.jpeg</image></td><td align='left' valign='center'>D=S-L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>multiply</b></td><td align='right'><image file='predef.Image.Layer.6.jpeg' height='80' width='560'>layers.c.5.jpeg</image></td><td align='left' valign='center'>D=S*L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>divide</b></td><td align='right'><image file='predef.Image.Layer.7.jpeg' height='80' width='560'>layers.c.6.jpeg</image></td><td align='left' valign='center'>D=S/L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>negdivide</b></td><td align='right'><image file='predef.Image.Layer.8.jpeg' height='80' width='560'>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='right' valign='center'><b>modulo</b></td><td align='right'><image file='predef.Image.Layer.9.jpeg' height='80' width='560'>layers.c.8.jpeg</image></td><td align='left' valign='center'>D=S%L applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invsubtract</b></td><td align='right'><image file='predef.Image.Layer.10.jpeg' height='80' width='560'>layers.c.9.jpeg</image></td><td align='left' valign='center'>D=L-S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invdivide</b></td><td align='right'><image file='predef.Image.Layer.11.jpeg' height='80' width='560'>layers.c.10.jpeg</image></td><td align='left' valign='center'>D=L/S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>invmodulo</b></td><td align='right'><image file='predef.Image.Layer.12.jpeg' height='80' width='560'>layers.c.11.jpeg</image></td><td align='left' valign='center'>D=L%S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>imultiply</b></td><td align='right'><image file='predef.Image.Layer.13.jpeg' height='80' width='560'>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='right' valign='center'><b>idivide</b></td><td align='right'><image file='predef.Image.Layer.14.jpeg' height='80' width='560'>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='right' valign='center'><b>invidivide</b></td><td align='right'><image file='predef.Image.Layer.15.jpeg' height='80' width='560'>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='right' valign='center'><b>difference</b></td><td align='right'><image file='predef.Image.Layer.16.jpeg' height='80' width='560'>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='right' valign='center'><b>max</b></td><td align='right'><image file='predef.Image.Layer.17.jpeg' height='80' width='560'>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='right' valign='center'><b>min</b></td><td align='right'><image file='predef.Image.Layer.18.jpeg' height='80' width='560'>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='right' valign='center'><b>bitwise_and</b></td><td align='right'><image file='predef.Image.Layer.19.jpeg' height='80' width='560'>layers.c.18.jpeg</image></td><td align='left' valign='center'>D=L&amp;amp;S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>bitwise_or</b></td><td align='right'><image file='predef.Image.Layer.20.jpeg' height='80' width='560'>layers.c.19.jpeg</image></td><td align='left' valign='center'>D=L|S applied with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>bitwise_xor</b></td><td align='right'><image file='predef.Image.Layer.21.jpeg' height='80' width='560'>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='right' valign='center'><b>replace</b></td><td align='right'><image file='predef.Image.Layer.22.jpeg' height='80' width='560'>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='right' valign='center'><b>red</b></td><td align='right'><image file='predef.Image.Layer.23.jpeg' height='80' width='560'>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='right' valign='center'><b>green</b></td><td align='right'><image file='predef.Image.Layer.24.jpeg' height='80' width='560'>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='right' valign='center'><b>blue</b></td><td align='right'><image file='predef.Image.Layer.25.jpeg' height='80' width='560'>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='right' valign='center'><b>hardlight</b></td><td align='right'><image file='predef.Image.Layer.26.jpeg' height='80' width='560'>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='right' valign='center'><b>replace_hsv</b></td><td align='right'><image file='predef.Image.Layer.27.jpeg' height='80' width='560'>layers.c.26.jpeg</image></td><td align='left' valign='center'>Dhsv=Lhsv apply with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>hue</b></td><td align='right'><image file='predef.Image.Layer.28.jpeg' height='80' width='560'>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='right' valign='center'><b>saturation</b></td><td align='right'><image file='predef.Image.Layer.29.jpeg' height='80' width='560'>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='right' valign='center'><b>value</b></td><td align='right'><image file='predef.Image.Layer.30.jpeg' height='80' width='560'>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='right' valign='center'><b>color</b></td><td align='right'><image file='predef.Image.Layer.31.jpeg' height='80' width='560'>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='right' valign='center'><b>value_mul</b></td><td align='right'><image file='predef.Image.Layer.32.jpeg' height='80' width='560'>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='right' valign='center'><b>darken</b></td><td align='right'><image file='predef.Image.Layer.33.jpeg' height='80' width='560'>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='right' valign='center'><b>lighten</b></td><td align='right'><image file='predef.Image.Layer.34.jpeg' height='80' width='560'>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='right' valign='center'><b>saturate</b></td><td align='right'><image file='predef.Image.Layer.35.jpeg' height='80' width='560'>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='right' valign='center'><b>desaturate</b></td><td align='right'><image file='predef.Image.Layer.36.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_replace</b></td><td align='right'><image file='predef.Image.Layer.37.jpeg' height='80' width='560'>layers.c.36.jpeg</image></td><td align='left' valign='center'>Dhls=Lhls apply with alpha, aD=aS</td></tr><tr><td align='right' valign='center'><b>hls_hue</b></td><td align='right'><image file='predef.Image.Layer.38.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_saturation</b></td><td align='right'><image file='predef.Image.Layer.39.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_lightness</b></td><td align='right'><image file='predef.Image.Layer.40.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_color</b></td><td align='right'><image file='predef.Image.Layer.41.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_lightness_mul</b></td><td align='right'><image file='predef.Image.Layer.42.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_darken</b></td><td align='right'><image file='predef.Image.Layer.43.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_lighten</b></td><td align='right'><image file='predef.Image.Layer.44.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_saturate</b></td><td align='right'><image file='predef.Image.Layer.45.jpeg' height='80' width='560'>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='right' valign='center'><b>hls_desaturate</b></td><td align='right'><image file='predef.Image.Layer.46.jpeg' height='80' width='560'>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='right' valign='center'><b>dissolve</b></td><td align='right'><image file='predef.Image.Layer.47.jpeg' height='80' width='560'>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='right' valign='center'><b>behind</b></td><td align='right'><image file='predef.Image.Layer.48.jpeg' height='80' width='560'>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='right' valign='center'><b>erase</b></td><td align='right'><image file='predef.Image.Layer.49.jpeg' height='80' width='560'>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='right' valign='center'><b>screen</b></td><td align='right'><image file='predef.Image.Layer.50.jpeg' height='80' width='560'>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='right' valign='center'><b>overlay</b></td><td align='right'><image file='predef.Image.Layer.51.jpeg' height='80' width='560'>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='right' valign='center'><b>burn_alpha</b></td><td align='right'><image file='predef.Image.Layer.52.jpeg' height='80' width='560'>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='right' valign='center'><b>equal</b></td><td align='right'><image file='predef.Image.Layer.53.jpeg' height='80' width='560'>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='right' valign='center'><b>not_equal</b></td><td align='right'><image file='predef.Image.Layer.54.jpeg' height='80' width='560'>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='right' valign='center'><b>less</b></td><td align='right'><image file='predef.Image.Layer.55.jpeg' height='80' width='560'>layers.c.54.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&lt;S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>more</b></td><td align='right'><image file='predef.Image.Layer.56.jpeg' height='80' width='560'>layers.c.55.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&gt;S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>less_or_equal</b></td><td align='right'><image file='predef.Image.Layer.57.jpeg' height='80' width='560'>layers.c.56.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&lt;=S, 0 otherwise, apply with alpha</td></tr><tr><td align='right' valign='center'><b>more_or_equal</b></td><td align='right'><image file='predef.Image.Layer.58.jpeg' height='80' width='560'>layers.c.57.jpeg</image></td><td align='left' valign='center'>each channel D=max if L&gt;=S, 0 otherwise, apply with alpha</td></tr><tr><td> </td></tr><tr><td align='right' valign='center'><b>logic_equal</b></td><td align='right'><image file='predef.Image.Layer.59.jpeg' height='80' width='560'>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='right' valign='center'><b>logic_not_equal</b></td><td align='right'><image file='predef.Image.Layer.60.jpeg' height='80' width='560'>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='right' valign='center'><b>logic_strict_less</b></td><td align='right'><image file='predef.Image.Layer.61.jpeg' height='80' width='560'>layers.c.60.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&lt;S, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_strict_more</b></td><td align='right'><image file='predef.Image.Layer.62.jpeg' height='80' width='560'>layers.c.61.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&gt;S, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_strict_less_equal</b></td><td align='right'><image file='predef.Image.Layer.63.jpeg' height='80' width='560'>layers.c.62.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&lt;=L, black and transparent otherwise</td></tr><tr><td align='right' valign='center'><b>logic_strict_more_equal</b></td><td align='right'><image file='predef.Image.Layer.64.jpeg' height='80' width='560'>layers.c.63.jpeg</image></td><td align='left' valign='center'>logic: D=white and opaque if all L&gt;=L, black and transparent otherwise</td></tr></table>   </add_appendix></p>   </text>   <group><seealso/><text>
16052:   </docgroup>   </module>   </module> + <module name='Languages'> + <module name='PLIS'> + <doc><text><p>PLIS, Permuted Lisp. A Lisp language somewhat similar to scheme.</p> + </text></doc> + <docgroup homogen-name='default_environment' homogen-type='method'><doc><text><p>Creates a new environment on which +  it runs init_functions, init_specials +  and the following boot code.</p> + <code><text><p>(begin +  (defmacro (cddr x) +  (list (quote cdr) (list (quote cdr) x))) +  (defmacro (cadr x) +  (list (quote car) (list (quote cdr) x))) +  (defmacro (cdar x) +  (list (quote cdr) (list (quote car) x))) +  (defmacro (caar x) +  (list (quote car) (list (quote car) x)))</p> + <p> (defmacro (when cond . body) +  (list (quote if) cond +  (cons (quote begin) body)))</p> + <p> (define (map fun list) +  (if (null? list) (quote ()) +  (cons (fun (car list)) +  (map fun (cdr list)))))</p> + <p> (defmacro (let decl . body) +  (cons (cons (quote lambda) +  (cons (map car decl) body)) +  (map cadr decl))))</p> + </text></code> + </text></doc> + <method name='default_environment'> + <arguments/> + <returntype><object>Environment</object></returntype> + </method> + </docgroup> + <docgroup homogen-name='' homogen-type='import'> + <import name=''><classname resolved='predef::'>predef::</classname></import> + </docgroup> + <docgroup homogen-name='init_functions' homogen-type='method'><doc><text><p>Adds the functions +, *, -, =, &lt;, &gt;, +  concat, read-string, eval, +  apply, global-environment, var, cdr, null?, +  setcar!, setcdr!, cons and list to the +  <ref resolved='predef::Languages.PLIS.init_functions.environment'>environment</ref>.</p> + </text></doc> + <method name='init_functions'> + <arguments><argument name='environment'><type><object>Environment</object></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='init_specials' homogen-type='method'><doc><text><p>Adds the special functions quote, set!, setq, +  while, define, defmacro, lambda, if, and, or, +  begin and catch to the <ref resolved='predef::Languages.PLIS.init_specials.environment'>environment</ref>.</p> + </text></doc> + <method name='init_specials'> + <arguments><argument name='environment'><type><object>Environment</object></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='main' homogen-type='method'><doc><text><p>Instantiates a copy of the default environment and +  starts an interactive main loop that connects to +  standard I/O. The main loop is as follows:</p> + <code><text><p>(begin +  (define (loop) +  (let ((line (read-line \"PLIS: \"))) +  (if line +  (let ((res (catch (eval (read-string line) +  (global-environment))))) +  (display res) +  (loop))))) +  (loop))</p> + </text></code> + </text></doc> + <method name='main'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <class name='Binding'> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='value'><type><object resolved='predef::Languages.PLIS.Binding.create'/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='value' homogen-type='variable'> + <variable name='value'><type><object resolved='predef::Languages.PLIS.Binding'/></type></variable> + </docgroup> + </class> + <class name='Builtin'> + <docgroup homogen-name='apply' homogen-type='variable'> + <variable name='apply'><type><function/></type></variable> + </docgroup> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='apply'><type><function/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='LObject' homogen-type='inherit'> + <inherit name='LObject'><classname>LObject</classname></inherit> + </docgroup> + </class> + <class name='Lambda'> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='formals'><type><object resolved='predef::Languages.PLIS.Lambda.create'/></type></argument><argument name='list'><type><object resolved='predef::Languages.PLIS.Lambda.create'/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-type='variable'> + <variable name='formals'><type><object resolved='predef::Languages.PLIS.Lambda'/></type></variable> + <variable name='list'><type><object resolved='predef::Languages.PLIS.Lambda'/></type></variable> + </docgroup> + <docgroup homogen-name='LObject' homogen-type='inherit'> + <inherit name='LObject'><classname>LObject</classname></inherit> + </docgroup> + </class> + <class name='Number'> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='value'><type><or><int/><float/><object resolved='predef::Languages.PLIS.Number.create'/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='SelfEvaluating' homogen-type='inherit'> + <inherit name='SelfEvaluating'><classname resolved='predef::Languages.PLIS.SelfEvaluating'>SelfEvaluating</classname></inherit> + </docgroup> + <docgroup homogen-name='value' homogen-type='variable'> + <variable name='value'><type><or><int/><float/><object resolved='predef::Languages.PLIS.Number'/></or></type></variable> + </docgroup> + </class> + <class name='Parser'> + <docgroup homogen-name='buffer' homogen-type='variable'> + <variable name='buffer'><type><string/></type></variable> + </docgroup> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='buffer'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + </class> + <class name='SelfEvaluating'> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='name'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='LObject' homogen-type='inherit'> + <inherit name='LObject'><classname>LObject</classname></inherit> + </docgroup> + <docgroup homogen-name='name' homogen-type='variable'> + <variable name='name'><type><string/></type></variable> + </docgroup> + </class> + <class name='String'> + <docgroup homogen-name='create' homogen-type='method'> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='value'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='SelfEvaluating' homogen-type='inherit'> + <inherit name='SelfEvaluating'><classname resolved='predef::Languages.PLIS.SelfEvaluating'>SelfEvaluating</classname></inherit> + </docgroup> + <docgroup homogen-name='value' homogen-type='variable'> + <variable name='value'><type><string/></type></variable> + </docgroup> + </class> + </module> + </module>   <module name='Locale'>   <docgroup homogen-name='call' homogen-type='method'><doc><text><p>Returns a localized function    If function not found, tries fallback function fb,
16122:   </docgroup>   </class>   </module> + <module name='MIME'> + <docgroup homogen-name='decode_base64' homogen-type='method'><doc><text><p>This function decodes data encoded using the <tt>base64</tt> +  transfer encoding.</p> + </text><group><seealso/><text><p><ref resolved='predef::MIME.encode_base64'>MIME.encode_base64()</ref>, <ref>MIME.decode()</ref></p> + </text></group></doc> + <method name='decode_base64'> + <arguments><argument name='encoded_data'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='decode_qp' homogen-type='method'><doc><text><p>This function decodes data encoded using the <tt>quoted-printable</tt> +  (a.k.a. quoted-unreadable) transfer encoding.</p> + </text><group><seealso/><text><p><ref resolved='predef::MIME.encode_qp'>MIME.encode_qp()</ref>, <ref>MIME.decode()</ref></p> + </text></group></doc> + <method name='decode_qp'> + <arguments><argument name='encoded_data'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='decode_uue' homogen-type='method'><doc><text><p>This function decodes data encoded using the <tt>x-uue</tt> transfer encoding. +  It can also be used to decode generic UUEncoded files.</p> + </text><group><seealso/><text><p><ref resolved='predef::MIME.encode_uue'>MIME.encode_uue()</ref>, <ref>MIME.decode()</ref></p> + </text></group></doc> + <method name='decode_uue'> + <arguments><argument name='encoded_data'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='encode_base64' homogen-type='method'><doc><text><p>This function encodes data using the <tt>base64</tt> transfer encoding.</p> + <p> If a nonzero value is passed as <ref resolved='predef::MIME.encode_base64.no_linebreaks'>no_linebreaks</ref>, the result string +  will not contain any linebreaks.</p> + </text><group><seealso/><text><p><ref resolved='predef::MIME.decode_base64'>MIME.decode_base64()</ref>, <ref>MIME.encode()</ref></p> + </text></group></doc> + <method name='encode_base64'> + <arguments><argument name='data'><type><string/></type></argument><argument name='no_linebreaks'><type><or><void/><int/></or></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='encode_qp' homogen-type='method'><doc><text><p>This function encodes data using the <tt>quoted-printable</tt> +  (a.k.a. quoted-unreadable) transfer encoding.</p> + <p> If a nonzero value is passed as <ref resolved='predef::MIME.encode_qp.no_linebreaks'>no_linebreaks</ref>, the result +  string will not contain any linebreaks.</p> + </text><group><note/><text><p>Please do not use this function. QP is evil, and there's no +  excuse for using it.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::MIME.decode_qp'>MIME.decode_qp()</ref>, <ref>MIME.encode()</ref></p> + </text></group></doc> + <method name='encode_qp'> + <arguments><argument name='data'><type><string/></type></argument><argument name='no_linebreaks'><type><or><void/><int/></or></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='encode_uue' homogen-type='method'><doc><text><p>This function encodes data using the <tt>x-uue</tt> transfer encoding.</p> + <p> The optional argument <ref resolved='predef::MIME.encode_uue.filename'>filename</ref> specifies an advisory filename to include +  in the encoded data, for extraction purposes.</p> + <p> This function can also be used to produce generic UUEncoded files.</p> + </text><group><seealso/><text><p><ref resolved='predef::MIME.decode_uue'>MIME.decode_uue()</ref>, <ref>MIME.encode()</ref></p> + </text></group></doc> + <method name='encode_uue'> + <arguments><argument name='encoded_data'><type><string/></type></argument><argument name='filename'><type><or><void/><string/></or></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='quote' homogen-type='method'><doc><text><p>This function is the inverse of the <ref resolved='predef::MIME.tokenize'>MIME.tokenize</ref> function.</p> + <p> A header field value is constructed from a sequence of lexical elements. +  Characters (<expr>int</expr>s) are taken to be special-characters, whereas +  strings are encoded as atoms or quoted-strings, depending on whether +  they contain any special characters.</p> + </text><group><note/><text><p>There is no way to construct a domain-literal using this function. +  Neither can it be used to produce comments.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::MIME.tokenize'>MIME.tokenize()</ref></p> + </text></group></doc> + <method name='quote'> + <arguments><argument name='lexical_elements'><type><array><valuetype><or><string/><int/></or></valuetype></array></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='quote_labled' homogen-type='method'><doc><text><p>This function performs the reverse operation of <ref resolved='predef::MIME.tokenize_labled'>tokenize_labled()</ref>.</p> + </text><group><seealso/><text><p><ref resolved='predef::MIME.quote'>MIME.quote()</ref>, <ref resolved='predef::MIME.tokenize_labled'>MIME.tokenize_labled()</ref></p> + </text></group></doc> + <method name='quote_labled'> + <arguments><argument name='tokens'><type><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='tokenize' homogen-type='method'><doc><text><p>A structured header field, as specified by <rfc>822</rfc>, is constructed from +  a sequence of lexical elements.</p> + </text><group><param name='header'/><text><p>The header value to parse.</p> + </text></group><group><param name='flags'/><text><p>An optional set of flags. Currently only one flag is defined:</p> + <int><group><value>TOKENIZE_KEEP_ESCAPES</value><text><p>Keep backslash-escapes in quoted-strings.</p> + </text></group></int><p>The lexical elements parsed are:</p> + <dl><group><item/><text><p>individual special characters</p> + </text></group><group><item/><text><p>quoted-strings</p> + </text></group><group><item/><text><p>domain-literals</p> + </text></group><group><item/><text><p>comments</p> + </text></group><group><item/><text><p>atoms</p> + </text></group></dl><p>This function will analyze a string containing the header value, +  and produce an array containing the lexical elements.</p> + <p> Individual special characters will be returned as characters (i.e. +  <expr>int</expr>s).</p> + <p> Quoted-strings, domain-literals and atoms will be decoded and returned +  as strings.</p> + <p> Comments are not returned in the array at all.</p> + </text></group><group><note/><text><p>As domain-literals are returned as strings, there is no way to tell the +  domain-literal <tt>[127.0.0.1]</tt> from the quoted-string +  <tt>"[127.0.0.1]"</tt>. Hopefully this won't cause any problems. +  Domain-literals are used seldom, if at all, anyway...</p> + <p> The set of special-characters is the one specified in <rfc>1521</rfc> +  (i.e. <expr>"&lt;", "&gt;", "@", ",", ";", ":", "\", "/", "?", "="</expr>), +  and not the set specified in <rfc>822</rfc>.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::MIME.quote'>MIME.quote()</ref>, <ref resolved='predef::MIME.tokenize_labled'>tokenize_labled()</ref>, +  <ref>decode_words_tokenized_remapped()</ref>.</p> + </text></group></doc> + <method name='tokenize'> + <arguments><argument name='header'><type><string/></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument></arguments> + <returntype><array><valuetype><or><string/><int/></or></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='tokenize_labled' homogen-type='method'><doc><text><p>Similar to <ref resolved='predef::MIME.tokenize'>tokenize()</ref>, but labels the contents, by making +  arrays with two elements; the first a label, and the second +  the value that <ref resolved='predef::MIME.tokenize'>tokenize()</ref> would have put there, except +  for that comments are kept.</p> + </text><group><param name='header'/><text><p>The header value to parse.</p> + </text></group><group><param name='flags'/><text><p>An optional set of flags. Currently only one flag is defined:</p> + <int><group><value>TOKENIZE_KEEP_ESCAPES</value><text><p>Keep backslash-escapes in quoted-strings.</p> + </text></group></int><p>The following labels exist:</p> + <string><group><value>"encoded-word"</value><text><p>Word encoded according to =?...</p> + </text></group><group><value>"special"</value><text><p>Special character.</p> + </text></group><group><value>"word"</value><text><p>Word.</p> + </text></group><group><value>"domain-literal"</value><text><p>Domain literal.</p> + </text></group><group><value>"comment"</value><text><p>Comment.</p> + </text></group></string> + </text></group><group><seealso/><text><p><ref resolved='predef::MIME.quote'>MIME.quote()</ref>, <ref resolved='predef::MIME.tokenize'>tokenize()</ref>, +  <ref>decode_words_tokenized_labled_remapped()</ref></p> + </text></group></doc> + <method name='tokenize_labled'> + <arguments><argument name='header'><type><string/></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument></arguments> + <returntype><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></returntype> + </method> + </docgroup> + </module>   <module name='Math'>   <class name='Matrix'>   <doc>
16221:      </doc>   </docgroup> - <docgroup homogen-type='method'> - <method name='`×'> -  <returntype> -  <object>object </object></returntype> -  <arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`×'/></type></argument> -  -  </arguments> - </method><method name='``×'> -  <returntype> -  <object>object </object></returntype> -  <arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`×'/></type></argument> -  -  </arguments> - </method><method name='cross'> -  <returntype> -  <object>object </object></returntype> -  <arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`×'/></type></argument> -  -  </arguments> - </method><doc> - <text> - <p>Matrix cross-multiplication.</p> - </text> -  - </doc> - </docgroup> +    <docgroup homogen-name='cast' homogen-type='method'>   <method name='cast'>    <returntype>
16255:    <arguments><argument name='to_what'><type><string/></type></argument>       </arguments> - </method><method name='cast'> -  <returntype> -  <array><valuetype> -  <array><valuetype><float/></valuetype></array></valuetype></array></returntype> -  <arguments><argument name='to_what'><type><string/></type></argument> -  -  </arguments> +    </method><doc>   <text>   <p>This is to be able to get the matrix values. - <tt>(array)</tt> gives back a double array of floats. - <tt>m-&gt;vect()</tt> gives back an array of floats.</p> - </text> -  - </doc> - </docgroup> - <docgroup homogen-name='cast' homogen-type='method'> - <method name='cast'> -  <returntype> -  <array><valuetype> -  <array><valuetype><float/></valuetype></array></valuetype></array></returntype> -  <arguments><argument name='to_what'><type><string/></type></argument> -  -  </arguments> - </method><doc> - <text> - <p>This is to be able to get the matrix values. +    This gives back a double array of floats.</p>   </text>   
16296:   </method><method name='create'>    <returntype>    <object>void </object></returntype> -  <arguments><argument><value>array(int|float)</value></argument> -  </arguments> - </method><method name='create'> -  <returntype> -  <object>void </object></returntype> +     <arguments><argument name='n'><type><int/></type></argument>   <argument name='m'><type><int/></type></argument>   
16322:    <or><float/><int/></or></type></argument>       </arguments> - </method><method name='create'> -  <returntype> -  <object>void </object></returntype> -  <arguments><argument><value>"identity"</value></argument><argument name='size'><type><int/></type></argument> -  -  </arguments> - </method><method name='create'> -  <returntype> -  <object>void </object></returntype> -  <arguments><argument><value>"rotate"</value></argument><argument name='size'><type><int/></type></argument> - <argument name='rads'><type><float/></type></argument> - <argument name='axis'><type> -  <object resolved='predef::Math.Matrix'>Matrix</object></type></argument> -  -  </arguments> - </method><method name='create'> -  <returntype> -  <object>void </object></returntype> -  <arguments><argument><value>"rotate"</value></argument><argument name='size'><type><int/></type></argument> - <argument name='rads'><type><float/></type></argument> - <argument name='x'><type><float/></type></argument> - <argument name='y'><type><float/></type></argument> - <argument name='z'><type><float/></type></argument> -  -  </arguments> +    </method><doc>   <text>   <p>This method initializes the matrix.
16366:      <p>The third use is to give all indices in the   matrix the same value, for instance zero or 42.</p> -  - <p>The forth use is some special matrixes. First the - square identity matrix again, then the rotation - matrix.</p> +    </text>      </doc>
16385:    <object>float </object></returntype>    <arguments>    </arguments> - </method><method name='normv'> -  <returntype> -  <object>object </object></returntype> -  <arguments> -  </arguments> +    </method><doc>   <text>   <p>Norm of the matrix, and the square of the norm
16400:   A<sub>1</sub><sup>2</sup> + ... + A<sub>n</sub><sup>2</sup> ).</p>      <p>It is only usable with 1xn or nx1 matrices.</p> -  - <p>m-&gt;normv() is equal to m*(1.0/m-&gt;norm()), - with the exception that the zero vector will still be - the zero vector (no Pike_error).</p> +    </text>      </doc>
18241:   </docgroup>   </class>   </module> + <module name='Odbc'> + <doc><text><p>Low-level interface to Open DataBase Connectivity SQL-drivers.</p> + </text><group><note/><text><p>You typically don't want to access this module directly, but +  instead use <ref>Sql.Sql()</ref> with an <expr>"odbc://"</expr> or +  <expr>"dsn://"</expr> URL.</p> + </text></group><group><seealso/><text><p><ref>Sql.Sql()</ref></p> + </text></group></doc> + <docgroup homogen-name='connect_lock' homogen-type='method'><doc><text><p>Enable or disable a mutex that serializes all ODBC SQLConnect +  calls (i.e. when ODBC connections are created). This lock might be +  necessary to work around bugs in ODBC drivers.</p> + </text><group><param name='enable'/><text><p>Enables the mutex if nonzero, disables it otherwise. The state +  is not changed if this argument is left out.</p> + </text></group><group><returns/><text><p>The old state of the flag.</p> + </text></group><group><note/><text><p>This is currently enabled by default due to bugs in the current +  FreeTDS library (version 0.63), but that might change if the +  demand for this kludge ceases in the future. Therefore, if this +  setting is important to you then always set it explicitly. +  Hopefully most users don't need to bother with it.</p> + </text></group></doc> + <method name='connect_lock'> + <arguments><argument name='enable'><type><or><void/><int/></or></type></argument></arguments> + <returntype><int><min>0</min><max>1</max></int></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_dbs' homogen-type='method'><doc><text><p>List the configured ODBC database sources.</p> + </text></doc> + <method name='list_dbs'> + <arguments/> + <returntype><array><valuetype><string/></valuetype></array></returntype> + </method> + </docgroup> + <class name='odbc'> + <doc><text><p>Low-level connection to an ODBC or DSN database.</p> + </text><group><note/><text><p>You typically don't want to access this module directly, but +  instead use the <ref>Sql.odbc</ref> or <ref>Sql.dsn</ref> created by <ref>Sql.Sql()</ref>.</p> + </text></group><group><seealso/><text><p><ref>Sql.odbc</ref>, <ref>Sql.dsn</ref></p> + </text></group></doc> + </class> + </module>   <module name='Parser'>   <docgroup homogen-name='.' homogen-type='method'>   <method name='.'><typevalue>
19205:   </docgroup>   </class>   </module> + <module name='Pipe'> + <doc><text><p>Single socket output.</p> + <p> Regular file output and (multiple, adding) socket output +  with no mmap input.</p> + <p> Multiple socket output without regular file output illegal.</p> + </text><group><note/><text><p>It is preferable to use the <ref>Shuffler</ref> API, it is significantly +  more flexible.</p> + </text></group></doc> + <class name='pipe'> + <doc><text><p>Concatenation pipe.</p> + </text></doc> + <docgroup homogen-name='bytes_sent' homogen-type='method'><doc><text><p>Return the number of bytes sent.</p> + </text></doc> + <method name='bytes_sent'> + <arguments/> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='finish' homogen-type='method'><doc><text><p>Terminate and reinitialize the pipe.</p> + </text></doc> + <method name='finish'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='input' homogen-type='method'><doc><text><p>Add an input file to this pipe.</p> + </text></doc> + <method name='input'> + <arguments><argument name='obj'><type><object resolved='predef::Pipe.pipe.input'/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='output' homogen-type='method'><doc><text><p>Add an output file object.</p> + </text></doc> + <method name='output'> + <arguments><argument name='obj'><type><object resolved='predef::Pipe.pipe.output'/></type></argument><argument name='start_pos'><type><or><int/><void/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='set_done_callback' homogen-type='method'><doc><text><p>Set the callback function to be called when all the outputs +  have been sent.</p> + </text></doc> + <method name='set_done_callback'> + <arguments><argument name='done_cb'><type><or><void/><function><argtype><mixed/></argtype><returntype><mixed/></returntype></function></or></type></argument><argument name='id'><type><or><void/><mixed/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='set_output_closed_callback' homogen-type='method'><doc><text><p>Set the callback function to be called when one of the outputs has +  been closed from the other side.</p> + </text></doc> + <method name='set_output_closed_callback'> + <arguments><argument name='close_cb'><type><or><void/><function><argtype><mixed/></argtype><argtype><object resolved='predef::Pipe.pipe.set_output_closed_callback'/></argtype><returntype><mixed/></returntype></function></or></type></argument><argument name='id'><type><or><void/><mixed/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='start' homogen-type='method'><doc><text><p>Start sending the input(s) to the output(s).</p> + </text></doc> + <method name='start'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='version' homogen-type='method'><doc><text><p>Return the version of the module.</p> + </text></doc> + <method name='version'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='write' homogen-type='method'><doc><text><p>Add an input string to this pipe.</p> + </text></doc> + <method name='write'> + <arguments><argument name='bytes'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + </class> + </module>   <module name='Postgres'>   <class name='postgres'>   <doc placeholder='true'>
22937:   </docgroup>   </class>   </module> + <module name='Yabu'> + <doc><text><p>Yabu is an all purpose transaction database written in pike, used +  to store data records associated with a unique key.</p> + </text></doc> + <class name='DB'> + <doc><text><p>A Yabu database instance</p> + </text></doc> + <docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Return a list of all tables</p> + </text></doc> + <method name='_indices'><modifiers><protected/></modifiers> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Return all tables as an array</p> + </text></doc> + <method name='_values'><modifiers><protected/></modifiers> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Equivalent to <ref resolved='predef::Yabu.DB.table'>table</ref></p> + </text></doc> + <method name='`[]'><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='ascii_statistics' homogen-type='method'><doc><text><p>Return information about all tables in a human readable format</p> + </text></doc> + <method name='ascii_statistics'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='close' homogen-type='method'><doc><text><p>Close the database.</p> + </text></doc> + <method name='close'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Open a new or existing databse.</p> + <p> The <ref resolved='predef::Yabu.DB.create.dir'>dir</ref> is the directory the database should be stored in. +  It will be created if it does not exist.</p> + <p> Only one database can be in any given directory.</p> + <p> The <ref resolved='predef::Yabu.DB.create.mode'>mode</ref> specifies the operation mode, and +  is a string made up of the desired modes, 'r'=read, 'w'=write +  and 'c'=create.</p> + <p> To open an existing database in read only mode, use "r".</p> + <p> To open an existing database in read/write mode, use "rw".</p> + <p> To create a new database, or open an existing one in read write mode, use "rwc".</p> + </text></doc> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='dir'><type><string/></type></argument><argument name='mode'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_tables' homogen-type='method'><doc><text><p>Return a list of all tables in the database</p> + </text></doc> + <method name='list_tables'> + <arguments/> + <returntype><array><valuetype><string/></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='purge' homogen-type='method'><doc><text><p>Delete the database.</p> + </text></doc> + <method name='purge'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='reorganize' homogen-type='method'><doc><text><p>Call <ref resolved='predef::Yabu.Table.reorganize'>Table.reorganize</ref> in all tables</p> + </text></doc> + <method name='reorganize'> + <arguments><argument name='ratio'><type><or><float/><void/></or></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='statistics' homogen-type='method'><doc><text><p>Return information about all tables</p> + </text></doc> + <method name='statistics'> + <arguments/> + <returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype> + </method> + </docgroup> + <docgroup homogen-name='sync' homogen-type='method'><doc><text><p>Sync all tables</p> + </text></doc> + <method name='sync'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='table' homogen-type='method'><doc><text><p>Return the Table object for the named table</p> + </text></doc> + <method name='table'> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><object resolved='predef::Yabu.Table'>Table</object></returntype> + </method> + </docgroup> + </class> + <class name='LookupDB'> + <doc><text><p>This database is optimized for lots of very small data records (a +  few bytes each, usually), but the API is otherwise identical to +  the normal <ref resolved='predef::Yabu.DB'>DB</ref> API.</p> + <p> It will perform badly if used with big records. +  You also need to know in advance aproximately how many keys there +  will be, the performance will degrade if way more than the +  expected number of keys are present.</p> + </text></doc> + <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Construct a new lookup table.</p> + <p> The <ref resolved='predef::Yabu.LookupDB.create.options'>options</ref>, if present, can be used to specify the index +  hash size. The bigger that number is, the less memory will be +  used given a certain number of actual keys. In general, using +  the expected number of entries in the database divided by +  100-1000 is reasonable.</p> + <p> The supported options are</p> + <mapping><group><member><type><int><min>1</min><max/></int></type><index>index_size</index></member></group></mapping> + </text></doc> + <method name='create'><modifiers><protected/></modifiers> + <arguments><argument name='dir'><type><string/></type></argument><argument name='mode'><type><string/></type></argument><argument name='options'><type><or><mapping/><void/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='DB' homogen-type='inherit'> + <inherit name='DB'><classname resolved='predef::Yabu.DB'>DB</classname></inherit> + </docgroup> + </class> + <class name='Table'> + <doc><text><p>The basic Yabu table</p> + </text></doc> + <docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Equivalent to list_keys()</p> + </text></doc> + <method name='_indices'><modifiers><protected/></modifiers> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_m_delete' homogen-type='method'><doc><text><p>Equivalent to <ref resolved='predef::Yabu.Table.delete'>delete</ref></p> + </text></doc> + <method name='_m_delete'><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Fetches all keys from disk</p> + </text></doc> + <method name='_values'><modifiers><protected/></modifiers> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Equivalent to <ref resolved='predef::Yabu.Table.get'>get</ref></p> + </text></doc> + <method name='`[]'><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Equivalent to <ref resolved='predef::Yabu.Table.set'>set</ref></p> + </text></doc> + <method name='`[]='><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument><argument name='x'><type><mixed/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='ascii_statistics' homogen-type='method'><doc><text><p>Return information about all tables in a human redable format</p> + </text></doc> + <method name='ascii_statistics'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='close' homogen-type='method'><doc><text><p>Close the table</p> + </text></doc> + <method name='close'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='delete' homogen-type='method'><doc><text><p>Remove a key</p> + </text></doc> + <method name='delete'> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='get' homogen-type='method'><doc><text><p>Get a key</p> + </text></doc> + <method name='get'> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_keys' homogen-type='method'><doc><text><p>List all keys</p> + </text></doc> + <method name='list_keys'> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='purge' homogen-type='method'><doc><text><p>Close and delete the table from disk</p> + </text></doc> + <method name='purge'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='reorganize' homogen-type='method'><doc><text><p>Reorganize the on-disk storage, compacting it.</p> + <p> If <ref resolved='predef::Yabu.Table.reorganize.ratio'>ratio</ref> is given it is the lowest ratio of useful/total disk +  usage that is allowed.</p> + <p> As an example, if ratio is 0.7 at lest 70% of the on-disk +  storage must be live data, if not the reoganization is done.</p> + </text></doc> + <method name='reorganize'> + <arguments><argument name='ratio'><type><or><float/><void/></or></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='set' homogen-type='method'><doc><text><p>Set a key</p> + </text></doc> + <method name='set'> + <arguments><argument name='handle'><type><string/></type></argument><argument name='x'><type><mixed/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='statistics' homogen-type='method'><doc><text><p>Return information about the table.</p> + <mapping><group><member><type><int/></type><index>"keys"</index></member><text><p>The number of keys</p> + </text></group><group><member><type><int/></type><index>"size"</index></member><text><p>The on-disk space, in bytes</p> + </text></group><group><member><type><int/></type><index>used</index></member></group></mapping> + </text></doc> + <method name='statistics'> + <arguments/> + <returntype><mapping><indextype><string/></indextype><valuetype><or><string/><int/></or></valuetype></mapping></returntype> + </method> + </docgroup> + <docgroup homogen-name='sync' homogen-type='method'><doc><text><p>Synchronize. Usually done automatically</p> + </text></doc> + <method name='sync'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='transaction' homogen-type='method'><doc><text><p>Start a new transaction.</p> + </text></doc> + <method name='transaction'> + <arguments/> + <returntype><object resolved='predef::Yabu.Transaction'>Transaction</object></returntype> + </method> + </docgroup> + </class> + <class name='Transaction'> + <doc><text><p>A transaction. Created by calling transaction() in the table object.</p> + <p> It provides the same functions the table does, in addition to +  <ref resolved='predef::Yabu.Transaction.commit'>commit</ref> and <ref resolved='predef::Yabu.Transaction.rollback'>rollback</ref>. Changes done using the transaction +  object will not be in the actual table <ref resolved='predef::Yabu.Transaction.commit'>commit</ref> is called in the +  transaction.</p> + </text></doc> + <docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Identical to list_keys();</p> + </text></doc> + <method name='_indices'><modifiers><protected/></modifiers> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_m_delete' homogen-type='method'><doc><text><p>Identical to <ref resolved='predef::Yabu.Transaction.delete'>delete</ref></p> + </text></doc> + <method name='_m_delete'><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Identical to get(list_keys()][*]);</p> + </text></doc> + <method name='_values'><modifiers><protected/></modifiers> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Identical to get</p> + </text></doc> + <method name='`[]'><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Identical to set</p> + </text></doc> + <method name='`[]='><modifiers><protected/></modifiers> + <arguments><argument name='handle'><type><string/></type></argument><argument name='x'><type><mixed/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='commit' homogen-type='method'><doc><text><p>Commit all changes done so far in the transaction to the table</p> + </text></doc> + <method name='commit'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='delete' homogen-type='method'><doc><text><p>Delete <ref resolved='predef::Yabu.Transaction.delete.handle'>handle</ref> from the database</p> + </text></doc> + <method name='delete'> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='get' homogen-type='method'><doc><text><p>Get the value of <ref resolved='predef::Yabu.Transaction.get.handle'>handle</ref></p> + </text></doc> + <method name='get'> + <arguments><argument name='handle'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='list_keys' homogen-type='method'><doc><text><p>List all keys</p> + </text></doc> + <method name='list_keys'> + <arguments/> + <returntype><array/></returntype> + </method> + </docgroup> + <docgroup homogen-name='rollback' homogen-type='method'><doc><text><p>Undo all changes done so far in the transaction to the table</p> + </text></doc> + <method name='rollback'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='set' homogen-type='method'><doc><text><p>Set <ref resolved='predef::Yabu.Transaction.set.handle'>handle</ref> to x</p> + </text></doc> + <method name='set'> + <arguments><argument name='handle'><type><string/></type></argument><argument name='x'><type><mixed/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + </class> + </module> + <module name='Yp'> + <doc><text><p>This module is an interface to the Yellow Pages functions. Yp is also +  known as NIS (Network Information System) and is most commonly used to +  distribute passwords and similar information within a network.</p> + </text></doc> + <docgroup homogen-name='default_domain' homogen-type='method'><doc><text><p>Returns the default yp-domain.</p> + </text></doc> + <method name='default_domain'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='' homogen-type='import'> + <import name=''><classname resolved='predef::'>predef::</classname></import> + </docgroup> + <docgroup homogen-name='"___Yp"' homogen-type='inherit'> + <inherit name='"___Yp"'><classname>"___Yp"</classname></inherit> + </docgroup> + <class name='Domain'> + <docgroup homogen-name='all' homogen-type='method'><doc><text><p>Returns the whole map as a mapping.</p> + <p> <ref resolved='predef::Yp.Domain.all.map'>map</ref> is the YP-map to search in. This must be the full map name, +  you have to use <tt>passwd.byname</tt> instead of just <tt>passwd</tt>.</p> + </text></doc> + <method name='all'> + <arguments><argument name='map'><type><string/></type></argument></arguments> + <returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype> + </method> + </docgroup> + <docgroup homogen-type='method'><doc><text><p>If <ref resolved='predef::Yp.Domain.create.domain'>domain</ref> is not specified , the default domain will be used. +  (As returned by <ref resolved='predef::Yp.default_domain'>Yp.default_domain()</ref>).</p> + <p> If there is no YP server available for the domain, this +  function call will block until there is one. If no server appears +  in about ten minutes or so, an error will be returned. This timeout +  is not configurable.</p> + </text><group><seealso/><text><p><ref resolved='predef::Yp.default_domain'>Yp.default_domain()</ref></p> + </text></group></doc> + <method name='create'> + <arguments><argument name='domain'><type><or><string/><void/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + <method name='bind'> + <arguments><argument name='domain'><type><string/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='map' homogen-type='method'><doc><text><p>For each entry in <ref resolved='predef::Yp.Domain.map.map'>map</ref>, call the function specified by <ref resolved='predef::Yp.Domain.map.fun'>fun</ref>.</p> + <p> <ref resolved='predef::Yp.Domain.map.fun'>fun</ref> will get two arguments, the first being the key, and the +  second the value.</p> + <p> <ref resolved='predef::Yp.Domain.map.map'>map</ref> is the YP-map to search in. This must be the full map name. +  eg <tt>passwd.byname</tt> instead of just <tt>passwd</tt>.</p> + </text></doc> + <method name='map'> + <arguments><argument name='map'><type><string/></type></argument><argument name='fun'><type><function><argtype><string/></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='match' homogen-type='method'><doc><text><p>Search for the key <ref resolved='predef::Yp.Domain.match.key'>key</ref> in the Yp-map <ref resolved='predef::Yp.Domain.match.map'>map</ref>.</p> + </text><group><returns/><text><p>If there is no <ref resolved='predef::Yp.Domain.match.key'>key</ref> in the map, 0 (zero) will be returned, +  otherwise the string matching the key will be returned.</p> + </text></group><group><note/><text><p><ref resolved='predef::Yp.Domain.match.key'>key</ref> must match exactly, no pattern matching of any kind is done.</p> + </text></group></doc> + <method name='match'> + <arguments><argument name='map'><type><string/></type></argument><argument name='key'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='order' homogen-type='method'><doc><text><p>Returns the 'order' number for the map <ref resolved='predef::Yp.Domain.order.map'>map</ref>.</p> + <p> This is usually the number of seconds since Jan 1 1970 (see <ref>time()</ref>). +  When the map is changed, this number will change as well.</p> + <p> <ref resolved='predef::Yp.Domain.order.map'>map</ref> is the YP-map to search in. This must be the full map name. +  eg <tt>passwd.byname</tt> instead of just <tt>passwd</tt>.</p> + </text></doc> + <method name='order'> + <arguments><argument name='map'><type><string/></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='server' homogen-type='method'><doc><text><p>Returns the hostname of the server serving the map <ref resolved='predef::Yp.Domain.server.map'>map</ref>. <ref resolved='predef::Yp.Domain.server.map'>map</ref> +  is the YP-map to search in. This must be the full map name. +  eg <tt>passwd.byname</tt> instead of just <tt>passwd</tt>.</p> + </text></doc> + <method name='server'> + <arguments><argument name='map'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + </class> + <class name='Map'> + <doc><text><p>Network Information Service aka YP map.</p> + </text></doc> + <docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Return the keys of the map.</p> + </text></doc> + <method name='_indices'> + <arguments/> + <returntype><array><valuetype><string/></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Return the number of entries in this map.</p> + </text></doc> + <method name='_sizeof'> + <arguments/> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Return the values of the map.</p> + </text></doc> + <method name='_values'> + <arguments/> + <returntype><array><valuetype><string/></valuetype></array></returntype> + </method> + </docgroup> + <docgroup homogen-type='method'><doc><text><p>Search for the key <ref resolved='predef::Yp.Map.match.key'>key</ref>. If there is no <ref resolved='predef::Yp.Map.match.key'>key</ref> in the map, 0 (zero) +  will be returned, otherwise the string matching the key will +  be returned.</p> + </text><group><note/><text><p><ref resolved='predef::Yp.Map.match.key'>key</ref> must match exactly, no pattern matching of any kind is done.</p> + </text></group></doc> + <method name='match'> + <arguments><argument name='key'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + <method name='`[]'> + <arguments><argument name='key'><type><string/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='all' homogen-type='method'><doc><text><p>Returns the whole map as a mapping.</p> + </text></doc> + <method name='all'> + <arguments/> + <returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype> + </method> + </docgroup> + <docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Convert the map to a mapping</p> + </text></doc> + <method name='cast'><modifiers><protected/></modifiers> + <arguments><argument name='type'><type><string/></type></argument></arguments> + <returntype><mapping/></returntype> + </method> + </docgroup> + <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new YP-map object.</p> + <p> <ref resolved='predef::Yp.Map.create.map'>map</ref> is the YP-map to bind to. This may be a nickname, such as +  <tt>passwd</tt> instead of just <tt>passwd.byname</tt>.</p> + <p> If <ref resolved='predef::Yp.Map.create.domain'>domain</ref> is not specified, the default domain will be used.</p> + </text><group><note/><text><p>If there is no YP server available for the domain, this +  function call will block until there is one. If no server appears +  in about ten minutes or so, an error will be returned. The timeout +  is not configurable.</p> + </text></group></doc> + <method name='create'> + <arguments><argument name='map'><type><string/></type></argument><argument name='domain'><type><or><string/><void/></or></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='map' homogen-type='method'><doc><text><p>Call a function for each entry in the map.</p> + <p> For each entry in the map, call the function <ref resolved='predef::Yp.Map.map.fun'>fun</ref>.</p> + <p> The function will be called like +  <expr>void fun(string key, string value)</expr>.</p> + </text></doc> + <method name='map'> + <arguments><argument name='fun'><type><function><argtype><string/></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='order' homogen-type='method'><doc><text><p>Return the order number for this map.</p> + </text></doc> + <method name='order'> + <arguments/> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='server' homogen-type='method'><doc><text><p>Return the server that provides this map.</p> + </text></doc> + <method name='server'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + </class> + </module>   <module name='modules'>   <module name='Mird'>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup> - <docgroup homogen-name='&quot;.&quot;' homogen-type='import'> - <import name='&quot;.&quot;'><classname resolved='predef::modules'>"."</classname></import> + <docgroup homogen-name='"."' homogen-type='import'> + <import name='"."'><classname resolved='predef::modules'>"."</classname></import>   </docgroup>   <class name='Mird'>   <class name='Table'>
22990:   </method>   </docgroup>   </class> -  +    </class>   </module>   </module>   </namespace>   </autodoc>