autodoc.git/
autodoc.xml
Branch:
Tag:
Non-build tags
All tags
No tags
2021-04-06
2021-04-06 20:57:59 by Tobias S. Josefowitz <tobij@tobij.de>
5803a99c3f7dbda0ae71a727bd8296141b208036 (
1073
lines) (+
965
/-
108
)
[
Show
|
Annotate
]
Branch:
5803a99c3f7dbda0ae71a727bd8296141b208036
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;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<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>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<=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>=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<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>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<=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>=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;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<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>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<=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>=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<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>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<=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>=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 +, *, -, =, <, >,
+
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>"<", ">", "@", ",", ";", ":", "\", "/", "?", "="</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->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->normv() is equal to m*(1.0/m->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='
"
.
"
' homogen-type='import'>
-
<import name='
"
.
"
'><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>