autodoc.git / onepage.xml

version» Context lines:

autodoc.git/onepage.xml:1:   <?xml version='1.0' encoding='utf-8'?> - <manual time-stamp='2018-02-07' version='Pike v8.1.11'> + <manual time-stamp='2018-02-08' version='Pike v8.1.11'>    <dir name='./onepage'>    <file name='./onepage/manual.html'>    <chapter number='1' title='Control Structures'>      <p>In this chapter all the control structures in Pike will be   explained. Control structures are used to control the flow of the   program execution. Note that functions that make the program pause and   simple function calls are not qualified as control structures.</p>      <section number='1' title='Conditions'>
autodoc.git/onepage.xml:3286:   <variable name='client_cert_distinguished_names'><type><array><valuetype><string/></valuetype></array></type></variable>   </docgroup>   <docgroup homogen-type='variable'><doc><text><p>Random cookies, sent and received with the hello-messages.</p>   </text></doc>   <variable name='client_random'><type><string/></type></variable>   <variable name='server_random'><type><string/></type></variable>   </docgroup>   <docgroup homogen-name='create' homogen-type='method'><doc><group><param name='is_server'/><text><p>Whether this is the server end of the connection or not.</p>   </text></group><group><param name='ctx'/><text><p>The context for the connection.</p>   </text></group><group><param name='min_version'/><text><p>Minimum version of SSL to support. -  Defaults to <ref resolved='predef::SSL.Constants.ProtocolVersion.PROTOCOL_SSL_3_0'>Constants.PROTOCOL_SSL_3_0</ref>.</p> +  Defaults to <ref resolved='7.8::SSL.Constants.ProtocolVersion.PROTOCOL_SSL_3_0'>Constants.PROTOCOL_SSL_3_0</ref>.</p>   </text></group><group><param name='max_version'/><text><p>Maximum version of SSL to support.    Defaults to <ref resolved='7.8::SSL.Constants.PROTOCOL_minor'>Constants.PROTOCOL_minor</ref>.</p>   </text></group></doc>   <method name='create'>   <arguments><argument name='is_server'><type><int/></type></argument><argument name='ctx'><type><or><void/><object resolved='7.8::SSL.context'>SSL.context</object></or></type></argument><argument name='min_version'><type><or><void/><object resolved='7.8::SSL.Constants.ProtocolVersion'>ProtocolVersion</object></or></type></argument><argument name='max_version'><type><or><void/><object resolved='7.8::SSL.Constants.ProtocolVersion'>ProtocolVersion</object></or></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='handle_handshake' homogen-type='method'><doc><text><p>Do handshake processing. Type is one of HANDSHAKE_*, data is the    contents of the packet, and raw is the raw packet received (needed
autodoc.git/onepage.xml:23597:   </text></group><group><item name='Message Authentication Code modules (MACs)'/><text><p><ref resolved='predef::Crypto.MAC'>MAC</ref> algorithms are provided as sub-modules to their corresponding    <ref resolved='predef::Crypto.Hash'>Hash</ref> or <ref resolved='predef::Crypto.Cipher'>Cipher</ref> module.    Examples include <ref resolved='predef::Nettle.SHA1.HMAC'>SHA1.HMAC</ref> and <ref resolved='predef::Crypto.AES.UMAC32'>AES.UMAC32</ref>.</p>   </text></group><group><item name='Authenticated Encryption with Associated Data modules (AEADs)'/><text><p><ref resolved='predef::Crypto.AEAD'>AEAD</ref>s combine ciphers with authentication codes, and may optionally    also take into account some associated data that is provided out of band.    This API is compatible with both <ref resolved='predef::Crypto.Cipher'>Cipher</ref> and <ref resolved='predef::Crypto.Hash'>Hash</ref>.    AEADs are provided as sub-modules to their corresponding ciphers.    Examples include <ref resolved='predef::Nettle.BlockCipher16.CCM'>AES.CCM</ref>, <ref resolved='predef::Nettle.BlockCipher16.GCM'>AES.GCM</ref> and <ref>CAMELLIA.EAX</ref>.</p>   </text></group></dl><p>As the cryptographic services offered from this module aren't    necessarily used for security applications, none of the strings -  inputted or outputted are marked as secure. That is up to the +  input or output are marked as secure. That is up to the    caller.</p>   </text><group><note/><text><p>Most of the APIs in this module work on 8 bit binary strings unless    otherwise noted.    For conversions to and from hexadecimal notation <ref resolved='predef::String.string2hex'>String.string2hex()</ref>    and <ref resolved='predef::String.hex2string'>String.hex2string()</ref> may be of interest.</p>   </text></group><group><note/><text><p>This module is only available if Pike has been compiled with    <ref resolved='predef::Nettle'>Nettle</ref> enabled (this is the default).</p>   </text></group></doc>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>
autodoc.git/onepage.xml:25254:    algorithm. E.g. triple DES can be emulated with    <expr>Crypto.Pipe(Crypto.DES, Crypto.DES, Crypto.DES)</expr>.</p>   </text></doc>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup>   </class>   <module name='RC4'>   <doc><text><p>RC4 is a stream cipher, sometimes refered to as Arcfour, and while    very fast isn't considered secure anymore.</p> - </text></doc> + </text><group><note/><text><p>The key setup of RC4 is quite weak, so you should never use keys +  with structure, such as ordinary passwords. If you have keys that +  don't look like random bit strings, and you want to use RC4, +  always hash the key before feeding it to RC4.</p> + <p> The first few thousand bits have a slight bias, so it is not +  uncommon for applications to encrypt a few kilobytes of dummy data +  before actual encryption.</p> + </text></group></doc>   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup>   <docgroup homogen-name='pre' homogen-type='inherit'>   <inherit name='pre'><classname resolved='predef::Nettle.ARCFOUR'>Nettle.ARCFOUR</classname></inherit>   </docgroup>   </module>   <module name='RIPEMD160'>   <doc><text><p>RIPEMD160 is a hash function designed by Hans Dobbertin, Antoon    Bosselaers, and Bart Preneel, as a strengthened version of RIPEMD
autodoc.git/onepage.xml:74076:    mode and the data can be decompressed with a zero size window.</p>   </text></group><group><value>FIXED</value><text><p>In this mode dynamic huffman codes are disabled, allowing for    a simpler decoder for special applications. This mode is not    available in all zlib versions.</p>   </text></group></int>   </text></group><group><param name='window_size'/><text><p>Defines the size of the LZ77 window from 256 bytes to 32768    bytes, expressed as 2^x.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Gz.deflate'>deflate</ref>, <ref resolved='predef::Gz.inflate'>inflate</ref>, <ref resolved='predef::Gz.uncompress'>uncompress</ref></p>   </text></group></doc>   <method name='compress'> - <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument><argument name='raw'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument><argument name='level'><type><or><void/><int><min>0</min><max>9</max></int></or></type></argument><argument name='strategy'><type><or><void/><int/></or></type></argument><argument name='window_size'><type><or><void/><int><min>8</min><max>15</max></int></or></type></argument></arguments> + <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object resolved='predef::String.Buffer'>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument><argument name='raw'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument><argument name='level'><type><or><void/><int><min>0</min><max>9</max></int></or></type></argument><argument name='strategy'><type><or><void/><int/></or></type></argument><argument name='window_size'><type><or><void/><int><min>8</min><max>15</max></int></or></type></argument></arguments>   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   <docgroup homogen-name='crc32' homogen-type='method'><doc><text><p>This function calculates the standard ISO3309 Cyclic Redundancy Check.</p>   </text></doc>   <method name='crc32'>   <arguments><argument name='data'><type><string><min>0</min><max>255</max></string></type></argument><argument name='start_value'><type><or><void/><int><min>0</min><max/></int></or></type></argument></arguments>   <returntype><int/></returntype>   </method>   </docgroup>
autodoc.git/onepage.xml:74098:   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup>   <docgroup homogen-name='&quot;___Gz&quot;' homogen-type='inherit'>   <inherit name='&quot;___Gz&quot;'><classname>"___Gz"</classname></inherit>   </docgroup>   <docgroup homogen-name='uncompress' homogen-type='method'><doc><text><p>Uncompresses the <ref resolved='predef::Gz.uncompress.data'>data</ref> and returns it. The <ref resolved='predef::Gz.uncompress.raw'>raw</ref> parameter    tells the decoder that the indata lacks the data header and footer    defined in <rfc>1950</rfc>.</p>   </text></doc>   <method name='uncompress'> - <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument><argument name='raw'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments> + <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object resolved='predef::String.Buffer'>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument><argument name='raw'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   <class name='File'>   <doc><text><p>Allows the user to open a Gzip archive and read and write    it's contents in an uncompressed form, emulating the <ref resolved='predef::Stdio.File'>Stdio.File</ref>    interface.</p>   </text><group><note/><text><p>An important limitation on this class is that it may only be used    for reading <b>or</b> writing, not both at the same time.    Please also note that if you want to reopen a file for reading
autodoc.git/onepage.xml:74325:    function several times and concatenating the returned data.</p>   <p> The optional argument <ref resolved='predef::Gz.deflate.deflate.flush'>flush</ref> should be one of the following:</p>   <int><group><value>Gz.NO_FLUSH</value><text><p>Only data that doesn't fit in the internal buffers is returned.</p>   </text></group><group><value>Gz.PARTIAL_FLUSH</value><text><p>All input is packed and returned.</p>   </text></group><group><value>Gz.SYNC_FLUSH</value><text><p>All input is packed and returned.</p>   </text></group><group><value>Gz.FINISH</value><text><p>All input is packed and an 'end of data' marker is appended.</p>   </text></group></int>   </text><group><seealso/><text><p><ref resolved='predef::Gz.inflate.inflate'>Gz.inflate-&gt;inflate()</ref></p>   </text></group></doc>   <method name='deflate'> - <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument><argument name='flush'><type><or><int/><void/></or></type></argument></arguments> + <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object resolved='predef::String.Buffer'>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument><argument name='flush'><type><or><int/><void/></or></type></argument></arguments>   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   </class>   <class name='inflate'>   <doc><text><p>This class interfaces with the uncompression routines in the libz library.</p>   </text><group><note/><text><p>This program is only available if libz was available and found when    Pike was compiled.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Gz.deflate'>deflate</ref>, <ref resolved='predef::Gz.compress'>compress</ref>, <ref resolved='predef::Gz.uncompress'>uncompress</ref></p>   </text></group></doc>
autodoc.git/onepage.xml:74389:   </text><group><example/><text><p>// whole file</p>   <code><text><p>write(Gz.inflate()-&gt;inflate(stdin-&gt;read(0x7fffffff));</p>   <p> // streaming (blocks)    function inflate=Gz.inflate()-&gt;inflate;    while(string s=stdin-&gt;read(8192))    write(inflate(s));</p>   </text></code>   </text></group><group><seealso/><text><p><ref resolved='predef::Gz.deflate.deflate'>Gz.deflate-&gt;deflate()</ref>, <ref>Gz.decompress</ref></p>   </text></group></doc>   <method name='inflate'> - <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument></arguments> + <arguments><argument name='data'><type><or><string><min>0</min><max>255</max></string><object resolved='predef::String.Buffer'>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></or></type></argument></arguments>   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   </class>   </module>   <module name='HPack'>   <doc><text><p>Implementation of the HPACK (<rfc>7541</rfc>) header packing standard.</p>   <p> This is the header packing system that is used in HTTP/2 (<rfc>7540</rfc>).</p>   </text></doc>   <docgroup homogen-name='DEFAULT_HEADER_TABLE_SIZE' homogen-type='constant'><doc><text><p>This is the default static maximum size of the
autodoc.git/onepage.xml:88641:   </text></group><group><returns/><text><p>The a description of the path.</p>   </text></group><group><note/><text><p>The returned description will end with a proper indexing method    currently either <expr>"."</expr> or <expr>"-&gt;"</expr>.</p>   </text></group></doc>   <method name='describe_module'>   <arguments><argument name='mod'><type><or><object resolved='predef::MasterObject.describe_module'/><program/></or></type></argument><argument name='ret_obj'><type><or><array><valuetype><object resolved='predef::MasterObject.describe_module'/></valuetype></array><void/></or></type></argument></arguments>   <returntype><string/></returntype>   </method>   </docgroup>   <docgroup homogen-name='describe_object' homogen-type='method'><doc><text><p>Function called by <expr>sprintf("%O")</expr> for objects that don't -  have an <ref resolved='lfun::_sprintf'>lfun::_sprintf()</ref>, or have one that returns <expr>UNDEFINED}. -  - </expr></p> +  have an <ref resolved='lfun::_sprintf'>lfun::_sprintf()</ref>, or have one that returns <expr>UNDEFINED</expr>.</p>   </text></doc>   <method name='describe_object'>   <arguments><argument name='o'><type><object resolved='predef::MasterObject.describe_object'/></type></argument></arguments>   <returntype><string/></returntype>   </method>   </docgroup>   <docgroup homogen-name='describe_program' homogen-type='method'><doc><text><p>Function called by <expr>sprintf("%O")</expr> for programs.</p>   </text></doc>   <method name='describe_program'>   <arguments><argument name='p'><type><or><program/><function/></or></type></argument></arguments>
autodoc.git/onepage.xml:94714:    <expr>State()-&gt;update(Stdio.read_file(file))-&gt;digest()</expr>,    where State is the hash state class corresponding to this    Hash.</p>   </text><group><param name='bytes'/><text><p>The number of bytes of the file object <ref>file</ref> that should be    hashed. Negative numbers are ignored and the whole file is    hashed.</p>   </text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File'>Stdio.File</ref>, <ref resolved='predef::Nettle.Hash.State.update'>State()-&gt;update()</ref> and    <ref resolved='predef::Nettle.Hash.State.digest'>State()-&gt;digest()</ref>.</p>   </text></group></doc>   <method name='hash'> - <arguments><argument name='source'><type><or><object resolved='predef::Stdio.File'>Stdio.File</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object><object>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object></or></type></argument><argument name='bytes'><type><or><void/><int><min>0</min><max/></int></or></type></argument></arguments> + <arguments><argument name='source'><type><or><object resolved='predef::Stdio.File'>Stdio.File</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object><object resolved='predef::String.Buffer'>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object></or></type></argument><argument name='bytes'><type><or><void/><int><min>0</min><max/></int></or></type></argument></arguments>   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   <docgroup homogen-name='Hash' homogen-type='inherit'>   <inherit name='Hash'><classname resolved='predef::__builtin.Nettle.Hash'>__builtin.Nettle.Hash</classname></inherit>   </docgroup>   <docgroup homogen-name='name' homogen-type='method'><doc><text><p>Returns a human readable name for the algorithm.</p>   </text></doc>   <method name='name'>   <arguments/>
autodoc.git/onepage.xml:125958:   </docgroup>   <docgroup homogen-name='tell' homogen-type='method'>   <method name='tell'>   <arguments/>   <returntype><int/></returntype>   </method>   </docgroup>   </class>   <class name='Buffer'>   <doc><text><p>A buffer to use as input or buffering when doing I/O. It is -  similar to <ref>String.Buffer</ref>, but can only contain 8bit data and is +  similar to <ref resolved='predef::String.Buffer'>String.Buffer</ref>, but can only contain 8bit data and is    designed for protocol parsing. It is optimized for reading from    the beginning and adding to the end, and will try to minimize the    amount of data copying that is done.</p>   <p> The class maintains two separate offsets, one for reading and one    for writing. The functions that add data all do so at the write    offset (the end of the buffer), and reading is done from the read    offset (the start of the buffer).</p>   <p> The class can also be used to directly read from and write to    filedescriptors if so desired. This eliminates at least one memory    copy.</p>
autodoc.git/onepage.xml:126053:   <returntype><int><min>-1</min><max>255</max></int></returntype>   </method>   </docgroup>   <docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Set the character at the specified offset to <ref resolved='predef::Stdio.Buffer.`[]=.char'>char</ref>.</p>   </text></doc>   <method name='`[]='><modifiers><protected/></modifiers>   <arguments><argument name='off'><type><int/></type></argument><argument name='char'><type><int/></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup> - <docgroup homogen-name='add' homogen-type='method'><doc><text><code><text><p>private typedef <ref resolved='predef::System.Memory'>System.Memory</ref>|<ref resolved='predef::Stdio.Buffer'>Stdio.Buffer</ref>|<ref>String.Buffer</ref> BufferObject; + <docgroup homogen-name='add' homogen-type='method'><doc><text><code><text><p>private typedef <ref resolved='predef::System.Memory'>System.Memory</ref>|<ref resolved='predef::Stdio.Buffer'>Stdio.Buffer</ref>|<ref resolved='predef::String.Buffer'>String.Buffer</ref> BufferObject;    private typedef BufferObject|string(8bit)|int(8bit)|array(AddArgument) AddArgument;</p>   </text></code><p>Add the items in data to the end of the buffer.</p>   <p> The supported argument types are:</p>   <mixed><group><type><string><min>0</min><max>255</max></string></type><text><p>An eight bit string.</p>   </text></group><group><type><int><min>0</min><max>255</max></int></type><text><p>A single byte</p>   </text></group><group><type><object resolved='predef::System.Memory'>System.Memory</object></type><text><p>A chunk of memory. The whole memory area is added.</p>   </text></group><group><type><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></type><text><p>A chunk of memory. The whole memory area is added.</p> - </text></group><group><type><object>String.Buffer</object></type><text><p>A chunk of memory. The whole memory area is added.</p> + </text></group><group><type><object resolved='predef::String.Buffer'>String.Buffer</object></type><text><p>A chunk of memory. The whole memory area is added.</p>   </text></group><group><type><array><valuetype><object>AddArgument</object></valuetype></array></type><text><p>Add all elements in the array individually. Each element may be    any one of the types listed here.</p>   </text></group></mixed>   </text><group><seealso/><text><p><ref resolved='predef::Stdio.Buffer.sprintf'>sprintf</ref>, <ref resolved='predef::Stdio.Buffer.add_int8'>add_int8</ref>, <ref resolved='predef::Stdio.Buffer.add_int16'>add_int16</ref>, <ref resolved='predef::Stdio.Buffer.add_int32'>add_int32</ref>, <ref resolved='predef::Stdio.Buffer.add_int'>add_int</ref>    and    <ref resolved='predef::Stdio.Buffer.add_hstring'>add_hstring</ref></p>   </text></group></doc>   <method name='add'>   <arguments><argument name='data'><type><varargs><object>AddArgument</object></varargs></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>
autodoc.git/onepage.xml:126098:   <p> <ref resolved='predef::Stdio.Buffer.add_hstring.size_size'>size_size</ref> is the number of bytes used to represent the length of the data.    It must be less than Int.NATIVE_MAX.</p>   <p> <ref resolved='predef::Stdio.Buffer.add_hstring.offset'>offset</ref> is added to the length of the data prior to writing out    the length. Typical usage involves adding <ref resolved='predef::Stdio.Buffer.add_hstring.size_size'>size_size</ref> to account    for the room used by the size.</p>   <p> The supported <ref resolved='predef::Stdio.Buffer.add_hstring.data'>data</ref> argument types are</p>   <mixed><group><type><int><min>0</min><max>255</max></int></type><text><p>An eight bit character.</p>   </text></group><group><type><string><min>0</min><max>255</max></string></type><text><p>An eight bit string.</p>   </text></group><group><type><object resolved='predef::System.Memory'>System.Memory</object></type><text><p>A chunk of memory. The whole memory area is added.</p>   </text></group><group><type><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></type><text><p>A chunk of memory. The whole memory area is added.</p> - </text></group><group><type><object>String.Buffer</object></type><text><p>A chunk of memory. The whole memory area is added.</p> + </text></group><group><type><object resolved='predef::String.Buffer'>String.Buffer</object></type><text><p>A chunk of memory. The whole memory area is added.</p>   </text></group><group><type><array/></type><text><p>Add all elements in the array individually. Each element may be    any one of the types listed here.</p>   </text></group></mixed></text></doc>   <method name='add_hstring'>   <arguments><argument name='data'><type><string><min>0</min><max>255</max></string></type></argument><argument name='size_size'><type><int/></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>   </method>   <method name='add_hstring'>   <arguments><argument name='data'><type><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object></type></argument><argument name='size_size'><type><int/></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>   </method>   <method name='add_hstring'>   <arguments><argument name='data'><type><object resolved='predef::System.Memory'>System.Memory</object></type></argument><argument name='size_size'><type><int/></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>   </method>   <method name='add_hstring'> - <arguments><argument name='data'><type><object>String.Buffer</object></type></argument><argument name='size_size'><type><int/></type></argument></arguments> + <arguments><argument name='data'><type><object resolved='predef::String.Buffer'>String.Buffer</object></type></argument><argument name='size_size'><type><int/></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>   </method>   <method name='add_hstring'>   <arguments><argument name='data'><type><int><min>0</min><max>255</max></int></type></argument><argument name='size_size'><type><int/></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>   </method>   <method name='add_hstring'>   <arguments><argument name='data'><type><array/></type></argument><argument name='size_size'><type><int/></type></argument></arguments>   <returntype><object resolved='predef::Stdio.Buffer'>Buffer</object></returntype>   </method>
autodoc.git/onepage.xml:126232:   </text></doc>   <method name='consume'>   <arguments><argument name='n'><type><int><min>0</min><max/></int></type></argument></arguments>   <returntype><or><int><min>0</min><max/></int><int><min>-1</min><max>-1</max></int></or></returntype>   </method>   </docgroup>   <docgroup homogen-name='create' homogen-type='method'><doc><text><p>If passed an integer or no argument, create a buffer of that    size, or if no argument is given, 226 bytes.</p>   <p> If <ref resolved='predef::Stdio.Buffer.create.contents'>contents</ref> are specified a new buffer with the contents of    the given string/System.Memory or String.Buffer will be created.</p> - </text><group><note/><text><p>In the <ref>String.Buffer</ref> case the data has to be copied unless + </text><group><note/><text><p>In the <ref resolved='predef::String.Buffer'>String.Buffer</ref> case the data has to be copied unless    there is only one reference to the String.Buffer object, since    modifications of the String.Buffer would cause the Buffer to    point into invalid memory.</p>   <p> In all other cases this will not copy the string data, instead    data will be read from the source until it needs to be modified,    so the buffer creation is fast regardless of the length of the    string.</p>   <p> However, as an example, if the buffer is created with a 100Gb    <ref resolved='predef::System.Memory'>System.Memory</ref> mmap:ed file as the <ref resolved='predef::Stdio.Buffer.create.contents'>contents</ref> and you later on    try to modify the buffer using one of the <ref resolved='predef::Stdio.Buffer.add'>add</ref> functions (or
autodoc.git/onepage.xml:126255:   </text></group></doc>   <method name='create'>   <arguments><argument name='len'><type><or><int/><void/></or></type></argument></arguments>   <returntype><void/></returntype>   </method>   <method name='create'>   <arguments><argument name='contents'><type><string><min>0</min><max>255</max></string></type></argument></arguments>   <returntype><void/></returntype>   </method>   <method name='create'> - <arguments><argument name='contents'><type><or><object resolved='predef::System.Memory'>System.Memory</object><object>String.Buffer</object></or></type></argument></arguments> + <arguments><argument name='contents'><type><or><object resolved='predef::System.Memory'>System.Memory</object><object resolved='predef::String.Buffer'>String.Buffer</object></or></type></argument></arguments>   <returntype><void/></returntype>   </method>   </docgroup>   <docgroup homogen-name='input_from' homogen-type='method'><doc><text><p>Read data from <ref resolved='predef::Stdio.Buffer.input_from.f'>f</ref> into this buffer. If <ref resolved='predef::Stdio.Buffer.input_from.nbytes'>nbytes</ref> is not    specified, read until there is no more data to read (currently).</p>   <p> Returns the amount of data that was read, or <expr>-1</expr> on    read error.</p>   </text><group><note/><text><p>Please note that this funcition will read all data from the    filedescriptor unless it's set to be non-blocking.</p>   </text></group></doc>
autodoc.git/onepage.xml:130869:   </text></group></int>   </text></group><group><note/><text><p>It is possible that a future version of Pike may return    further values. In particular the width <expr>7</expr> seems    like it could be useful.</p>   </text></group></doc>   <method name='width'>   <arguments><argument name='s'><type><string/></type></argument></arguments>   <returntype><or><int><min>8</min><max>8</max></int><int><min>16</min><max>16</max></int><int><min>32</min><max>32</max></int></or></returntype>   </method>   </docgroup> + <class name='Buffer'> + <doc><text><p>A buffer, used for building strings. It's +  conceptually similar to a string, but you can only <ref resolved='predef::String.Buffer.add'>add</ref> +  strings to it, and you can only <ref resolved='predef::String.Buffer.get'>get</ref> the value from it once.</p> + <p> There is a reason for those seemingly rather odd limitations, +  it makes it possible to do some optimizations that really speed +  things up.</p> + <p> You do not need to use this class unless you add very many +  strings together, or very large strings.</p> + </text><group><example/><text><p>For the fastest possible operation, write your code like this:</p> + <code><text><p>String.Buffer b = String.Buffer( );</p> + <p> function add = b-&gt;add;</p> + <p> .. call add several times in code ...</p> + <p> string result = b-&gt;get(); // also clears the buffer</p> + </text></code></text></group></doc> + <docgroup homogen-name='_search' homogen-type='method'><doc><text><p>Search for a <ref resolved='predef::String.Buffer._search.character'>character</ref> in the buffer, starting the scan +  from <ref resolved='predef::String.Buffer._search.start'>start</ref> and ending at <ref resolved='predef::String.Buffer._search.end'>end</ref> (inclusive).</p> + </text><group><returns/><text><p>Returns to position in the buffer where the character was found +  on success, and <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> on failure.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Buffer._search'>Stdio.Buffer()-&gt;_search()</ref>, <ref resolved='predef::search'>search()</ref>, <ref resolved='lfun::_search'>lfun::_search()</ref></p> + </text></group></doc> + <method name='_search'> + <arguments><argument name='character'><type><int/></type></argument><argument name='start'><type><or><int/><void/></or></type></argument><argument name='end'><type><or><int/><void/></or></type></argument></arguments> + <returntype><int><min>0</min><max/></int></returntype> + </method> + </docgroup> + <docgroup homogen-name='_search' homogen-type='method'><doc><text><p>Search for a <ref resolved='predef::String.Buffer._search.substring'>substring</ref> in the buffer, starting the scan +  from <ref resolved='predef::String.Buffer._search.start'>start</ref> and ending at <ref resolved='predef::String.Buffer._search.end'>end</ref> (inclusive).</p> + </text><group><returns/><text><p>Returns to position in the buffer where the substring was found +  on success, and <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> on failure.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Buffer._search'>Stdio.Buffer()-&gt;_search()</ref>, <ref resolved='predef::search'>search()</ref>, <ref resolved='lfun::_search'>lfun::_search()</ref></p> + </text></group></doc> + <method name='_search'> + <arguments><argument name='substring'><type><string/></type></argument><argument name='start'><type><or><int/><void/></or></type></argument><argument name='end'><type><or><int/><void/></or></type></argument></arguments> + <returntype><int><min>0</min><max/></int></returntype> + </method> + </docgroup> + <docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Returns the size of the buffer.</p> + </text></doc> + <method name='_sizeof'> + <arguments/> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='_sprintf' homogen-type='method'><doc><text><p>It is possible to <ref resolved='predef::String.Buffer.sprintf'>sprintf</ref> a String.Buffer object +  as <tt>%s</tt> just as if it was a string.</p> + </text></doc> + <method name='_sprintf'> + <arguments><argument name='flag'><type><int/></type></argument><argument name='flags'><type><mapping/></type></argument></arguments> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='`+' homogen-type='method'> + <method name='`+'> + <arguments><argument name='what'><type><or><string/><object resolved='predef::String.Buffer'>String.Buffer</object></or></type></argument></arguments> + <returntype><object resolved='predef::String.Buffer'>String.Buffer</object></returntype> + </method> + </docgroup> + <docgroup homogen-name='`+=' homogen-type='method'> + <method name='`+='> + <arguments><argument name='what'><type><or><string/><object resolved='predef::String.Buffer'>String.Buffer</object></or></type></argument></arguments> + <returntype><object resolved='predef::String.Buffer'>String.Buffer</object></returntype> + </method> + </docgroup> + <docgroup homogen-name='add' homogen-type='method'><doc><text><p>Adds <ref resolved='predef::String.Buffer.add.data'>data</ref> to the buffer.</p> + </text><group><returns/><text><p>Returns the size of the buffer.</p> + </text></group><group><note/><text><p>Pike 7.8 and earlier did not support adding <ref resolved='predef::String.Buffer'>String.Buffer</ref>s +  directly.</p> + </text></group></doc> + <method name='add'> + <arguments><argument name='data'><type><varargs><or><string/><object resolved='predef::String.Buffer'>String.Buffer</object></or></varargs></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + <docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast a String.Buffer object to +  a <expr>string</expr> and an <expr>int</expr>.</p> + </text></doc> + <method name='cast'> + <arguments><argument name='type'><type><string/></type></argument></arguments> + <returntype><mixed/></returntype> + </method> + </docgroup> + <docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Empty the buffer, and don't care about the old content.</p> + </text><group><note/><text><p>This function was not available in Pike 7.8 and earlier.</p> + </text></group><group><seealso/><text><p><ref resolved='predef::String.Buffer.get'>get()</ref></p> + </text></group></doc> + <method name='clear'> + <arguments/> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initializes a new buffer.</p> + <p> If no <ref resolved='predef::String.Buffer.create.initial_size'>initial_size</ref> is specified, 256 is used. If you +  know approximately how big the buffer will be, you can optimize +  the operation of <ref resolved='predef::String.Buffer.add'>add()</ref> (slightly) by passing the size to this +  function.</p> + </text></doc> + <method name='create'> + <arguments><argument name='initial_size'><type><int/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='get' homogen-type='method'><doc><text><p>Get the data from the buffer.</p> + </text><group><note/><text><p>This will clear the data in the buffer</p> + </text></group><group><seealso/><text><p><ref resolved='predef::String.Buffer.get_copy'>get_copy()</ref>, <ref resolved='predef::String.Buffer.clear'>clear()</ref></p> + </text></group></doc> + <method name='get'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='get_copy' homogen-type='method'><doc><text><p>Get the data from the buffer. Significantly slower than <ref resolved='predef::String.Buffer.get'>get</ref>, +  but does not clear the buffer.</p> + </text><group><seealso/><text><p><ref resolved='predef::String.Buffer.get'>get()</ref></p> + </text></group></doc> + <method name='get_copy'> + <arguments/> + <returntype><string/></returntype> + </method> + </docgroup> + <docgroup homogen-name='putchar' homogen-type='method'><doc><text><p>Appends the character <ref resolved='predef::String.Buffer.putchar.c'>c</ref> at the end of the string.</p> + </text></doc> + <method name='putchar'> + <arguments><argument name='c'><type><int/></type></argument></arguments> + <returntype><void/></returntype> + </method> + </docgroup> + <docgroup homogen-name='sprintf' homogen-type='method'><doc><text><p>Appends the output from <ref resolved='predef::String.Buffer.sprintf'>sprintf</ref> at the end of the string. +  Returns the resulting size of the String.Buffer.</p> + </text></doc> + <method name='sprintf'> + <arguments><argument name='format'><type><object resolved='predef::.strict_sprintf_format'>strict_sprintf_format</object></type></argument><argument name='args'><type><varargs><object resolved='predef::.sprintf_args'>sprintf_args</object></varargs></type></argument></arguments> + <returntype><int/></returntype> + </method> + </docgroup> + </class>   <module name='Elite'>   <docgroup homogen-name='elite_string' homogen-type='method'><doc><text><p>Translates a string to 1337. The optional    argument leetp is the maximum percentage of    leetness (100=max leet, 0=no leet).</p>   <p> The translation is performed in three steps,    first the necessary elite translations (picture -&gt; pic,    cool-&gt;kewl etc), then optional translations    (ok-&gt;k, dude-&gt;dood, -ers -&gt; -orz), then    calls elite_word on the resulting words.</p>   </text></doc>
autodoc.git/onepage.xml:135826:   <docgroup homogen-name='' homogen-type='import'>   <import name=''><classname resolved='predef::'>predef::</classname></import>   </docgroup>   <docgroup homogen-name='lay' homogen-type='variable'><doc><text><p>Layout template headers and trailers.</p>   </text></doc>   <variable name='lay'><type><mapping/></type></variable>   </docgroup>   <docgroup homogen-name='parse_text' homogen-type='method'><doc><text><p>Typically called with a &lt;group/&gt; node or a sub-node that is a container.</p>   </text></doc>   <method name='parse_text'> - <arguments><argument name='n'><type><object>Node</object></type></argument><argument name='ret'><type><or><void/><object>String.Buffer</object></or></type></argument></arguments> + <arguments><argument name='n'><type><object>Node</object></type></argument><argument name='ret'><type><or><void/><object resolved='predef::String.Buffer'>String.Buffer</object></or></type></argument></arguments>   <returntype><string/></returntype>   </method>   </docgroup>   </class>   <class name='forkd'>   <doc><text><p>Fork Daemon</p>   <p> This is a light-weight daemon that can be used via <ref resolved='predef::Process.Process'>Process.Process</ref>    to spawn new processes (by specifying the <expr>"forkd"</expr> modifier).</p>   <p> The typical use is when the main program is large and/or    when it has lots of open file descriptors. This can cause
autodoc.git/onepage.xml:143308:   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   <docgroup homogen-name='hash' homogen-type='method'><doc><text><p>Works as a (possibly faster) shortcut for e.g. <expr>State(    obj-&gt;read() )-&gt;digest()</expr>, where <ref resolved='predef::__builtin.Nettle.__Hash.State'>State</ref> is the hash state class    corresponding to this <ref resolved='predef::__builtin.Nettle.Hash'>Hash</ref>.</p>   </text><group><param name='source'/><text><p>Object to read some data to hash from.</p>   </text></group><group><param name='bytes'/><text><p>The number of bytes of the <ref resolved='predef::__builtin.Nettle.Hash.hash.source'>source</ref> object that should be    hashed. Zero and negative numbers are ignored and the whole file    is hashed.</p> - <p> <ref resolved='predef::Stdio.File'>Stdio.File</ref>, <ref resolved='predef::Stdio.Buffer'>Stdio.Buffer</ref>, <ref>String.Buffer</ref>, <ref resolved='predef::System.Memory'>System.Memory</ref></p> + <p> <ref resolved='predef::Stdio.File'>Stdio.File</ref>, <ref resolved='predef::Stdio.Buffer'>Stdio.Buffer</ref>, <ref resolved='predef::String.Buffer'>String.Buffer</ref>, <ref resolved='predef::System.Memory'>System.Memory</ref></p>   </text></group></doc>   <method name='hash'><modifiers><variant/></modifiers> - <arguments><argument name='source'><type><or><object resolved='predef::Stdio.File'>Stdio.File</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object><object>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object></or></type></argument><argument name='bytes'><type><or><int/><void/></or></type></argument></arguments> + <arguments><argument name='source'><type><or><object resolved='predef::Stdio.File'>Stdio.File</object><object resolved='predef::Stdio.Buffer'>Stdio.Buffer</object><object resolved='predef::String.Buffer'>String.Buffer</object><object resolved='predef::System.Memory'>System.Memory</object></or></type></argument><argument name='bytes'><type><or><int/><void/></or></type></argument></arguments>   <returntype><string><min>0</min><max>255</max></string></returntype>   </method>   </docgroup>   <docgroup homogen-name='hmac_jwa_id' homogen-type='constant'><doc><text><p>JWS algorithm id (if any) for the HMAC sub-module.    Overloaded by the actual implementations.</p>   </text></doc>   <constant name='hmac_jwa_id'><modifiers><protected/></modifiers><type><string/></type></constant>   </docgroup>   <docgroup homogen-name='hotp' homogen-type='method'><doc><text><p>HMAC-Based One-Time Password as defined by <rfc>4226</rfc>.</p>   <p> Can be used to implement the <rfc>6238</rfc> Time-Based One-Time